change payment method

This commit is contained in:
hamid zarghami
2025-12-07 09:55:16 +03:30
parent 44186d0ceb
commit 456f1a234f
3 changed files with 101 additions and 48 deletions
+29 -3
View File
@@ -46,14 +46,36 @@ const CreatePaymentMethod: FC = () => {
validationSchema: Yup.object().shape({ validationSchema: Yup.object().shape({
title: Yup.string().required('عنوان الزامی است'), title: Yup.string().required('عنوان الزامی است'),
method: Yup.string().required('روش پرداخت الزامی است'), method: Yup.string().required('روش پرداخت الزامی است'),
gateway: Yup.string().required('درگاه پرداخت الزامی است'), gateway: Yup.string().when('method', {
is: PaymentMethodEnum.Online,
then: (schema) => schema.required('درگاه پرداخت الزامی است'),
otherwise: (schema) => schema.notRequired(),
}),
description: Yup.string().required('توضیحات الزامی است'), description: Yup.string().required('توضیحات الزامی است'),
enabled: Yup.boolean(), enabled: Yup.boolean(),
order: Yup.number().required('ترتیب الزامی است').min(0, 'ترتیب باید مثبت باشد'), order: Yup.number().required('ترتیب الزامی است').min(0, 'ترتیب باید مثبت باشد'),
merchantId: Yup.string().required('شناسه مرچنت الزامی است'), merchantId: Yup.string().when('method', {
is: PaymentMethodEnum.Online,
then: (schema) => schema.required('شناسه مرچنت الزامی است'),
otherwise: (schema) => schema.notRequired(),
}),
}), }),
onSubmit: (values) => { onSubmit: (values) => {
createPaymentMethod(values, { const submitValues: CreateRestaurantPaymentMethodType = {
title: values.title,
method: values.method,
description: values.description,
enabled: values.enabled,
order: values.order,
...(values.method === PaymentMethodEnum.Online
? {
gateway: values.gateway,
merchantId: values.merchantId,
}
: {}),
}
createPaymentMethod(submitValues, {
onSuccess: () => { onSuccess: () => {
toast.success('روش پرداخت با موفقیت ایجاد شد') toast.success('روش پرداخت با موفقیت ایجاد شد')
navigate(Pages.payment_methods.list) navigate(Pages.payment_methods.list)
@@ -107,6 +129,8 @@ const CreatePaymentMethod: FC = () => {
error_text={formik.touched.title && formik.errors.title ? formik.errors.title : ''} error_text={formik.touched.title && formik.errors.title ? formik.errors.title : ''}
/> />
</div> </div>
{formik.values.method === PaymentMethodEnum.Online && (
<>
<div className='mt-6'> <div className='mt-6'>
<Select <Select
label='درگاه پرداخت' label='درگاه پرداخت'
@@ -127,6 +151,8 @@ const CreatePaymentMethod: FC = () => {
error_text={formik.touched.merchantId && formik.errors.merchantId ? formik.errors.merchantId : ''} error_text={formik.touched.merchantId && formik.errors.merchantId ? formik.errors.merchantId : ''}
/> />
</div> </div>
</>
)}
<div className='mt-6'> <div className='mt-6'>
<Textarea <Textarea
label='توضیحات' label='توضیحات'
+30 -3
View File
@@ -65,16 +65,39 @@ const UpdatePaymentMethod: FC = () => {
validationSchema: Yup.object().shape({ validationSchema: Yup.object().shape({
title: Yup.string().required('عنوان الزامی است'), title: Yup.string().required('عنوان الزامی است'),
method: Yup.string().required('روش پرداخت الزامی است'), method: Yup.string().required('روش پرداخت الزامی است'),
gateway: Yup.string().required('درگاه پرداخت الزامی است'), gateway: Yup.string().when('method', {
is: PaymentMethodEnum.Online,
then: (schema) => schema.required('درگاه پرداخت الزامی است'),
otherwise: (schema) => schema.notRequired(),
}),
description: Yup.string().required('توضیحات الزامی است'), description: Yup.string().required('توضیحات الزامی است'),
enabled: Yup.boolean(), enabled: Yup.boolean(),
order: Yup.number().required('ترتیب الزامی است').min(0, 'ترتیب باید مثبت باشد'), order: Yup.number().required('ترتیب الزامی است').min(0, 'ترتیب باید مثبت باشد'),
merchantId: Yup.string().required('شناسه مرچنت الزامی است'), merchantId: Yup.string().when('method', {
is: PaymentMethodEnum.Online,
then: (schema) => schema.required('شناسه مرچنت الزامی است'),
otherwise: (schema) => schema.notRequired(),
}),
}), }),
onSubmit: (values) => { onSubmit: (values) => {
if (!id) return if (!id) return
const submitValues: CreateRestaurantPaymentMethodType = {
title: values.title,
method: values.method,
description: values.description,
enabled: values.enabled,
order: values.order,
...(values.method === PaymentMethodEnum.Online
? {
gateway: values.gateway,
merchantId: values.merchantId,
}
: {}),
}
updateRestaurantPaymentMethod( updateRestaurantPaymentMethod(
{ id, params: values }, { id, params: submitValues },
{ {
onSuccess: () => { onSuccess: () => {
toast.success('روش پرداخت با موفقیت ویرایش شد') toast.success('روش پرداخت با موفقیت ویرایش شد')
@@ -146,6 +169,8 @@ const UpdatePaymentMethod: FC = () => {
error_text={formik.touched.title && formik.errors.title ? formik.errors.title : ''} error_text={formik.touched.title && formik.errors.title ? formik.errors.title : ''}
/> />
</div> </div>
{formik.values.method === PaymentMethodEnum.Online && (
<>
<div className='mt-6'> <div className='mt-6'>
<Select <Select
label='درگاه پرداخت' label='درگاه پرداخت'
@@ -166,6 +191,8 @@ const UpdatePaymentMethod: FC = () => {
error_text={formik.touched.merchantId && formik.errors.merchantId ? formik.errors.merchantId : ''} error_text={formik.touched.merchantId && formik.errors.merchantId ? formik.errors.merchantId : ''}
/> />
</div> </div>
</>
)}
<div className='mt-6'> <div className='mt-6'>
<Textarea <Textarea
label='توضیحات' label='توضیحات'
+2 -2
View File
@@ -77,11 +77,11 @@ export type RestaurantPaymentMethodResponse = IResponse<
export type CreateRestaurantPaymentMethodType = { export type CreateRestaurantPaymentMethodType = {
title: string; title: string;
method: string; method: string;
gateway: string; gateway?: string;
description: string; description: string;
enabled: boolean; enabled: boolean;
order: number; order: number;
merchantId: string; merchantId?: string;
}; };
export type GetRestaurantPaymentMethodsParams = { export type GetRestaurantPaymentMethodsParams = {