"use client"; import React from "react"; import "../../style/globals.css"; import { Inter } from "next/font/google"; import "../../style/fontiran.css"; import NavBAr from "@comp/NavBar/NavBAr"; import "swiper/css"; import "swiper/css/navigation"; import "react-spring-bottom-sheet/dist/style.css"; import AppContext from "../../Contexts/AppContext"; import { useCallback, useEffect, useState } from "react"; import { motion } from "framer-motion"; import Link from "next/link"; import { usePathname, useRouter } from "next/navigation"; import { toast, ToastContainer } from "react-toastify"; import "react-toastify/dist/ReactToastify.css"; import Loading from "plugins/Loading/page"; import Chapar, { getToken } from "plugins/Chapar"; import TimePicker from "plugins/TimePicker/page"; import axios from "axios"; import "rc-slider/assets/index.css"; import BottomSheetReport from "plugins/BottomSheet/BottomSheetReport"; import BottomSheetReportManageShift from "plugins/BottomSheet/BottomSheetReportManageShift"; import moment from "jalali-moment"; const inter = Inter({ subsets: ["latin"] }); const RootData = ({ children }) => { // BottomSheet const [BottomSheetCreateRoleOpen, setBottomSheetCreateRoleOpen] = useState(false); const [BottomSheetCreateEmployeesOpen, setBottomSheetCreateEmployeesOpen] = useState(false); const [BottomSheetCreateShiftsOpen, setBottomSheetCreateShiftsOpen] = useState(false); const [BottomManageShiftOpen, setBottomManageShiftOpen] = useState(false); const [BottomFilterActivitiesOpen, setBottomFilterActivitiesOpen] = useState(false); const [BottomSheetCreateRoutineOpen, setBottomSheetCreateRoutineOpen] = useState(false); const [BottomSheetCreateSectionOpen, setBottomSheetCreateSectionOpen] = useState(false); const [BottomSheetCreatePositionOpen, setBottomSheetCreatePositionOpen] = useState(false); const [ BottomSheetAddUserToPositionShiftPlanOpen, setBottomSheetAddUserToPositionShiftPlanOpen, ] = useState(false); const [BottomSheetChangeRoleOpen, setBottomSheetChangeRoleOpen] = useState(false); const [BottomSheetReportOpen, setBottomSheetReportOpen] = useState(false); const [ BottomSheetReportManageShiftOpen, setBottomSheetReportManageShiftOpen, ] = useState(false); const [BottomSheetCreateTaskOpen, setBottomSheetCreateTaskOpen] = useState(false); // BigPlus const [BigPlusOpen, setBigPlusOpen] = useState(false); const [BigPlusRotateIcon, setBigPlusRotateIcon] = useState(false); // login const [phoneNumber, setPhoneNumber] = useState(""); const [verifyCode, setVerifyCode] = useState(""); const [stepLogin, setStepLogin] = useState(0); const [tokenForStorage, setTokenForStorage] = useState(null); const [profile, setProfile] = useState([]); // loading const [loading, setLoading] = useState(false); //auth const [complexId, setComplexId] = useState(0); // createRole / role const [permissions, setPermissions] = useState(0); const [permissionsChoose, setPermissionsChoose] = useState([]); const [rolesData, setRolesData] = useState([]); const [roleData, setRoleData] = useState([]); const [goToEditRole, setGoToEditRole] = useState(false); const [idEditRole, setIdEditRole] = useState(null); // createUser/ user const [usersData, setUsersData] = useState([]); const [userStaffData, setUserStaffData] = useState([]); const [rolesChoose, setRolesChoose] = useState([]); const [userData, setUserData] = useState([]); const [goToEditUser, setGoToEditUser] = useState(false); const [idEditUser, setIdEditUser] = useState(null); // createsection/ section const [sectionsData, setSectionsData] = useState([]); const [sectionData, setSectionData] = useState([]); const [goToEditSection, setGoToEditSection] = useState(false); const [idEditSection, setIdEditSection] = useState(null); // createroutine/ routine const [routinesData, setRoutinesData] = useState([]); const [routineData, setRoutineData] = useState([]); const [routineShiftPlan, setRoutineShiftPlan] = useState([]); const [goToEditRoutine, setGoToEditRoutine] = useState(false); const [idEditRoutine, setIdEditRoutine] = useState(null); // createPosition/ Position const [positionsData, setPositionsData] = useState([]); const [positionData, setPositionData] = useState([]); const [goToEditPosition, setGoToEditPosition] = useState(false); const [idEditPosition, setIdEditPosition] = useState(null); const [sectionIdChoose, setSectionIdChoose] = useState([]); // shift const [dayOfWeeksChoose, setDayOfWeeksChoose] = useState([]); const [startAtTimeShift, setStartAtTimeShift] = useState(["00", "00"]); const [endAtTimeShift, setEndAtTimeShift] = useState(["00", "00"]); const [shiftsData, setShiftsData] = useState([null]); const [shiftData, setShiftData] = useState([null]); const [goToEditShift, setGoToEditShift] = useState(false); const [idEditShift, setIdEditShift] = useState(null); const [shiftPlanData, setShiftPlanData] = useState([]); const [shiftPlansData, setShifPlansData] = useState([]); // task const [routineForTaskChoose, setRoutineForTaskChoose] = useState([]); const [positionsForTaskChoose, setPositionsForTaskChoose] = useState([]); const [shiftsForTaskChoose, setShiftsForTaskChoose] = useState([]); const [shiftsDaysChoose, setShiftsDaysChoose] = useState([]); const [tasksData, setTasksData] = useState([]); const [taskData, setTaskData] = useState([]); const [goToEditTask, setGoToEditTask] = useState(false); const [idEditTask, setIdEditTask] = useState(null); const [pageGetTasks, setPageGetTasks] = useState(0); const [stopGetTasks, setStopGetTasks] = useState(false); const [typeTask, setTypeTask] = useState(1); // activity const [activitiesData, setActivitiesData] = useState([]); const [pageGetActivity, setPageGetActivity] = useState(0); const [stopGetActivities, setStopGetActivities] = useState(false); // shift manage-shift const [searchUserChoose, setSearchUserChoose] = useState([]); // TimePicker const [openTimePicker, setOpenTimePicker] = useState(false); const [TimePickerOrder, setTimePickerOrder] = useState(null); // closeShift const [completeActivities, setCompleteActivities] = useState([]); //report const [reportDetail, setReportDetail] = useState(null); //home page const [homePageData, setHomePageData] = useState([]); const [coffeeBrewData, setCoffeeBrewData] = useState([]); const [latesCoffeeBrewData, setLatesCoffeeBrewData] = useState([]); //notif const [notifUnreadData, setNotifUnreadData] = useState(""); const pathname = usePathname(); const router = useRouter(); const hiddenUrls = ["/app/login", "/pricing", "/about-us", "/"]; const shouldRenderComponent = !hiddenUrls.includes(pathname); const closeBigPlusPage = () => { setTimeout(() => { setBigPlusOpen(false); }, 500); setBigPlusRotateIcon(false); }; const ConfirmPhoneNumber = async (phoneNumber) => { try { const data = await Chapar.get( `${process.env.NEXT_PUBLIC_API_URL}/auth/verifycode?phoneNumber=${phoneNumber}` ); setStepLogin(1); localStorage.removeItem("token"); } catch ({ error, status }) { toast.error(" اطلاعات را صحیح وارد کنید ", { position: "bottom-right", closeOnClick: true, }); } }; const LoginWhitVerifyCode = async () => { setLoading(true); try { const data = await Chapar.post( `${process.env.NEXT_PUBLIC_API_URL}/auth/login/code`, { userName: phoneNumber, password: null, verifyCode, } ); setLoading(false); localStorage.setItem("token", data.access_token); if (data.user.signUpStatus == 1) { setStepLogin(2); } else if (data.user.signUpStatus == 2 || data.user.signUpStatus == 3) { setProfile(data); toast.success(`${data.user.firstName} جان خوش اومدی `, { position: "bottom-right", closeOnClick: true, }); router.push("/app/home"); } } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; const SignUpLogin = async (body) => { setLoading(true); try { const data = await Chapar.post( `${process.env.NEXT_PUBLIC_API_URL}/auth/signup/complex`, body, { headers: { Authorization: "Bearer " + localStorage.getItem("token"), }, } ); setLoading(false); if (data.user.signUpStatus == 2 || data.user.signUpStatus == 3) { setProfile(data); toast.success(` ${data.user.firstName} جان خوش اومدی `, { position: "bottom-right", closeOnClick: true, }); // localStorage.removeItem("token"); localStorage.setItem("token", data.access_token); router.push("/app/home"); } } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; const GetPermissions = async (body) => { setLoading(true); try { const data = await Chapar.get( `${process.env.NEXT_PUBLIC_API_URL}/role/permission`, { headers: { Authorization: "Bearer " + localStorage.getItem("token"), }, } ); setPermissions(data); setLoading(false); } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; const CreateRole = async (body) => { setLoading(true); try { const data = await Chapar.post( `${process.env.NEXT_PUBLIC_API_URL}/role`, body, { headers: { Authorization: "Bearer " + localStorage.getItem("token"), }, } ); toast.success(`نقش ساخته شد`, { position: "bottom-right", closeOnClick: true, }); setBottomSheetCreateRoleOpen(false); setLoading(false); GetRoles(); } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; const UpdateRole = async (body) => { setLoading(true); try { const data = await Chapar.put( `${process.env.NEXT_PUBLIC_API_URL}/role`, body, { headers: { Authorization: "Bearer " + localStorage.getItem("token"), }, } ); toast.success(`نقش ویرایش شد`, { position: "bottom-right", closeOnClick: true, }); setBottomSheetCreateRoleOpen(false); setLoading(false); GetRoles(); } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; const GetRoles = async () => { setLoading(true); try { const data = await Chapar.get( `${process.env.NEXT_PUBLIC_API_URL}/role?page=0`, { headers: { Authorization: "Bearer " + localStorage.getItem("token"), }, } ); setRolesData(data); setLoading(false); } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; const GetRole = async (id) => { setLoading(true); try { const data = await Chapar.get( `${process.env.NEXT_PUBLIC_API_URL}/role/${id}?page=0`, { headers: { Authorization: "Bearer " + localStorage.getItem("token"), }, } ); setRoleData(data); setLoading(false); } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; const DeleteRole = async (id) => { setLoading(true); try { const data = await Chapar.delete( `${process.env.NEXT_PUBLIC_API_URL}/role/${id}`, { headers: { Authorization: "Bearer " + localStorage.getItem("token"), }, } ); setBottomSheetCreateRoleOpen(false); setLoading(false); GetRoles(); } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; const CreateUser = async (body) => { setLoading(true); try { const data = await Chapar.post( `${process.env.NEXT_PUBLIC_API_URL}/user`, body, { headers: { Authorization: "Bearer " + localStorage.getItem("token"), }, } ); toast.success(`کاربر ساخته شد`, { position: "bottom-right", closeOnClick: true, }); setBottomSheetCreateEmployeesOpen(false); setLoading(false); GetUsers(); } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; const UpdateUser = async (body) => { setLoading(true); try { const data = await Chapar.put( `${process.env.NEXT_PUBLIC_API_URL}/user`, body, { headers: { Authorization: "Bearer " + localStorage.getItem("token"), }, } ); toast.success(`کاربر ویرایش شد`, { position: "bottom-right", closeOnClick: true, }); setBottomSheetCreateEmployeesOpen(false); setLoading(false); GetUsers(); } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; const GetUsers = async () => { setLoading(true); try { const data = await Chapar.get( `${process.env.NEXT_PUBLIC_API_URL}/user?page=0`, { headers: { Authorization: "Bearer " + localStorage.getItem("token"), }, } ); setUsersData(data); setLoading(false); } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; const GetUser = async (id) => { setLoading(true); try { const data = await Chapar.get( `${process.env.NEXT_PUBLIC_API_URL}/user/${id}`, { headers: { Authorization: "Bearer " + localStorage.getItem("token"), }, } ); setUserData(data); setLoading(false); } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; const GetUserStaff = async (FilterDate) => { setLoading(true); try { const data = await Chapar.get( `${ process.env.NEXT_PUBLIC_API_URL }/user/staff?filter=${FilterDate}&page=${0}`, { headers: { Authorization: "Bearer " + localStorage.getItem("token"), }, } ); setUserStaffData(data); setLoading(false); } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; const DeleteUser = async (id) => { setLoading(true); try { const data = await Chapar.delete( `${process.env.NEXT_PUBLIC_API_URL}/user/${id}`, { headers: { Authorization: "Bearer " + localStorage.getItem("token"), }, } ); setBottomSheetCreateEmployeesOpen(false); setLoading(false); GetUsers(); } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; const CreateShift = async (body) => { setLoading(true); try { const data = await Chapar.post( `${process.env.NEXT_PUBLIC_API_URL}/shift`, JSON.stringify(body), { headers: { Authorization: "Bearer " + localStorage.getItem("token"), }, } ); toast.success(`شیفت ساخته شد`, { position: "bottom-right", closeOnClick: true, }); setBottomSheetCreateShiftsOpen(false); setLoading(false); GetShifts(); } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; const UpdateShift = async (body) => { setLoading(true); try { const data = await Chapar.put( `${process.env.NEXT_PUBLIC_API_URL}/shift`, body, { headers: { Authorization: "Bearer " + localStorage.getItem("token"), }, } ); toast.success(`شیفت ویرایش شد`, { position: "bottom-right", closeOnClick: true, }); setBottomSheetCreateShiftsOpen(false); setLoading(false); GetShifts(); } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; const GetShifts = async (date) => { setLoading(true); try { const data = await Chapar.get( `${process.env.NEXT_PUBLIC_API_URL}/shift?page=0${ date ? `&selectedDate=${date}` : "" }`, { headers: { Authorization: "Bearer " + localStorage.getItem("token"), }, } ); setShiftsData(data); setLoading(false); } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; const GetShift = async (id) => { setLoading(true); try { const data = await Chapar.get( `${process.env.NEXT_PUBLIC_API_URL}/shift/${id}`, { headers: { Authorization: "Bearer " + localStorage.getItem("token"), }, } ); setShiftData(data); setLoading(false); } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; const DeleteShift = async (id) => { setLoading(true); try { const data = await Chapar.delete( `${process.env.NEXT_PUBLIC_API_URL}/shift/${id}`, { headers: { Authorization: "Bearer " + localStorage.getItem("token"), }, } ); setBottomSheetCreateShiftsOpen(false); setLoading(false); GetShifts(); } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; const CreateSection = async (body) => { setLoading(true); try { const data = await Chapar.post( `${process.env.NEXT_PUBLIC_API_URL}/section`, JSON.stringify(body), { headers: { Authorization: "Bearer " + localStorage.getItem("token"), }, } ); toast.success(`سکشن ساخته شد`, { position: "bottom-right", closeOnClick: true, }); setBottomSheetCreateSectionOpen(false); setLoading(false); GetSections(); } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; const UpdateSection = async (body) => { setLoading(true); try { const data = await Chapar.put( `${process.env.NEXT_PUBLIC_API_URL}/section`, body, { headers: { Authorization: "Bearer " + localStorage.getItem("token"), }, } ); toast.success(`سکشن ویرایش شد`, { position: "bottom-right", closeOnClick: true, }); setBottomSheetCreateSectionOpen(false); setLoading(false); GetSections(); } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; const GetSections = async () => { setLoading(true); try { const data = await Chapar.get( `${process.env.NEXT_PUBLIC_API_URL}/section?page=0`, { headers: { Authorization: "Bearer " + localStorage.getItem("token"), }, } ); setSectionsData(data); setLoading(false); } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; const GetSection = async (id) => { setLoading(true); try { const data = await Chapar.get( `${process.env.NEXT_PUBLIC_API_URL}/section/${id}`, { headers: { Authorization: "Bearer " + localStorage.getItem("token"), }, } ); setSectionData(data); setLoading(false); } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; const DeleteSection = async (id) => { setLoading(true); try { const data = await Chapar.delete( `${process.env.NEXT_PUBLIC_API_URL}/section/${id}`, { headers: { Authorization: "Bearer " + localStorage.getItem("token"), }, } ); setBottomSheetCreateSectionOpen(false); setLoading(false); GetSections(); } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; const CreateRoutine = async (body) => { setLoading(true); try { const data = await Chapar.post( `${process.env.NEXT_PUBLIC_API_URL}/routine`, JSON.stringify(body), { headers: { Authorization: "Bearer " + localStorage.getItem("token"), }, } ); toast.success(`روتین ساخته شد`, { position: "bottom-right", closeOnClick: true, }); setBottomSheetCreateRoutineOpen(false); setLoading(false); GetRoutines(); } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; const UpdateRoutine = async (body) => { setLoading(true); try { const data = await Chapar.put( `${process.env.NEXT_PUBLIC_API_URL}/routine`, body, { headers: { Authorization: "Bearer " + localStorage.getItem("token"), }, } ); toast.success(`روتین ویرایش شد`, { position: "bottom-right", closeOnClick: true, }); setBottomSheetCreateRoutineOpen(false); setLoading(false); GetRoutines(); } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; const GetRoutines = async () => { setLoading(true); try { const data = await Chapar.get( `${process.env.NEXT_PUBLIC_API_URL}/routine?page=0`, { headers: { Authorization: "Bearer " + localStorage.getItem("token"), }, } ); setRoutinesData(data); setLoading(false); } catch (error) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); setLoading(false); // if (error.response.status === 401) { // localStorage.removeItem("token"); // window.location.href = "/"; // } } }; const GetRoutine = async (id) => { setLoading(true); try { const data = await Chapar.get( `${process.env.NEXT_PUBLIC_API_URL}/routine/${id}`, { headers: { Authorization: "Bearer " + localStorage.getItem("token"), }, } ); setRoutineData(data); setLoading(false); } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; const GetRoutineShiftPlan = async (id, time) => { setLoading(true); try { const data = await Chapar.get( `${process.env.NEXT_PUBLIC_API_URL}/routine/${id}/shift?selectedDate=${time}`, { headers: { Authorization: "Bearer " + localStorage.getItem("token"), }, } ); setRoutineShiftPlan(data); setLoading(false); } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; const GetShiftPlan = async (id) => { setLoading(true); try { const data = await Chapar.get( `${process.env.NEXT_PUBLIC_API_URL}/shift/plan/${id}`, { headers: { Authorization: "Bearer " + localStorage.getItem("token"), }, } ); setShiftPlanData(data); setLoading(false); } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; const GetShifPlans = async (page, dataFilter) => { setLoading(true); try { const data = await Chapar.get( `${process.env.NEXT_PUBLIC_API_URL}/shift/plan?page=${page}&dateFilter=${dataFilter}`, { headers: { Authorization: "Bearer " + localStorage.getItem("token"), }, } ); setShifPlansData(data); setLoading(false); } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; const DeleteRoutine = async (id) => { setLoading(true); try { const data = await Chapar.delete( `${process.env.NEXT_PUBLIC_API_URL}/routine/${id}`, { headers: { Authorization: "Bearer " + localStorage.getItem("token"), }, } ); setBottomSheetCreateRoutineOpen(false); setLoading(false); GetRoutines(); } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; const CreatePosition = async (body) => { setLoading(true); try { const data = await Chapar.post( `${process.env.NEXT_PUBLIC_API_URL}/position`, JSON.stringify(body), { headers: { Authorization: "Bearer " + localStorage.getItem("token"), }, } ); toast.success(`پوزیشن ساخته شد`, { position: "bottom-right", closeOnClick: true, }); setBottomSheetCreatePositionOpen(false); setLoading(false); GetPositions(); } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; const UpdatePosition = async (body) => { setLoading(true); try { const data = await Chapar.put( `${process.env.NEXT_PUBLIC_API_URL}/position`, body, { headers: { Authorization: "Bearer " + localStorage.getItem("token"), }, } ); toast.success(`پوزیشن ویرایش شد`, { position: "bottom-right", closeOnClick: true, }); setBottomSheetCreatePositionOpen(false); setLoading(false); GetPositions(); } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; const GetPositions = async () => { setLoading(true); try { const data = await Chapar.get( `${process.env.NEXT_PUBLIC_API_URL}/position?page=0`, { headers: { Authorization: "Bearer " + localStorage.getItem("token"), }, } ); setPositionsData(data); setLoading(false); } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; const GetPosition = async (id) => { setLoading(true); try { const data = await Chapar.get( `${process.env.NEXT_PUBLIC_API_URL}/position/${id}`, { headers: { Authorization: "Bearer " + localStorage.getItem("token"), }, } ); setPositionData(data); setLoading(false); } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; const DeletePosition = async (id) => { setLoading(true); try { const data = await Chapar.delete( `${process.env.NEXT_PUBLIC_API_URL}/position/${id}`, { headers: { Authorization: "Bearer " + localStorage.getItem("token"), }, } ); setBottomSheetCreatePositionOpen(false); setLoading(false); GetPositions(); } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; const CreateTask = async (body) => { setLoading(true); try { const data = await Chapar.post( `${process.env.NEXT_PUBLIC_API_URL}/task`, JSON.stringify(body), { headers: { Authorization: "Bearer " + localStorage.getItem("token"), }, } ); toast.success(`فعالیت ساخته شد`, { position: "bottom-right", closeOnClick: true, }); // router-> setLoading(false); router.push("/app/tasks"); } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; const UpdateTask = async (body) => { setLoading(true); try { const data = await Chapar.put( `${process.env.NEXT_PUBLIC_API_URL}/task`, body, { headers: { Authorization: "Bearer " + localStorage.getItem("token"), }, } ); toast.success(`فعالیت ویرایش شد`, { position: "bottom-right", closeOnClick: true, }); // router-> setLoading(false); router.push("/app/tasks"); } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; const GetTasks = async (page, shiftId) => { setLoading(true); try { const data = await Chapar.get( `${process.env.NEXT_PUBLIC_API_URL}/task?page=${page}&shiftId=${shiftId}`, { headers: { Authorization: "Bearer " + localStorage.getItem("token"), }, } ); if (data.length < 14) { setStopGetTasks(true); } if (page == 0) { setTasksData(data); } else { setTasksData((prevData) => [...prevData, ...data]); } setLoading(false); } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; const GetTask = async (id) => { setLoading(true); try { const data = await Chapar.get( `${process.env.NEXT_PUBLIC_API_URL}/task/${id}`, { headers: { Authorization: "Bearer " + localStorage.getItem("token"), }, } ); setTaskData(data); setLoading(false); } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; const DeleteTask = async (id) => { setLoading(true); try { const data = await Chapar.delete( `${process.env.NEXT_PUBLIC_API_URL}/task/${id}`, { headers: { Authorization: "Bearer " + localStorage.getItem("token"), }, } ); setLoading(false); setBottomSheetCreateTaskOpen(false); } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; const GetActivity = async (date, shift, page, dateQueryFilter, userId) => { setLoading(true); try { const data = await Chapar.get( `${process.env.NEXT_PUBLIC_API_URL}/activity?page=${page}${ date ? `&selectedDate=${date}` : "" }${shift ? `&selectedShiftPlanId=${shift}` : ""}${ dateQueryFilter != null ? `&dateQueryFilter=${dateQueryFilter}` : "" }${userId != null ? `&userId=${userId}` : ""}`, { headers: { Authorization: "Bearer " + localStorage.getItem("token"), }, } ); if (data.length < 19) { setStopGetActivities(true); } if (page == 0) { setActivitiesData(data); } else { setActivitiesData((prevData) => [...prevData, ...data]); } setLoading(false); } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; const DoneActivity = async (id) => { setLoading(true); try { const data = await Chapar.post( `${process.env.NEXT_PUBLIC_API_URL}/activity/done/${id}`, { headers: { Authorization: "Bearer " + localStorage.getItem("token"), }, } ); toast.success(`فعالیت ثبت شد`, { position: "bottom-right", closeOnClick: true, }); // router-> setLoading(false); } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; const UnDoneActivity = async (id, resone) => { setLoading(true); try { const data = await Chapar.post( `${process.env.NEXT_PUBLIC_API_URL}/activity/undone/${id}?undoneReason=${resone}`, { headers: { Authorization: "Bearer " + localStorage.getItem("token"), }, } ); toast.success(`فعالیت ثبت شد`, { position: "bottom-right", closeOnClick: true, }); // router-> setLoading(false); } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; const CloseShift = async (body, id, index) => { setLoading(true); try { const data = await Chapar.post( `${process.env.NEXT_PUBLIC_API_URL}/shift/plan/${id}/complete`, body, { headers: { Authorization: "Bearer " + localStorage.getItem("token"), }, } ); toast.success(`شیفت بسته شد`, { position: "bottom-right", closeOnClick: true, }); // router-> CTX.GetShifts(moment().locale("fa").startOf("day").unix() * 1000); setLoading(false); // GetTasks(); } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; const changeRole = async (id) => { setLoading(true); try { const data = await Chapar.post( `${process.env.NEXT_PUBLIC_API_URL}/user/role/change/${id}`, { headers: { Authorization: "Bearer " + localStorage.getItem("token"), }, } ); localStorage.setItem("token", data.access_token); setProfile(data); setLoading(false); } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; const CheckUser = async () => { setLoading(true); try { const data = await Chapar.get( `${process.env.NEXT_PUBLIC_API_URL}/user/profile`, { headers: { Authorization: "Bearer " + localStorage.getItem("token"), }, } ); setProfile(data); setLoading(false); } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; const ReportShiftPlan = async (shiftPlanId) => { setLoading(true); try { const response = await fetch( `${process.env.NEXT_PUBLIC_API_URL}/report/shift/plan/${shiftPlanId}`, { headers: { Authorization: "Bearer " + localStorage.getItem("token"), }, } ); if (!response.ok) { throw new Error("Failed to download report"); } const blob = await response.blob(); const url = window.URL.createObjectURL(blob); const a = document.createElement("a"); a.href = url; a.download = "report.xlsx"; // Change the filename if needed document.body.appendChild(a); a.click(); a.remove(); setLoading(false); } catch (error) { toast.error(error.message, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; const ReportTask = async () => { setLoading(true); try { const response = await fetch( `${process.env.NEXT_PUBLIC_API_URL}/report/task`, { headers: { Authorization: "Bearer " + localStorage.getItem("token"), }, } ); if (!response.ok) { throw new Error("Failed to download report"); } const blob = await response.blob(); const url = window.URL.createObjectURL(blob); const a = document.createElement("a"); a.href = url; a.download = "report.xlsx"; // Change the filename if needed document.body.appendChild(a); a.click(); a.remove(); setLoading(false); } catch (error) { toast.error(error.message, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; const GetHomePageData = async (id) => { setLoading(true); try { const data = await Chapar.get( `${process.env.NEXT_PUBLIC_API_URL}/page/app/dashboard`, { headers: { Authorization: "Bearer " + localStorage.getItem("token"), }, } ); setHomePageData(data); setLoading(false); } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; const GetCoffeeBrewData = async () => { setLoading(true); try { const data = await Chapar.get( `${process.env.NEXT_PUBLIC_API_URL}/brew/CoffeeBrew` ); setCoffeeBrewData(data); setLoading(false); } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; const GetLatesCoffeeBrewData = async () => { setLoading(true); try { const data = await Chapar.get( `${process.env.NEXT_PUBLIC_API_URL}/brew/CoffeeBrew/latest` ); setLatesCoffeeBrewData(data); setLoading(false); } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; const GetUnReadNotif = async () => { setLoading(true); try { const data = await Chapar.get( `${process.env.NEXT_PUBLIC_API_URL}/notification/unread/count` ); setNotifUnreadData(data); setLoading(false); return data; } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); setLoading(false); } }; useEffect(() => { console.log(` bbbbbbbb b::::::b iiii b::::::b i::::i b::::::b iiii b:::::b b:::::bbbbbbbbb rrrrr rrrrrrrrr iiiiiiizzzzzzzzzzzzzzzzz cccccccccccccccc ooooooooooo b::::::::::::::bb r::::rrr:::::::::ri:::::iz:::::::::::::::z cc:::::::::::::::coo:::::::::::oo b::::::::::::::::br:::::::::::::::::ri::::iz::::::::::::::z c:::::::::::::::::o:::::::::::::::o b:::::bbbbb:::::::rr::::::rrrrr::::::i::::izzzzzzzz::::::z c:::::::cccccc:::::o:::::ooooo:::::o b:::::b b::::::br:::::r r:::::i::::i z::::::z c::::::c cccccco::::o o::::o b:::::b b:::::br:::::r rrrrrri::::i z::::::z c:::::c o::::o o::::o b:::::b b:::::br:::::r i::::i z::::::z c:::::c o::::o o::::o b:::::b b:::::br:::::r i::::i z::::::z c::::::c cccccco::::o o::::o b:::::bbbbbb::::::br:::::r i::::::i z::::::zzzzzzzc:::::::cccccc:::::o:::::ooooo:::::o b::::::::::::::::b r:::::r i::::::iz::::::::::::::zc:::::::::::::::::o:::::::::::::::o b:::::::::::::::b r:::::r i::::::z:::::::::::::::z cc:::::::::::::::coo:::::::::::oo bbbbbbbbbbbbbbbb rrrrrrr iiiiiiizzzzzzzzzzzzzzzzz cccccccccccccccc ooooooooooo soli chizi bood bgo hossein__masoomi `); const token = localStorage.getItem("token"); // if (!token) { // router.push("/app/login"); // } if (profile.length <= 0 && token) { CheckUser(); } }, []); return ( {children} {shouldRenderComponent && } {openTimePicker && } ); }; export default RootData;