import StyledForm from "@/core/components/StyledForm"; import UploadSystem from "@/core/components/UploadSystem"; import {GET_PROVINCE_LIST, UPDATE_LOAN_REQUEST_WELFARE, DETAILS_LOAN_REQUEST_WELFARE} from "@/core/data/apiRoutes"; import useDirection from "@/lib/app/hooks/useDirection"; import useUser from "@/lib/app/hooks/useUser"; import DataSaverOnIcon from "@mui/icons-material/DataSaverOn"; import {Box, Button, Chip, Divider, Stack, TextField} from "@mui/material"; import axios from "axios"; import {Field, Formik} from "formik"; import {useTranslations} from "next-intl"; import {useEffect, useMemo, useState} from "react"; import * as Yup from "yup"; import SelectBox from "@/core/components/SelectBox"; import useRequest from "@/lib/app/hooks/useRequest"; import {useRouter} from "next/router"; import useLoading from "@/lib/app/hooks/useLoading"; const EditFormComponent = () => { const t = useTranslations(); const {directionApp} = useDirection(); const {token} = useUser(); const requestServer = useRequest(); const router = useRouter(); const {setLoadingPage} = useLoading(); const [provinceList, setProvinceList] = useState(null); const [initialValues, setInitialValues] = useState(null); // get province list useEffect(() => { setLoadingPage(true) requestServer(GET_PROVINCE_LIST, "get", {auth: true, notification: false}) .then(function ({data}) { const formattedData = data.map((province, index) => ({ id: index, name: province.name, value: province.id, })); setProvinceList(formattedData); }).catch(() => { }); }, []); // get form data useEffect(() => { if (!provinceList) return; requestServer(DETAILS_LOAN_REQUEST_WELFARE + router.query.id, "get", {auth: true, notification: false}) .then(function ({data}) { const item = data.data; const formattedData = { name: item.name, phone_number: item.phone_number, province_id: item.province_id, national_id: item.national_id, shenasname_id: item.shenasname_id, sherkat_naft_doc: item.sherkat_naft_doc, estate_doc: item.estate_doc, agreement_doc: item.agreement_doc, national_card_image: item.national_card_image, shenasname_image: item.shenasname_image, payan_khedmat_image: item.payan_khedmat_image, } setInitialValues(formattedData); setLoadingPage(false) }) .catch(() => { }) }, [provinceList]); // validation and request action of form const validationSchema = Yup.object().shape({ name: Yup.string().required(t("LoanRequest.error_message_name")), phone_number: Yup.string().required( t("LoanRequest.error_message_phone_number") ), province_id: Yup.string().required(t("LoanRequest.error_message_province")), national_id: Yup.string().required(t("LoanRequest.error_message_national_code")), shenasname_id: Yup.string().required(t("LoanRequest.error_message_shenasname_id")), sherkat_naft_doc: Yup.mixed().required(t("LoanRequest.error_message_sherkat_naft_doc")), estate_doc: Yup.mixed().required(t("LoanRequest.error_message_estate_doc")), agreement_doc: Yup.mixed().required(t("LoanRequest.error_message_agreement_doc")), national_card_image: Yup.mixed().required(t("LoanRequest.error_message_national_card_image")), shenasname_image: Yup.mixed().required(t("LoanRequest.error_message_shenasname_image")), payan_khedmat_image: Yup.mixed().required(t("LoanRequest.error_message_payan_khedmat_image")), }); const handleSubmit = async (values, props) => { const formData = new FormData(); formData.append("name", values.name); formData.append("phone_number", values.phone_number); formData.append("province_id", values.province_id); formData.append("national_id", values.national_id); formData.append("shenasname_id", values.shenasname_id); if (values.sherkat_naft_doc != initialValues.sherkat_naft_doc) formData.append("sherkat_naft_doc", values.sherkat_naft_doc); if (values.estate_doc != initialValues.estate_doc) formData.append("estate_doc", values.estate_doc); if (values.agreement_doc != initialValues.agreement_doc) formData.append("agreement_doc", values.agreement_doc); if (values.shenasname_image != initialValues.shenasname_image) formData.append("shenasname_image", values.shenasname_image); if (values.national_card_image != initialValues.national_card_image) formData.append("national_card_image", values.national_card_image); if (values.payan_khedmat_image != initialValues.payan_khedmat_image) formData.append("payan_khedmat_image", values.payan_khedmat_image); requestServer(UPDATE_LOAN_REQUEST_WELFARE + router.query.id, "post", {auth: true, data: formData}) .then(function (response) { }) .catch(function (error) { }) .finally(function () { props.setSubmitting(false); }); }; if (!initialValues) return ""; return ( {(props) => ( )} ); }; export default EditFormComponent;