import React, { useState, useEffect, useCallback } from "react"; import { cacheData, clearCacheKey, getCachedData, getCachedProfileData, } from "../../slices/apiDataManager"; import Breadcrumb from "../../components/common/Breadcrumb"; import AttendanceLog from "../../components/Activities/AttendcesLogs"; import Attendance from "../../components/Activities/Attendance"; import showToast from "../../services/toastService"; import Regularization from "../../components/Activities/Regularization"; import { useAttendance } from "../../hooks/useAttendance"; import { useDispatch, useSelector } from "react-redux"; import { setProjectId } from "../../slices/localVariablesSlice"; import { hasUserPermission } from "../../utils/authUtils"; import { useHasUserPermission } from "../../hooks/useHasUserPermission"; import { REGULARIZE_ATTENDANCE } from "../../utils/constants"; import eventBus from "../../services/eventBus"; import { useProjectName } from "../../hooks/useProjects"; import GlobalModel from "../../components/common/GlobalModel"; import CheckCheckOutmodel from "../../components/Activities/CheckCheckOutForm"; import AttendLogs from "../../components/Activities/AttendLogs"; import { useQueryClient } from "@tanstack/react-query"; const AttendancePage = () => { const [activeTab, setActiveTab] = useState("all"); const [ShowPending, setShowPending] = useState(false); const queryClient = useQueryClient(); const loginUser = getCachedProfileData(); var selectedProject = useSelector((store) => store.localVariables.projectId); const dispatch = useDispatch(); const [attendances, setAttendances] = useState(); const [empRoles, setEmpRoles] = useState(null); const [isCreateModalOpen, setIsCreateModalOpen] = useState(false); const [modelConfig, setModelConfig] = useState(); const DoRegularized = useHasUserPermission(REGULARIZE_ATTENDANCE); const { projectNames, loading: projectLoading, fetchData } = useProjectName(); const [formData, setFormData] = useState({ markTime: "", description: "", date: new Date().toLocaleDateString(), }); useEffect(() => { if (selectedProject == null) { dispatch(setProjectId(projectNames[0]?.id)); } }, []); 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 handleToggle = (event) => { setShowOnlyCheckout(event.target.checked); }; useEffect(() => { if (modelConfig !== null) { openModel(); } }, [modelConfig, isCreateModalOpen]); return ( <> {isCreateModalOpen && modelConfig && ( {(modelConfig?.action === 0 || modelConfig?.action === 1 || modelConfig?.action === 2) && ( )} {/* For view logs */} {modelConfig?.action === 6 && ( )} {modelConfig?.action === 7 && ( )} )}
{activeTab === "all" && (
)} {activeTab === "logs" && (
)} {activeTab === "regularization" && DoRegularized && (
)}
); }; export default AttendancePage;