refactor: enhance date selection logic in DatePicker and update appointment request parameters
This commit is contained in:
@@ -4,15 +4,12 @@ import { useEffect, useState } from "react";
|
||||
import Hours from "./hours";
|
||||
import Tabs from "../../Tabs";
|
||||
import { request } from "@/services/response";
|
||||
import { useParams } from "next/navigation";
|
||||
import SendAppo from "./SendAppo";
|
||||
|
||||
const listTab = ["صبح", "بعد از ظهر"];
|
||||
const nameHours = ["hours_morning", "hours_afternoon"];
|
||||
|
||||
function DateTime({ date, doctor, setStep }) {
|
||||
const params = useParams();
|
||||
const doctorId = params.doctorId;
|
||||
const [value, setValue] = useState(0);
|
||||
const [hour, setHour] = useState();
|
||||
const [appo, setAppo] = useState("تاریخ مورد نظرتان را انتخاب کنید.");
|
||||
@@ -23,22 +20,38 @@ function DateTime({ date, doctor, setStep }) {
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
if (date) {
|
||||
if (date && doctor?.id) {
|
||||
setAppo("loading");
|
||||
setHour();
|
||||
request
|
||||
.getAppointment(doctorId, date)
|
||||
.getAppointment(doctor.id, date)
|
||||
.then((res) => {
|
||||
setAppo(res);
|
||||
if (res.morning?.length && res.evening?.length) setValue(0);
|
||||
else if (res.morning?.length && value !== 0) setValue(0);
|
||||
else if (res.evening?.length && value !== 1) setValue(1);
|
||||
|
||||
// بررسی وجود اسلاتهای available در صبح و عصر
|
||||
const hasAvailableMorning = res.morning?.some(slot => slot.status === "available");
|
||||
const hasAvailableEvening = res.evening?.some(slot => slot.status === "available");
|
||||
|
||||
// اگر هر دو صبح و عصر اسلات available داشته باشند، صبح را نمایش بده
|
||||
if (hasAvailableMorning && hasAvailableEvening) {
|
||||
setValue(0);
|
||||
}
|
||||
// اگر فقط صبح اسلات available داشته باشد
|
||||
else if (hasAvailableMorning && !hasAvailableEvening) {
|
||||
setValue(0);
|
||||
}
|
||||
// اگر فقط عصر اسلات available داشته باشد یا هیچ کدام available نداشته باشند، عصر را نمایش بده
|
||||
else {
|
||||
setValue(1);
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
setAppo("در حال حاضر، نوبتی برای ساعتهای صبح موجود نمیباشد.");
|
||||
// در صورت خطا هم عصر را نمایش بده
|
||||
setValue(1);
|
||||
});
|
||||
}
|
||||
}, [date]);
|
||||
}, [date, doctor?.id]);
|
||||
|
||||
return (
|
||||
<div className="w-full">
|
||||
|
||||
Reference in New Issue
Block a user