refactor: enhance date selection logic in DatePicker and update appointment request parameters

This commit is contained in:
hamed
2025-11-17 14:18:15 +03:30
parent 63d968be1e
commit 1e510a84b1
5 changed files with 79 additions and 23 deletions
+22 -9
View File
@@ -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">