From 24a5461d2a5979c1e4af86bbc6fcbce59a3be68c Mon Sep 17 00:00:00 2001 From: hamid zarghami Date: Mon, 24 Feb 2025 14:42:37 +0330 Subject: [PATCH] invoice otp --- .../receipts/components/ApproveInvoice.tsx | 91 ++++++++++++++++--- src/pages/receipts/hooks/useReceiptData.ts | 10 +- src/pages/receipts/service/ReceiptService.ts | 15 ++- 3 files changed, 99 insertions(+), 17 deletions(-) diff --git a/src/pages/receipts/components/ApproveInvoice.tsx b/src/pages/receipts/components/ApproveInvoice.tsx index 7e245a0..bbff422 100644 --- a/src/pages/receipts/components/ApproveInvoice.tsx +++ b/src/pages/receipts/components/ApproveInvoice.tsx @@ -2,11 +2,14 @@ import { Fragment, FC, useState } from 'react' import Button from '../../../components/Button' import { TickCircle } from 'iconsax-react' import { useTranslation } from 'react-i18next' -import ModalConfrim from '../../../components/ModalConfrim' -import { useApproveInvoice } from '../hooks/useReceiptData' +import { useApproveInvoice, useRequestApprove } from '../hooks/useReceiptData' import { ErrorType } from '../../../helpers/types' import { toast } from 'react-toastify' import { clx } from '../../../helpers/utils' +import { useGetProfile } from '../../profile/hooks/useProfileData' +import { RequestApproveInvoiceType } from '../types/ReceiptTypes' +import DefaulModal from '../../../components/DefaulModal' +import OTPInput from 'react-otp-input' type Props = { id: string, @@ -17,11 +20,14 @@ type Props = { const ApproveInvoice: FC = ({ id, refetch, status }) => { const approveInvoce = useApproveInvoice() + const requestApprove = useRequestApprove() + const getProfile = useGetProfile() const [showModal, setShowModal] = useState(false) const { t } = useTranslation('global') + const [code, setCode] = useState('') const handleConfrim = () => { - approveInvoce.mutate(id, { + approveInvoce.mutate({ code: code, id: id, phone: getProfile.data?.data?.user?.phone }, { onSuccess: () => { toast.success(t('success')) refetch() @@ -33,11 +39,27 @@ const ApproveInvoice: FC = ({ id, refetch, status }) => { }) } - if (status === 'PENDING' || status === 'APPROVED') + const handleShowModal = () => { + const params: RequestApproveInvoiceType = { + id: id, + phone: getProfile.data?.data?.user?.phone + } + requestApprove.mutate(params, { + onSuccess: () => { + setShowModal(true) + }, + onError: (error: ErrorType) => { + toast.error(error.response?.data?.error.message[0]) + } + }) + } + + if (status === 'PENDING' || status === 'APPROVED' && getProfile.isSuccess) return ( - setShowModal(false)} - onConfrim={handleConfrim} - label={t('receip.sure_confrim_pay')} - isLoading={approveInvoce.isPending} - /> + isHeader + title_header={t('profile.confrim_email')} + > +
+
+ کد تایید به شماره {getProfile.data?.data?.user?.phone} ارسال شده است.برای تایید کد مربوطه را وارد کنید. +
+ +
کد تایید
+
+ + + } + /> +
+ +
+
+ +
+
+
+ +
) else return null diff --git a/src/pages/receipts/hooks/useReceiptData.ts b/src/pages/receipts/hooks/useReceiptData.ts index 8da5d24..090ee19 100644 --- a/src/pages/receipts/hooks/useReceiptData.ts +++ b/src/pages/receipts/hooks/useReceiptData.ts @@ -1,5 +1,9 @@ import { useMutation, useQuery } from "@tanstack/react-query"; import * as api from "../service/ReceiptService"; +import { + ApproveInvoiceType, + RequestApproveInvoiceType, +} from "../types/ReceiptTypes"; export const useGetInvoices = (status: string) => { return useQuery({ @@ -18,7 +22,8 @@ export const useGetInvoiceDetail = (id: string) => { export const useApproveInvoice = () => { return useMutation({ - mutationFn: (variables: string) => api.approveInvoice(variables), + mutationFn: (variables: ApproveInvoiceType) => + api.approveInvoice(variables), }); }; @@ -30,6 +35,7 @@ export const usePayInvoice = () => { export const useRequestApprove = () => { return useMutation({ - mutationFn: (variables: string) => api.requestApprove(variables), + mutationFn: (variables: RequestApproveInvoiceType) => + api.requestApprove(variables), }); }; diff --git a/src/pages/receipts/service/ReceiptService.ts b/src/pages/receipts/service/ReceiptService.ts index ee93763..5da2e25 100644 --- a/src/pages/receipts/service/ReceiptService.ts +++ b/src/pages/receipts/service/ReceiptService.ts @@ -1,4 +1,8 @@ import axios from "../../../config/axios"; +import { + ApproveInvoiceType, + RequestApproveInvoiceType, +} from "../types/ReceiptTypes"; export const getInvoice = async (status: string) => { const { data } = await axios.get(`/invoices/user?status=${status}`); @@ -10,13 +14,16 @@ export const getInvoiceDetail = async (id: string) => { return data; }; -export const requestApprove = async (id: string) => { - const { data } = await axios.patch(`/invoices/${id}/approve/request`); +export const requestApprove = async (params: RequestApproveInvoiceType) => { + const { data } = await axios.post( + `/invoices/${params.id}/approve/request`, + params + ); return data; }; -export const approveInvoice = async (id: string) => { - const { data } = await axios.patch(`/invoices/${id}/approve`); +export const approveInvoice = async (params: ApproveInvoiceType) => { + const { data } = await axios.patch(`/invoices/${params.id}/approve`, params); return data; };