fixed searching for employee

This commit is contained in:
Pramod Mahajan 2025-07-09 14:33:21 +05:30
parent d818ea9265
commit fca3f03a44
2 changed files with 80 additions and 57 deletions

View File

@ -190,8 +190,9 @@ export const useUpdateEmployee = () =>
onSuccess: (_, variables) => { onSuccess: (_, variables) => {
const id = variables.id || variables.employeeId; const id = variables.id || variables.employeeId;
const isAllEmployee = variables.IsAllEmployee; const isAllEmployee = variables.IsAllEmployee;
// Cache invalidation // Cache invalidation
queryClient.invalidateQueries( {queryKey:[ 'allEmployee', isAllEmployee ] }); queryClient.invalidateQueries( {queryKey:[ 'allEmployees'] });
// queryClient.invalidateQueries(['employeeProfile', id]); // queryClient.invalidateQueries(['employeeProfile', id]);
queryClient.invalidateQueries( {queryKey: [ 'projectEmployees' ]} ); queryClient.invalidateQueries( {queryKey: [ 'projectEmployees' ]} );
queryClient.removeQueries( {queryKey: [ "empListByProjectAllocated" ]} ); queryClient.removeQueries( {queryKey: [ "empListByProjectAllocated" ]} );

View File

@ -73,6 +73,7 @@ const EmployeeList = () => {
if (!text) { if (!text) {
return data; return data;
} }
const lowercasedText = text.toLowerCase().trim(); const lowercasedText = text.toLowerCase().trim();
return data.filter((item) => { return data.filter((item) => {
@ -80,27 +81,34 @@ const EmployeeList = () => {
const middleName = item.middleName || ""; const middleName = item.middleName || "";
const lastName = item.lastName || ""; const lastName = item.lastName || "";
const fullName = `${firstName} ${middleName} ${lastName}`.toLowerCase().trim().replace(/\s+/g, ' '); const fullName = `${firstName} ${middleName} ${lastName}`
.toLowerCase()
.trim()
.replace(/\s+/g, " ");
const email = item.email ? item.email.toLowerCase() : ""; const email = item.email?.toLowerCase() || "";
const phoneNumber = item.phoneNumber ? item.phoneNumber.toLowerCase() : ""; const phoneNumber = item.phoneNumber?.toLowerCase() || "";
const jobRole = item.jobRole ? item.jobRole.toLowerCase() : ""; const jobRole = item.jobRole?.toLowerCase() || "";
return ( return (
fullName.includes(value) || fullName.includes(lowercasedText) ||
email.includes(value) || email.includes(lowercasedText) ||
phoneNumber.includes(value) || phoneNumber.includes(lowercasedText) ||
jobRole.includes(value) jobRole.includes(lowercasedText)
); );
}); });
}; };
const handleSearch = (e) => { const handleSearch = (e) => {
const value = e.target.value; const value = e.target.value;
setSearchText(value); setSearchText(value);
setCurrentPage(1); setCurrentPage(1);
}; };
useEffect(() => {
const filtered = applySearchFilter(employeeList, searchText);
setFilteredData(filtered);
}, [searchText, employeeList]);
const displayData = searchText ? filteredData : employeeList; const displayData = searchText ? filteredData : employeeList;
@ -112,40 +120,54 @@ const EmployeeList = () => {
setIsCreateModalOpen(true); setIsCreateModalOpen(true);
}; };
const closeModal = () => { // const closeModal = () => {
setIsCreateModalOpen(false); // setIsCreateModalOpen(false);
const modalElement = document.getElementById("managerole-modal"); // const modalElement = document.getElementById("managerole-modal");
if (modalElement && !showModal) { // if (modalElement && !showModal) {
modalElement.classList.remove("show"); // modalElement.classList.remove("show");
modalElement.style.display = "none"; // modalElement.style.display = "none";
document.body.classList.remove("modal-open"); // document.body.classList.remove("modal-open");
document.querySelector(".modal-backdrop")?.remove(); // document.querySelector(".modal-backdrop")?.remove();
} // }
setShowModal(false); // setShowModal(false);
clearCacheKey("employeeProfile"); // clearCacheKey("employeeProfile");
recallEmployeeData(showInactive, showAllEmployees ? null : selectedProjectId); // Use selectedProjectId here // recallEmployeeData(showInactive, showAllEmployees ? null : selectedProjectId); // Use selectedProjectId here
}; // };
const handleShow = () => setShowModal(true); // const handleShow = () => setShowModal(true);
const handleClose = () => setShowModal( false ); // const handleClose = () => setShowModal( false );
useEffect(() => {
setCurrentPage(1)
useEffect(() => {
if (!loading && Array.isArray(employees)) { if (!loading && Array.isArray(employees)) {
// Sort by full name (firstName + lastName)
const sorted = [...employees].sort((a, b) => { const sorted = [...employees].sort((a, b) => {
const nameA = `${a.firstName || ""}${a.middleName || ""}${b.lastName || "" const nameA = `${a.firstName || ""}${a.middleName || ""}${a.lastName || ""}`.toLowerCase();
}`.toLowerCase(); const nameB = `${b.firstName || ""}${b.middleName || ""}${b.lastName || ""}`.toLowerCase();
const nameB = `${b.firstName || ""}${b.middleName || ""}${b.lastName || ""
}`.toLowerCase();
return nameA?.localeCompare(nameB); return nameA?.localeCompare(nameB);
}); });
setEmployeeList(sorted); setEmployeeList((prevList) => {
setFilteredData(sorted); const prevJSON = JSON.stringify(prevList);
const nextJSON = JSON.stringify(sorted);
if (prevJSON !== nextJSON) {
return sorted;
} }
}, [loading, employees, selectedProjectId, showAllEmployees]); return prevList;
});
setFilteredData((prev) => {
const prevJSON = JSON.stringify(prev);
const nextJSON = JSON.stringify(sorted);
if (prevJSON !== nextJSON) {
return sorted;
}
return prev;
});
// set currentPage to 1 only if needed
setCurrentPage((prevPage) => (prevPage !== 1 ? 1 : prevPage));
}
}, [loading, employees, selectedProjectId, showAllEmployees]);
@ -153,11 +175,11 @@ const EmployeeList = () => {
setModelConfig(config); setModelConfig(config);
}; };
useEffect(() => { // useEffect(() => {
if (modelConfig !== null) { // if (modelConfig !== null) {
openModal(); // openModal();
} // }
}, [modelConfig, isCreateModalOpen]); // }, [modelConfig, isCreateModalOpen]);
const tableRef = useRef(null); const tableRef = useRef(null);
const handleExport = (type) => { const handleExport = (type) => {