import { useMemo, useState } from 'react'; import { Link } from 'react-router-dom'; import { useQuery } from '@tanstack/react-query'; import { UserGroupIcon } from '@heroicons/react/24/outline'; import { api } from '../lib/api'; import type { ApiResponse } from '../lib/api'; import { useAuthStore } from '../stores/authStore'; import SettingsLayout from '../components/layout/SettingsLayout'; import { ScheduleSection } from '../components/schedule/ScheduleSection'; import FreeVisitPrice from '../components/FreeVisitPrice'; import type { ClinicDoctorItem } from '../components/ClinicDoctorsManager'; /** * تنظیمات نوبت‌دهی همه پزشکان کلینیک — یک تب به ازای هر پزشک. * * هر تب دقیقاً همان ScheduleSection پنل پزشک مستقل را رندر می‌کند؛ تنها تفاوت، * امکان جابه‌جایی بین پزشکان است. */ function ClinicAppointmentSettingsContent() { const { dbUuid, context, availableContexts } = useAuthStore(); const [activeUuid, setActiveUuid] = useState(null); // کاربری که هم پزشک است هم مالک کلینیک، dbUuid‌اش ممکن است uuid پزشک باشد. const clinicUuid = useMemo(() => { if (context?.type === 'clinic') return dbUuid; return availableContexts.find(c => c.type === 'clinic')?.db_uuid ?? null; }, [context, dbUuid, availableContexts]); const doctorsQ = useQuery({ queryKey: ['clinic-doctors', clinicUuid], queryFn: () => api.get>(`/api/v1/clinic/doctor-list/${clinicUuid}`), enabled: !!clinicUuid, }); const doctorList: ClinicDoctorItem[] = useMemo(() => { const raw = doctorsQ.data?.data; return (raw as any)?.data ?? raw ?? []; }, [doctorsQ.data]); const selected = activeUuid ?? doctorList[0]?.uuid ?? null; const selectedDoctor = doctorList.find(d => d.uuid === selected) ?? null; if (!clinicUuid) { return (

{dbUuid ? 'کلینیکی برای این حساب کاربری یافت نشد' : 'در حال بارگذاری اطلاعات کلینیک...'}

); } return (

مدیریت نوبت دهی

{selectedDoctor ? `تنظیمات نوبت‌دهی ${selectedDoctor.name}` : 'تنظیمات نوبت‌دهی پزشکان کلینیک'}
{doctorsQ.isLoading ? (

در حال بارگذاری پزشکان...

) : doctorList.length === 0 ? (

هیچ پزشکی به این کلینیک متصل نیست

مدیریت پزشکان کلینیک
) : ( <>
{doctorList.map(doc => ( ))}
{/* key اجباری است: بدون آن state ویرایشِ برنامه بین پزشکان نشت می‌کند */} {selected && (
{/* نام پزشک انتخاب‌شده، تا هنگام اسکرول هم مشخص باشد تنظیمات مربوط به کیست */}
{selectedDoctor?.name}
)} )}
); } export default function ClinicAppointmentSettingsPage() { return ( ); }