diff --git a/src/components/master/CreateExpense.jsx b/src/components/master/CreateExpense.jsx deleted file mode 100644 index e941a922..00000000 --- a/src/components/master/CreateExpense.jsx +++ /dev/null @@ -1,72 +0,0 @@ - -import React from 'react' -import { useForm } from 'react-hook-form'; -import { z } from 'zod'; -import { zodResolver } from '@hookform/resolvers/zod'; -import { useCreateExpenseType } from '../../hooks/masterHook/useMaster'; - - -const ExpnseSchema = z.object({ - name: z.string().min(1, { message: "Name is required" }), - noOfPersonsRequired: z.boolean().default(false), - description: z.string().min(1, { message: "Description is required" }), -}); - - -const CreateExpense = ({onClose}) => { - const {register,handleSubmit,formState : {errors}} = useForm({ - resolver:zodResolver(ExpnseSchema), - defaultValues:{name:"",noOfPersonsRequired:false,description:""} - }) - const {mutate:CreateExpenseType,isPending} = useCreateExpenseType(()=>onClose?.()) - - const onSubmit = (payload) => { - CreateExpenseType(payload) - }; - - return ( -
- ) -} - -export default CreateExpense \ No newline at end of file diff --git a/src/components/master/ManageExpenseType.jsx b/src/components/master/ManageExpenseType.jsx new file mode 100644 index 00000000..8f280af5 --- /dev/null +++ b/src/components/master/ManageExpenseType.jsx @@ -0,0 +1,113 @@ +import React, { useEffect } from "react"; +import { useForm } from "react-hook-form"; +import { z } from "zod"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { + useCreateExpenseType, + useUpdateExpenseType, +} from "../../hooks/masterHook/useMaster"; + +const ExpnseSchema = z.object({ + name: z.string().min(1, { message: "Name is required" }), + noOfPersonsRequired: z.boolean().default(false), + description: z.string().min(1, { message: "Description is required" }), +}); + +const ManageExpenseType = ({ data = null, onClose }) => { + const { + register, + handleSubmit, + reset, + formState: { errors }, + } = useForm({ + resolver: zodResolver(ExpnseSchema), + defaultValues: { name: "", noOfPersonsRequired: false, description: "" }, + }); + const { mutate: UpdateExpenseType, isPending:isPendingUpdate } = useUpdateExpenseType( + () => onClose?.() + ); + const { mutate: CreateExpenseType, isPending } = useCreateExpenseType(() => + onClose?.() + ); + + const onSubmit = (payload) => { + if (data) { + UpdateExpenseType({ + id: data.id, + payload: { ...payload, id: data.id }, + }); + } else { + CreateExpenseType(payload); + } + }; + + useEffect(() => { + if (data) { + reset({ + name: data.name ?? "", + noOfPersonsRequired: data.noOfPersonsRequired ?? false, + description: data.description ?? "", + }); + } + }, [data]); + return ( + + ); +}; + +export default ManageExpenseType; diff --git a/src/components/master/MasterModal.jsx b/src/components/master/MasterModal.jsx index 4ea449c7..774f9046 100644 --- a/src/components/master/MasterModal.jsx +++ b/src/components/master/MasterModal.jsx @@ -17,7 +17,7 @@ import CreateContactTag from "./CreateContactTag"; import EditContactCategory from "./EditContactCategory"; import EditContactTag from "./EditContactTag"; import { useDeleteMasterItem } from "../../hooks/masterHook/useMaster"; -import CreateExpense from "./createExpense"; +import ManageExpenseType from "./ManageExpenseType"; const MasterModal = ({ modaldata, closeModal }) => { @@ -89,7 +89,8 @@ const MasterModal = ({ modaldata, closeModal }) => { "Edit-Contact Category":