diff --git a/backend/app/DomainObjects/AttendeeCheckInDomainObject.php b/backend/app/DomainObjects/AttendeeCheckInDomainObject.php
index afe1ea6f76..f85b44f1ef 100644
--- a/backend/app/DomainObjects/AttendeeCheckInDomainObject.php
+++ b/backend/app/DomainObjects/AttendeeCheckInDomainObject.php
@@ -6,6 +6,8 @@ class AttendeeCheckInDomainObject extends Generated\AttendeeCheckInDomainObjectA
{
private ?AttendeeDomainObject $attendee = null;
+ private ?CheckInListDomainObject $checkInList = null;
+
public function getAttendee(): ?AttendeeDomainObject
{
return $this->attendee;
@@ -16,4 +18,15 @@ public function setAttendee(AttendeeDomainObject $attendee): self
$this->attendee = $attendee;
return $this;
}
+
+ public function setCheckInList(?CheckInListDomainObject $checkInList): AttendeeCheckInDomainObject
+ {
+ $this->checkInList = $checkInList;
+ return $this;
+ }
+
+ public function getCheckInList(): ?CheckInListDomainObject
+ {
+ return $this->checkInList;
+ }
}
diff --git a/backend/app/DomainObjects/AttendeeDomainObject.php b/backend/app/DomainObjects/AttendeeDomainObject.php
index 84d443366a..f23daafcf8 100644
--- a/backend/app/DomainObjects/AttendeeDomainObject.php
+++ b/backend/app/DomainObjects/AttendeeDomainObject.php
@@ -18,6 +18,9 @@ class AttendeeDomainObject extends Generated\AttendeeDomainObjectAbstract implem
public ?AttendeeCheckInDomainObject $checkIn = null;
+ /** @var Collection|null */
+ private ?Collection $checkIns = null;
+
public static function getDefaultSort(): string
{
return self::CREATED_AT;
@@ -108,8 +111,24 @@ public function setCheckIn(?AttendeeCheckInDomainObject $checkIn): AttendeeDomai
return $this;
}
+ /**
+ * Only use in the context when a single check-in is expected (e.g., when loading a list of attendees for a specific check-in list).
+ *
+ * @return AttendeeCheckInDomainObject|null
+ */
public function getCheckIn(): ?AttendeeCheckInDomainObject
{
return $this->checkIn;
}
+
+ public function setCheckIns(?Collection $checkIns): AttendeeDomainObject
+ {
+ $this->checkIns = $checkIns;
+ return $this;
+ }
+
+ public function getCheckIns(): ?Collection
+ {
+ return $this->checkIns;
+ }
}
diff --git a/backend/app/Exports/AttendeesExport.php b/backend/app/Exports/AttendeesExport.php
index 16e2a833fb..0880642ba3 100644
--- a/backend/app/Exports/AttendeesExport.php
+++ b/backend/app/Exports/AttendeesExport.php
@@ -55,8 +55,7 @@ public function headings(): array
__('Last Name'),
__('Email'),
__('Status'),
- __('Is Checked In'),
- __('Checked In At'),
+ __('Check Ins'),
__('Product ID'),
__('Product Name'),
__('Event ID'),
@@ -106,16 +105,23 @@ public function map($attendee): array
->getLabel();
}
+ $checkIns = $attendee->getCheckIns()
+ ? $attendee->getCheckIns()
+ ->map(fn($checkIn) => sprintf(
+ '%s (%s)',
+ $checkIn->getCheckInList()?->getName() ?? __('Unknown'),
+ Carbon::parse($checkIn->getCreatedAt())->format('Y-m-d H:i:s')
+ ))
+ ->join(', ')
+ : '';
+
return array_merge([
$attendee->getId(),
$attendee->getFirstName(),
$attendee->getLastName(),
$attendee->getEmail(),
$attendee->getStatus(),
- $attendee->getCheckIn() ? 'Yes' : 'No',
- $attendee->getCheckIn()
- ? Carbon::parse($attendee->getCheckIn()->getCreatedAt())->format('Y-m-d H:i:s')
- : '',
+ $checkIns,
$attendee->getProductId(),
$ticketName,
$attendee->getEventId(),
diff --git a/backend/app/Http/Actions/Attendees/ExportAttendeesAction.php b/backend/app/Http/Actions/Attendees/ExportAttendeesAction.php
index 7ceaa127d5..dce25e228a 100644
--- a/backend/app/Http/Actions/Attendees/ExportAttendeesAction.php
+++ b/backend/app/Http/Actions/Attendees/ExportAttendeesAction.php
@@ -3,6 +3,7 @@
namespace HiEvents\Http\Actions\Attendees;
use HiEvents\DomainObjects\AttendeeCheckInDomainObject;
+use HiEvents\DomainObjects\CheckInListDomainObject;
use HiEvents\DomainObjects\Enums\QuestionBelongsTo;
use HiEvents\DomainObjects\EventDomainObject;
use HiEvents\DomainObjects\OrderDomainObject;
@@ -38,7 +39,13 @@ public function __invoke(int $eventId): BinaryFileResponse
->loadRelation(QuestionAndAnswerViewDomainObject::class)
->loadRelation(new Relationship(
domainObject: AttendeeCheckInDomainObject::class,
- name: 'check_in',
+ nested: [
+ new Relationship(
+ domainObject: CheckInListDomainObject::class,
+ name: 'check_in_list',
+ ),
+ ],
+ name: 'check_ins',
))
->loadRelation(new Relationship(
domainObject: ProductDomainObject::class,
diff --git a/backend/app/Http/Actions/Attendees/GetAttendeeAction.php b/backend/app/Http/Actions/Attendees/GetAttendeeAction.php
index fdf2a2107b..16cc30d2f7 100644
--- a/backend/app/Http/Actions/Attendees/GetAttendeeAction.php
+++ b/backend/app/Http/Actions/Attendees/GetAttendeeAction.php
@@ -3,6 +3,7 @@
namespace HiEvents\Http\Actions\Attendees;
use HiEvents\DomainObjects\AttendeeCheckInDomainObject;
+use HiEvents\DomainObjects\CheckInListDomainObject;
use HiEvents\DomainObjects\EventDomainObject;
use HiEvents\DomainObjects\ProductDomainObject;
use HiEvents\DomainObjects\ProductPriceDomainObject;
@@ -38,7 +39,13 @@ public function __invoke(int $eventId, int $attendeeId): Response|JsonResponse
], name: 'product'))
->loadRelation(new Relationship(
domainObject: AttendeeCheckInDomainObject::class,
- name: 'check_in',
+ nested: [
+ new Relationship(
+ domainObject: CheckInListDomainObject::class,
+ name: 'check_in_list',
+ ),
+ ],
+ name: 'check_ins'
))
->findFirstWhere([
'id' => $attendeeId,
diff --git a/backend/app/Http/Actions/BaseAction.php b/backend/app/Http/Actions/BaseAction.php
index 78eb0675c8..2e2fcb0c4d 100644
--- a/backend/app/Http/Actions/BaseAction.php
+++ b/backend/app/Http/Actions/BaseAction.php
@@ -27,7 +27,6 @@
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Response;
-use Spatie\LaravelData\Data;
abstract class BaseAction extends Controller
{
diff --git a/backend/app/Http/Actions/CheckInLists/Public/GetCheckInListAttendeesPublicAction.php b/backend/app/Http/Actions/CheckInLists/Public/GetCheckInListAttendeesPublicAction.php
index bffce8b0a1..cb432d7b1c 100644
--- a/backend/app/Http/Actions/CheckInLists/Public/GetCheckInListAttendeesPublicAction.php
+++ b/backend/app/Http/Actions/CheckInLists/Public/GetCheckInListAttendeesPublicAction.php
@@ -19,11 +19,11 @@ public function __construct(
{
}
- public function __invoke(string $uuid, Request $request): JsonResponse
+ public function __invoke(string $checkInListShortId, Request $request): JsonResponse
{
try {
$attendees = $this->getCheckInListAttendeesPublicHandler->handle(
- shortId: $uuid,
+ shortId: $checkInListShortId,
queryParams: QueryParamsDTO::fromArray($request->query->all())
);
} catch (CannotCheckInException $e) {
diff --git a/backend/app/Models/Attendee.php b/backend/app/Models/Attendee.php
index da77d52d60..9888de64c4 100644
--- a/backend/app/Models/Attendee.php
+++ b/backend/app/Models/Attendee.php
@@ -28,8 +28,8 @@ public function product(): BelongsTo
return $this->belongsTo(Product::class);
}
- public function check_in(): HasOne
+ public function check_ins(): HasMany
{
- return $this->hasOne(AttendeeCheckIn::class);
+ return $this->hasMany(AttendeeCheckIn::class);
}
}
diff --git a/backend/app/Models/AttendeeCheckIn.php b/backend/app/Models/AttendeeCheckIn.php
index 6eadb5f198..46ee67071d 100644
--- a/backend/app/Models/AttendeeCheckIn.php
+++ b/backend/app/Models/AttendeeCheckIn.php
@@ -16,7 +16,7 @@ public function products(): BelongsTo
);
}
- public function checkInList(): BelongsTo
+ public function check_in_list(): BelongsTo
{
return $this->belongsTo(CheckInList::class);
}
diff --git a/backend/app/Repository/Eloquent/AttendeeRepository.php b/backend/app/Repository/Eloquent/AttendeeRepository.php
index a4ddf537a3..ea554917f8 100644
--- a/backend/app/Repository/Eloquent/AttendeeRepository.php
+++ b/backend/app/Repository/Eloquent/AttendeeRepository.php
@@ -118,7 +118,7 @@ public function getAttendeesByCheckInShortId(string $shortId, QueryParamsDTO $pa
->whereIn('attendees.status',[AttendeeStatus::ACTIVE->name, AttendeeStatus::CANCELLED->name, AttendeeStatus::AWAITING_PAYMENT->name])
->whereIn('orders.status', [OrderStatus::COMPLETED->name, OrderStatus::AWAITING_OFFLINE_PAYMENT->name]);
- $this->loadRelation(new Relationship(AttendeeCheckInDomainObject::class, name: 'check_in'));
+ $this->loadRelation(new Relationship(AttendeeCheckInDomainObject::class, name: 'check_ins'));
return $this->simplePaginateWhere(
where: $where,
diff --git a/backend/app/Repository/Eloquent/CheckInListRepository.php b/backend/app/Repository/Eloquent/CheckInListRepository.php
index 2ea368235d..00a60518f5 100644
--- a/backend/app/Repository/Eloquent/CheckInListRepository.php
+++ b/backend/app/Repository/Eloquent/CheckInListRepository.php
@@ -57,7 +57,7 @@ public function getCheckedInAttendeeCountById(int $checkInListId): CheckedInAtte
COUNT(DISTINCT vci.attendee_id) AS checked_in_attendees
FROM check_in_lists cil
LEFT JOIN valid_attendees va ON va.check_in_list_id = cil.id
- LEFT JOIN valid_check_ins vci ON vci.attendee_id = va.id
+ LEFT JOIN valid_check_ins vci ON vci.attendee_id = va.id AND vci.check_in_list_id = va.check_in_list_id
WHERE cil.id = :check_in_list_id
AND cil.deleted_at IS NULL
GROUP BY cil.id;
@@ -106,7 +106,7 @@ public function getCheckedInAttendeeCountByIds(array $checkInListIds): Collectio
COUNT(DISTINCT vci.attendee_id) AS checked_in_attendees
FROM check_in_lists cil
LEFT JOIN valid_attendees va ON va.check_in_list_id = cil.id
- LEFT JOIN valid_check_ins vci ON vci.attendee_id = va.id
+ LEFT JOIN valid_check_ins vci ON vci.attendee_id = va.id AND vci.check_in_list_id = va.check_in_list_id
WHERE cil.id IN ($placeholders)
AND cil.deleted_at IS NULL
GROUP BY cil.id;
diff --git a/backend/app/Resources/Attendee/AttendeeResource.php b/backend/app/Resources/Attendee/AttendeeResource.php
index e1af56f88e..81d2eadbe7 100644
--- a/backend/app/Resources/Attendee/AttendeeResource.php
+++ b/backend/app/Resources/Attendee/AttendeeResource.php
@@ -36,9 +36,9 @@ public function toArray(Request $request): array
!is_null($this->getProduct()),
fn() => new ProductResource($this->getProduct()),
),
- 'check_in' => $this->when(
- condition: $this->getCheckIn() !== null,
- value: fn() => new AttendeeCheckInResource($this->getCheckIn()),
+ 'check_ins' => $this->when(
+ condition: $this->getCheckIns() !== null,
+ value: fn() => AttendeeCheckInResource::collection($this->getCheckIns()),
),
'order' => $this->when(
condition: !is_null($this->getOrder()),
diff --git a/backend/app/Resources/CheckInList/AttendeeCheckInResource.php b/backend/app/Resources/CheckInList/AttendeeCheckInResource.php
index bae9a3b6d0..e9630ba17b 100644
--- a/backend/app/Resources/CheckInList/AttendeeCheckInResource.php
+++ b/backend/app/Resources/CheckInList/AttendeeCheckInResource.php
@@ -21,6 +21,10 @@ public function toArray($request): array
'event_id' => $this->getEventId(),
'short_id' => $this->getShortId(),
'created_at' => $this->getCreatedAt(),
+ 'check_in_list' => $this->when(
+ !is_null($this->getCheckInList()),
+ fn() => (new CheckInListResource($this->getCheckInList()))->toArray($request)
+ ),
'attendee' => $this->when(
!is_null($this->getAttendee()),
fn() => (new AttendeeResource($this->getAttendee()))->toArray($request)
diff --git a/backend/app/Services/Application/Handlers/CheckInList/Public/GetCheckInListAttendeesPublicHandler.php b/backend/app/Services/Application/Handlers/CheckInList/Public/GetCheckInListAttendeesPublicHandler.php
index a59e516ca4..8d25b1f036 100644
--- a/backend/app/Services/Application/Handlers/CheckInList/Public/GetCheckInListAttendeesPublicHandler.php
+++ b/backend/app/Services/Application/Handlers/CheckInList/Public/GetCheckInListAttendeesPublicHandler.php
@@ -2,6 +2,7 @@
namespace HiEvents\Services\Application\Handlers\CheckInList\Public;
+use HiEvents\DomainObjects\AttendeeDomainObject;
use HiEvents\DomainObjects\CheckInListDomainObject;
use HiEvents\DomainObjects\EventDomainObject;
use HiEvents\DomainObjects\Generated\CheckInListDomainObjectAbstract;
@@ -42,7 +43,15 @@ public function handle(string $shortId, QueryParamsDTO $queryParams): Paginator
$this->validateCheckInListIsActive($checkInList);
- return $this->attendeeRepository->getAttendeesByCheckInShortId($shortId, $queryParams);
+ $attendees = $this->attendeeRepository->getAttendeesByCheckInShortId($shortId, $queryParams);
+
+ // Set the check-in for each attendee
+ $attendees->getCollection()->transform(function (AttendeeDomainObject $attendee) use ($checkInList) {
+ $attendee->setCheckIn($attendee->getCheckIns()?->first(fn ($checkIn) => $checkIn->getCheckInListId() === $checkInList->getId()));
+ return $attendee;
+ });
+
+ return $attendees;
}
/**
diff --git a/backend/app/Services/Domain/CheckInList/CreateAttendeeCheckInService.php b/backend/app/Services/Domain/CheckInList/CreateAttendeeCheckInService.php
index e081ea495c..47c25356b6 100644
--- a/backend/app/Services/Domain/CheckInList/CreateAttendeeCheckInService.php
+++ b/backend/app/Services/Domain/CheckInList/CreateAttendeeCheckInService.php
@@ -55,7 +55,7 @@ public function checkInAttendees(
$attendees = $this->fetchAttendees($attendeesAndActions);
$eventSettings = $this->fetchEventSettings($checkInList->getEventId());
- $existingCheckIns = $this->fetchExistingCheckIns($attendees, $checkInList->getEventId());
+ $existingCheckIns = $this->fetchExistingCheckIns($attendees, $checkInList);
return $this->processAttendeeCheckIns(
$attendees,
@@ -103,11 +103,11 @@ private function fetchEventSettings(int $eventId): EventSettingDomainObject
/**
* @param Collection $attendees
- * @param int $eventId
+ * @param CheckInListDomainObject $checkInList
* @return Collection
* @throws Exception
*/
- private function fetchExistingCheckIns(Collection $attendees, int $eventId): Collection
+ private function fetchExistingCheckIns(Collection $attendees, CheckInListDomainObject $checkInList): Collection
{
$attendeeIds = $attendees->map(fn(AttendeeDomainObject $attendee) => $attendee->getId())->toArray();
@@ -115,7 +115,8 @@ private function fetchExistingCheckIns(Collection $attendees, int $eventId): Col
field: AttendeeCheckInDomainObjectAbstract::ATTENDEE_ID,
values: $attendeeIds,
additionalWhere: [
- AttendeeCheckInDomainObjectAbstract::EVENT_ID => $eventId,
+ AttendeeCheckInDomainObjectAbstract::EVENT_ID => $checkInList->getEventId(),
+ AttendeeCheckInDomainObjectAbstract::CHECK_IN_LIST_ID => $checkInList->getId(),
],
);
}
diff --git a/backend/app/Services/Domain/CheckInList/DeleteAttendeeCheckInService.php b/backend/app/Services/Domain/CheckInList/DeleteAttendeeCheckInService.php
index cf9c0e31c5..962595a484 100644
--- a/backend/app/Services/Domain/CheckInList/DeleteAttendeeCheckInService.php
+++ b/backend/app/Services/Domain/CheckInList/DeleteAttendeeCheckInService.php
@@ -31,6 +31,9 @@ public function deleteAttendeeCheckIn(
->loadRelation(new Relationship(AttendeeDomainObject::class, name: 'attendee'))
->findFirstWhere([
AttendeeCheckInDomainObjectAbstract::SHORT_ID => $checkInShortId,
+ AttendeeCheckInDomainObjectAbstract::CHECK_IN_LIST_ID => $this
+ ->checkInListDataService
+ ->getCheckInList($checkInListShortId)->getId(),
]);
if ($checkIn === null) {
diff --git a/frontend/src/components/common/AttendeeDetails/index.tsx b/frontend/src/components/common/AttendeeDetails/index.tsx
index eb0baea1e6..14ad95a34c 100644
--- a/frontend/src/components/common/AttendeeDetails/index.tsx
+++ b/frontend/src/components/common/AttendeeDetails/index.tsx
@@ -4,6 +4,7 @@ import classes from "./AttendeeDetails.module.scss";
import {t} from "@lingui/macro";
import {getAttendeeProductTitle} from "../../../utilites/products.ts";
import {getLocaleName, SupportedLocales} from "../../../locales.ts";
+import {relativeDate} from "../../../utilites/dates.ts";
export const AttendeeDetails = ({attendee}: { attendee: Attendee }) => {
return (
@@ -24,14 +25,6 @@ export const AttendeeDetails = ({attendee}: { attendee: Attendee }) => {
{attendee.email}
-
-
- {t`Checked In`}
-
-
- {attendee.check_in ? t`Yes` : t`No`}
-
-
{t`Product`}
@@ -48,6 +41,20 @@ export const AttendeeDetails = ({attendee}: { attendee: Attendee }) => {
{getLocaleName(attendee.locale as SupportedLocales)}
+ {attendee.check_ins && attendee.check_ins.length > 0 && (
+
+
+ {t`Check-Ins`}
+
+
+ {attendee.check_ins.map((checkIn) => (
+
+ {checkIn.check_in_list?.name} - {relativeDate(checkIn.created_at)}
+
+ ))}
+
+
+ )}
);
}
diff --git a/frontend/src/components/common/CheckInListList/index.tsx b/frontend/src/components/common/CheckInListList/index.tsx
index f9d5a65b4e..1306c4e0f9 100644
--- a/frontend/src/components/common/CheckInListList/index.tsx
+++ b/frontend/src/components/common/CheckInListList/index.tsx
@@ -48,9 +48,7 @@ export const CheckInListList = ({checkInLists, openCreateModal}: CheckInListList
- Check-in lists help manage attendee entry for your event. You can associate multiple
- tickets with a check-in list and ensure only those with valid tickets can enter.
-
+ Check-in lists help you manage event entry by day, area, or ticket type. You can link tickets to specific lists such as VIP zones or Day 1 passes and share a secure check-in link with staff. No account is required. Check-in works on mobile, desktop, or tablet, using a device camera or HID USB scanner.
;
- productCategories: ProductCategory[],
+ productCategories: ProductCategory[];
}
export const CheckInListForm = ({form, productCategories}: CheckInListFormProps) => {
+ const tickets = useMemo(() => {
+ return productCategories
+ .flatMap(category => category.products || [])
+ .filter(product => product.product_type === ProductType.Ticket);
+ }, [productCategories]);
+
+ useEffect(() => {
+ if (tickets.length === 1 && (!form.values.product_ids || form.values.product_ids.length === 0)) {
+ form.setFieldValue('product_ids', [String(tickets[0].id)]);
+ }
+ }, [tickets]);
+
return (
<>
+ } color="blue" variant="light">
+ {t`Check-in lists let you control entry across days, areas, or ticket types. You can share a secure check-in link with staff — no account required.`}
+
+
}
+ label={t`Description for check-in staff`}
placeholder={t`Add a description for this check-in list`}
+ description={t`Visible to check-in staff only. Helps identify this list during check-in.`}
+ minRows={2}
/>
}
- placeholder={t`What date should this check-in list become active?`}
+ label={t`Activation date`}
+ description={t`When check-in opens`}
/>
}
- placeholder={t`When should this check-in list expire?`}
+ label={t`Expiration date`}
+ description={t`When check-in closes`}
/>
>
diff --git a/frontend/src/components/layouts/CheckIn/index.tsx b/frontend/src/components/layouts/CheckIn/index.tsx
index 91de296d60..357eb23169 100644
--- a/frontend/src/components/layouts/CheckIn/index.tsx
+++ b/frontend/src/components/layouts/CheckIn/index.tsx
@@ -342,8 +342,6 @@ const CheckIn = () => {
};
}, [hidScannerMode, currentBarcode, processBarcode]);
-
-
if (CheckInListQuery.error && (CheckInListQuery.error as any).response?.status === 404) {
return (
{
+ const checkInUrl = `${window.location.origin}/check-in/${checkInListShortId}`;
+
+ return (
+
+
+
+ {t`Your check-in list has been created successfully. Share the link below with your check-in staff.`}
+
+
+
+
+ {checkInListName}
+
+
+ {({copied, copy}) => (
+ : }
+ >
+ {copied ? t`Copied` : t`Copy`}
+
+ )}
+
+ }
+ />
+
+
+
+ }
+ onClick={() => window.open(checkInUrl, '_blank')}
+ >
+ {t`Open Check-In Page`}
+
+
+ {t`Done`}
+
+
+
+
+ );
+};
diff --git a/frontend/src/components/modals/CreateCheckInListModal/index.tsx b/frontend/src/components/modals/CreateCheckInListModal/index.tsx
index 0cfc973d94..6e8131b5f4 100644
--- a/frontend/src/components/modals/CreateCheckInListModal/index.tsx
+++ b/frontend/src/components/modals/CreateCheckInListModal/index.tsx
@@ -1,21 +1,23 @@
-import {CheckInListRequest, GenericModalProps, Product, ProductCategory} from "../../../types.ts";
+import {CheckInList, CheckInListRequest, GenericModalProps, Product, ProductCategory} from "../../../types.ts";
import {Modal} from "../../common/Modal";
import {t} from "@lingui/macro";
import {CheckInListForm} from "../../forms/CheckInListForm";
import {useForm} from "@mantine/form";
import {Button} from "@mantine/core";
import {useCreateCheckInList} from "../../../mutations/useCreateCheckInList.ts";
-import {showSuccess} from "../../../utilites/notifications.tsx";
import {useParams} from "react-router";
import {useFormErrorResponseHandler} from "../../../hooks/useFormErrorResponseHandler.tsx";
import {useGetEvent} from "../../../queries/useGetEvent.ts";
import {NoResultsSplash} from "../../common/NoResultsSplash";
import {IconPlus} from "@tabler/icons-react";
+import {CheckInListSuccessModal} from "../CheckInListSuccessModal";
+import {useState} from "react";
export const CreateCheckInListModal = ({onClose}: GenericModalProps) => {
const {eventId} = useParams();
const errorHandler = useFormErrorResponseHandler();
const {data: event} = useGetEvent(eventId);
+ const [createdCheckInList, setCreatedCheckInList] = useState(null);
const form = useForm({
initialValues: {
name: '',
@@ -36,9 +38,8 @@ export const CreateCheckInListModal = ({onClose}: GenericModalProps) => {
eventId: eventId,
checkInListData: requestData,
}, {
- onSuccess: () => {
- showSuccess(t`Check-In List created successfully`);
- onClose();
+ onSuccess: (response) => {
+ setCreatedCheckInList(response.data);
},
onError: (error) => errorHandler(form, error),
})
@@ -68,16 +69,32 @@ export const CreateCheckInListModal = ({onClose}: GenericModalProps) => {
);
}
+ if (createdCheckInList) {
+ return (
+
+ );
+ }
+
return (
{!eventHasTickets && }
{eventHasTickets && (