Implement the functionality required to handle employee suspension. #62

Merged
vikas.nale merged 1 commits from Ashutosh_Feature#174_Suspend_Employee into Ashutosh_Enhancement#132_Int_To_Guid 2025-05-05 12:02:53 +00:00
2 changed files with 30 additions and 9 deletions
Showing only changes of commit 3ca2c9e0c5 - Show all commits

View File

@ -1,5 +1,6 @@
import React, { useState, useEffect, useRef } from "react"; import React, { useState, useEffect, useRef } from "react";
import moment from "moment"; import moment from "moment";
import showToast from "../../services/toastService";
import { Link, NavLink, useNavigate } from "react-router-dom"; import { Link, NavLink, useNavigate } from "react-router-dom";
import Avatar from "../../components/common/Avatar"; import Avatar from "../../components/common/Avatar";
import Breadcrumb from "../../components/common/Breadcrumb"; import Breadcrumb from "../../components/common/Breadcrumb";
@ -9,6 +10,7 @@ import { useProjects } from "../../hooks/useProjects";
import { useProfile } from "../../hooks/useProfile"; import { useProfile } from "../../hooks/useProfile";
import { hasUserPermission } from "../../utils/authUtils"; import { hasUserPermission } from "../../utils/authUtils";
import { MANAGE_EMPLOYEES } from "../../utils/constants"; import { MANAGE_EMPLOYEES } from "../../utils/constants";
import { clearCacheKey } from "../../slices/apiDataManager";
import { useHasUserPermission } from "../../hooks/useHasUserPermission"; import { useHasUserPermission } from "../../hooks/useHasUserPermission";
import SuspendEmp from "../../components/Employee/SuspendEmp"; import SuspendEmp from "../../components/Employee/SuspendEmp";
import { import {
@ -17,6 +19,7 @@ import {
printTable, printTable,
exportToPDF, exportToPDF,
} from "../../utils/tableExportUtils"; } from "../../utils/tableExportUtils";
import EmployeeRepository from "../../repositories/EmployeeRepository";
const EmployeeList = () => { const EmployeeList = () => {
const { profile: loginUser } = useProfile(); const { profile: loginUser } = useProfile();
@ -24,7 +27,7 @@ const EmployeeList = () => {
const { projects, loading: projectLoading } = useProjects(); const { projects, loading: projectLoading } = useProjects();
const ManageEmployee = useHasUserPermission(MANAGE_EMPLOYEES); const ManageEmployee = useHasUserPermission(MANAGE_EMPLOYEES);
const { employees, loading, setLoading, error } = const { employees, loading, setLoading, error,recallEmployeeData } =
useEmployeesAllOrByProjectId(selectedProject); useEmployeesAllOrByProjectId(selectedProject);
const [projectsList, setProjectsList] = useState(projects || []); const [projectsList, setProjectsList] = useState(projects || []);
@ -36,6 +39,7 @@ const EmployeeList = () => {
const [searchText, setSearchText] = useState(""); const [searchText, setSearchText] = useState("");
const [filteredData, setFilteredData] = useState([]); const [filteredData, setFilteredData] = useState([]);
const [showModal, setShowModal] = useState(false); const [showModal, setShowModal] = useState(false);
const navigate = useNavigate(); const navigate = useNavigate();
const handleSearch = (e) => { const handleSearch = (e) => {
@ -98,6 +102,22 @@ const EmployeeList = () => {
const handleShow = () => setShowModal(true); const handleShow = () => setShowModal(true);
const handleClose = () => setShowModal(false); const handleClose = () => setShowModal(false);
const suspendEmployee = (id) => {
// console.log(id);
EmployeeRepository.deleteEmployee(id)
.then((response) => {
showToast("Employee deleted successfully.", "success");
clearCacheKey("employeeListByProject");
clearCacheKey("allEmployeeList");
clearCacheKey("employeeProfile");
setEmployeeList([])
recallEmployeeData()
})
.catch((error) => {
showToast(error.message, "error");
});
};
const handleConfigData = (config) => { const handleConfigData = (config) => {
setModelConfig(config); setModelConfig(config);
}; };
@ -107,6 +127,7 @@ const EmployeeList = () => {
openModal(); openModal();
} }
}, [modelConfig, isCreateModalOpen]); }, [modelConfig, isCreateModalOpen]);
const tableRef = useRef(null); const tableRef = useRef(null);
const handleExport = (type) => { const handleExport = (type) => {
if (!currentItems || currentItems.length === 0) return; if (!currentItems || currentItems.length === 0) return;
@ -428,8 +449,7 @@ const EmployeeList = () => {
className="text-heading text-truncate cursor-pointer" className="text-heading text-truncate cursor-pointer"
> >
<span className="fw-normal"> <span className="fw-normal">
{item.firstName} {item.middleName} {item.firstName} {item.middleName} {item.lastName}
{item.lastName}
</span> </span>
</a> </a>
</div> </div>
@ -494,13 +514,13 @@ const EmployeeList = () => {
to={`/employee/manage/${item.id}`} to={`/employee/manage/${item.id}`}
className="dropdown-item py-1" className="dropdown-item py-1"
> >
<i class="bx bx-edit bx-sm"></i> Edit <i className="bx bx-edit bx-sm"></i> Edit
</Link> </Link>
<button <button
className="dropdown-item py-1" className="dropdown-item py-1"
onClick={handleShow} onClick={() => suspendEmployee(item.id)}
> >
<i class="bx bx-task-x bx-sm"></i> Suspend <i className="bx bx-task-x bx-sm"></i> Suspend
</button> </button>
<button <button
className="dropdown-item py-1" className="dropdown-item py-1"
@ -509,7 +529,7 @@ const EmployeeList = () => {
data-bs-target="#managerole-modal" data-bs-target="#managerole-modal"
onClick={() => handleConfigData(item.id)} onClick={() => handleConfigData(item.id)}
> >
<i class="bx bx-cog bx-sm"></i> Manage Role <i className="bx bx-cog bx-sm"></i> Manage Role
</button> </button>
</div> </div>
</div> </div>

View File

@ -11,8 +11,9 @@ const EmployeeRepository = {
"Content-Type": "multipart/form-data", "Content-Type": "multipart/form-data",
}), }),
updateEmployee: (id, data) => api.put(`/users/${id}`, data), updateEmployee: (id, data) => api.put(`/users/${id}`, data),
deleteEmployee: ( id ) => api.delete( `/users/${ id }` ), // deleteEmployee: ( id ) => api.delete( `/users/${ id }` ),
getEmployeeProfile:(id)=>api.get(`/api/Employee/profile/get/${id}`) getEmployeeProfile:(id)=>api.get(`/api/employee/profile/get/${id}`),
deleteEmployee:(id)=>api.delete(`/api/employee/${id}`)
}; };
export default EmployeeRepository; export default EmployeeRepository;