import React, { useState } from 'react'; import { useParams, useNavigate } from 'react-router-dom'; import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'; import { PencilIcon, TrashIcon, CheckCircleIcon, XCircleIcon } from '@heroicons/react/24/outline'; import { toast } from 'sonner'; import { api } from '../lib/api'; import type { ApiResponse, PaginatedResponse } from '../lib/api'; import type { Representation, City } from '../types'; import { formatDate, formatDateTime, formatNumber } from '../lib/utils'; import PageHeader from '../components/ui/PageHeader'; import { ActiveBadge } from '../components/ui/StatusBadge'; import ConfirmDialog from '../components/ui/ConfirmDialog'; import Modal from '../components/ui/Modal'; import SearchableSelect from '../components/ui/SearchableSelect'; interface RepDoctor { uuid: string; id: number; name: string; gender: string | null; medical_code: string | null; is_active: boolean; owner_status?: string; past_count: number; upcoming_count: number; created_at: string; } interface RepAppointment { uuid: string; slot_start: number; slot_end: number; status: string; patient_name: string | null; doctor_uuid: string; doctor_name: string; } interface UnassignedDoctor { uuid: string; name: string; medical_code: string | null; mobile: string | null; } function DetailRow({ label, value }: { label: string; value: React.ReactNode }) { return (
اطلاعات بانکی ثبت نشده
)}در حال بارگذاری…
) : repDoctors.length === 0 ? (این نماینده پزشکی ندارد
) : (| نام | کد نظام | نوبت گذشته | نوبت آینده | وضعیت |
|---|---|---|---|---|
| {d.name} | {d.medical_code ?? '—'} | {formatNumber(d.past_count)} | {formatNumber(d.upcoming_count)} |
در حال بارگذاری…
) : repAppointments.length === 0 ? ({apptScope === 'upcoming' ? 'نوبت آیندهای ثبت نشده' : 'نوبت گذشتهای وجود ندارد'}
) : ( <>| پزشک | بیمار | زمان | وضعیت |
|---|---|---|---|
| {a.doctor_name} | {a.patient_name ?? '—'} | {formatDateTime(a.slot_start)} | {a.status} |
در حال بارگذاری…
) : unassignedDoctors.length === 0 ? (پزشکِ بدون نمایندهای یافت نشد
) : (