import React, { useState, useEffect } from "react"; import { cacheData, getCachedData, getCachedProfileData, } from "../../slices/apiDataManager"; import Breadcrumb from "../../components/common/Breadcrumb"; import AttendanceLog from "../../components/Activities/AttendcesLogs"; import Attendance from "../../components/Activities/Attendance"; import AttendanceModel from "../../components/Activities/AttendanceModel"; import showToast from "../../services/toastService"; import { useProjects } from "../../hooks/useProjects"; import Regularization from "../../components/Activities/Regularization"; import { useAttendace } from "../../hooks/useAttendance"; import { useDispatch, useSelector } from "react-redux"; import { setProjectId } from "../../slices/localVariablesSlice"; import { markCurrentAttendance } from "../../slices/apiSlice/attendanceAllSlice"; import { hasUserPermission } from "../../utils/authUtils"; import { useHasUserPermission } from "../../hooks/useHasUserPermission"; import { REGULARIZE_ATTENDANCE } from "../../utils/constants"; const AttendancePage = () => { const [activeTab, setActiveTab] = useState("all"); const loginUser = getCachedProfileData(); var selectedProject = useSelector((store) => store.localVariables.projectId); const { projects, loading: projectLoading } = useProjects(); const { attendance, loading: attLoading } = useAttendace(selectedProject); const [attendances, setAttendances] = useState(); const [empRoles, setEmpRoles] = useState(null); const [isCreateModalOpen, setIsCreateModalOpen] = useState(false); const [modelConfig, setModelConfig] = useState(); const DoRegularized = useHasUserPermission(REGULARIZE_ATTENDANCE); const dispatch = useDispatch(); const [formData, setFormData] = useState({ markTime: "", description: "", date: new Date().toLocaleDateString(), }); const getRole = (roleId) => { if (!empRoles) return "Unassigned"; if (!roleId) return "Unassigned"; const role = empRoles.find((b) => b.id == roleId); return role ? role.role : "Unassigned"; }; const openModel = () => { setIsCreateModalOpen(true); }; const handleModalData = (employee) => { setModelConfig(employee); }; const closeModal = () => { setModelConfig(null); setIsCreateModalOpen(false); const modalElement = document.getElementById("check-Out-modal"); if (modalElement) { modalElement.classList.remove("show"); modalElement.style.display = "none"; document.body.classList.remove("modal-open"); document.querySelector(".modal-backdrop").remove(); } }; const handleSubmit = (formData) => { dispatch(markCurrentAttendance(formData)) .then((action) => { const updatedAttendance = attendances.map((item) => item.employeeId === action.payload.employeeId ? { ...item, ...action.payload } : item ); cacheData("Attendance", { data: updatedAttendance, projectId: selectedProject, }); setAttendances(updatedAttendance); showToast("Attedance Marked Successfully", "success"); }) .catch((error) => { showToast(error.message, "error"); }); }; useEffect(() => { if (modelConfig !== null) { openModel(); } }, [modelConfig, isCreateModalOpen]); useEffect(() => { setAttendances(attendance); }, [ attendance ] ); console.log(selectedProject) useEffect(() => { if (selectedProject === 1 || selectedProject === undefined ) { dispatch(setProjectId(loginUser?.projects[0])); } }, [selectedProject, loginUser?.projects]); return ( <> {isCreateModalOpen && modelConfig && (
)}No Employee assigned yet.
)}