import { useEffect, useState } from "react"; import { cacheData, getCachedData } from "../slices/apiDataManager"; import AttendanceRepository from "../repositories/AttendanceRepository"; export const useAttendace =(projectId)=>{ const [attendance, setAttendance] = useState([]); const[loading,setLoading] = useState(true) const [error, setError] = useState(null); const fetchData = () => { const Attendance_cache = getCachedData("Attendance"); if(!Attendance_cache || Attendance_cache.projectId !== projectId){ setLoading(true); AttendanceRepository.getAttendance(projectId) .then((response) => { setAttendance(response.data); cacheData( "Attendance", {data: response.data, projectId} ) setLoading(false) }) .catch((error) => { setLoading(false) setError("Failed to fetch data."); }) } else { setAttendance(Attendance_cache.data); setLoading(false) } }; useEffect(()=>{ if ( projectId && projectId != 1 ) { fetchData(projectId); } },[projectId]) return {attendance,loading,error,recall:fetchData} } export const useEmployeeAttendacesLog = (id) => { const [logs, setLogs] = useState([]); const [loading, setLoading] = useState(false); const [error, setError] = useState(null); const fetchData = () => { const AttendanceLog_cache = getCachedData("AttendanceLogs"); if(!AttendanceLog_cache || AttendanceLog_cache.id !== id ){ setLoading(true) AttendanceRepository.getAttendanceLogs(id).then((response)=>{ setLogs(response.data) cacheData("AttendanceLogs", { data: response.data, id }) setLoading(false) }).catch((error)=>{ setError("Failed to fetch data."); setLoading(false); }) }else{ setLogs(AttendanceLog_cache.data); } }; useEffect(() => { if (id) { fetchData(); } }, [id]); return { logs, loading, error }; }; export const useRegularizationRequests = ( projectId ) => { const [regularizes, setregularizes] = useState([]); const [loading, setLoading] = useState(false); const [error, setError] = useState(null); const fetchData = () => { const regularizedList_cache = getCachedData("regularizedList"); if(!regularizedList_cache || regularizedList_cache.projectId !== projectId ){ setLoading(true) AttendanceRepository.getRegularizeList(projectId).then((response)=>{ setregularizes( response.data ) cacheData("regularizedList", { data: response.data, projectId }) setLoading(false) }).catch((error)=>{ setError("Failed to fetch data."); setLoading(false); }) }else{ setregularizes(regularizedList_cache.data); } }; useEffect(() => { if (projectId) { fetchData(); } }, [ projectId ] ); return {regularizes,loading,error,refetch:fetchData} }