diff --git a/src/hooks/useEmployees.js b/src/hooks/useEmployees.js index a2fae3fd..bbc72502 100644 --- a/src/hooks/useEmployees.js +++ b/src/hooks/useEmployees.js @@ -277,27 +277,37 @@ export const useSuspendEmployee = ({ ); return useMutation({ - mutationFn: async (employeeId) => { + // Expect both employeeId and active status + mutationFn: async ({ employeeId, active }) => { setemployeeLodaing(true); - return await EmployeeRepository.deleteEmployee(employeeId); + return await EmployeeRepository.deleteEmployee(employeeId, active); }, - onSuccess: (_, employeeId) => { - showToast("Employee suspended successfully.", "success"); + onSuccess: (_, { employeeId, active }) => { + const message = + active === false + ? "Employee suspended successfully." + : "Employee reactivated successfully."; + + showToast(message, "success"); setIsDeleteModalOpen(false); - // Invalidate only the required employee-related queries + // Invalidate relevant queries queryClient.invalidateQueries({ queryKey: ["employee", employeeId] }); queryClient.invalidateQueries({ queryKey: ["allEmployees"] }); if (selectedProjectId) { - queryClient.invalidateQueries({ queryKey: ["projectEmployees", selectedProjectId] }); + queryClient.invalidateQueries({ + queryKey: ["projectEmployees", selectedProjectId], + }); } }, onError: (error) => { showToast( - error.response?.data?.message || error.message || "An unexpected error occurred", + error.response?.data?.message || + error.message || + "An unexpected error occurred", "error" ); setIsDeleteModalOpen(false); @@ -309,6 +319,7 @@ export const useSuspendEmployee = ({ }); }; + export const useUpdateEmployeeRoles = ({ onClose, resetForm, diff --git a/src/pages/employee/EmployeeList.jsx b/src/pages/employee/EmployeeList.jsx index ad54ce20..ff52a15c 100644 --- a/src/pages/employee/EmployeeList.jsx +++ b/src/pages/employee/EmployeeList.jsx @@ -176,12 +176,10 @@ const EmployeeList = () => { useEffect(() => { if (!loading && Array.isArray(employees)) { const sorted = [...employees].sort((a, b) => { - const nameA = `${a.firstName || ""}${a.middleName || ""}${ - a.lastName || "" - }`.toLowerCase(); - const nameB = `${b.firstName || ""}${b.middleName || ""}${ - b.lastName || "" - }`.toLowerCase(); + const nameA = `${a.firstName || ""}${a.middleName || ""}${a.lastName || "" + }`.toLowerCase(); + const nameB = `${b.firstName || ""}${b.middleName || ""}${b.lastName || "" + }`.toLowerCase(); return nameA?.localeCompare(nameB); }); @@ -274,12 +272,21 @@ const EmployeeList = () => { > + suspendEmployee({ + employeeId: selectedEmpFordelete.id, + active: !selectedEmpFordelete.isActive, + }) + } onClose={() => setIsDeleteModalOpen(false)} loading={employeeLodaing} - paramData={selectedEmpFordelete} /> )} @@ -503,9 +510,8 @@ const EmployeeList = () => { Status { )} {/* Conditional messages for no data or no search results */} {!loading && - displayData?.length === 0 && - searchText && - !showAllEmployees ? ( + displayData?.length === 0 && + searchText && + !showAllEmployees ? ( @@ -537,8 +543,8 @@ const EmployeeList = () => { ) : null} {!loading && - displayData?.length === 0 && - (!searchText || showAllEmployees) ? ( + displayData?.length === 0 && + (!searchText || showAllEmployees) ? ( {
+ {/* View always visible */} - - {!item.isSystem && ( + + {/* If ACTIVE employee */} + {item.isActive && ( <> + + {/* Suspend only when active */} + {item.isActive && ( + + )} + + )} + + {/* If INACTIVE employee AND inactive toggle is ON */} + {!item.isActive && showInactive && ( + + )}
@@ -687,9 +702,8 @@ const EmployeeList = () => {