diff --git a/src/components/Project/Teams.jsx b/src/components/Project/Teams.jsx index ab048c89..f65d90dd 100644 --- a/src/components/Project/Teams.jsx +++ b/src/components/Project/Teams.jsx @@ -36,10 +36,11 @@ const Teams = () => { const [activeEmployee, setActiveEmployee] = useState(true); const [deleteEmployee, setDeleteEmplyee] = useState(null); const [searchTerm, setSearchTerm] = useState(""); // State for search term + const [selectedService, setSelectedService] = useState(null); + const { data: assignedServices, isLoading: servicesLoading } = useProjectAssignedServices(projectId); const handleToggleActive = e => setActiveEmployee(e.target.checked); - const [selectedService, setSelectedService] = useState(""); const handleServiceChange = (e) => { setSelectedService(e.target.value); @@ -53,7 +54,7 @@ const Teams = () => { projectEmployees, loading: employeeLodaing, refetch, - } = useEmployeesByProjectAllocated(projectId); + } = useEmployeesByProjectAllocated(projectId,selectedService); const { mutate: submitAllocations, isPending, @@ -153,31 +154,35 @@ const Teams = () => { setEmpJobRoles(data); } }, [data]); +const filterAndSearchEmployees = useCallback(() => { + const statusFiltered = employees.filter((emp) => + activeEmployee ? emp.isActive : !emp.isActive + ); - const filterAndSearchEmployees = useCallback(() => { - const statusFiltered = employees.filter((emp) => - activeEmployee ? emp.isActive : !emp.isActive + if (searchTerm === "") { + setFilteredEmployees(statusFiltered); + return; + } + + const lowercasedSearchTerm = searchTerm.toLowerCase(); + + const searchedAndFiltered = statusFiltered.filter((item) => { + const fullName = `${item.firstName} ${item.middleName} ${item.lastName}`.toLowerCase(); + const roleName = getRole(item.jobRoleId).toLowerCase(); + const orgName = (item.organizationName || "").toLowerCase(); + const serviceName = (item.serviceName || "").toLowerCase(); + + return ( + fullName.includes(lowercasedSearchTerm) || + roleName.includes(lowercasedSearchTerm) || + orgName.includes(lowercasedSearchTerm) || + serviceName.includes(lowercasedSearchTerm) ); + }); - if (searchTerm === "") { - setFilteredEmployees(statusFiltered); - return; - } + setFilteredEmployees(searchedAndFiltered); +}, [employees, activeEmployee, searchTerm, getRole]); - const lowercasedSearchTerm = searchTerm.toLowerCase(); - const searchedAndFiltered = statusFiltered.filter((item) => { - const fullName = - `${item.firstName} ${item.middleName} ${item.lastName}`.toLowerCase(); - const roleName = getRole(item.jobRoleId).toLowerCase(); - - return ( - fullName.includes(lowercasedSearchTerm) || - roleName.includes(lowercasedSearchTerm) - ); - }); - - setFilteredEmployees(searchedAndFiltered); - }, [employees, activeEmployee, searchTerm, getRole]); useEffect(() => { filterAndSearchEmployees(); @@ -264,50 +269,38 @@ const Teams = () => {
- {servicesLoading ? ( - - ) : assignedServices?.length > 1 ? ( - + {servicesLoading ? null : assignedServices && assignedServices.length > 0 ? ( + assignedServices.length > 1 ? ( + + ) : ( +
+
{assignedServices[0].name}
+
+ ) ) : ( -
- {/* fier fitting */} - {assignedServices?.length === 1 - ?
{ assignedServices[0].name}
- : "No service available"} +
+
)}
- {/*
- -
*/}
@@ -357,6 +350,7 @@ const Teams = () => {
Name
+ Services Organization Assigned Date {!activeEmployee && Release Date} @@ -392,6 +386,7 @@ const Teams = () => {
+ {item.serviceName || "N/A"} {item.organizationName || "N/A"} diff --git a/src/hooks/useProjects.js b/src/hooks/useProjects.js index 33d26f59..e418499d 100644 --- a/src/hooks/useProjects.js +++ b/src/hooks/useProjects.js @@ -41,22 +41,30 @@ export const useProjects = () => { }; }; -export const useEmployeesByProjectAllocated = (selectedProject) => { +export const useEmployeesByProjectAllocated = ( + projectId, + serviceId, + organizationId, +) => { const { data = [], isLoading, refetch, error, } = useQuery({ - queryKey: ["empListByProjectAllocated", selectedProject], + queryKey: ["empListByProjectAllocated", projectId, serviceId,organizationId], queryFn: async () => { - const res = await ProjectRepository.getProjectAllocation(selectedProject); - return res.data || res; + const res = await ProjectRepository.getProjectAllocation( + projectId, + organizationId, + serviceId + ); + return res?.data || res; }, - enabled: !!selectedProject, + enabled: !!projectId, onError: (error) => { showToast( - error.message || "Error while Fetching project Allocated Employees", + error.message || "Error while fetching project allocated employees", "error" ); }, @@ -282,7 +290,7 @@ export const useProjectAssignedOrganizations = (projectId) => { }; export const useProjectAssignedServices = (projectId) => { return useQuery({ - queryKey: ["projectAssignedServices", projectId], + queryKey: ["projectAssignedOrganization", projectId], queryFn: async () => { const resp = await ProjectRepository.getProjectAssignedServices( projectId diff --git a/src/repositories/ProjectRepository.jsx b/src/repositories/ProjectRepository.jsx index d9a9ada3..113bd627 100644 --- a/src/repositories/ProjectRepository.jsx +++ b/src/repositories/ProjectRepository.jsx @@ -5,8 +5,20 @@ const ProjectRepository = { getProjectByprojectId: (projetid) => api.get(`/api/project/details/${projetid}`), - getProjectAllocation: (projetid) => - api.get(`api/project/allocation/${projetid}`), + getProjectAllocation: (projectId, organizationId, serviceId) => { + let url = `/api/project/allocation/${projectId}`; + + const params = []; + if (organizationId) params.push(`organizationId=${organizationId}`); + if (serviceId) params.push(`serviceId=${serviceId}`); + + if (params.length > 0) { + url += `?${params.join("&")}`; + } + + return api.get(url); + }, + getEmployeesByProject: (projectId) => api.get(`/api/Project/employees/get/${projectId}`), @@ -39,18 +51,18 @@ const ProjectRepository = { ), - // Permission Managment for Employee at Project Level + // Permission Managment for Employee at Project Level - getProjectLevelEmployeeList:(projectId)=>api.get(`/api/Project/get/proejct-level/employees/${projectId}`), - getProjectLevelModules:()=>api.get(`/api/Project/get/proejct-level/modules`), - getProjectLevelEmployeePermissions:(employeeId,projectId)=>api.get(`/api/Project/get/project-level-permission/employee/${employeeId}/project/${projectId}`), - updateProjectLevelEmployeePermission:(data)=>api.post(`/api/Project/assign/project-level-permission`,data), - getAllProjectLevelPermission:(projectId)=>api.get(`/api/Project/get/all/project-level-permission/${projectId}`), + getProjectLevelEmployeeList: (projectId) => api.get(`/api/Project/get/proejct-level/employees/${projectId}`), + getProjectLevelModules: () => api.get(`/api/Project/get/proejct-level/modules`), + getProjectLevelEmployeePermissions: (employeeId, projectId) => api.get(`/api/Project/get/project-level-permission/employee/${employeeId}/project/${projectId}`), + updateProjectLevelEmployeePermission: (data) => api.post(`/api/Project/assign/project-level-permission`, data), + getAllProjectLevelPermission: (projectId) => api.get(`/api/Project/get/all/project-level-permission/${projectId}`), - // Services - getProjectAssignedServices:(projectId)=>api.get(`/api/Project/get/assigned/services/${projectId}`), - getProjectAssignedOrganizations:(projectId)=>api.get(`/api/Project/get/assigned/organization/${projectId}`) + // Services + getProjectAssignedServices: (projectId) => api.get(`/api/Project/get/assigned/services/${projectId}`), + getProjectAssignedOrganizations: (projectId) => api.get(`/api/Project/get/assigned/organization/${projectId}`) }; export const TasksRepository = {