From edce5ef6140043eeaaea8091cf1b4277ba24fa02 Mon Sep 17 00:00:00 2001 From: "pramod.mahajan" Date: Fri, 10 Oct 2025 16:48:22 +0530 Subject: [PATCH] added newhook that return only organization employee for employee list (Active or Inactive) --- src/components/Employee/ManageEmployee.jsx | 4 +- src/components/Project/ManageProjectInfo.jsx | 6 +- src/components/Project/ProjectListView.jsx | 9 +- src/hooks/useEmployees.js | 36 ++-- src/pages/Activities/AttendancePage.jsx | 18 +- src/pages/employee/EmployeeList.jsx | 175 ++++++------------- 6 files changed, 95 insertions(+), 153 deletions(-) diff --git a/src/components/Employee/ManageEmployee.jsx b/src/components/Employee/ManageEmployee.jsx index b3aad4b4..5ee82674 100644 --- a/src/components/Employee/ManageEmployee.jsx +++ b/src/components/Employee/ManageEmployee.jsx @@ -18,7 +18,7 @@ import { defatEmployeeObj, employeeSchema } from "./EmployeeSchema"; import { useOrganizationsList } from "../../hooks/useOrganization"; import { ITEMS_PER_PAGE } from "../../utils/constants"; -const ManageEmployee = ({ employeeId, onClosed, IsAllEmployee }) => { +const ManageEmployee = ({ employeeId, onClosed }) => { const dispatch = useDispatch(); const { mutate: updateEmployee, isPending } = useUpdateEmployee(); const { @@ -72,7 +72,7 @@ const ManageEmployee = ({ employeeId, onClosed, IsAllEmployee }) => { data.email = null; } - const payload = { ...data, IsAllEmployee }; + const payload = { ...data }; if (employeeId) { payload.id = employeeId; diff --git a/src/components/Project/ManageProjectInfo.jsx b/src/components/Project/ManageProjectInfo.jsx index d6eec199..547cf4cb 100644 --- a/src/components/Project/ManageProjectInfo.jsx +++ b/src/components/Project/ManageProjectInfo.jsx @@ -327,7 +327,7 @@ const ManageProjectInfo = ({ project, onClose }) => { Not found PMC and Pomoter, find through SPRID or create new - + @@ -367,14 +367,14 @@ const ManageProjectInfo = ({ project, onClose }) => { className="btn btn-label-secondary btn-sm me-2" onClick={handleCancel} aria-label="Close" - disabled={isPending || isCreating} + disabled={isPending || isCreating || loading} > Cancel diff --git a/src/components/Project/ProjectListView.jsx b/src/components/Project/ProjectListView.jsx index 2e717163..3bf9b160 100644 --- a/src/components/Project/ProjectListView.jsx +++ b/src/components/Project/ProjectListView.jsx @@ -132,11 +132,15 @@ const ProjectListView = ({ return (
+ +
- + {projectColumns.map((col) => ( - ))} @@ -217,6 +221,7 @@ const ProjectListView = ({ ))}
+ {col.label}
+
{isLoading && (
diff --git a/src/hooks/useEmployees.js b/src/hooks/useEmployees.js index 2b37e0de..e33084a6 100644 --- a/src/hooks/useEmployees.js +++ b/src/hooks/useEmployees.js @@ -12,14 +12,14 @@ import { queryClient } from "../layouts/AuthLayout"; // Query --------------------------------------------------------------------------- export const useEmployee = (employeeId) => { - return useQuery({ + return useQuery({ queryKey: ["employeeProfile", employeeId], queryFn: async () => { - const res = await EmployeeRepository.getEmployeeProfile(employeeId) + const res = await EmployeeRepository.getEmployeeProfile(employeeId); return res.data; }, - enabled:!!employeeId - }); + enabled: !!employeeId, + }); }; export const useAllEmployees = (showInactive) => { @@ -137,7 +137,6 @@ export const useEmployeesAllOrByProjectId = ( return res.data; } }; - const { data: employees = [], isLoading, @@ -158,6 +157,18 @@ export const useEmployeesAllOrByProjectId = ( }; }; +// New Employee get list by CureentOrganization + +export const useEmployeesByOrganization = (showInactive) => { + return useQuery({ + queryKey: ["employeesByOrganization", showInactive], + queryFn: async () => { + const res = await EmployeeRepository.getAllEmployeeList(showInactive); + return res.data; + }, + }); +}; + // ManageEmployee.jsx export const useEmployeeProfile = (employeeId) => { const isEnabled = !!employeeId; @@ -184,11 +195,11 @@ export const useEmployeeProfile = (employeeId) => { }; }; -export const useEmployeesName = (projectId, search,allEmployee) => { +export const useEmployeesName = (projectId, search, allEmployee) => { return useQuery({ - queryKey: ["employees", projectId, search,allEmployee], + queryKey: ["employees", projectId, search, allEmployee], queryFn: async () => - await EmployeeRepository.getEmployeeName(projectId, search,allEmployee), + await EmployeeRepository.getEmployeeName(projectId, search, allEmployee), staleTime: 5 * 60 * 1000, // Optional: cache for 5 minutes }); @@ -208,9 +219,6 @@ export const useEmployeesNameByProject = (projectId) => { // Mutation------------------------------------------------------------------ - - - export const useUpdateEmployee = () => { const selectedProject = useSelector( (store) => store.localVariables.projectId @@ -225,7 +233,7 @@ export const useUpdateEmployee = () => { const isAllEmployee = variables.IsAllEmployee; // Cache invalidation - queryClient.invalidateQueries({ queryKey: ["employeeProfile",id] }); + queryClient.invalidateQueries({ queryKey: ["employeeProfile", id] }); queryClient.invalidateQueries({ queryKey: ["allEmployees"] }); // queryClient.invalidateQueries(['employeeProfile', id]); queryClient.invalidateQueries({ queryKey: ["projectEmployees"] }); @@ -247,7 +255,6 @@ export const useUpdateEmployee = () => { }); }; - export const useSuspendEmployee = ({ setIsDeleteModalOpen, setemployeeLodaing, @@ -300,7 +307,6 @@ export const useSuspendEmployee = ({ }); }; - export const useUpdateEmployeeRoles = ({ onClose, resetForm, @@ -334,4 +340,4 @@ export const useUpdateEmployeeRoles = ({ isError: mutation.isError, error: mutation.error, }; -}; \ No newline at end of file +}; diff --git a/src/pages/Activities/AttendancePage.jsx b/src/pages/Activities/AttendancePage.jsx index b55592bc..e07be1f5 100644 --- a/src/pages/Activities/AttendancePage.jsx +++ b/src/pages/Activities/AttendancePage.jsx @@ -131,7 +131,7 @@ const AttendancePage = () => {
{/* Tabs */}
-
+
{/* Tabs */}
    @@ -181,9 +181,10 @@ const AttendancePage = () => { {/* Search + Organization filter */}
    {/* Organization Dropdown */} - setAppliedFilters((prev) => ({ @@ -200,16 +201,21 @@ const AttendancePage = () => { ))} - - {/* Search Input */} +
    +
    + {/* Search Input */} setSearchTerm(e.target.value)} - style={{ minWidth: "200px" }} /> +
    +
+ + +
diff --git a/src/pages/employee/EmployeeList.jsx b/src/pages/employee/EmployeeList.jsx index fc77ba1c..ca8e6d66 100644 --- a/src/pages/employee/EmployeeList.jsx +++ b/src/pages/employee/EmployeeList.jsx @@ -7,6 +7,7 @@ import Breadcrumb from "../../components/common/Breadcrumb"; import ManageEmp from "../../components/Employee/ManageRole"; import { useEmployeesAllOrByProjectId, + useEmployeesByOrganization, useSuspendEmployee, } from "../../hooks/useEmployees"; import { useProjectName, useProjects } from "../../hooks/useProjects"; @@ -36,6 +37,7 @@ import GlobalModel from "../../components/common/GlobalModel"; import usePagination from "../../hooks/usePagination"; import { setProjectId } from "../../slices/localVariablesSlice"; import { useHasUserPermission } from "../../hooks/useHasUserPermission"; +import Pagination from "../../components/common/Pagination"; const EmployeeList = () => { const selectedProjectId = useSelector( @@ -46,15 +48,14 @@ const EmployeeList = () => { const dispatch = useDispatch(); const [showInactive, setShowInactive] = useState(false); - const [showAllEmployees, setShowAllEmployees] = useState(false); const Manage_Employee = useHasUserPermission(MANAGE_EMPLOYEES); - const { employees, loading, setLoading, error, recallEmployeeData } = - useEmployeesAllOrByProjectId( - showAllEmployees, - selectedProjectId, - showInactive - ); + const { + data: employees, + isLoading: loading, + error, + refetch: recallEmployeeData, + } = useEmployeesByOrganization(showInactive); const [employeeList, setEmployeeList] = useState([]); const [modelConfig, setModelConfig] = useState(); @@ -70,7 +71,6 @@ const EmployeeList = () => { const [selectedEmpFordelete, setSelectedEmpFordelete] = useState(null); const [employeeLodaing, setemployeeLodaing] = useState(false); const ViewTeamMember = useHasUserPermission(VIEW_TEAM_MEMBERS); - const ViewAllEmployee = useHasUserPermission(VIEW_ALL_EMPLOYEES); const { mutate: suspendEmployee, isPending: empLodaing } = useSuspendEmployee( { setIsDeleteModalOpen, @@ -157,7 +157,7 @@ const EmployeeList = () => { const handleAllEmployeesToggle = (e) => { const isChecked = e.target.checked; setShowInactive(false); - setShowAllEmployees(isChecked); + // setShowAllEmployees(isChecked); }; const handleEmployeeModel = (id) => { @@ -205,25 +205,16 @@ const EmployeeList = () => { setCurrentPage((prevPage) => (prevPage !== 1 ? 1 : prevPage)); } - }, [loading, employees, selectedProjectId, showAllEmployees]); - - useEffect(() => { - if (!showAllEmployees) { - recallEmployeeData(showInactive, selectedProjectId); - } - }, [selectedProjectId, showInactive, showAllEmployees, recallEmployeeData]); + }, [loading, employees, selectedProjectId, showInactive]); const handler = useCallback( (msg) => { if (employees.some((item) => item.id == msg.employeeId)) { setEmployeeList([]); - recallEmployeeData( - showInactive, - showAllEmployees ? null : selectedProjectId - ); // Use selectedProjectId here + recallEmployeeData(showInactive); } }, - [employees, showInactive, showAllEmployees, selectedProjectId] // Add all relevant dependencies + [employees, showInactive, showInactive, selectedProjectId] // Add all relevant dependencies ); useEffect(() => { @@ -254,7 +245,6 @@ const EmployeeList = () => { setShowModal(false)} - IsAllEmployee={showAllEmployees} /> )} @@ -293,59 +283,39 @@ const EmployeeList = () => { {ViewTeamMember ? ( //
-
+
{/* Switches: All Employees + Inactive */}
{/* All Employees Switch */} - {ViewAllEmployee && ( -
- - -
- )} {/* Show Inactive Employees Switch */} - {showAllEmployees && ( -
- setShowInactive(e.target.checked)} - /> - -
- )} + +
+ setShowInactive(e.target.checked)} + /> + +
{/* Right side: Search + Export + Add Employee */} -
+
{/* Search Input - ALWAYS ENABLED */}