import Notifications from "@/core/components/notifications"; import StyledForm from "@/core/components/StyledForm"; import UploadSystem from "@/core/components/UploadSystem"; import { SEND_LOAN_REQUEST_WELFARE } from "@/core/data/apiRoutes"; import useDirection from "@/lib/app/hooks/useDirection"; import DataSaverOnIcon from "@mui/icons-material/DataSaverOn"; import { Box, Button, Stack, TextField } from "@mui/material"; import axios from "axios"; import { Field, Formik } from "formik"; import { useTranslations } from "next-intl"; import { useState } from "react"; import * as Yup from "yup"; const WelfareServicesForm = () => { const t = useTranslations(); const { directionApp } = useDirection(); // upload files const [selectedImageShenasname, setSelectedImageShenasname] = useState( "/images/upload-image.svg" ); const [fileTypeShenasname, setFileTypeShenasname] = useState(null); const [fileNameShenasname, setFileNameShenasname] = useState(null); const [selectedImageNationalCard, setSelectedImageNationalCard] = useState( "/images/upload-image.svg" ); const [fileTypeNationalCard, setFileTypeNationalCard] = useState(null); const [fileNameNationalCard, setFileNameNationalCard] = useState(null); const handleUploadChangeShenasname = (event, setFieldValue) => { const uploadedFile = event.target?.files?.[0]; if (uploadedFile) { const fileType = event.target?.files?.[0].type; const fileName = event.target?.files?.[0].name; setSelectedImageShenasname(URL.createObjectURL(uploadedFile)); setFileTypeShenasname(fileType); setFileNameShenasname(fileName); setFieldValue("shenasname_img", uploadedFile); } }; const handleUploadChangeNationalCard = (event, setFieldValue) => { const uploadedFile = event.target?.files?.[0]; const fileType = event.target.files[0].type; const fileName = event.target.files[0].name; if (uploadedFile) { setSelectedImageNationalCard(URL.createObjectURL(uploadedFile)); setFileTypeNationalCard(fileType); setFileNameNationalCard(fileName); setFieldValue("national_card_img", uploadedFile); } }; // end upload files // initial values, validation and request action of form const initialValues = { name: "", phone_number: "", vehicle_type: "", plate_number: "", province: "", national_code: "", shenasname_id: "", national_card_img: null, shenasname_img: null, }; const validationSchema = Yup.object().shape({ name: Yup.string().required(t("LoanRequest.error_message_required")), phone_number: Yup.string().required( t("LoanRequest.error_message_required") ), vehicle_type: Yup.string().required( t("LoanRequest.error_message_required") ), plate_number: Yup.string().required( t("LoanRequest.error_message_required") ), province: Yup.string().required(t("LoanRequest.error_message_required")), national_code: Yup.string().required( t("LoanRequest.error_message_required") ), shenasname_id: Yup.string().required( t("LoanRequest.error_message_required") ), }); const handleSubmit = async (values, props) => { Notifications(directionApp, t, undefined); console.log(values.national_card_img); console.log(values.shenasname_img); await axios .post(SEND_LOAN_REQUEST_WELFARE, { name: values.name, phone_number: values.phone_number, vehicle_type: values.vehicle_type, plate_number: values.plate_number, province_id: values.province, navgan_id: values.navgan_id, national_code: values.national_code, shenasname_id: values.shenasname_id, national_card_image: values.national_card_img, shenasname_image: values.shenasname_img, }) .then(function (response) { Notifications(directionApp, t, response); }) .catch(function (error) { Notifications(directionApp, t, error.response); props.setSubmitting(false); }); }; // end initial values, validation and request action of form return ( {(props) => ( handleUploadChangeShenasname(e, props.setFieldValue) } setselectedImage={setSelectedImageShenasname} setFieldValue={props.setFieldValue} fieldname="shenasname_img" fileType={fileTypeShenasname} fileName={fileNameShenasname} imageAlt={t("app_name")} imageSize={[300 /*width*/, 150 /*height*/]} label={t("LoanRequest.file_field_shenasname_image")} /> handleUploadChangeNationalCard(e, props.setFieldValue) } setselectedImage={setSelectedImageNationalCard} setFieldValue={props.setFieldValue} fieldname="national_card_img" fileType={fileTypeNationalCard} fileName={fileNameNationalCard} imageAlt={t("app_name")} imageSize={[300 /*width*/, 150 /*height*/]} label={t("LoanRequest.file_field_national_card_image")} /> )} ); }; export default WelfareServicesForm;