"use client"; import React, { useContext, useEffect, useState } from "react"; import moment from "jalali-moment"; import "moment/locale/fa"; // Set the locale to Farsi (Persian) import AppHeader from "@comp/AppHeader/page"; import { Swiper, SwiperSlide } from "swiper/react"; import PersianNumber from "plugins/PersianNumber"; import { PersianD, PersianDay, PersianM, holidays } from "datacalender"; import AppContext from "@ctx/AppContext"; import Input from "plugins/Input/page"; import { toast } from "react-toastify"; import Avatar from "boring-avatars"; import BottomManageShift from "plugins/BottomSheet/BottomManageShift"; import BottomSheetAddUserToPositionShiftPlan from "plugins/BottomSheet/BottomSheetAddUserToPositionShiftPlan"; import Buttonbriz from "plugins/Buttonbriz/page"; const Calendar = () => { const CTX = useContext(AppContext); const shiftsData = CTX.state.shiftsData; const searchUserChoose = CTX.state.searchUserChoose; const usersData = CTX.state.usersData; const routinesData = CTX.state.routinesData; const routineShiftPlan = CTX.state.routineShiftPlan; const positionsData = CTX.state.positionsData; const [daysUntilWeek, setDaysUntilWeek] = useState([]); const [selectDay, setSelectDay] = useState(null); const [selectShift, setselectShift] = useState(-1); const [selectRoutine, setSelectRoutine] = useState(-1); const [shiftsPlan, setShiftsPlan] = useState([]); const [manageShiftEmployeesData, setManageShiftEmployeesData] = useState([]); const [shiftPlanSteps, setShiftPlanSteps] = useState(0); const [positionSelectNameBottomSheet, setPositionSelectNameBottomSheet] = useState([]); const [positionSelectIdBottomSheet, setPositionSelectIdBottomSheet] = useState([]); const [userAndPositionIds, setUserAndPositionIds] = useState([]); const week = [ { key: "شنبه", value: 6 }, { key: "یکشنبه", value: 0 }, { key: "دوشنبه", value: 1 }, { key: "سه شنبه", value: 2 }, { key: "چهار شنبه", value: 3 }, { key: "پنج شنبه", value: 4 }, { key: "جمعه", value: 5 }, ]; const today = moment().format("jYYYY/jM/jD"); // Get the current Jalali date const daysInCurrentMonth = moment(today, "jYYYY/jM/jD") .endOf("jMonth") .jDate(); const daysEndOfMonth = () => { const daysOfWeek = []; const startOfNextWeek = moment(today, "jYYYY/jM/jD") .startOf("jWeek") .add(7, "days"); // Iterate from شنبه (Saturday) to جمعه (Friday) and add each day to the array for (let i = 0; i < 7; i++) { const currentDay = startOfNextWeek.clone().add(i, "days"); const isToday = currentDay.isSame(today, "day"); const dayOfWeekName = week[i].key; // Get the day name from the week array daysOfWeek.push({ checkDay: currentDay.format("jYYYY/jM/jD"), date: currentDay.format("jD / jM"), dayOfWeek: dayOfWeekName, today: isToday, value: week[i].value, }); } return setDaysUntilWeek(daysOfWeek); }; const handleManageShiftEmployeesOpen = (e) => { setManageShiftEmployeesData( usersData.map((item) => ({ key: item.firstName + " " + item.lastName + "( " + item.roleNames[0] + " )", value: item.userId, })) ); }; const body = { planDate: daysUntilWeek[selectDay]?.checkDay && moment.utc(daysUntilWeek[selectDay].checkDay, "jYYYY-jMM-jDDTHH").unix(), shiftId: shiftsPlan && shiftsPlan[selectShift]?.id, routineId: routinesData && routinesData[selectRoutine]?.id, userAndPositionIds, }; const handleRoutineShiftPlan = (index, id) => { setSelectRoutine(index); CTX.GetRoutineShiftPlan(id); setShiftPlanSteps(1); }; const handleCreateShiftPlan = (update) => { if (update == "UPDATE") { // CTX.UpdateShiftPlan(bodyUpdate); } else { CTX.CreateShifPlan(body); } }; useEffect(() => { CTX.GetRoutines(); daysEndOfMonth(); setSelectDay(-1); CTX.GetShifts(); CTX.GetPositions(); }, []); useEffect(() => { handleManageShiftEmployeesOpen(); }, [usersData]); useEffect(() => { setShiftsPlan( routineShiftPlan?.find((e) => e?.day == daysUntilWeek[selectDay]?.value) ?.shifts ); setselectShift(-1); }, [selectDay]); return (
{e.name}
{/* {PersianD.find((i) => i == e.dayOfWeek)} */} {e.dayOfWeek}
{e?.title}
شما شیفتی دراین روز ندارید
ویرایش برای{" "}
{shiftsPlan && shiftsPlan[selectShift]?.title}
{" "}
تاریخ{" "}
کاربران +
{ usersData.find((b) => b.userId == item?.value) ?.firstName }