import React, { useEffect, useState } from "react"; import { useForm, useFieldArray } from "react-hook-form"; import { z } from "zod"; import { zodResolver } from "@hookform/resolvers/zod"; import { MasterRespository } from "../../repositories/MastersRepository"; import showToast from "../../services/toastService"; import { getCachedData, cacheData } from "../../slices/apiDataManager"; import { useUpdateActivity } from "../../hooks/masterHook/useMaster"; import Label from "../common/Label"; const schema = z.object({ activityName: z.string().min(1, { message: "Activity name is required" }), unitOfMeasurement: z.string().min(1, { message: "Measurement is required" }), checkList: z .array( z.object({ id: z.any().default(null), description: z.string().min(1, { message: "Checklist item cannot be empty" }), isMandatory: z.boolean().default(false), }) ) .optional(), }); const UpdateActivity = ({ activityData, onClose }) => { const { mutate: updateActivity, isPending: isLoading } = useUpdateActivity(() => onClose?.()); const { register, handleSubmit, control, setValue, reset, setError, clearErrors, getValues, formState: { errors }, } = useForm({ resolver: zodResolver(schema), defaultValues: { id: activityData?.id, activityName: activityData?.activityName, unitOfMeasurement: activityData?.unitOfMeasurement, checkList: activityData?.checkLists || [], }, }); const { fields: checkListItems, append, remove } = useFieldArray({ control, name: "checkList", }); useEffect(() => { if (activityData) { reset({ id: activityData.id, activityName: activityData.activityName, unitOfMeasurement: activityData.unitOfMeasurement, checkList: activityData.checkLists || [], }); } }, [activityData, reset]); const addChecklistItem = () => { const values = getValues("checkList"); const lastIndex = checkListItems.length - 1; if ( checkListItems.length > 0 && (!values?.[lastIndex] || values[lastIndex].description.trim() === "") ) { setError(`checkList.${lastIndex}.description`, { type: "manual", message: "Please fill this checklist item before adding another.", }); return; } clearErrors(`checkList.${lastIndex}.description`); append({ id: null, description: "", isMandatory: false }); }; const removeChecklistItem = (index) => { remove(index); }; const handleChecklistChange = (index, value) => { setValue(`checkList.${index}`, value); }; const onSubmit = (formData) => { const payload = { ...formData, id: activityData.id }; updateActivity({ id: activityData.id, payload }); }; // const onSubmit = async(data) => { // setIsLoading(true); // const Activity = {...data, id:activityData.id} // try // { // const response = await MasterRespository.updateActivity( activityData?.id, Activity ); // const updatedActivity = response.data; // const cachedData = getCachedData("Activity") // if (cachedData) { // const updatedActivities = cachedData.map((activity) => // activity.id === updatedActivity.id ? { ...activity, ...updatedActivity } : activity // ); // cacheData( "Activity", updatedActivities ); // onClose() // } // setIsLoading( false ) // showToast("Activity Successfully Updated", "success"); // } catch ( err ) // { // setIsLoading( false ) // showToast("error.message", "error"); // } // }; useEffect(() => { const tooltipTriggerList = Array.from(document.querySelectorAll('[data-bs-toggle="tooltip"]')); tooltipTriggerList.forEach((el) => new bootstrap.Tooltip(el)); }, []); return (
); }; export default UpdateActivity;