withdraw request accept

This commit is contained in:
hamid zarghami
2026-04-19 10:42:57 +03:30
parent 44a70b2954
commit 51da9b2706
5 changed files with 93 additions and 9 deletions
+7 -5
View File
@@ -6,10 +6,10 @@ import Td from '../../components/Td'
import { WithDrawItemType } from './types/Types'
import { NumberFormat } from '../../config/func'
import moment from 'moment-jalaali'
import Button from '../../components/Button'
import Pagination from '../../components/Pagination'
import DefaulModal from '../../components/DefaulModal'
import Input from '../../components/Input'
import Payment from './components/Payment'
const Withdraw: FC = () => {
@@ -49,10 +49,12 @@ const Withdraw: FC = () => {
<Td text={item?.user?.firstName + ' ' + item.user?.lastName} />
<Td text={item?.paidAt ? moment(item.paidAt).format('jYYYY-jMM-jDD') : '-'} />
<Td text=''>
<Button
className='w-fit px-4'
label='پرداخت'
/>
{
!item.paidAt ?
<Payment id={item.id} refetch={getWithdraw.refetch} />
:
<span className='text-green-400 font-bold'>پرداخت شده</span>
}
</Td>
</tr>
)
+66 -3
View File
@@ -1,8 +1,71 @@
import { type FC } from 'react'
import { useState, type FC } from 'react'
import Button from '../../../components/Button'
import DefaulModal from '../../../components/DefaulModal'
import { usePayment } from '../hooks/useResellerData'
import Input from '../../../components/Input'
import { toast } from 'react-toastify'
import { ErrorType } from '../../../helpers/types'
type Props = {
id: string,
refetch: () => void,
}
const Payment: FC<Props> = ({ id, refetch }) => {
const payment = usePayment()
const [showModal, setShowModal] = useState<boolean>(false)
const [transactionId, setTransactionId] = useState<string>('')
const handleSubmit = () => {
if (transactionId.length > 0) {
payment.mutate({ id: id, transactionId: transactionId }, {
onSuccess: () => {
toast('با موفقت ثبت شد')
setTransactionId('')
refetch()
},
onError: (error: ErrorType) => {
toast.error(error.response?.data?.error.message[0])
}
})
} else {
toast.error('شماره تراکنش رو پر کنید')
}
}
const Payment: FC = () => {
return (
<div>Payment</div>
<div>
<Button
className='w-fit px-4'
label='پرداخت'
onClick={() => setShowModal(true)}
/>
<DefaulModal
open={showModal}
close={() => setShowModal(false)}
isHeader
title_header='پرداخت'
>
<div className='mt-4'>
<Input
value={transactionId}
onChange={(e) => setTransactionId(e.target.value)}
label='شماره تراکنش'
/>
</div>
<div className='mt-5'>
<Button
label='ثبت'
onClick={handleSubmit}
isLoading={payment.isPending}
/>
</div>
</DefaulModal>
</div>
)
}
@@ -20,3 +20,9 @@ export const useGetWithdraws = (page: number) => {
queryFn: () => api.getWithDraws(page),
});
};
export const usePayment = () => {
return useMutation({
mutationFn: api.payment,
});
};
@@ -1,5 +1,5 @@
import axios from "../../../config/axios";
import { CreateResellerType } from "../types/Types";
import { CreateResellerType, PaymentType } from "../types/Types";
export const getResellers = async () => {
const { data } = await axios.get(`/reseller`);
@@ -17,3 +17,11 @@ export const getWithDraws = async (page: number) => {
);
return data;
};
export const payment = async (params: PaymentType) => {
const { data } = await axios.patch(
`/reseller/withdraw-request/${params.id}`,
params,
);
return data;
};
+5
View File
@@ -18,3 +18,8 @@ export type WithDrawItemType = {
requestedAmount: string;
paidAt: string;
};
export type PaymentType = {
transactionId: string;
id: string;
};