diff --git a/app/appointment/[slug]/page.js b/app/appointment/[doctorId]/page.js
similarity index 100%
rename from app/appointment/[slug]/page.js
rename to app/appointment/[doctorId]/page.js
diff --git a/app/component/date/datePicker/index.js b/app/component/date/datePicker/index.js
index 20e849b..0a364ad 100644
--- a/app/component/date/datePicker/index.js
+++ b/app/component/date/datePicker/index.js
@@ -3,8 +3,9 @@
import { useEffect, useRef, useState } from "react";
import FirstDatePicker from "./date/FirstDatePicker";
import SecondDatePicker from "./date/SecondDatePicker";
+import { dateToTimestamp } from "@/helper";
-function DatePicker({ date, updateDate }) {
+function DatePicker({ setDate }) {
const nextIconDatePickerF = useRef();
const prevIconDatePickerF = useRef();
const nextIconDatePickerS = useRef();
@@ -16,13 +17,15 @@ function DatePicker({ date, updateDate }) {
const handleStartDateChange = (date, e) => {
if (date) {
- setStartDate(date);
+ setDate(dateToTimestamp(date));
setEndDate(null);
+ setStartDate(date);
}
};
const handleEndDateChange = (date) => {
if (date) {
+ setDate(dateToTimestamp(date));
setEndDate(date);
setStartDate(null);
}
@@ -36,7 +39,6 @@ function DatePicker({ date, updateDate }) {
useEffect(() => {
if (nextIconDatePickerS.current) {
nextIconDatePickerS.current.click();
- console.log(nextIconDatePickerS.current);
setLoading(false);
}
diff --git a/app/component/date/dateTime/Hours.js b/app/component/date/dateTime/Hours.js
deleted file mode 100644
index eff8943..0000000
--- a/app/component/date/dateTime/Hours.js
+++ /dev/null
@@ -1,34 +0,0 @@
-import { Button } from "@mui/material";
-
-function Hours({ doctor, hour, setHour, value, nameHours }) {
- return (
-
- {doctor &&
- nameHours &&
- doctor[nameHours[value]]?.map((item, idx) => (
- -
-
-
- ))}
-
- );
-}
-
-export default Hours;
diff --git a/app/component/date/dateTime/SendAppo.js b/app/component/date/dateTime/SendAppo.js
new file mode 100644
index 0000000..722e610
--- /dev/null
+++ b/app/component/date/dateTime/SendAppo.js
@@ -0,0 +1,49 @@
+import ArrowLeftB from "@/components/icons/ArrowLeftB";
+import { request } from "@/services/response";
+import { Button } from "@mui/material";
+import { useParams } from "next/navigation";
+import { useState } from "react";
+
+function SendAppo({ hour }) {
+ const params = useParams();
+ const doctorId = params.doctorId;
+ const [loading, setLoading] = useState(false);
+
+ const sendReq = () => {
+ setLoading(true);
+ request
+ .postAppointment({
+ doctor_id: doctorId,
+ slot: hour,
+ })
+ .then((res) => {
+ console.log(res);
+ setLoading(false);
+ })
+ .catch((err) => {
+ console.log(err);
+ });
+ // if (locateVisit) {
+ // setStep((prev) => prev + 1);
+ // } else {
+ // setIsError(true);
+ // }
+ };
+
+ return (
+
+ );
+}
+
+export default SendAppo;
diff --git a/app/component/date/dateTime/hours/List.js b/app/component/date/dateTime/hours/List.js
new file mode 100644
index 0000000..2f25cad
--- /dev/null
+++ b/app/component/date/dateTime/hours/List.js
@@ -0,0 +1,44 @@
+import { Button } from "@mui/material";
+import React from "react";
+
+function List({ appo, hour, setHour, value }) {
+ const list = appo && appo[value ? "evening" : "morning"];
+
+ if (list && list.length) {
+ return (
+
+ {list.map((item, idx) => (
+ -
+
+
+ ))}
+
+ );
+ } else {
+ return (
+
+ در حال حاضر، نوبتی برای ساعتهای {[value ? "بعد از ظهر" : "صبح"]} موجود
+ نمیباشد.
+
+ );
+ }
+}
+
+export default List;
diff --git a/app/component/date/dateTime/hours/Loading.js b/app/component/date/dateTime/hours/Loading.js
new file mode 100644
index 0000000..14542d2
--- /dev/null
+++ b/app/component/date/dateTime/hours/Loading.js
@@ -0,0 +1,23 @@
+import { CircularProgress } from "@mui/material";
+
+function Loading() {
+ return (
+
+
+
+ );
+}
+
+export default Loading;
diff --git a/app/component/date/dateTime/hours/index.js b/app/component/date/dateTime/hours/index.js
new file mode 100644
index 0000000..df895ad
--- /dev/null
+++ b/app/component/date/dateTime/hours/index.js
@@ -0,0 +1,18 @@
+import List from "./List";
+import Loading from "./Loading";
+
+function Hours({ appo, doctor, hour, setHour, value, nameHours }) {
+ if (appo === "loading") {
+ return ;
+ } else if (typeof appo === "string") {
+ return (
+
+ {appo}
+
+ );
+ } else {
+ return
;
+ }
+}
+
+export default Hours;
diff --git a/app/component/date/dateTime/index.js b/app/component/date/dateTime/index.js
index a4a0f57..73a2856 100644
--- a/app/component/date/dateTime/index.js
+++ b/app/component/date/dateTime/index.js
@@ -1,19 +1,46 @@
"use client";
-import { useState } from "react";
-import Hours from "./Hours";
+import { useEffect, useState } from "react";
+import Hours from "./hours";
import Tabs from "../../Tabs";
import { Button } from "@mui/material";
import ArrowLeftB from "@/components/icons/ArrowLeftB";
+import { request } from "@/services/response";
+import { useParams, useSearchParams } from "next/navigation";
+import SendAppo from "./SendAppo";
const listTab = ["صبح", "بعد از ظهر"];
const nameHours = ["hours_morning", "hours_afternoon"];
-function DateTime({ doctor, setStep, setIsError, locateVisit }) {
+function DateTime({ date, doctor, setStep, setIsError, locateVisit }) {
+ const params = useParams();
+ const doctorId = params.doctorId;
const [value, setValue] = useState(0);
- const [hour, setHour] = useState(0);
+ const [hour, setHour] = useState();
+ const [appo, setAppo] = useState("تاریخ مورد نظرتان را انتخاب کنید.");
- const handleChange = (event, newValue) => setValue(newValue);
+ const handleChange = (event, newValue) => {
+ setHour();
+ setValue(newValue);
+ };
+ console.log(hour);
+
+ useEffect(() => {
+ if (date) {
+ setAppo("loading");
+ setHour();
+ request
+ .getAppointment(doctorId, date)
+ .then((res) => {
+ console.log(res);
+ setAppo(res);
+ })
+ .catch((err) => {
+ console.log(err);
+ setAppo("در حال حاضر، نوبتی برای ساعتهای صبح موجود نمیباشد.");
+ });
+ }
+ }, [date]);
return (
@@ -41,29 +68,14 @@ function DateTime({ doctor, setStep, setIsError, locateVisit }) {
handleChange={handleChange}
/>
-
-
-
+
);
}
diff --git a/components/appointment/date/Time/SelectDatePicker.js b/components/appointment/date/Time/SelectDatePicker.js
index 452ddae..d75c985 100644
--- a/components/appointment/date/Time/SelectDatePicker.js
+++ b/components/appointment/date/Time/SelectDatePicker.js
@@ -1,20 +1,7 @@
import DatePicker from "@/app/component/date/datePicker";
-import { request } from "@/services/response";
-import { useEffect } from "react";
-function SelectDatePicker() {
- useEffect(() => {
- request
- .getAppointment(47, 1753859133)
- .then((res) => {
- console.log(res);
- })
- .catch((err) => {
- console.log(err);
- });
- });
-
- return ;
+function SelectDatePicker({ setDate }) {
+ return ;
}
export default SelectDatePicker;
diff --git a/components/appointment/date/Time/index.js b/components/appointment/date/Time/index.js
index 9cb6c89..b69cf87 100644
--- a/components/appointment/date/Time/index.js
+++ b/components/appointment/date/Time/index.js
@@ -1,12 +1,12 @@
import SelectDatePicker from "./SelectDatePicker";
-function Time({ isStep }) {
+function Time({ isStep, setDate }) {
return (
2. انتخاب روز
-
+
{!isStep && (
)}
diff --git a/components/appointment/date/hour/index.js b/components/appointment/date/hour/index.js
index 848382d..5fa1917 100644
--- a/components/appointment/date/hour/index.js
+++ b/components/appointment/date/hour/index.js
@@ -1,12 +1,13 @@
import DateTime from "@/app/component/date/dateTime";
-function Hour({ doctor, setStep, setIsError, locateVisit, isStep }) {
+function Hour({ doctor, setStep, date, setIsError, locateVisit, isStep }) {
return (
3. انتخاب ساعت
@@ -19,8 +20,9 @@ function Date({ doctor, setStep }) {
isError={isError}
/>
diff --git a/helper/index.js b/helper/index.js
index eed868c..e71cbd9 100644
--- a/helper/index.js
+++ b/helper/index.js
@@ -237,3 +237,20 @@ export const changeDateType = (data, toTimeStamp) => {
}
return newData;
};
+
+export const removeTokenHead = {
+ headers: {
+ Authorization: "",
+ },
+};
+
+export const dateToTimestamp = (date) => {
+ const gregorianMoment = date.clone().locale("fa");
+
+ // Get the Unix timestamp in milliseconds
+ const unixTimestamp = gregorianMoment.valueOf();
+
+ const inSeconde = unixTimestamp / 1000;
+
+ return inSeconde;
+};
diff --git a/services/response.js b/services/response.js
index b01a5a8..0dcd8a4 100644
--- a/services/response.js
+++ b/services/response.js
@@ -1,3 +1,4 @@
+import { removeTokenHead } from "@/helper";
import api from "./api";
export const request = {
@@ -8,11 +9,7 @@ export const request = {
mobile,
captcha_token,
},
- {
- headers: {
- Authorization: "",
- },
- }
+ removeTokenHead
),
getToken: (grant_type, client_id, client_secret, uuid, code) => {
const formData = new URLSearchParams();
@@ -47,11 +44,7 @@ export const request = {
}),
getUserInfo: (headers) => api.get("oauth/userinfo", headers),
getInsuranceType: () =>
- api.get("api/v1/categorys/insurance_type", {
- headers: {
- Authorization: "",
- },
- }),
+ api.get("api/v1/categorys/insurance_type", removeTokenHead),
getAppointmentWeeklySchedule: (uuid) =>
api.get(`api/v1/appointment-settings/weekly-schedule/${uuid}`),
postAppointmentWeeklySchedule: () =>
@@ -61,6 +54,9 @@ export const request = {
deleteAppointmentWeeklySchedule: (uuid) =>
api.delete(`api/v1/appointment-settings/weekly-schedule/${uuid}`),
getAppointment: (doctor_id, date) =>
- api.get(`api/v1/appointment?doctor_id=${doctor_id}&date=${date}`),
+ api.get(
+ `api/v1/appointment-slots?doctor_id=${doctor_id}&date=${date}`,
+ removeTokenHead
+ ),
postAppointment: (data) => api.post(`api/v1/appointment`, data),
};