diff --git a/src/components/master/CreateActivity.jsx b/src/components/master/CreateActivity.jsx deleted file mode 100644 index 1db2bb79..00000000 --- a/src/components/master/CreateActivity.jsx +++ /dev/null @@ -1,235 +0,0 @@ -import React, { useState, useEffect, useCallback } from "react"; -import { useFieldArray, useForm } from "react-hook-form"; -import { z } from "zod"; -import { zodResolver } from "@hookform/resolvers/zod"; - -import { MasterRespository } from "../../repositories/MastersRepository"; -import { clearApiCacheKey } from "../../slices/apiCacheSlice"; -import { getCachedData, cacheData } from "../../slices/apiDataManager"; -import showToast from "../../services/toastService"; -import { useCreateActivity } 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: "Unit of Measurement is required" }), - checkList: z - .array( - z.object({ - description: z.string().min(1, { message: "descriptionlist item cannot be empty" }), - isMandatory: z.boolean().default(false), - id: z.any().default(null), - }) - ) - .optional(), -}); - -const CreateActivity = ({ activity = null, whichGroup = null, close }) => { - const maxDescriptionLength = 255; - const { mutate: createActivity, isPending: isLoading } = useCreateActivity(() => onClose?.()); - - const { - register, - handleSubmit, - control, - setValue, - clearErrors, - setError, - getValues, - reset, - formState: { errors }, - } = useForm({ - resolver: zodResolver(schema), - defaultValues: { - activityName: "", - unitOfMeasurement: "", - checkList: [], - }, - }); - - const { - fields: checkListItems, - append, - remove, - } = useFieldArray({ - control, - name: "checkList", - }); - - const addChecklistItem = useCallback(() => { - 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 }); - }, [checkListItems, getValues, append, setError, clearErrors]); - - const removeChecklistItem = useCallback((index) => { - remove(index); - }, [remove]); - - const handleChecklistChange = useCallback((index, value) => { - setValue(`checkList.${index}`, value); - }, [setValue]); - - const onSubmit = (formData) => { - createActivity(formData); - }; - - useEffect(()=>{ - if (activity) { - reset({ - activityName: activity.activityName || '', - unitOfMeasurement: activity.unitOfMeasurement || '', - checkList: activity.checkList?.map((check) => ({ - description: check.description || '', - isMandatory: check.isMandatory || false, - })) || [{ description: '', isMandatory: false }], - }); - } - },[activity,reset]) - const handleClose = useCallback(() => { - reset(); - onClose(); - }, [reset, onClose]); - - useEffect(() => { - const tooltipTriggerList = Array.from(document.querySelectorAll('[data-bs-toggle="tooltip"]')); - tooltipTriggerList.forEach((el) => new bootstrap.Tooltip(el)); - }, []); - - return ( -
- {/*
Create Activity
*/} -
-
- - - {errors.activityName && ( -

{errors.activityName.message}

- )} -
- -
- - - {errors.unitOfMeasurement && ( -

{errors.unitOfMeasurement.message}

- )} -
- -
-

{checkListItems.length > 0 ? "Check List" : "Add Check List"}

- {checkListItems.length > 0 && ( - - - - - - - - - - {checkListItems.map((item, index) => ( - - - - - - ))} - -
- Name - - Is Mandatory - Action
- - - handleChecklistChange(index, e.target.value) - } - /> - {errors.checkList?.[index]?.description && ( - - {errors.checkList[index]?.description?.message} - - )} - - - - -
- )} - -
- -
- - - -
-
-
- ); -}; - -export default CreateActivity; diff --git a/src/components/master/EditActivity.jsx b/src/components/master/EditActivity.jsx deleted file mode 100644 index 15e85255..00000000 --- a/src/components/master/EditActivity.jsx +++ /dev/null @@ -1,231 +0,0 @@ -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 = ({ activity = null, whichService = null, close }) => { - const { mutate: updateActivity, isPending: isLoading } = useUpdateActivity(() => onClose?.()); - - const { - register, - handleSubmit, - control, - setValue, - reset, - setError, - clearErrors, - getValues, - formState: { errors }, - } = useForm({ - resolver: zodResolver(schema), - defaultValues: { - id: activity?.id, - activityName: activity?.activityName, - unitOfMeasurement: activity?.unitOfMeasurement, - checkList: activity?.checkLists || [], - }, - }); - - const { fields: checkListItems, append, remove } = useFieldArray({ - control, - name: "checkList", - }); - - useEffect(() => { - if (activity) { - reset({ - id: activity.id, - activityName: activity.activityName, - unitOfMeasurement: activity.unitOfMeasurement, - checkList: activity.checkLists || [], - }); - } - }, [activity, 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: activity.id }; - updateActivity({ id: activity.id, payload }); - }; - - - useEffect(() => { - const tooltipTriggerList = Array.from(document.querySelectorAll('[data-bs-toggle="tooltip"]')); - tooltipTriggerList.forEach((el) => new bootstrap.Tooltip(el)); - }, []); - - return ( -
-
- {/* Activity Name */} -
- - - {errors.activityName && ( -
{errors.activityName.message}
- )} -
- - {/* Unit of Measurement */} -
- - - {errors.unitOfMeasurement && ( -
{errors.unitOfMeasurement.message}
- )} -
- - {/* Checklist */} -
-

{checkListItems.length > 0 ? "Check List" : "Add Check List"}

- {checkListItems.length > 0 && ( - - - - - - - - - - {checkListItems.map((item, index) => ( - - - - - - ))} - -
- Name - - Is Mandatory - Action
- - - handleChecklistChange(index, e.target.value) - } - /> - {errors.checkList?.[index]?.description && ( - - {errors.checkList[index]?.description?.message} - - )} - - - - -
- )} - - - -
- - {/* Submit / Cancel */} -
- - - -
-
-
- ); -}; - -export default UpdateActivity; \ No newline at end of file