From 2a2cfcb12c55d3d68df9e5a0cf0b81be66861ece Mon Sep 17 00:00:00 2001 From: Kartik Sharma Date: Tue, 19 Aug 2025 11:50:01 +0530 Subject: [PATCH] Updation in Employee Suspend and Reactivate employee. --- src/hooks/useEmployees.js | 25 +++++++++++----- src/pages/employee/EmployeeList.jsx | 40 +++++++++++++++---------- src/repositories/EmployeeRepository.jsx | 2 +- 3 files changed, 44 insertions(+), 23 deletions(-) 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 be586d18..ff52a15c 100644 --- a/src/pages/employee/EmployeeList.jsx +++ b/src/pages/employee/EmployeeList.jsx @@ -272,12 +272,21 @@ const EmployeeList = () => { > + suspendEmployee({ + employeeId: selectedEmpFordelete.id, + active: !selectedEmpFordelete.isActive, + }) + } onClose={() => setIsDeleteModalOpen(false)} loading={employeeLodaing} - paramData={selectedEmpFordelete} /> )} @@ -644,15 +653,17 @@ const EmployeeList = () => { > Edit - + {/* Suspend only when active */} - - + {item.isActive && ( + + )} + )} diff --git a/src/repositories/EmployeeRepository.jsx b/src/repositories/EmployeeRepository.jsx index 5266596c..931c7c51 100644 --- a/src/repositories/EmployeeRepository.jsx +++ b/src/repositories/EmployeeRepository.jsx @@ -10,7 +10,7 @@ const EmployeeRepository = { updateEmployee: (id, data) => api.put(`/users/${id}`, data), // deleteEmployee: ( id ) => api.delete( `/users/${ id }` ), getEmployeeProfile: (id) => api.get(`/api/employee/profile/get/${id}`), - deleteEmployee: (id) => api.delete(`/api/employee/${id}`), + deleteEmployee: (id,active) => api.delete(`/api/employee/${id}?active=${active}`), getEmployeeName: (projectId, search) => { const params = new URLSearchParams();