import React, { useState, useEffect } from "react"; import MapUsers from "./MapUsers"; import { Link, NavLink, useNavigate } from "react-router-dom"; import showToast from "../../services/toastService"; import Avatar from "../common/Avatar"; import moment from "moment"; import ProjectRepository from "../../repositories/ProjectRepository"; import { useDispatch } from "react-redux"; import { changeMaster } from "../../slices/localVariablesSlice"; import useMaster from "../../hooks/masterHook/useMaster"; import { useHasUserPermission } from "../../hooks/useHasUserPermission"; import { ASSIGN_TO_PROJECT } from "../../utils/constants"; import ConfirmModal from "../common/ConfirmModal"; const Teams = ({ project }) => { const dispatch = useDispatch(); dispatch(changeMaster("Job Role")); const { data, loading } = useMaster(); const [isModalOpen, setIsModelOpen] = useState(false); const [error, setError] = useState(""); const [empJobRoles, setEmpJobRoles] = useState(null); const [employees, setEmployees] = useState([]); const [filteredEmployees, setFilteredEmployees] = useState([]); const [removingEmployeeId, setRemovingEmployeeId] = useState(null); const [assignedLoading, setAssignedLoading] = useState(false); const [ employeeLodaing, setEmployeeLoading ] = useState( false ); const [ activeEmployee, setActiveEmployee ] = useState( true ) const [deleteEmployee,setDeleteEmplyee] = useState(null) const navigate = useNavigate(); const HasAssignUserPermission = useHasUserPermission( ASSIGN_TO_PROJECT ); const[IsDeleteModal,setIsDeleteModal] = useState(false) const fetchEmployees = async () => { try { setEmployeeLoading(true); // if (!empRoles) { ProjectRepository.getProjectAllocation(project.id) .then((response) => { setEmployees(response.data); setFilteredEmployees( response.data.filter( ( emp ) => emp.isActive ) ); console.log(response) setEmployeeLoading(false); }) .catch((error) => { console.error(error); setError("Failed to fetch data."); setEmployeeLoading(false); }); } catch (err) { setError("Failed to fetch activities."); } }; const submitAllocations = (items,added) => { ProjectRepository.manageProjectAllocation(items) .then((response) => { fetchEmployees(); if ( added ) { showToast("Employee Assigned Successfully", "success"); }else{ showToast("Removed Employee Successfully", "success"); } setRemovingEmployeeId(null); setAssignedLoading( false ); setDeleteEmplyee( null ) closeDeleteModal() }) .catch((error) => { const message = error.response.data.message || error.message || "Error Occured during Api Call"; showToast( message, "error" ); closeDeleteModal() }); }; const removeAllocation = (item) => { setRemovingEmployeeId(item.id); submitAllocations([ { empID: item.employeeId, jobRoleId: item.jobRoleId, projectId: project.id, status: false, }, ] ,false); }; const handleEmpAlicationFormSubmit = (allocaionObj) => { let items = allocaionObj.map((item) => { return { empID: item.empID, jobRoleId: item.jobRoleId, projectId: project.id, status: true, }; }); submitAllocations( items ,true); }; const getRole = (jobRoleId) => { if (loading) return "Loading..."; if (!Array.isArray(empJobRoles)) return "Unassigned"; if (!jobRoleId) return "Unassigned"; const role = empJobRoles.find((b) => b.id == jobRoleId); return role ? role.name : "Unassigned"; }; const openModel = () => { setIsModelOpen(true); }; const onModelClose = () => { setIsModelOpen(false); const modalElement = document.getElementById("user-model"); if (modalElement) { modalElement.classList.remove("show"); modalElement.style.display = "none"; document.body.classList.remove("modal-open"); document.querySelector(".modal-backdrop").remove(); } const modalBackdropElement = document.querySelector(".modal-backdrop"); if (modalBackdropElement) { modalBackdropElement.remove(); } document.body.style.overflow = "auto"; }; useEffect(() => { fetchEmployees(); }, []); useEffect(() => { if (data) { setEmpJobRoles(data); } }, [data]); const handleFilterEmployee = (e) => { const filterValue = e.target.value; if ( filterValue === "true" ) { setActiveEmployee(true) setFilteredEmployees(employees.filter((emp) => emp.isActive)); } else { setFilteredEmployees( employees.filter( ( emp ) => !emp.isActive ) ); setActiveEmployee(false) } }; const deleteModalOpen = (item) => { setDeleteEmplyee(item) setIsDeleteModal(true) } const closeDeleteModal = ()=> setIsDeleteModal(false) return ( <>
{IsDeleteModal && (Loading..
} {!employeeLodaing && employees && employees.length > 0 && (Name | Assigned Date | {!activeEmployee &&Release Date | }Project Role | Actions |
---|---|---|---|---|
{" "} {moment(item.allocationDate).format( "DD-MMM-YYYY" )}{" "} | {!activeEmployee &&{item.reAllocationDate ? moment(item.reAllocationDate).format( "DD-MMM-YYYY" ) : "Present"} | }{getRole(item.jobRoleId)} | {item.isActive && ( )} {!item.isActive && Not in project} |