import React, { useState } from 'react'; import { useQuery } from '@tanstack/react-query'; import { api } from '../lib/api'; import type { ApiResponse, PaginatedResponse } from '../lib/api'; import { formatRial, formatDate } from '../lib/utils'; import Pagination from '../components/ui/Pagination'; interface FinanceRow { uuid: string; appointment_uuid: string | null; doctor_name: string | null; gross_rials: number; tax_rials: number; sms_fee_rials: number; commission_percent: number; representation_share_rials: number; created_at: string; } type RangeKey = 'today' | 'week' | 'month' | 'all'; function rangeFrom(key: RangeKey): number | null { const now = Math.floor(Date.now() / 1000); if (key === 'today') return Math.floor(new Date().setHours(0, 0, 0, 0) / 1000); if (key === 'week') return now - 7 * 86400; if (key === 'month') return now - 30 * 86400; return null; } const RANGE_LABEL: Record = { today: 'امروز', week: 'این هفته', month: 'این ماه', all: 'همه', }; export default function RepresentationFinancePage() { const [range, setRange] = useState('month'); const [page, setPage] = useState(1); const limit = 15; const { data, isLoading } = useQuery({ queryKey: ['representation-finance', range, page], queryFn: () => { const params = new URLSearchParams({ page: String(page), limit: String(limit) }); const from = rangeFrom(range); if (from !== null) params.set('from', String(from)); return api.get>(`/api/v1/representation/finance/report?${params}`); }, }); const items: FinanceRow[] = data?.data ?? []; const total = data?.meta?.totalRecords ?? 0; return (

گزارش مالی

درآمد ثبت‌شده از پورسانت نوبت‌ها
{(['today', 'week', 'month', 'all'] as RangeKey[]).map(k => ( ))}
{isLoading && ( )} {!isLoading && items.length === 0 && ( )} {items.map(r => ( ))}
پزشکمبلغ نوبتمالیاتپیامک درصدسهم نمایندهتاریخ
در حال بارگذاری...
درآمدی در این بازه ثبت نشده است
{r.doctor_name ?? '—'} {formatRial(r.gross_rials)} {formatRial(r.tax_rials)} {formatRial(r.sms_fee_rials)} {r.commission_percent}٪ {formatRial(r.representation_share_rials)} {formatDate(r.created_at)}
); }