diff --git a/public/locales/fa/app.json b/public/locales/fa/app.json index c7b9d16..ef91fef 100644 --- a/public/locales/fa/app.json +++ b/public/locales/fa/app.json @@ -116,7 +116,8 @@ "confirm": "تایید", "context": "آیا از تایید این آیتم اطمینان دارید", "button-confirm": "تایید", - "button-cancel": "بستن" + "button-cancel": "بستن", + "amount_error": "وارد کردن مقدار پیشنهادی الزامیست" }, "RejectDialog": { "reject": "عدم تایید", diff --git a/src/components/dashboard/machinary-office/Form/ConfirmForm.jsx b/src/components/dashboard/machinary-office/Form/ConfirmForm.jsx index 3e64087..804036a 100644 --- a/src/components/dashboard/machinary-office/Form/ConfirmForm.jsx +++ b/src/components/dashboard/machinary-office/Form/ConfirmForm.jsx @@ -10,39 +10,78 @@ import { } from "@mui/material"; import { useTranslations } from "next-intl"; import { useState } from "react"; +import { useFormik } from "formik"; +import * as Yup from "yup"; -const ConfirmForm = ({ - open, - handleClose, - handleDelete, - rowId, - confirmData, -}) => { +const ConfirmForm = ({ open, handleClose, rowId, confirmData }) => { const t = useTranslations(); const [proposedAmount, setProposedAmount] = useState(""); - const handleConfirm = () => { - const formData = new FormData(); - formData.append("proposed_amount", proposedAmount); - handleDelete(); - confirmData(CONFIRM_MACHINARY_OFFICE, rowId, formData); + const [description, setDescription] = useState(""); + + //formik + const validationSchema = Yup.object().shape({ + proposed_amount: Yup.string().required(t("ConfirmDialog.amount_error")), + }); + const formik = useFormik({ + initialValues: { + proposed_amount: "", + description: "", + }, + validationSchema, + onSubmit: () => { + const formData = new FormData(); + formData.append("proposed_amount", proposedAmount); + formData.append("expert_description", description); + handleClose(); + confirmData(CONFIRM_MACHINARY_OFFICE, rowId, formData); + }, + }); + + const handleDescriptionChange = (event) => { + setDescription(event.target.value); }; + const handleAmountChange = (event) => { + setProposedAmount(event.target.value); + formik.handleChange(event); + }; + return ( {t("ConfirmDialog.confirm")} {t("ConfirmDialog.context")} + setProposedAmount(e.target.value)} - sx={{ mt: 2 }} + onChange={handleAmountChange} + onBlur={formik.handleBlur("proposed_amount")} + error={ + formik.touched.proposed_amount && + Boolean(formik.errors.proposed_amount) + } + helperText={ + formik.touched.proposed_amount && formik.errors.proposed_amount + } + sx={{ mt: 1 }} fullWidth /> - ); }; + export default RejectForm; diff --git a/src/components/dashboard/machinary-office/TableRowActions.jsx b/src/components/dashboard/machinary-office/TableRowActions.jsx index f5ec46b..e9e815e 100644 --- a/src/components/dashboard/machinary-office/TableRowActions.jsx +++ b/src/components/dashboard/machinary-office/TableRowActions.jsx @@ -14,34 +14,39 @@ const TableRowActions = ({ row }) => { handleOpenRejectDialog, handleCloseConfirmDialog, handleCloseRejectDialog, - handleConfirmDialog, - handleRejectDialog, rowId, confirmData, rejectData, } = useContext(DataTableContext); return ( - handleOpenConfirmDialog(row)}> + { + handleOpenConfirmDialog(row); + }} + > - + {openConfirmDialog && ( + + )} handleOpenRejectDialog(row)}> - + {openRejectDialog && ( + + )} ); }; diff --git a/src/core/data/apiRoutes.js b/src/core/data/apiRoutes.js index f16d573..79046bc 100644 --- a/src/core/data/apiRoutes.js +++ b/src/core/data/apiRoutes.js @@ -31,5 +31,5 @@ export const CONFIRM_MACHINARY_OFFICE = BASE_URL + "/dashboard/machinery_expert/confirm"; export const REJECT_MACHINARY_OFFICE = - BASE_URL + "dashboard/machinery_expert/reject"; + BASE_URL + "/dashboard/machinery_expert/reject"; //passenger office diff --git a/src/lib/app/hooks/useDatatable.jsx b/src/lib/app/hooks/useDatatable.jsx index e7730bc..9823aca 100644 --- a/src/lib/app/hooks/useDatatable.jsx +++ b/src/lib/app/hooks/useDatatable.jsx @@ -44,9 +44,9 @@ const useDataTable = () => { const { token } = useUser(); const confirmData = useCallback(async (url, rowID, values) => { - dispatch({ type: "CONFIRM_DATA", url: url, rowID: rowID }); + dispatch({ type: "CONFIRM_DATA", url: url, rowID: rowID, values: values }); axios - .post(`${url}/${rowID}`, null, { + .post(`${url}/${rowID}`, values, { headers: { authorization: `Bearer ${token}` }, }) .then(() => { @@ -60,13 +60,14 @@ const useDataTable = () => { const rejectData = useCallback(async (url, rowID, values) => { dispatch({ type: "REJECT_DATA", url: url, rowID: rowID, values: values }); axios - .post(`${url}/${rowID}`,values, { + .post(`${url}/${rowID}`, values, { headers: { authorization: `Bearer ${token}` }, }) .then(() => { setReloadDataTable(true); }) .catch((error) => { + console.log(error); Notifications(directionApp, error.response, t); }); }, []);