diff --git a/public/locales/fa/app.json b/public/locales/fa/app.json index 39c8173..8a1a6f1 100644 --- a/public/locales/fa/app.json +++ b/public/locales/fa/app.json @@ -505,15 +505,31 @@ "description": "توضیحات خود را وارد نمائید" }, "RejectDialog": { + "bank_management_reject": "رد درخواست", + "typography": "آیا میخواهید این درخواست را رد کنید ؟", "reject": "عدم تایید", "context": "آیا از عدم تایید این آیتم اطمینان دارید؟", "button-cancel": "بستن", "button-reject": "عدم تایید", + "button-bank_management_reject": "رد درخواست", "description": "توضیحات خود را وارد نمائید", "optional": " (اختیاری)", "description_error": "وارد کردن توضیحات الزامی است!", "choose_file": "انتخاب فایل" }, + "EditDialog": { + "edit_approved_amount": "ویرایش مبلغ تصویب شده", + "description_error": "وارد کردن توضیحات الزامی است!", + "optional": " (اختیاری)", + "approved_amount": "مبلغ تصویب شده", + "edit_approved_amount": "ویرایش مبلغ تصویب شده", + "button-cancel": "بستن", + "button-edit": "ویرایش", + "edit_approved_amount_required": "وارد کردن مبلغ تصویب شده الزامیست", + "unit": " (میلیون ریال)", + "button-revise": "ارسال", + "description": "توضیحات خود را وارد نمائید" + }, "UpdateDialog": { "update": "ویرایش", "resend": "ارسال مجدد به بانک", diff --git a/src/components/dashboard/bank-management/Form/Edit/EditContent.jsx b/src/components/dashboard/bank-management/Form/Edit/EditContent.jsx new file mode 100644 index 0000000..cee3fcc --- /dev/null +++ b/src/components/dashboard/bank-management/Form/Edit/EditContent.jsx @@ -0,0 +1,90 @@ +import useNotification from "@/lib/app/hooks/useNotification"; +import useRequest from "@/lib/app/hooks/useRequest"; +import {Button, DialogActions, DialogContent, Stack,} from "@mui/material" +import {useFormik} from "formik"; +import {useTranslations} from "next-intl"; +import {CONFIRM_TRANSPORTATION_ASSISTANCE} from "@/core/data/apiRoutes"; +import * as Yup from "yup"; +import PriceField from "@/core/components/PriceField"; + +const EditContent = ({rowId, row, mutate, setOpenEditDialog}) => { + const t = useTranslations(); + const requestServer = useRequest({auth: true, notification: false}); + const {update_notification} = useNotification(); + + const validationSchema = Yup.object().shape({ + approved_amount: Yup.string().required(`${t("EditDialog.edit_approved_amount_required")}`) + }) + + const formik = useFormik({ + initialValues: { + approved_amount: String(row.original.approved_amount / 1000000), + }, validationSchema, + onSubmit: (values, {setSubmitting}) => { + requestServer(`${CONFIRM_TRANSPORTATION_ASSISTANCE}/${rowId}`, 'post', { + notification: true + }).then(() => { + setOpenEditDialog(false) + mutate() + update_notification() + }).catch(() => { + }).finally(() => { + setSubmitting(false); + }); + }, + }); + const handleAmountChange = (event) => { + if (!isNaN(event.target.value)) { + formik.setFieldValue("approved_amount", event.target.value) + } else { + formik.setFieldValue("approved_amount", formik.values.approved_amount) + } + }; + return ( + <> + + + + + {t("EditDialog.edit_approved_amount")}{t("EditDialog.unit")}} + type="text" + inputProps={{ + inputMode: "number", + min: 0, + pattern: "[0-9]*", + }} + variant="outlined" + value={formik.values.approved_amount} + onChange={handleAmountChange} + onBlur={formik.handleBlur("approved_amount")} + error={ + formik.touched.approved_amount && + Boolean(formik.errors.approved_amount) + } + helperText={ + formik.touched.approved_amount && formik.errors.approved_amount + } + sx={{mt: 1}} + fullWidth + /> + + + + + + + + + ) + +} +export default EditContent \ No newline at end of file diff --git a/src/components/dashboard/bank-management/Form/Edit/index.jsx b/src/components/dashboard/bank-management/Form/Edit/index.jsx new file mode 100644 index 0000000..f443ef8 --- /dev/null +++ b/src/components/dashboard/bank-management/Form/Edit/index.jsx @@ -0,0 +1,39 @@ +import {Dialog, DialogTitle, IconButton, Tooltip} from "@mui/material"; +import {useTranslations} from "next-intl"; +import {useState} from "react"; +import EditIcon from '@mui/icons-material/Edit'; +import EditContent from "@/components/dashboard/bank-management/Form/Edit/EditContent"; + +const EditForm = ({rowId, row, mutate}) => { + const t = useTranslations(); + const [openEditDialog, setOpenEditDialog] = useState(false); + + return ( + <> + + { + setOpenEditDialog(true) + }} + > + + + + + {t("EditDialog.edit_approved_amount")} + + + + ) + +} +export default EditForm; \ No newline at end of file diff --git a/src/components/dashboard/bank-management/Form/Reject/RejectContent.jsx b/src/components/dashboard/bank-management/Form/Reject/RejectContent.jsx new file mode 100644 index 0000000..e69de29 diff --git a/src/components/dashboard/bank-management/Form/Reject/index.jsx b/src/components/dashboard/bank-management/Form/Reject/index.jsx new file mode 100644 index 0000000..0536cbe --- /dev/null +++ b/src/components/dashboard/bank-management/Form/Reject/index.jsx @@ -0,0 +1,68 @@ +import {useTranslations} from "next-intl"; +import {useState} from "react"; +import { + Button, + Dialog, + DialogActions, + DialogContent, + DialogTitle, + IconButton, + Tooltip, + Typography +} from "@mui/material"; +import ThumbDownIcon from '@mui/icons-material/ThumbDown'; +import useRequest from "@/lib/app/hooks/useRequest"; +import useNotification from "@/lib/app/hooks/useNotification"; +import {RESEND_BANK_STATEMENT} from "@/core/data/apiRoutes"; + +const RejectForm = ({rowId, mutate}) => { + const t = useTranslations(); + const [openRejectDialog, setOpenRejectDialog] = useState(false); + const [isSubmitting, setIsSubmitting] = useState(false) + const requestServer = useRequest({auth: true}) + const {update_notification} = useNotification() + const handleSubmit = () => { + setIsSubmitting(true) + requestServer(`${RESEND_BANK_STATEMENT}/${rowId}`, 'post').then((response) => { + setOpenRejectDialog(false) + mutate() + update_notification() + }).catch(() => { + }).finally(() => { + setIsSubmitting(false) + }); + } + + return ( + <> + + { + setOpenRejectDialog(true) + }} + > + + + + + {t("RejectDialog.bank_management_reject")} + + {t("RejectDialog.typography")} + + + + + + + + ); +}; +export default RejectForm; \ No newline at end of file diff --git a/src/components/dashboard/bank-management/TableRowActions.jsx b/src/components/dashboard/bank-management/TableRowActions.jsx index 2674c55..f2b7720 100644 --- a/src/components/dashboard/bank-management/TableRowActions.jsx +++ b/src/components/dashboard/bank-management/TableRowActions.jsx @@ -1,5 +1,7 @@ import {Box} from "@mui/material"; import UpdateForm from "@/components/dashboard/bank-management/Form/Update"; +import RejectForm from "@/components/dashboard/bank-management/Form/Reject"; +import EditForm from "@/components/dashboard/bank-management/Form/Edit"; const TableRow = ({row, mutate}) => { return ( @@ -10,6 +12,15 @@ const TableRow = ({row, mutate}) => { mutate={mutate} /> )} + + ); };