109 lines
3.0 KiB
JavaScript
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}
|
|
} |