"use client"; import AppHeader from "@comp/AppHeader/page"; import ActivityCard from "@comp/TaskPage/ActivityCard/page"; import ActivityCardCloseShift from "@comp/TaskPage/ActivityCardCloseShift/page"; import AppContext from "@ctx/AppContext"; import moment from "jalali-moment"; import Buttonbriz from "plugins/Buttonbriz/page"; import GoBack from "plugins/GoBack/page"; import PersianNumber from "plugins/PersianNumber"; import Slider from "rc-slider"; import React, { useContext, useEffect, useState } from "react"; import InfiniteScroll from "react-infinite-scroll-component"; import { toast } from "react-toastify"; const CompleteShift = () => { const CTX = useContext(AppContext); const [closeShiftScore, setCloseShiftScore] = useState(50); const [activeShifPlan, setActiveShifPlan] = useState(-1); const [selectDayForShift, setSelectDayForShift] = useState(-1); const currentDate = new Date(); const siftsData = CTX.state.shiftsData; const activitiesData = CTX.state.activitiesData; const stopGetActivities = CTX.state.stopGetActivities; const pageGetActivity = CTX.state.pageGetActivity; const circularHandleStyle = { backgroundColor: "green", border: "2px solid #ffffff", boxShadow: "0 0 5px #333", cursor: "pointer", height: 30, // Adjust the height in pixels width: 30, // Adjust the width to maintain a circular shape marginTop: -10, // Adjust the margin to center the handle borderRadius: "50%", // Make the handle circular }; const railStyle = { backgroundColor: "rgba(255, 0, 37, 0.54)", // Overall track color height: 10, }; const trackStyle = { backgroundColor: "rgba(0, 165, 0, 0.7)", // Color between handles height: 10, }; const body = { completeDescription: "", completeActivities: CTX.state.completeActivities, completePercent: closeShiftScore, }; const getTodayPersianDate = () => { return moment().locale("fa").format("D MMMM YYYY"); }; const getYesterdayPersianDate = () => { const yesterday = moment().locale("fa").subtract(1, "day"); return yesterday.format("D MMMM YYYY"); }; const getTomorrowPersianDate = () => { const tomorrow = moment().locale("fa").add(1, "day"); return tomorrow.format("D MMMM YYYY"); }; const handleOpenShift = (isCompleted, id, index, hasCurrentShiftPlan) => { if (isCompleted) { toast.warning(`شیفت بسته شده است `, { position: "bottom-right", closeOnClick: true, }); } else if (!hasCurrentShiftPlan) { toast.warning(`شیفت نا مشخص است `, { position: "bottom-right", closeOnClick: true, }); } else { handleActivityCloseShift(id, index); } }; const handleActivityCloseShift = (id, index) => { CTX.setCompleteActivities([]); setCloseShiftScore(50); if (activeShifPlan == index) { setActiveShifPlan(-1); } else { setActiveShifPlan(index); if (selectDayForShift == 0) { CTX.GetActivity( moment().locale("fa").subtract(1, "day").unix() * 1000, id, 0 ); } else if (selectDayForShift == 1) { CTX.GetActivity( moment().locale("fa").startOf("day").unix() * 1000, id, 0 ); } else if (selectDayForShift == 2) { CTX.GetActivity( moment().locale("fa").add(1, "day").unix() * 1000, id, 0 ); } } }; const handleDayCloseShift = (index) => { setSelectDayForShift(index); setActiveShifPlan(-1); if (index == 0) { CTX.GetShifts(moment().locale("fa").subtract(1, "day").unix() * 1000); } else if (index == 1) { CTX.GetShifts(moment().locale("fa").startOf("day").unix() * 1000); } else if (index == 2) { CTX.GetShifts(moment().locale("fa").add(1, "day").unix() * 1000); } }; const handleCloseShift = () => { CTX.CloseShift(body, siftsData[activeShifPlan]?.currentShiftPlanId); setActiveShifPlan(-1); handleDayCloseShift(1); }; const handleGoToReport = (title, shiftId) => { CTX.setReportDetail({ title: title, shiftId: shiftId, typeReport: "SHIFTPLAN", }); CTX.setBottomSheetReportOpen(true); }; useEffect(() => { handleDayCloseShift(1); }, []); useEffect(() => { if (activitiesData.length > 0) { CTX.setCompleteActivities( activitiesData.map((activity) => ({ activityId: activity?.id, isCompleted: activity?.isDone, performanceDescription: activity?.performanceDescription, })) ); } }, [activitiesData]); const handleInfiniteNextFetchActivity = () => { CTX.setPageGetActivity((e) => e + 1); CTX.GetActivity( moment().locale("fa").startOf("day").unix() * 1000, null, pageGetActivity + 1 ); }; return (
{e?.title}
{" "}
{" "}
{" "} گزارش شیفت{" "}