import React, { useState, useEffect } from "react"; import { cacheData, clearCacheKey, getCachedData, getCachedProfileData, useSelectedProject, } from "../../slices/apiDataManager"; import Breadcrumb from "../../components/common/Breadcrumb"; import AttendanceLog from "../../components/Activities/AttendcesLogs"; import Attendance from "../../components/Activities/Attendance"; import Regularization from "../../components/Activities/Regularization"; import { useAttendance } from "../../hooks/useAttendance"; import { useDispatch, useSelector } from "react-redux"; import { setProjectId } from "../../slices/localVariablesSlice"; import { useHasUserPermission } from "../../hooks/useHasUserPermission"; import { REGULARIZE_ATTENDANCE } from "../../utils/constants"; import eventBus from "../../services/eventBus"; import { useProjectAssignedOrganizations, 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 [searchTerm, setSearchTerm] = useState(""); const queryClient = useQueryClient(); const loginUser = getCachedProfileData(); const selectedProject = useSelectedProject(); 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 [appliedFilters, setAppliedFilters] = useState({ selectedOrganization: "", selectedServices: [], }); const { data: organizations = [], isLoading: orgLoading } = useProjectAssignedOrganizations(selectedProject); 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); }; useEffect(() => { if (modelConfig !== null) { openModel(); } }, [modelConfig, isCreateModalOpen]); // Handler to change tab and reset search term const handleTabChange = (tabName) => { setActiveTab(tabName); setSearchTerm(""); // Reset search term when tab changes }; return ( <> {isCreateModalOpen && modelConfig && ( {(modelConfig?.action === 0 || modelConfig?.action === 1 || modelConfig?.action === 2) && ( )} {/* For view logs */} {modelConfig?.action === 6 && ( )} {modelConfig?.action === 7 && ( )} )}
{/* Tabs */}
{/* Tabs */}
{/* Search + Organization filter */}
{/* Organization Dropdown */} {/* Search Input */} setSearchTerm(e.target.value)} style={{ minWidth: "200px" }} />
{selectedProject ? ( <> {activeTab === "all" && (
)} {activeTab === "logs" && (
)} {activeTab === "regularization" && DoRegularized && (
)} ) : (
Please Select Project!
)}
); }; export default AttendancePage;