fixed useEmployeeRoles to return [] when employee has no roles and some changed for fetching logic to use async/await
This commit is contained in:
parent
75507707c0
commit
ee2d44b5fc
@ -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 };
|
||||||
|
};
|
||||||
}
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user