marco.pms.web/src/hooks/useAttendance.js

109 lines
3.0 KiB
JavaScript

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}
}