diff --git a/app/(dashboard)/bookings/page.tsx b/app/(dashboard)/bookings/page.tsx
index 13df326..2d18202 100644
--- a/app/(dashboard)/bookings/page.tsx
+++ b/app/(dashboard)/bookings/page.tsx
@@ -56,6 +56,13 @@ const columns: PaginationListColumnType[] = [
type: 'select',
filterItems: BOOKING_STATUS_FILTER_ITEMS,
},
+ {
+ field: 'cancellationReason',
+ label: 'دلیل لغو',
+ filterable: false,
+ sortable: false,
+ type: 'text',
+ },
{
field: 'checkedInAt',
label: 'چکاین',
@@ -123,6 +130,18 @@ const BookingsPage = () => {
/>
)
},
+ cancellationReason: (row, cellValue) => {
+ const reason = coerceToString(cellValue).trim()
+ const isCancelledLike = row.status === 'cancelled' || row.status === 'refunded'
+
+ if (!isCancelledLike || !reason) return '—'
+
+ return (
+
+ {reason}
+
+ )
+ },
checkedInAt: (_row, cellValue) => formatPersianDate(cellValue),
createdAt: (_row, cellValue) => formatPersianDate(cellValue),
actions: (row) => {
diff --git a/features/events/detail/admin-event-detail/AdminEventBookingsTab.tsx b/features/events/detail/admin-event-detail/AdminEventBookingsTab.tsx
index 7c2ebfb..732191f 100644
--- a/features/events/detail/admin-event-detail/AdminEventBookingsTab.tsx
+++ b/features/events/detail/admin-event-detail/AdminEventBookingsTab.tsx
@@ -34,6 +34,7 @@ const bookingsColumns: PaginationListColumnType[] = [
{ field: 'bookingCode', label: 'کد رزرو', filterable: false, sortable: false, type: 'text' },
{ field: 'userId', label: 'مهمان', filterable: false, sortable: false, type: 'text' },
{ field: 'status', label: 'وضعیت', filterable: true, sortable: true, type: 'select', filterItems: BOOKING_STATUS_FILTER_ITEMS },
+ { field: 'cancellationReason', label: 'دلیل لغو', filterable: false, sortable: false, type: 'text' },
{ field: 'checkedInAt', label: 'چکاین', filterable: false, sortable: false, type: 'date' },
{ field: 'createdAt', label: 'تاریخ ثبت', filterable: false, sortable: true, type: 'date' },
{ field: 'actions', label: 'عملیات' },
@@ -113,6 +114,18 @@ const AdminEventBookingsTab = ({ eventId, eventStatus, onCheckedIn }: AdminEvent
/>
)
},
+ cancellationReason: (row, cellValue) => {
+ const reason = coerceToString(cellValue).trim()
+ const isCancelledLike = row.status === 'cancelled' || row.status === 'refunded'
+
+ if (!isCancelledLike || !reason) return '—'
+
+ return (
+
+ {reason}
+
+ )
+ },
checkedInAt: (_row, cellValue) => formatPersianDate(cellValue),
createdAt: (_row, cellValue) => formatPersianDate(cellValue),
actions: (row) => {
diff --git a/features/events/detail/admin-event-detail/AdminEventOverviewTab.tsx b/features/events/detail/admin-event-detail/AdminEventOverviewTab.tsx
index 5851c77..f557305 100644
--- a/features/events/detail/admin-event-detail/AdminEventOverviewTab.tsx
+++ b/features/events/detail/admin-event-detail/AdminEventOverviewTab.tsx
@@ -48,10 +48,6 @@ const AdminEventOverviewTab = ({ insights }: AdminEventOverviewTabProps) => {
label="بازپرداختشده"
value={number(insights.registrations.refundedCount)}
/>
-