diff --git a/src/components/Project/AssignTask.jsx b/src/components/Project/AssignTask.jsx index 0f755176..8c8aab22 100644 --- a/src/components/Project/AssignTask.jsx +++ b/src/components/Project/AssignTask.jsx @@ -1,24 +1,25 @@ import React, { useState, useEffect, useRef, useCallback } from "react"; import { useDispatch, useSelector } from "react-redux"; import { changeMaster } from "../../slices/localVariablesSlice"; -import useMaster from "../../hooks/masterHook/useMaster"; +import useMaster, { useServices } from "../../hooks/masterHook/useMaster"; import { useForm, Controller } from "react-hook-form"; import { z } from "zod"; import { zodResolver } from "@hookform/resolvers/zod"; -import { clearCacheKey, getCachedData } from "../../slices/apiDataManager"; +import { useSelectedProject } from "../../slices/apiDataManager"; import { useEmployeesAllOrByProjectId } from "../../hooks/useEmployees"; import { TasksRepository } from "../../repositories/ProjectRepository"; import showToast from "../../services/toastService"; -import { useProjectDetails } from "../../hooks/useProjects"; +import { + useEmployeeForTaskAssign, + useProjectAssignedOrganizations, + useProjectDetails, +} from "../../hooks/useProjects"; import eventBus from "../../services/eventBus"; import { useCreateTask } from "../../hooks/useTasks"; import Label from "../common/Label"; -const AssignTask = ({ assignData, onClose, setAssigned }) => { - const maxPlanned = - assignData?.workItem?.plannedWork - assignData?.workItem?.completedWork; - - const schema = z.object({ +const TaskSchema = (maxPlanned) => { + return z.object({ selectedEmployees: z .array(z.string()) .min(1, { message: "At least one employee must be selected" }), @@ -37,20 +38,26 @@ const AssignTask = ({ assignData, onClose, setAssigned }) => { }) ), }); +}; + +const AssignTask = ({ assignData, onClose, setAssigned }) => { + const planned = assignData?.workItem?.plannedWork || 0; + const completed = assignData?.workItem?.completedWork || 0; + const maxPlanned = planned - completed; const [isHelpVisibleTarget, setIsHelpVisibleTarget] = useState(false); const helpPopupRefTarget = useRef(null); const [isHelpVisible, setIsHelpVisible] = useState(false); + const [selectedService, setSelectedService] = useState(null); + const [selectedOrganization, setSelectedOrganization] = useState(null); + const { mutate: assignTask, isPending: isSubmitting } = useCreateTask({ - onSuccessCallback: () => { - closedModel(); - }, + onSuccessCallback: closedModel, }); const dropdownRef = useRef(null); const [open, setOpen] = useState(false); - // Close dropdown on outside click useEffect(() => { const handleClickOutside = (event) => { if (dropdownRef.current && !dropdownRef.current.contains(event.target)) { @@ -63,48 +70,47 @@ const AssignTask = ({ assignData, onClose, setAssigned }) => { const infoRef = useRef(null); const infoRef1 = useRef(null); - - // State for search term const [searchTerm, setSearchTerm] = useState(""); useEffect(() => { if (typeof bootstrap !== "undefined") { - if (infoRef.current) { + infoRef.current && new bootstrap.Popover(infoRef.current, { trigger: "focus", placement: "right", html: true, content: `
Assign Task
+Assign Task
@@ -252,7 +223,7 @@ const AssignTask = ({ assignData, onClose, setAssigned }) => {
assignData?.workArea?.areaName,
assignData?.workItem?.activityMaster?.activityName,
]
- .filter(Boolean) // Filter out any undefined/null values
+ .filter(Boolean)
.map((item, index, array) => (
{item}
@@ -268,20 +239,64 @@ const AssignTask = ({ assignData, onClose, setAssigned }) => {
Loading employees...
- No employees found for the selected role.
+ No employees found for the selected filter.