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"; const AttendancePage = () => { const loginUser = getCachedProfileData() const 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 dispatch = useDispatch() const [formData, setFormData] = useState({ time: "", 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]) return ( <> {isCreateModalOpen && modelConfig && ( )}
); }; export default AttendancePage;