diff --git a/src/components/Project/AssignRole.jsx b/src/components/Project/AssignRole.jsx index e5a567e9..11f125f3 100644 --- a/src/components/Project/AssignRole.jsx +++ b/src/components/Project/AssignRole.jsx @@ -16,7 +16,6 @@ const AssignRoleModel = ({ assignData, onClose }) => { const maxPlanned = assignData?.workItem?.workItem?.plannedWork - assignData?.workItem?.workItem?.completedWork; - const schema = z.object({ selectedEmployees: z .array(z.string()) @@ -40,7 +39,10 @@ const AssignRoleModel = ({ assignData, onClose }) => { const selectedProject = useSelector( (store) => store.localVariables.projectId ); - const { employees,loading:employeeLoading } = useEmployeesAllOrByProjectId(selectedProject,false); + const { employees, loading: employeeLoading } = useEmployeesAllOrByProjectId( + selectedProject, + false + ); const dispatch = useDispatch(); const { data, loading } = useMaster(); @@ -48,6 +50,7 @@ const AssignRoleModel = ({ assignData, onClose }) => { const [selectedRole, setSelectedRole] = useState("all"); const [selectedEmployees, setSelectedEmployees] = useState([]); + const [displayedSelection, setDisplayedSelection] = useState(""); const { handleSubmit, @@ -65,53 +68,67 @@ const AssignRoleModel = ({ assignData, onClose }) => { resolver: zodResolver(schema), }); + const handleCheckboxChange = (event, user) => { + const isChecked = event.target.checked; + let updatedSelectedEmployees = watch("selectedEmployees") || []; + + if (isChecked) { + if (!updatedSelectedEmployees.includes(user.id)) { + updatedSelectedEmployees = [...updatedSelectedEmployees, user.id]; + } + } else { + updatedSelectedEmployees = updatedSelectedEmployees.filter( + (id) => id !== user.id + ); + } + + setValue("selectedEmployees", updatedSelectedEmployees); + }; + + useEffect(() => { + dispatch(changeMaster("Job Role")); + return () => setSelectedRole("all"); + }, [dispatch]); + const handleRoleChange = (event) => { - reset(); - // setSelectedEmployees([]); setSelectedRole(event.target.value); }; const filteredEmployees = selectedRole === "all" ? employees - : employees.filter((emp) => String(emp.jobRoleId || "") === selectedRole); - - const handleEmployeeSelection = (employeeId, field) => { - setSelectedEmployees((prevSelected) => { - let updatedSelection; - if (!prevSelected.includes(employeeId)) { - updatedSelection = [...prevSelected, employeeId]; - } else { - updatedSelection = prevSelected.filter((id) => id !== employeeId); - } - field.onChange(updatedSelection); - return updatedSelection; - }); - }; - - const removeEmployee = (employeeId) => { - setSelectedEmployees((prevSelected) => { - const updatedSelection = prevSelected.filter((id) => id !== employeeId); - setValue("selectedEmployees", updatedSelection); // Ensure form state is updated - return updatedSelection; - }); - }; + : employees?.filter( + (emp) => String(emp.jobRoleId || "") === selectedRole + ); const onSubmit = async (data) => { + const selectedEmployeeIds = data.selectedEmployees; + + const taskTeamWithDetails = selectedEmployeeIds + .map((empId) => { + const employee = employees.find((e) => e.id === empId); + const jobRole = jobRoleData?.find((r) => r.id === employee?.jobRoleId); + return employee + ? employee.id + : null; + }) + .filter(Boolean); + const formattedData = { - taskTeam: data.selectedEmployees, + taskTeam: taskTeamWithDetails, plannedTask: data.plannedTask, description: data.description, assignmentDate: new Date().toISOString(), workItemId: assignData?.workItem?.workItem.id, }; + try { let response = await TasksRepository.assignTask(formattedData); - showToast("Task Successfully Assigend", "success"); - setSelectedEmployees([]); + showToast("Task Successfully Assigned", "success"); reset(); onClose(); } catch (error) { + console.log(error.response); showToast("something wrong", "error"); } }; @@ -124,6 +141,7 @@ const AssignRoleModel = ({ assignData, onClose }) => { reset(); onClose(); }; + return (
- {[ - assignData?.building?.name, - assignData?.floor?.floorName, - assignData?.workArea?.areaName, - assignData?.workItem?.workItem?.activityMaster?.activityName, - ] - .filter(Boolean) - .map((item, index, array) => ( - - {item} - {index < array.length - 1 && ( - - )} - - ))} -
++ + Work Location: + {[ + assignData?.building?.name, + assignData?.floor?.floorName, + assignData?.workArea?.areaName, + assignData?.workItem?.workItem?.activityMaster + ?.activityName, + ] + .filter(Boolean) + .map((item, index, array) => ( + + {item} + {index < array.length - 1 && ( + + )} + + ))} + +
-