From 8a3a0dc483de575faf0cd61ed4472a6055e339e8 Mon Sep 17 00:00:00 2001 From: pramod mahajan Date: Sat, 26 Jul 2025 00:27:14 +0530 Subject: [PATCH] add create functionality in ManagePaymentMode --- src/components/master/ManagePaymentMode.jsx | 80 +++++++++++++++++++++ src/components/master/MasterModal.jsx | 4 +- src/hooks/masterHook/useMaster.js | 24 +++++++ src/repositories/MastersRepository.jsx | 1 + 4 files changed, 108 insertions(+), 1 deletion(-) create mode 100644 src/components/master/ManagePaymentMode.jsx diff --git a/src/components/master/ManagePaymentMode.jsx b/src/components/master/ManagePaymentMode.jsx new file mode 100644 index 00000000..6cfcdc42 --- /dev/null +++ b/src/components/master/ManagePaymentMode.jsx @@ -0,0 +1,80 @@ +import React, { useEffect } from "react"; +import { useForm } from "react-hook-form"; +import { z } from "zod"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { useCreatePaymentMode } from "../../hooks/masterHook/useMaster"; + +const ExpnseSchema = z.object({ + name: z.string().min(1, { message: "Name is required" }), + description: z.string().min(1, { message: "Description is required" }), +}); + +const ManagePaymentMode = ({ data = null, onClose }) => { + const { + register, + handleSubmit, + reset, + formState: { errors }, + } = useForm({ + resolver: zodResolver(ExpnseSchema), + defaultValues: { name: "", noOfPersonsRequired: false, description: "" }, + }); + + const { mutate: CreatePaymentMode, isPending } = useCreatePaymentMode(() => + onClose?.() + ); + + const onSubmit = (payload) => { + CreatePaymentMode(payload); + }; + + + return ( +
+
+ + + {errors.name &&

{errors.name.message}

} +
+
+ + + + {errors.description && ( +

{errors.description.message}

+ )} +
+ +
+ + +
+
+ ); +}; + +export default ManagePaymentMode; diff --git a/src/components/master/MasterModal.jsx b/src/components/master/MasterModal.jsx index 774f9046..1a990269 100644 --- a/src/components/master/MasterModal.jsx +++ b/src/components/master/MasterModal.jsx @@ -18,6 +18,7 @@ import EditContactCategory from "./EditContactCategory"; import EditContactTag from "./EditContactTag"; import { useDeleteMasterItem } from "../../hooks/masterHook/useMaster"; import ManageExpenseType from "./ManageExpenseType"; +import ManagePaymentMode from "./ManagePaymentMode"; const MasterModal = ({ modaldata, closeModal }) => { @@ -90,7 +91,8 @@ const MasterModal = ({ modaldata, closeModal }) => { "Contact Tag": , "Edit-Contact Tag": , "Expense Type":, - "Edit-Expense Type": + "Edit-Expense Type":, + "Payment Mode": }; return modalComponents[modalType] || null; diff --git a/src/hooks/masterHook/useMaster.js b/src/hooks/masterHook/useMaster.js index 3cd9f3cc..8d238adb 100644 --- a/src/hooks/masterHook/useMaster.js +++ b/src/hooks/masterHook/useMaster.js @@ -582,6 +582,30 @@ export const useUpdateExpenseType = (onSuccessCallback) => }); } +// -----------------Payment Mode ------------- + +export const useCreatePaymentMode = (onSuccessCallback)=>{ + const queryClient = useQueryClient(); + + return useMutation( { + mutationFn: async ( payload ) => + { + const resp = await MasterRespository.createPaymentMode(payload); + return resp.data; + }, + onSuccess: ( data ) => + { + queryClient.invalidateQueries( {queryKey:[ "masterData", "Payment Mode" ]} ) + showToast( "Payment Mode added successfully", "success" ); + if(onSuccessCallback) onSuccessCallback(data) + }, + onError: ( error ) => + { + showToast(error.message || "Something went wrong", "error"); + } + }) +} + // -Delete Master -------- export const useDeleteMasterItem = () => { const queryClient = useQueryClient(); diff --git a/src/repositories/MastersRepository.jsx b/src/repositories/MastersRepository.jsx index 9e00b814..876a1c9a 100644 --- a/src/repositories/MastersRepository.jsx +++ b/src/repositories/MastersRepository.jsx @@ -65,6 +65,7 @@ export const MasterRespository = { getPaymentMode:()=>api.get('/api/Master/payment-modes'), + createPaymentMode:(data)=>api.post(`/api/Master/payment-mode`,data), getExpenseStatus:()=>api.get('/api/Master/expenses-status') -- 2.43.0