Compare commits
No commits in common. "53a9cbc30b86c5a2a41dfdfceefe0f26c13327be" and "a1a935b0d5be911147f25a446d78ef4ed82ed4f1" have entirely different histories.
53a9cbc30b
...
a1a935b0d5
@ -36,11 +36,10 @@ const Teams = () => {
|
|||||||
const [activeEmployee, setActiveEmployee] = useState(true);
|
const [activeEmployee, setActiveEmployee] = useState(true);
|
||||||
const [deleteEmployee, setDeleteEmplyee] = useState(null);
|
const [deleteEmployee, setDeleteEmplyee] = useState(null);
|
||||||
const [searchTerm, setSearchTerm] = useState(""); // State for search term
|
const [searchTerm, setSearchTerm] = useState(""); // State for search term
|
||||||
const [selectedService, setSelectedService] = useState(null);
|
|
||||||
|
|
||||||
const { data: assignedServices, isLoading: servicesLoading } = useProjectAssignedServices(projectId);
|
const { data: assignedServices, isLoading: servicesLoading } = useProjectAssignedServices(projectId);
|
||||||
const handleToggleActive = e => setActiveEmployee(e.target.checked);
|
const handleToggleActive = e => setActiveEmployee(e.target.checked);
|
||||||
|
|
||||||
|
const [selectedService, setSelectedService] = useState("");
|
||||||
|
|
||||||
const handleServiceChange = (e) => {
|
const handleServiceChange = (e) => {
|
||||||
setSelectedService(e.target.value);
|
setSelectedService(e.target.value);
|
||||||
@ -54,7 +53,7 @@ const Teams = () => {
|
|||||||
projectEmployees,
|
projectEmployees,
|
||||||
loading: employeeLodaing,
|
loading: employeeLodaing,
|
||||||
refetch,
|
refetch,
|
||||||
} = useEmployeesByProjectAllocated(projectId,selectedService);
|
} = useEmployeesByProjectAllocated(projectId);
|
||||||
const {
|
const {
|
||||||
mutate: submitAllocations,
|
mutate: submitAllocations,
|
||||||
isPending,
|
isPending,
|
||||||
@ -154,35 +153,31 @@ const Teams = () => {
|
|||||||
setEmpJobRoles(data);
|
setEmpJobRoles(data);
|
||||||
}
|
}
|
||||||
}, [data]);
|
}, [data]);
|
||||||
const filterAndSearchEmployees = useCallback(() => {
|
|
||||||
const statusFiltered = employees.filter((emp) =>
|
|
||||||
activeEmployee ? emp.isActive : !emp.isActive
|
|
||||||
);
|
|
||||||
|
|
||||||
if (searchTerm === "") {
|
const filterAndSearchEmployees = useCallback(() => {
|
||||||
setFilteredEmployees(statusFiltered);
|
const statusFiltered = employees.filter((emp) =>
|
||||||
return;
|
activeEmployee ? emp.isActive : !emp.isActive
|
||||||
}
|
|
||||||
|
|
||||||
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)
|
|
||||||
);
|
);
|
||||||
});
|
|
||||||
|
|
||||||
setFilteredEmployees(searchedAndFiltered);
|
if (searchTerm === "") {
|
||||||
}, [employees, activeEmployee, searchTerm, getRole]);
|
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();
|
||||||
|
|
||||||
|
return (
|
||||||
|
fullName.includes(lowercasedSearchTerm) ||
|
||||||
|
roleName.includes(lowercasedSearchTerm)
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
setFilteredEmployees(searchedAndFiltered);
|
||||||
|
}, [employees, activeEmployee, searchTerm, getRole]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
filterAndSearchEmployees();
|
filterAndSearchEmployees();
|
||||||
@ -269,38 +264,50 @@ const filterAndSearchEmployees = useCallback(() => {
|
|||||||
<div className="row d-flex justify-content-between mb-4">
|
<div className="row d-flex justify-content-between mb-4">
|
||||||
<div className="col-md-6 col-12 d-flex align-items-center">
|
<div className="col-md-6 col-12 d-flex align-items-center">
|
||||||
<div className="dataTables_length text-start py-1 px-0 col-md-4 col-12">
|
<div className="dataTables_length text-start py-1 px-0 col-md-4 col-12">
|
||||||
{servicesLoading ? null : assignedServices && assignedServices.length > 0 ? (
|
{servicesLoading ? (
|
||||||
assignedServices.length > 1 ? (
|
<span></span>
|
||||||
<label>
|
) : assignedServices?.length > 1 ? (
|
||||||
<select
|
<label>
|
||||||
name="serviceFilter"
|
<select
|
||||||
aria-controls="DataTables_Table_0"
|
name="DataTables_Table_0_length"
|
||||||
className="form-select form-select-sm"
|
aria-controls="DataTables_Table_0"
|
||||||
aria-label="Select Service"
|
className="form-select form-select-sm"
|
||||||
value={selectedService}
|
aria-label="Select Service"
|
||||||
onChange={handleServiceChange}
|
value={selectedService}
|
||||||
style={{ fontSize: "0.875rem", height: "32px", width: "190px" }}
|
onChange={handleServiceChange}
|
||||||
>
|
style={{ fontSize: "0.875rem", height: "32px", width: "190px" }}
|
||||||
<option value="">All Services</option>
|
>
|
||||||
{assignedServices.map((service) => (
|
{assignedServices.map((service) => (
|
||||||
<option key={service.id} value={service.id}>
|
<option key={service.id} value={service.id}>
|
||||||
{service.name}
|
{service.name}
|
||||||
</option>
|
</option>
|
||||||
))}
|
))}
|
||||||
</select>
|
</select>
|
||||||
</label>
|
</label>
|
||||||
) : (
|
|
||||||
<div>
|
|
||||||
<h5>{assignedServices[0].name}</h5>
|
|
||||||
</div>
|
|
||||||
)
|
|
||||||
) : (
|
) : (
|
||||||
<div>
|
<div
|
||||||
|
style={{
|
||||||
|
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{/* fier fitting */}
|
||||||
|
{assignedServices?.length === 1
|
||||||
|
?<h5>{ assignedServices[0].name}</h5>
|
||||||
|
: "No service available"}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{/* <div className="dataTables_filter d-inline-flex align-items-center ms-2">
|
||||||
|
<input
|
||||||
|
type="search"
|
||||||
|
className="form-control form-control-sm me-4"
|
||||||
|
placeholder="Search by Name or Role"
|
||||||
|
aria-controls="DataTables_Table_0"
|
||||||
|
value={searchTerm}
|
||||||
|
onChange={handleSearch}
|
||||||
|
/>
|
||||||
|
</div> */}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div className="col-md-6 col-12 d-flex justify-content-end align-items-center">
|
<div className="col-md-6 col-12 d-flex justify-content-end align-items-center">
|
||||||
@ -350,7 +357,6 @@ const filterAndSearchEmployees = useCallback(() => {
|
|||||||
<th>
|
<th>
|
||||||
<div className="text-start ms-5">Name</div>
|
<div className="text-start ms-5">Name</div>
|
||||||
</th>
|
</th>
|
||||||
<th>Services</th>
|
|
||||||
<th>Organization</th>
|
<th>Organization</th>
|
||||||
<th>Assigned Date</th>
|
<th>Assigned Date</th>
|
||||||
{!activeEmployee && <th>Release Date</th>}
|
{!activeEmployee && <th>Release Date</th>}
|
||||||
@ -386,7 +392,6 @@ const filterAndSearchEmployees = useCallback(() => {
|
|||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
|
|
||||||
<td>{item.serviceName || "N/A"}</td>
|
|
||||||
<td>{item.organizationName || "N/A"}</td>
|
<td>{item.organizationName || "N/A"}</td>
|
||||||
|
|
||||||
<td>
|
<td>
|
||||||
|
@ -41,30 +41,22 @@ export const useProjects = () => {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
export const useEmployeesByProjectAllocated = (
|
export const useEmployeesByProjectAllocated = (selectedProject) => {
|
||||||
projectId,
|
|
||||||
serviceId,
|
|
||||||
organizationId,
|
|
||||||
) => {
|
|
||||||
const {
|
const {
|
||||||
data = [],
|
data = [],
|
||||||
isLoading,
|
isLoading,
|
||||||
refetch,
|
refetch,
|
||||||
error,
|
error,
|
||||||
} = useQuery({
|
} = useQuery({
|
||||||
queryKey: ["empListByProjectAllocated", projectId, serviceId,organizationId],
|
queryKey: ["empListByProjectAllocated", selectedProject],
|
||||||
queryFn: async () => {
|
queryFn: async () => {
|
||||||
const res = await ProjectRepository.getProjectAllocation(
|
const res = await ProjectRepository.getProjectAllocation(selectedProject);
|
||||||
projectId,
|
return res.data || res;
|
||||||
organizationId,
|
|
||||||
serviceId
|
|
||||||
);
|
|
||||||
return res?.data || res;
|
|
||||||
},
|
},
|
||||||
enabled: !!projectId,
|
enabled: !!selectedProject,
|
||||||
onError: (error) => {
|
onError: (error) => {
|
||||||
showToast(
|
showToast(
|
||||||
error.message || "Error while fetching project allocated employees",
|
error.message || "Error while Fetching project Allocated Employees",
|
||||||
"error"
|
"error"
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
@ -290,7 +282,7 @@ export const useProjectAssignedOrganizations = (projectId) => {
|
|||||||
};
|
};
|
||||||
export const useProjectAssignedServices = (projectId) => {
|
export const useProjectAssignedServices = (projectId) => {
|
||||||
return useQuery({
|
return useQuery({
|
||||||
queryKey: ["projectAssignedOrganization", projectId],
|
queryKey: ["projectAssignedServices", projectId],
|
||||||
queryFn: async () => {
|
queryFn: async () => {
|
||||||
const resp = await ProjectRepository.getProjectAssignedServices(
|
const resp = await ProjectRepository.getProjectAssignedServices(
|
||||||
projectId
|
projectId
|
||||||
|
@ -5,20 +5,8 @@ const ProjectRepository = {
|
|||||||
getProjectByprojectId: (projetid) =>
|
getProjectByprojectId: (projetid) =>
|
||||||
api.get(`/api/project/details/${projetid}`),
|
api.get(`/api/project/details/${projetid}`),
|
||||||
|
|
||||||
getProjectAllocation: (projectId, organizationId, serviceId) => {
|
getProjectAllocation: (projetid) =>
|
||||||
let url = `/api/project/allocation/${projectId}`;
|
api.get(`api/project/allocation/${projetid}`),
|
||||||
|
|
||||||
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) =>
|
getEmployeesByProject: (projectId) =>
|
||||||
api.get(`/api/Project/employees/get/${projectId}`),
|
api.get(`/api/Project/employees/get/${projectId}`),
|
||||||
@ -51,18 +39,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}`),
|
getProjectLevelEmployeeList:(projectId)=>api.get(`/api/Project/get/proejct-level/employees/${projectId}`),
|
||||||
getProjectLevelModules: () => api.get(`/api/Project/get/proejct-level/modules`),
|
getProjectLevelModules:()=>api.get(`/api/Project/get/proejct-level/modules`),
|
||||||
getProjectLevelEmployeePermissions: (employeeId, projectId) => api.get(`/api/Project/get/project-level-permission/employee/${employeeId}/project/${projectId}`),
|
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),
|
updateProjectLevelEmployeePermission:(data)=>api.post(`/api/Project/assign/project-level-permission`,data),
|
||||||
getAllProjectLevelPermission: (projectId) => api.get(`/api/Project/get/all/project-level-permission/${projectId}`),
|
getAllProjectLevelPermission:(projectId)=>api.get(`/api/Project/get/all/project-level-permission/${projectId}`),
|
||||||
|
|
||||||
|
|
||||||
// Services
|
// Services
|
||||||
getProjectAssignedServices: (projectId) => api.get(`/api/Project/get/assigned/services/${projectId}`),
|
getProjectAssignedServices:(projectId)=>api.get(`/api/Project/get/assigned/services/${projectId}`),
|
||||||
getProjectAssignedOrganizations: (projectId) => api.get(`/api/Project/get/assigned/organization/${projectId}`)
|
getProjectAssignedOrganizations:(projectId)=>api.get(`/api/Project/get/assigned/organization/${projectId}`)
|
||||||
};
|
};
|
||||||
|
|
||||||
export const TasksRepository = {
|
export const TasksRepository = {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user