diff --git a/src/components/Project/Infrastructure/TaskModel.jsx b/src/components/Project/Infrastructure/TaskModel.jsx index fef57cfb..e6467ba3 100644 --- a/src/components/Project/Infrastructure/TaskModel.jsx +++ b/src/components/Project/Infrastructure/TaskModel.jsx @@ -3,7 +3,9 @@ import { useForm } from "react-hook-form"; import { z } from "zod"; import { zodResolver } from "@hookform/resolvers/zod"; import { + useActivitiesByGroups, useActivitiesMaster, + useGroups, useWorkCategoriesMaster, } from "../../../hooks/masterHook/useMaster"; import { useManageTask, useProjectAssignedOrganizations, useProjectAssignedServices } from "../../../hooks/useProjects"; @@ -15,6 +17,7 @@ const taskSchema = z.object({ buildingID: z.string().min(1, "Building is required"), floorId: z.string().min(1, "Floor is required"), workAreaId: z.string().min(1, "Work Area is required"), + activityGroupId: z.string().min(1, "Activity Group is required"), activityID: z.string().min(1, "Activity is required"), workCategoryId: z.string().min(1, "Work Category is required"), plannedWork: z.number().min(1, "Planned Work must be greater than 0"), @@ -27,6 +30,7 @@ const defaultModel = { buildingID: "", floorId: "", workAreaId: "", + activityGroupId: "", activityID: "", workCategoryId: "", plannedWork: 0, @@ -35,7 +39,7 @@ const defaultModel = { }; const TaskModel = ({ project, onSubmit, onClose }) => { - const { activities, loading: activityLoading } = useActivitiesMaster(); + // const { activities, loading: activityLoading } = useActivitiesMaster(); const { categories, categoryLoading } = useWorkCategoriesMaster(); const projectId = useSelectedProject(); @@ -43,19 +47,34 @@ const TaskModel = ({ project, onSubmit, onClose }) => { const { data: assignedServices, isLoading: servicesLoading } = useProjectAssignedServices(projectId); const { data: assignedOrganizations, isLoading: orgLoading } = useProjectAssignedOrganizations(projectId); + + const [selectedService, setSelectedService] = useState(""); + const [selectedGroup, setSelectedGroup] = useState(""); + const { data: groupsResponse, isLoading: groupsLoading } = useGroups(selectedService); + const groups = groupsResponse?.data ?? []; + + const { data: activitiesResponse, isLoading: activitiesLoading } = useActivitiesByGroups(selectedGroup); + const activities = activitiesResponse?.data ?? []; // Fetch Assigned Organizations (Activity Groups) const [selectedOrg, setSelectedOrg] = useState(""); - - const handleOrgChange = (e) => { - setSelectedOrg(e.target.value); - }; - - const handleServiceChange = (e) => { - setSelectedService(e.target.value); + const value = e.target.value; + setSelectedService(value); + setSelectedGroup(""); + setValue("activityGroupId", ""); + setValue("activityID", ""); }; + + const handleGroupChange = (e) => { + const value = e.target.value; + setSelectedGroup(value); + setValue("activityGroupId", value); + setValue("activityID", ""); + }; + + const { register, handleSubmit, @@ -197,15 +216,13 @@ const TaskModel = ({ project, onSubmit, onClose }) => { {/* Services Selection */} {selectedWorkArea && (
{errors.buildingID.message}
- )}{errors.activityGroupId.message}
} )} + {/* Activity Selection */} - {selectedOrg && ( + {selectedGroup && (