import { useState } from 'react'; import { useParams, useNavigate } from 'react-router-dom'; import { useQuery } from '@tanstack/react-query'; import { api } from '../lib/api'; import type { ApiResponse } from '../lib/api'; import type { PatientRecord } from '../types'; import type { SessionCardData } from '../components/SessionServiceCard'; import SessionStepper from '../components/SessionStepper'; import CreateStep from '../components/session/CreateStep'; import PaymentStep from '../components/session/PaymentStep'; import DetailsStep from '../components/session/DetailsStep'; import { ArrowLeftPH, ArrowLeftD, CloseModalD } from '../components/icons/FilesServiceIcons'; /** * ثبت مراجعه جدید — پورت کامل tauri /files/create-service (حالت ایجاد): * ویزارد سه‌گامی «ایجاد سرویس ← پرداخت ← جزییات». گام ۱ session را می‌سازد * (تاریخ/ساعت پذیرش، خدمات + پرسنل، کالای مصرفی، پکیج، بیمه‌ی شرطی)؛ * گام‌های ۲ و ۳ همان کامپوننت‌های مشترک SessionPaymentPage هستند. */ export default function NewSessionPage() { const { recordUuid = '' } = useParams(); const nav = useNavigate(); const steps = ['ایجاد سرویس', 'پرداخت', 'جزییات']; const [activeStep, setActiveStep] = useState(0); const [createdUuid, setCreatedUuid] = useState(''); const recordQ = useQuery>({ queryKey: ['patient-detail', recordUuid], queryFn: () => api.get(`/api/v1/patient/${recordUuid}`), enabled: !!recordUuid, }); const record = recordQ.data?.data as PatientRecord | undefined; const patientName = record?.user_name || record?.profile?.full_name || '—'; // بعد از ساخت session در گام ۱، گام‌های ۲/۳ از لیست sessions تغذیه می‌شوند. const sessionsQ = useQuery>({ queryKey: ['patient-sessions', recordUuid], queryFn: () => api.get(`/api/v1/patient/${recordUuid}/sessions`), enabled: !!recordUuid && !!createdUuid, }); const session = (sessionsQ.data?.data ?? []).find((s) => s.uuid === createdUuid); const walletQ = useQuery>({ queryKey: ['patient-wallet', recordUuid], queryFn: () => api.get(`/api/v1/patient/${recordUuid}/wallet`), enabled: !!recordUuid && !!createdUuid, }); const walletBalance = (walletQ.data?.data as any)?.balance_rials ?? 0; const finish = () => nav(`/admin/patients/${recordUuid}?tab=services`); return (
{/* breadcrumb — tauri AddService header */}
nav(-1)} className="bg-white dark:bg-[#222433]" style={{ display: 'flex', alignItems: 'center', gap: 4, padding: '6px 8px', borderRadius: 12, cursor: 'pointer' }} > بازگشت
پرونده {patientName}
{/* card — tauri width 748 centered */}
{activeStep === 0 && ( { setCreatedUuid(uuid); setActiveStep(1); }} onCancel={() => nav(-1)} /> )} {activeStep === 1 && ( session ? ( setActiveStep(2)} onCancel={finish} /> ) : (
در حال بارگذاری...
) )} {activeStep === 2 && session && ( setActiveStep(1)} onFinish={finish} /> )}
); }