fixed useEmployeeRoles to return [] when employee has no roles and some changed for fetching logic to use async/await

This commit is contained in:
Pramod Mahajan 2025-04-30 00:03:08 +05:30
parent 75507707c0
commit ee2d44b5fc

View File

@ -4,185 +4,159 @@ import { RolesRepository } from "../repositories/MastersRepository";
import EmployeeRepository from "../repositories/EmployeeRepository"; import EmployeeRepository from "../repositories/EmployeeRepository";
import ProjectRepository from "../repositories/ProjectRepository"; import ProjectRepository from "../repositories/ProjectRepository";
export const useAllEmployees = () => {
export const useAllEmployees = () =>
{
const [employeesList, setEmployeeList] = useState([]); const [employeesList, setEmployeeList] = useState([]);
const [ loading, setLoading ] = useState( false ) const [loading, setLoading] = useState(false);
const [ error, setError ] = useState() const [error, setError] = useState();
const fetchData = async () => const fetchData = async () => {
try {
{ let EmployeeList_cached = getCachedData("AllEmployees");
try if (!EmployeeList_cached) {
{ setLoading(true);
let EmployeeList_cached = getCachedData( "AllEmployees" ) const response = await EmployeeRepository.getAllEmployeeList();
if ( ! EmployeeList_cached ) cacheData("AllEmployees", response.data);
{ setEmployeeList(response.data);
setLoading(true) } else {
const response = await EmployeeRepository.getAllEmployeeList(); setEmployeeList(EmployeeList_cached);
cacheData( "AllEmployees", response.data ) setLoading(false);
setEmployeeList(response.data)
} else
{
setEmployeeList( EmployeeList_cached )
setLoading(false)
}
} catch ( error )
{
console.error(error);
setError( "Failed to fetch data." );
setLoading(false)
} }
} } catch (error) {
setError("Failed to fetch data.");
setLoading(false);
}
};
useEffect( () => useEffect(() => {
{ fetchData();
fetchData() }, []);
}, [] ) return { employeesList, loading, error };
return {employeesList,loading,error} };
}
export const useEmployees =(selectedProject)=>{
export const useEmployees = (selectedProject) => {
const [employees, setEmployeeList] = useState([]); const [employees, setEmployeeList] = useState([]);
const[loading,setLoading] = useState(true) const [loading, setLoading] = useState(true);
const [projects, setProjects] = useState([]); const [projects, setProjects] = useState([]);
const fetchData = async (projectid) => { const fetchData = async (projectid) => {
try {
let EmployeeByProject_Cache = getCachedData("employeeListByProject")
if(!EmployeeByProject_Cache || !EmployeeByProject_Cache.projectId === projectid) {
EmployeeRepository.getEmployeeListByproject(projectid)
.then((response) => {
setEmployeeList(response);
cacheData("employeeListByProject",{data:response,projectId:projectid});
})
.catch((error) => {
setError("Failed to fetch data.");
});
}else{
setEmployeeList(EmployeeByProject_Cache.data)
}
setLoading(false)
} catch (err) {
setError("Failed to fetch data.");
setLoading(false)
}
};
useEffect(()=>{
if(selectedProject){
fetchData(selectedProject);
}
},[selectedProject])
return {employees,loading,projects,reCallAllEmployee}
}
export const useEmployeeRoles = (employeeId)=>{
const [loading,setLoading] = useState(true)
const[error, setError] =useState()
const [employeeRoles,setEmployeeRoles] = useState([])
const fetchData = async (employeeid) => {
try { try {
RolesRepository.getEmployeeRoles(employeeid) let EmployeeByProject_Cache = getCachedData("employeeListByProject");
.then((response) => { if (
setEmployeeRoles(response.data); !EmployeeByProject_Cache ||
cacheData("employeelist", response.data); !EmployeeByProject_Cache.projectId === projectid
}) ) {
.catch((error) => { EmployeeRepository.getEmployeeListByproject(projectid)
setError("Failed to fetch data."); .then((response) => {
}); setEmployeeList(response);
cacheData("employeeListByProject", {
data: response,
projectId: projectid,
});
})
.catch((error) => {
setError("Failed to fetch data.");
});
} else {
setEmployeeList(EmployeeByProject_Cache.data);
}
setLoading(false);
} catch (err) { } catch (err) {
setError("Failed to fetch data."); setError("Failed to fetch data.");
setLoading(false);
}
};
useEffect(() => {
if (selectedProject) {
fetchData(selectedProject);
}
}, [selectedProject]);
return { employees, loading, projects, reCallAllEmployee };
};
export const useEmployeeRoles = (employeeId) => {
const [loading, setLoading] = useState(true);
const [error, setError] = useState();
const [employeeRoles, setEmployeeRoles] = useState([]);
const fetchData = async (employeeid) => {
try {
let response = await RolesRepository.getEmployeeRoles(employeeid);
setEmployeeRoles(response.data);
cacheData("employeelist", response.data);
} catch (err) {
setError("Failed to fetch data.");
setEmployeeRoles([]);
} finally { } finally {
setLoading(false); setLoading(false);
} }
}; };
useEffect(() => {
if (employeeId) {
fetchData(employeeId);
}
}, [employeeId]);
useEffect( () => return { employeeRoles, loading, error };
{ };
if ( employeeId )
{
fetchData(employeeId);
}
},[employeeId])
export const useEmployeesByProject = (projectId) => {
return {employeeRoles,loading,error} const [loading, setLoading] = useState(false);
} const [error, setError] = useState();
const [employees, setEmployees] = useState([]);
export const useEmployeesByProject=(projectId)=>{
const [loading,setLoading] = useState(false)
const[error, setError] =useState()
const [employees,setEmployees] = useState([])
const fetchData = async () => { const fetchData = async () => {
const Employees_cache = getCachedData("employeeListByProject"); const Employees_cache = getCachedData("employeeListByProject");
if(!Employees_cache || Employees_cache.projectId !== projectId){ if (!Employees_cache || Employees_cache.projectId !== projectId) {
setEmployees(true);
setEmployees(true) ProjectRepository.getEmployeesByProject(projectId)
ProjectRepository.getEmployeesByProject(projectId) .then((response) => {
.then( ( response ) =>
{
setEmployees(response.data); setEmployees(response.data);
cacheData("employeeListByProject", { data: response.data, projectId }) cacheData("employeeListByProject", {
setLoading(false) data: response.data,
projectId,
});
setLoading(false);
}) })
.catch((error) => { .catch((error) => {
setError("Failed to fetch data."); setError("Failed to fetch data.");
setLoading(false) setLoading(false);
}); });
} else {
}else{ setEmployees(Employees_cache.data);
setEmployees(Employees_cache.data) setLoading(false);
setLoading(false) }
}
}; };
useEffect(() => {
fetchData(projectId);
}, [projectId]);
useEffect(()=>{ return { employees, loading, error, recallProjectEmplloyee: fetchData };
fetchData(projectId); };
},[projectId])
return {employees,loading,error,recallProjectEmplloyee:fetchData}
}
export const useEmployeesAllOrByProjectId = (projectId) => { export const useEmployeesAllOrByProjectId = (projectId) => {
const [employees, setEmployees] = useState([]); const [employees, setEmployees] = useState([]);
const [loading, setLoading] = useState(false); const [loading, setLoading] = useState(false);
const [error, setError] = useState(null); const [error, setError] = useState(null);
const fetchData = async () => const fetchData = async () => {
{
if (projectId) { if (projectId) {
const Employees_cache = getCachedData("employeeListByProject"); const Employees_cache = getCachedData("employeeListByProject");
if (!Employees_cache || Employees_cache.projectId !== projectId) { if (!Employees_cache || Employees_cache.projectId !== projectId) {
setLoading(true); setLoading(true);
setError(null); setError(null);
try { try {
const response = await ProjectRepository.getEmployeesByProject(projectId); const response = await ProjectRepository.getEmployeesByProject(
projectId
);
setEmployees(response.data); setEmployees(response.data);
cacheData("employeeListByProject", { data: response.data, projectId }); cacheData("employeeListByProject", {
data: response.data,
projectId,
});
setLoading(false); setLoading(false);
} catch (err) { } catch (err) {
setError("Failed to fetch data."); setError("Failed to fetch data.");
@ -193,7 +167,6 @@ export const useEmployeesAllOrByProjectId = (projectId) => {
setLoading(false); setLoading(false);
} }
} else { } else {
const employeesCache = getCachedData("allEmployeeList"); const employeesCache = getCachedData("allEmployeeList");
if (!employeesCache) { if (!employeesCache) {
@ -228,42 +201,35 @@ export const useEmployeesAllOrByProjectId = (projectId) => {
}; };
}; };
export const useEmployeeProfile = (employeeId) => {
const [loading, setLoading] = useState(true);
const [error, setError] = useState();
const [employee, setEmployees] = useState();
export const useEmployeeProfile =(employeeId)=>{
const [loading,setLoading] = useState(true)
const[error, setError] =useState()
const [employee,setEmployees] = useState()
const fetchData = async () => { const fetchData = async () => {
const Employee_cache = getCachedData("employeeProfile"); const Employee_cache = getCachedData("employeeProfile");
if(!Employee_cache || Employee_cache.employeeId !== employeeId){ if (!Employee_cache || Employee_cache.employeeId !== employeeId) {
EmployeeRepository.getEmployeeProfile(employeeId)
EmployeeRepository.getEmployeeProfile(employeeId)
.then((response) => { .then((response) => {
setEmployees(response.data); setEmployees(response.data);
cacheData("employeeProfile", { data: response.data, employeeId }) cacheData("employeeProfile", { data: response.data, employeeId });
setLoading(false) setLoading(false);
}) })
.catch((error) => { .catch((error) => {
setError("Failed to fetch data."); setError("Failed to fetch data.");
setLoading(false) setLoading(false);
}); });
} else {
}else{ setEmployees(Employee_cache.data);
setEmployees(Employee_cache.data) setLoading(false);
setLoading(false) }
} };
};
useEffect(()=>{ useEffect(() => {
if(employeeId){ if (employeeId) {
fetchData(employeeId); fetchData(employeeId);
} }
},[employeeId]) }, [employeeId]);
return {employee,loading,error} return { employee, loading, error };
};
}