feat(appointment): implement service-based booking flow with service selection and slot adaptation

This commit is contained in:
hamed
2026-07-15 23:48:40 +03:30
parent d5845bf84d
commit 165a0a2240
11 changed files with 337 additions and 33 deletions
+21
View File
@@ -61,6 +61,23 @@ function AppointmentPage({ doctor, disabledDates, matchedCity }) {
const [appointmentId, setAppointmentId] = useState(null);
const [appointmentExpiresAt, setAppointmentExpiresAt] = useState(null);
// Service-based booking (روش نوبت‌دهی سرویسی)
const [bookingMode, setBookingMode] = useState("slot");
const [bookingServices, setBookingServices] = useState([]);
const [selectedServiceUuids, setSelectedServiceUuids] = useState([]);
useEffect(() => {
if (!doctor?.uuid) return;
request
.getBookingServices(doctor.uuid)
.then((res) => {
const d = res?.data?.data ?? res?.data ?? {};
setBookingMode(d.booking_mode === "service" ? "service" : "slot");
setBookingServices(Array.isArray(d.services) ? d.services : []);
})
.catch(() => setBookingMode("slot"));
}, [doctor?.uuid]);
useEffect(() => {
const fetchUserData = async () => {
setIsLoading(true);
@@ -167,6 +184,10 @@ function AppointmentPage({ doctor, disabledDates, matchedCity }) {
setAppointmentId={setAppointmentId}
appointmentExpiresAt={appointmentExpiresAt}
setAppointmentExpiresAt={setAppointmentExpiresAt}
bookingMode={bookingMode}
bookingServices={bookingServices}
selectedServiceUuids={selectedServiceUuids}
setSelectedServiceUuids={setSelectedServiceUuids}
/>
);
}