import React, { useEffect, useState } from "react"; import { useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import { string, z } from "zod"; import { useActivitiesMaster, useWorkCategoriesMaster, } from "../../hooks/masterHook/useMaster"; import showToast from "../../services/toastService"; import ProjectRepository from "../../repositories/ProjectRepository"; import { useTaskById } from "../../hooks/useTasks"; import { useManageTask } from "../../hooks/useProjects"; const subTaskSchema = z.object({ activityId: z.string().min(1, "Activity is required"), workCategoryId: z.string().min(1, "Category is required"), plannedWork: z.number().min(1, "Planned work is required"), completedWork: z.number().min(0, "Completed work cannot be negative"), comment: z.string().min(1, "Comment is required"), }); const SubTask = ({ activity, onClose }) => { const [selectedCategory, setSelectedCategory] = useState(null); const [categoryData, setCategoryData] = useState([]); const { activities, loading } = useActivitiesMaster(); const { categories, categoryLoading } = useWorkCategoriesMaster(); const { Task, loading: TaskLoading } = useTaskById(activity?.id); const { register, handleSubmit, formState: { errors }, reset, setValue, watch, } = useForm({ resolver: zodResolver(subTaskSchema), }); const selectedActivityId = watch("activityId"); const selectedActivity = activities?.find((a) => a.id === selectedActivityId); const { mutate: createSubTask, isPending } = useManageTask({ onSuccessCallback: () => { showToast("Sub Task Created Successfully", "success"); reset(); onClose(); }, }); useEffect(() => { setCategoryData(categories); }, [categories]); useEffect(() => { if (!TaskLoading && (Task?.workItem || activity)) { reset({ workCategoryId: Task?.workItem?.workCategoryId || "", activityId: Task?.workItem?.activityId || activity?.workItem?.activityId, plannedWork: Number( Task?.notApprovedTask || Task?.workItem?.plannedWork || 0 ), completedWork: 0, comment: "", }); } }, [TaskLoading, Task, activity, reset, loading]); const handleCategoryChange = (e) => { const value = e.target.value; const category = categoryData.find((b) => b.id === String(value)); setSelectedCategory(category); setValue("workCategoryId", value); }; const onSubmitForm = async (formData) => { let data = { workAreaID: Task.workItem.workAreaId, workCategoryId: formData.workCategoryId, activityID: formData.activityId, plannedWork: formData.plannedWork, completedWork: formData.completedWork, parentTaskId: activity?.id, comment: formData.comment, }; const payload = [data]; let buildingId = activity.workItem.workArea.floor.building.id; let floorId = activity.workItem.workArea.floor.id; let workAreaId = activity.workItem.workArea.id; createSubTask({ payload: payload, buildingId: buildingId, floorId: floorId, workAreaId: workAreaId, PreviousPlannedWork:0, previousCompletedWork:0 }); }; return (

Create Sub Task

{errors.workCategoryId && (
{errors.workCategoryId.message}
)}
{errors.activityId && (
{errors.activityId.message}
)}
{errors.plannedWork && (
{errors.plannedWork.message}
)}
{errors.completedWork && (
{errors.completedWork.message}
)}