'use client' import type { PaginationListColumnType } from '@/types' import PaginatedList from '@/components/PaginatedList' import StatusChip from '@/components/ui/StatusChip' import PageNavbar from '@/components/layouts/PageNavbar' import AdminTableViewButton from '@/components/ui/AdminTableViewButton' import { APP_ROUTES } from '@/constants/routes' import { formatCurrency, formatPersonName, coerceToString } from '@/helpers' import { formatIranianMobile, formatPersianDate } from '@/lib/formatters' import { getPaymentMethod, getPaymentStatus, PAYMENT_METHOD_FILTER_ITEMS, PAYMENT_STATUS_FILTER_ITEMS } from '@/constants/status' import { API_ROUTES } from '@/services/config' interface PaymentUser { id: string mobile: string firstName: string | null lastName: string | null } const columns: PaginationListColumnType[] = [ { field: 'paymentCode', label: 'کد پرداخت', filterable: false, sortable: false, type: 'text', }, { field: 'user', label: 'کاربر', filterable: false, sortable: false, }, { field: 'eventTitle', label: 'رویداد', filterable: false, sortable: false, type: 'text', }, { field: 'bookingCode', label: 'کد رزرو', filterable: false, sortable: false, type: 'text', }, { field: 'method', label: 'روش پرداخت', filterable: true, sortable: false, type: 'select', filterItems: PAYMENT_METHOD_FILTER_ITEMS, }, { field: 'gatewayProvider', label: 'درگاه', filterable: false, sortable: false, type: 'text', }, { field: 'gatewayTrackingId', label: 'شناسه درگاه', filterable: false, sortable: false, type: 'text', }, { field: 'gatewayRefId', label: 'RRN درگاه', filterable: false, sortable: false, type: 'text', }, { field: 'status', label: 'وضعیت', filterable: true, sortable: true, type: 'select', filterItems: PAYMENT_STATUS_FILTER_ITEMS, }, { field: 'totalAmount', label: 'مبلغ کل', filterable: false, sortable: false, }, { field: 'paidAt', label: 'تاریخ پرداخت', filterable: false, sortable: true, type: 'date', }, { field: 'createdAt', label: 'تاریخ ثبت', filterable: true, sortable: true, type: 'dateFromTo', }, { field: 'actions', label: 'عملیات', }, ] const PaymentsPage = () => { return (
{{ user: (row) => { const user = row.user as PaymentUser | undefined if (!user) return '—' const name = formatPersonName(user.firstName ?? undefined, user.lastName ?? undefined) return (
{name} {formatIranianMobile(user.mobile)}
) }, method: (row, cellValue) => { const provider = coerceToString(row.gatewayProvider) if (provider) { return ( ) } return }, gatewayProvider: (_row, cellValue) => coerceToString(cellValue) || '—', gatewayTrackingId: (_row, cellValue) => ( {coerceToString(cellValue) || '—'} ), gatewayRefId: (_row, cellValue) => ( {coerceToString(cellValue) || '—'} ), status: (_row, cellValue) => , totalAmount: (_row, cellValue) => formatCurrency(Number(cellValue ?? 0)), paidAt: (_row, cellValue) => formatPersianDate(cellValue), createdAt: (_row, cellValue) => formatPersianDate(cellValue), actions: (row) => { const user = row.user as PaymentUser | undefined if (!user) return '—' return ( ) }, }}
) } export default PaymentsPage