"use client"; import { useEffect, useState } from "react"; import moment from "moment-jalaali"; import Hours from "./hours"; import Tabs from "../../Tabs"; import { request } from "@/services/response"; import SendAppo from "./SendAppo"; import { adaptSlots, adaptServiceSlots, hasAvailable } from "@/lib/appointmentSlots"; function DateTime({ date, doctor, setStep, setSelectedSlot, setSelectedDate, serviceMode = false, selectedServiceUuids = [], clinicUuid = null, selectedLocation = null, }) { const [value, setValue] = useState(0); const [hour, setHour] = useState(); const [appo, setAppo] = useState("تاریخ مورد نظرتان را انتخاب کنید."); const sessions = Array.isArray(appo) ? appo : []; const listTab = sessions.map((s) => s.label); const currentSlots = sessions[value]?.slots ?? []; const handleChange = (event, newValue) => { setHour(); setValue(newValue); }; // آدرس از محل انتخابشده میآید، نه از doctor.address: در محیط کلینیک ممکن است // آدرس اصلاً در فهرست آدرسهای شخصی پزشک نباشد. const locationAddress = selectedLocation?.address ?? (hour?.location_id ? doctor?.address?.find((a) => String(a.id) === String(hour.location_id))?.address ?? null : null); useEffect(() => { if (!date || !doctor?.uuid) return; if (serviceMode && selectedServiceUuids.length === 0) return; setAppo("loading"); setHour(); const dateStr = moment.unix(date).format("YYYY-MM-DD"); const req = serviceMode ? request .getServiceSlots(doctor.uuid, dateStr, selectedServiceUuids, clinicUuid) .then(adaptServiceSlots) : request.getAppointmentSlots(doctor.uuid, dateStr, clinicUuid).then(adaptSlots); req .then((parsed) => { if (!parsed.length) { setAppo("در حال حاضر، نوبتی برای این روز موجود نمیباشد."); setValue(0); return; } setAppo(parsed); const firstAvailable = parsed.findIndex((s) => hasAvailable(s.slots)); setValue(firstAvailable >= 0 ? firstAvailable : 0); }) .catch(() => { setAppo("در حال حاضر، نوبتی برای این روز موجود نمیباشد."); setValue(0); }); }, [date, doctor?.uuid, serviceMode, selectedServiceUuids, clinicUuid]); return (