diff --git a/src/components/Project/Infrastructure/EditActivityModal.jsx b/src/components/Project/Infrastructure/EditActivityModal.jsx index c3d12648..e57b6a30 100644 --- a/src/components/Project/Infrastructure/EditActivityModal.jsx +++ b/src/components/Project/Infrastructure/EditActivityModal.jsx @@ -32,9 +32,8 @@ const EditActivityModal = ({ building, floor, onClose, -} ) => -{ - +}) => { + const { activities, loading: loadingActivities } = useActivitiesMaster(); const { categories, loading: loadingCategories } = useWorkCategoriesMaster(); const [selectedActivity, setSelectedActivity] = useState(null); @@ -57,13 +56,12 @@ const EditActivityModal = ({ comment: "", }, }); -const { mutate: UpdateTask, isPending } = useManageTask({ - onSuccessCallback: (response) => - { - showToast( response?.message, "success" ) - onClose() - } -} ); + const { mutate: UpdateTask, isPending } = useManageTask({ + onSuccessCallback: (response) => { + showToast(response?.message, "success") + onClose() + } + }); @@ -82,34 +80,33 @@ const { mutate: UpdateTask, isPending } = useManageTask({ [categories] ); -useEffect(() => { - if (!workItem) return; - console.log(workItem) - reset({ - activityID: String( - workItem?.workItem?.activityId || workItem?.activityMaster?.id - ), - workCategoryId: String( - workItem?.workItem?.workCategoryId || workItem?.workCategoryMaster?.id - ), - plannedWork: - workItem?.workItem?.plannedWork || workItem?.plannedWork || 0, - completedWork: - workItem?.workItem?.completedWork || workItem?.completedWork || 0, - comment: workItem?.workItem?.description || workItem?.description || "", - }); -}, [workItem?.id,selectedActivity]); + useEffect(() => { + if (!workItem) return; + console.log(workItem) + reset({ + activityID: String( + workItem?.workItem?.activityId || workItem?.activityMaster?.id + ), + workCategoryId: String( + workItem?.workItem?.workCategoryId || workItem?.workCategoryMaster?.id + ), + plannedWork: + workItem?.workItem?.plannedWork || workItem?.plannedWork || 0, + completedWork: + workItem?.workItem?.completedWork || workItem?.completedWork || 0, + comment: workItem?.workItem?.description || workItem?.description || "", + }); + }, [workItem?.id, selectedActivity]); useEffect(() => { const selected = activities?.find((a) => a.id === activityID); - setSelectedActivity( selected || null ); + setSelectedActivity(selected || null); }, [activityID, activities]); - const onSubmitForm = (data) => - { - const payload = { + const onSubmitForm = (data) => { + const payload = { ...data, id: workItem?.workItem?.id ?? workItem?.id, buildingID: building?.id, @@ -125,9 +122,9 @@ useEffect(() => { buildingId: building?.id, floorId: floor?.id, workAreaId: workArea?.id, - previousCompletedWork:completedTask + previousCompletedWork: completedTask }); - } + } return (
); diff --git a/src/components/Project/Infrastructure/TaskModel.jsx b/src/components/Project/Infrastructure/TaskModel.jsx index 9c65fa6f..efa2006f 100644 --- a/src/components/Project/Infrastructure/TaskModel.jsx +++ b/src/components/Project/Infrastructure/TaskModel.jsx @@ -3,10 +3,12 @@ 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, useProjectAssignedServices } from "../../../hooks/useProjects"; +import { useManageTask, useProjectAssignedOrganizations, useProjectAssignedServices } from "../../../hooks/useProjects"; import showToast from "../../../services/toastService"; import Label from "../../common/Label"; import { useSelectedProject } from "../../../slices/apiDataManager"; @@ -15,6 +17,8 @@ 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"), + serviceId: z.string().min(1, "Service 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 +31,8 @@ const defaultModel = { buildingID: "", floorId: "", workAreaId: "", + serviceId: "", + activityGroupId: "", activityID: "", workCategoryId: "", plannedWork: 0, @@ -35,18 +41,42 @@ const defaultModel = { }; const TaskModel = ({ project, onSubmit, onClose }) => { - const { activities, loading: activityLoading } = useActivitiesMaster(); + // const { activities, loading: activityLoading } = useActivitiesMaster(); const { categories, categoryLoading } = useWorkCategoriesMaster(); const projectId = useSelectedProject(); 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 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, @@ -188,15 +218,18 @@ const TaskModel = ({ project, onSubmit, onClose }) => { {/* Services Selection */} {selectedWorkArea && ({errors.buildingID.message}
- )}{errors.activityID.message}
- )} + {errors.activityGroupId &&{errors.activityGroupId.message}
}{errors.activityID.message}
} +