diff --git a/public/locales/fa/app.json b/public/locales/fa/app.json
index 58fe2bb..67bbf2e 100644
--- a/public/locales/fa/app.json
+++ b/public/locales/fa/app.json
@@ -2,6 +2,7 @@
"app_name": "سامانه جامع تسهیلات",
"app_short_name": "سامانه تسهیلات",
"birthday": "تاریخ تولد",
+ "company_date": "تاریخ ثبت شرکت",
"birthday_error": "تاریخ تولد خود را وارد کنید!",
"dashboard": "داشبورد",
"text_field_city_id": "شهر",
@@ -156,14 +157,18 @@
"real_person": "شخص حقیقی",
"legal_person": "شخص حقوقی",
"national_code_number": "کد ملی می بایست شامل اعداد باشد",
+ "boss_national_code_number": "کد ملی مدیر عامل می بایست شامل اعداد باشد",
"national_number_number": "شناسه ملی شرکت می بایست شامل اعداد باشد",
"national_code_max": "کد ملی می بایست 10 رقم باشد",
+ "national_serial_number_max": "سریال پشت کارت ملی می بایست 10 رقم باشد",
+ "boss_national_code_max": "کد ملی مدیر عامل می بایست 10 رقم باشد",
"national_number_max": "شناسه ملی شرکت می بایست 11 رقم باشد",
"shenasname_serial_max": "سریال پشت کارت ملی می بایست شامل 10 بخش باشد",
"postal_code_max": "کد پستی می بایست 10 رقم باشد",
"tel_number_max": "شماره ثابت می بایست 11 رقم باشد",
"company_tel_number_max": "شماره ثابت شرکت می بایست 11 رقم باشد",
"national_code_positive": "کد ملی می بایست مثبت باشد",
+ "boss_national_code_positive": "کد ملی مدیر عامل می بایست مثبت باشد",
"national_number_positive": "شناسه ملی شرکت می بایست مثبت باشد",
"uploading_documents": "اسناد",
"error_message_person_type": "نوع شخص خود را وارد کنید!",
@@ -247,11 +252,13 @@
"text_field_loading_provinces_list": "درحال دریافت استان ها ...",
"text_field_error_fetching_provinces": "خطا در دریافت استان ها",
"text_field_enter_your_national_code": "کد ملی خود را وارد کنید",
+ "text_field_enter_your_boss_national_code": "کد ملی مدیر عامل را وارد کنید",
"text_field_enter_your_province_id": "استان خود را وارد کنید",
"text_field_enter_your_city_id": "شهر خود را وارد کنید",
"text_field_navgan_id": "کد هوشمند ناوگان",
"text_field_enter_your_navgan_id": "کد هوشمند ناوگان خود را وارد کنید",
"text_field_national_code": "کد ملی",
+ "text_field_boss_national_code": "کد ملی مدیر عامل",
"text_field_national_number": "شناسه ملی شرکت",
"text_field_enter_your_national_id": "کد ملی خود را وارد کنید",
"text_field_enter_your_national_number": "شناسه ملی شرکت خود را وارد کنید",
diff --git a/src/components/dashboard/navgan/add-request-loan/forms/AddForm.jsx b/src/components/dashboard/navgan/add-request-loan/forms/AddForm.jsx
index aa3f9bf..f83a954 100644
--- a/src/components/dashboard/navgan/add-request-loan/forms/AddForm.jsx
+++ b/src/components/dashboard/navgan/add-request-loan/forms/AddForm.jsx
@@ -1,217 +1,24 @@
-import SelectBox from "@/core/components/SelectBox";
-import DataSaverOnIcon from "@mui/icons-material/DataSaverOn";
import {
- Box,
Button,
- Checkbox, Collapse,
- Fade,
- FormControlLabel,
Grid,
Stack,
- TextField,
ToggleButton,
ToggleButtonGroup,
Typography
} from "@mui/material";
-import {useFormik} from "formik";
import {useTranslations} from "next-intl";
-import * as Yup from "yup";
-import {CenterLayout, useRequest, useUser} from "@witel/webapp-builder";
-import useCities from "@/lib/app/hooks/useCities";
-import PlateNumber from "@/core/components/PlateNumber";
-import MuiDatePicker from "@/core/components/MuiDatePicker";
-import UseEducations from "@/lib/app/hooks/useEducations";
-import useOccupations from "@/lib/app/hooks/useOccupations";
+import {CenterLayout} from "@witel/webapp-builder";
import {useState} from "react";
import DoneIcon from '@mui/icons-material/Done';
import {NextLinkComposed} from "@witel/webapp-builder/dist/utils/linkRouting";
import SvgDone from "@/core/components/svgs/SvgDone";
-import {SEND_LOAN_REQUEST_NAVGAN} from "@/core/data/apiRoutes";
-import {useRouter} from "next/router";
-import useLimitedProvince from "@/lib/app/hooks/useLimitedProvince";
import RealPersonForm from "@/components/dashboard/navgan/add-request-loan/forms/RealPersonForm";
import LegalPersonForm from "@/components/dashboard/navgan/add-request-loan/forms/LegalPersonForm";
const AddFormComponent = () => {
- const router = useRouter()
- const {getUser, changeUser} = useUser()
const t = useTranslations();
const [finishLoanRequest, setFinishLoanRequest] = useState(false)
- const [checked, setChecked] = useState(false);
- const requestServer = useRequest()
- const {provinceList, isLoadingProvinceList, errorProvinceList} = useLimitedProvince()
- const {cityTextField, cityList, setProvinceID, isLoadingCityList} = useCities()
- const {educationsList, isLoadingEducationsList, errorEducationsList} = UseEducations()
- const {occupationsList, isLoadingOccupationsList, errorOccupationsList} = useOccupations()
-
- const initialValues = {
- person_type: "real",
- telephone_number: "",
- company_tel_number: "",
- vehicle_type: "",
- province_id: "",
- father_name: "",
- boss_father_name: "",
- register_number: "",
- gender: "",
- first_name: "",
- boss_first_name: "",
- last_name: "",
- boss_last_name: "",
- city_id: "",
- navgan_id: "",
- national_code: "",
- national_number: "",
- company_name: "",
- national_serial_number: "",
- boss_national_serial_number: "",
- national_card_tracking_code: "",
- boss_national_card_tracking_code: "",
- national_serial_number_or_tracking_code: "national_serial_number",
- postal_code: "",
- postal_company_code: "",
- navgan_type: "",
- plate_part1: "",
- plate_part2: "الف",
- plate_part3: "",
- plate_part4: "",
- address: "",
- birthday: "",
- company_date: "",
- education_id: "",
- occupation_id: "",
- checkedBox: false,
- };
-
- const validationSchema = Yup.object().shape({
- person_type: Yup.string().required(t("LoanRequest.error_message_person_type")),
- telephone_number: Yup.mixed()
- .test("max", `${t("LoanRequest.tel_number_max")}`, (value) => {
- const stringValue = String(value);
- return stringValue.length === 11
- })
- .required(t("LoanRequest.error_message_tel_number")),
- company_tel_number: Yup.mixed()
- .test("max", `${t("LoanRequest.company_tel_number_max")}`, (value) => {
- const stringValue = String(value);
- return stringValue.length === 11
- })
- .required(t("LoanRequest.error_message_company_tel_number")),
- vehicle_type: Yup.string().required(t("LoanRequest.error_message_vehicle_type")),
- register_number: Yup.string().required(t("LoanRequest.error_message_register_number")),
- father_name: Yup.string().required(t("LoanRequest.error_message_father_name")),
- boss_father_name: Yup.string().required(t("LoanRequest.error_message_boss_father_name")),
- company_name: Yup.string().required(t("LoanRequest.error_message_company_name")),
- gender: Yup.string().required(t("LoanRequest.error_message_gender")),
- boss_gender: Yup.string().required(t("LoanRequest.error_message_boss_gender")),
- navgan_type: Yup.string().required(t("LoanRequest.error_message_navgan_type")),
- occupation_id: Yup.string().required(t("LoanRequest.error_message_occupation_id")),
- education_id: Yup.string().required(t("LoanRequest.error_message_education_id")),
- address: Yup.string().required(t("LoanRequest.error_message_address")),
- birthday: Yup.string().required(t("LoanRequest.error_message_date_of_birth")),
- company_date: Yup.string().required(t("LoanRequest.error_message_date_of_birth")),
- postal_code: Yup.mixed()
- .test("max", `${t("LoanRequest.postal_code_max")}`, (value) => value.toString().length === 10)
- .required(t("LoanRequest.error_message_postal_code")),
- company_postal_code: Yup.mixed()
- .test("max", `${t("LoanRequest.company_postal_code_max")}`, (value) => value.toString().length === 10)
- .required(t("LoanRequest.error_message_company_postal_code")),
- plate_part1: Yup.mixed().test("max", `${t("LoanRequest.error_message_plate_number")}`, (value) => value.toString().length === 2)
- .required(t("LoanRequest.error_message_plate_number")),
- plate_part2: Yup.mixed()
- .required(t("LoanRequest.error_message_plate_number")),
- plate_part3: Yup.mixed().test("max", `${t("LoanRequest.error_message_plate_number")}`, (value) => value.toString().length === 3)
- .required(t("LoanRequest.error_message_plate_number")),
- plate_part4: Yup.mixed().test("max", `${t("LoanRequest.error_message_plate_number")}`, (value) => value.toString().length === 2)
- .required(t("LoanRequest.error_message_plate_number")),
- navgan_id: Yup.mixed().required(t("LoanRequest.error_message_navgan_id")),
- province_id: Yup.string().required(t("LoanRequest.error_message_province_id")),
- city_id: Yup.string().required(t("LoanRequest.error_message_city_id")),
- first_name: Yup.string().required(t("LoanRequest.error_message_first_name")),
- boss_first_name: Yup.string().required(t("LoanRequest.error_message_boss_first_name")),
- last_name: Yup.string().required(t("LoanRequest.error_message_last_name")),
- boss_last_name: Yup.string().required(t("LoanRequest.error_message_boss_last_name")),
- national_code: Yup.mixed()
- .test("is-number", `${t("LoanRequest.national_code_number")}`, (value) => !isNaN(value))
- .test("positive", `${t("LoanRequest.national_code_positive")}`, (value) => value >= 0)
- .test("max", `${t("LoanRequest.national_code_max")}`, (value) => value.toString().length === 10)
- .required(t("LoanRequest.error_message_national_id")),
- national_number: Yup.mixed().when('person_type', ([person_type], schema) => {
- return person_type === 'legal' ? schema
- .test("is-number", `${t("LoanRequest.national_number_number")}`, (value) => !isNaN(value))
- .test("positive", `${t("LoanRequest.national_number_positive")}`, (value) => value >= 0)
- .test("max", `${t("LoanRequest.national_number_max")}`, (value) => value && value.toString().length === 11)
- .required(t("LoanRequest.error_message_national_number")) : schema;
- }),
- national_serial_number: Yup.string().when('national_serial_number_or_tracking_code', ([national_serial_number_or_tracking_code], schema) => {
- return national_serial_number_or_tracking_code === 'national_serial_number' ? schema.required(t("LoanRequest.error_message_shenasname_serial")) : schema
- }),
- boss_national_serial_number: Yup.string().when('national_serial_number_or_tracking_code', ([national_serial_number_or_tracking_code], schema) => {
- return national_serial_number_or_tracking_code === 'national_serial_number' ? schema.required(t("LoanRequest.error_message_boss_national_serial_number")) : schema
- }),
- national_card_tracking_code: Yup.string().when('national_serial_number_or_tracking_code', ([national_serial_number_or_tracking_code], schema) => {
- return national_serial_number_or_tracking_code === 'national_card_tracking_code' ? schema.required(t("LoanRequest.error_message_tracking_code")) : schema
- }),
- boss_national_card_tracking_code: Yup.string().when('national_serial_number_or_tracking_code', ([national_serial_number_or_tracking_code], schema) => {
- return national_serial_number_or_tracking_code === 'national_card_tracking_code' ? schema.required(t("LoanRequest.error_message_boss_national_card_tracking_code")) : schema
- })
- });
-
-
- const handleSubmit = async (values, props) => {
- props.setSubmitting(true)
- let _national_number = values.person_type === "legal" ? {
- shenase_meli: values.national_number
- } : {}
-
- const _national_card = values.national_serial_number_or_tracking_code === "national_serial_number" ? {
- national_serial_number: values.national_serial_number
- } : {
- national_tracking_code: values.national_card_tracking_code
- }
-
- let _data = {
- is_legal_person: values.person_type === 'legal' ? 1 : 0,
- telephone_number: values.telephone_number,
- register_number: values.register_number,
- national_code: values.national_code,
- vehicle_type: values.vehicle_type,
- company_name: values.company_name,
- province_id: values.province_id,
- father_name: values.father_name,
- first_name: values.first_name,
- last_name: values.last_name,
- city_id: values.city_id,
- navgan_id: values.navgan_id,
- postal_code: values.postal_code,
- navgan_type: values.navgan_type,
- gender: values.gender,
- plate_part1: values.plate_part1,
- plate_part2: values.plate_part2,
- plate_part3: values.plate_part3,
- plate_part4: values.plate_part4,
- address: values.address,
- birthday: values.birthday.locale('en').format("YYYY-MM-DD"),
- education_id: values.education_id,
- occupation_id: values.occupation_id, ..._national_card, ..._national_number
- }
-
- await requestServer(SEND_LOAN_REQUEST_NAVGAN, "post", {
- auth: true, notification: true, data: _data
- }).then(() => {
- router.replace('/dashboard/navgan/followUp-loan')
- getUser((data) => {
- changeUser(data);
- });
- }).catch(() => {
- }).finally(() => {
- props.setSubmitting(false)
- })
- };
-
- const formik = useFormik({
- initialValues, validationSchema, onSubmit: handleSubmit
- })
+ const [personType, setPersonType] = useState("real")
return (<>
{finishLoanRequest ? (
@@ -227,560 +34,28 @@ const AddFormComponent = () => {
) : (
<>
-
-
- {
- if (value === null) return
- formik.handleChange({
- target: {
- name: "person_type", value: value,
- },
- })
- }}
- >
-
- {t("LoanRequest.real_person")}
-
-
- {t("LoanRequest.legal_person")}
-
-
-
-
- {
- formik.values.person_type === "real" ? :
- }
- {/**/}
- {/* */}
- {/* {formik.values.person_type === "legal" ? (*/}
- {/* {*/}
- {/* const inputValue = event.target.value;*/}
- {/* if (isNaN(Number(inputValue))) {*/}
- {/* return;*/}
- {/* }*/}
- {/* formik.handleChange({*/}
- {/* target: {*/}
- {/* name: "national_number", value: inputValue,*/}
- {/* },*/}
- {/* });*/}
- {/* }}*/}
- {/* label={t("LoanRequest.text_field_national_number")}*/}
- {/* placeholder={t("LoanRequest.text_field_enter_your_national_number")}*/}
- {/* onBlur={formik.handleBlur("national_number")}*/}
- {/* error={formik.touched.national_number && Boolean(formik.errors.national_number)}*/}
- {/* helperText={formik.touched.national_number && formik.errors.national_number}*/}
- {/* fullWidth*/}
- {/* />*/}
- {/* ) : (*/}
- {/* {*/}
- {/* const inputValue = event.target.value;*/}
- {/* if (isNaN(Number(inputValue))) {*/}
- {/* return;*/}
- {/* }*/}
- {/* formik.handleChange({*/}
- {/* target: {*/}
- {/* name: "national_code", value: inputValue,*/}
- {/* },*/}
- {/* });*/}
- {/* }}*/}
- {/* label={t("LoanRequest.text_field_national_code")}*/}
- {/* placeholder={t("LoanRequest.text_field_enter_your_national_code")}*/}
- {/* onBlur={formik.handleBlur("national_id")}*/}
- {/* error={formik.touched.national_id && Boolean(formik.errors.national_id)}*/}
- {/* helperText={formik.touched.national_id && formik.errors.national_id}*/}
- {/* fullWidth*/}
- {/* />*/}
- {/* )}*/}
- {/* */}
- {/**/}
- {/*{formik.values.person_type === 'legal' && (*/}
- {/* */}
- {/* */}
- {/* */}
- {/* */}
- {/* */}
- {/* */}
- {/* {*/}
- {/* const inputValue = event.target.value;*/}
- {/* if (isNaN(Number(inputValue))) {*/}
- {/* return;*/}
- {/* }*/}
- {/* formik.handleChange({*/}
- {/* target: {*/}
- {/* name: "register_number", value: inputValue,*/}
- {/* },*/}
- {/* });*/}
- {/* }}*/}
- {/* label={t("LoanRequest.text_field_register_number")}*/}
- {/* placeholder={t("LoanRequest.text_field_enter_your_register_number")}*/}
- {/* onBlur={formik.handleBlur("register_number")}*/}
- {/* error={formik.touched.register_number && Boolean(formik.errors.register_number)}*/}
- {/* helperText={formik.touched.register_number && formik.errors.register_number}*/}
- {/* fullWidth*/}
- {/* />*/}
- {/* */}
- {/* */}
- {/* */}
- {/*)}*/}
- {/**/}
- {/* */}
- {/* {*/}
- {/* if (value === null) return*/}
- {/* formik.handleChange({*/}
- {/* target: {*/}
- {/* name: "national_serial_number_or_tracking_code", value: value,*/}
- {/* },*/}
- {/* })*/}
- {/* }}*/}
- {/* >*/}
- {/* */}
- {/* {t("LoanRequest.text_field_shenasname_serial")}*/}
- {/* */}
- {/* */}
- {/* {t("LoanRequest.text_field_national_trackin_code")}*/}
- {/* */}
- {/* */}
- {/* */}
- {/* {formik.values.national_serial_number_or_tracking_code === 'national_serial_number' ? (*/}
- {/* */}
- {/* */}
- {/* ) : (*/}
- {/* */}
- {/* */}
- {/* */}
- {/* )}*/}
- {/**/}
- {/**/}
- {/* */}
- {/* */}
- {/* */}
- {/* */}
- {/* */}
- {/* */}
- {/**/}
- {/**/}
- {/* */}
- {/* */}
- {/* */}
- {/* */}
- {/* {*/}
- {/* formik.setFieldValue('gender', event.target.value)*/}
- {/* }}*/}
- {/* setFieldTouched={formik.setFieldTouched}*/}
- {/* error={formik.touched.gender && Boolean(formik.errors.gender)}*/}
- {/* helperText={formik.touched.gender && formik.errors.gender}*/}
- {/* onBlur={formik.handleBlur("gender")}*/}
- {/* />*/}
- {/* */}
- {/* */}
- {/* */}
- {/* */}
- {/**/}
- {/**/}
- {/* */}
- {/* {*/}
- {/* const inputValue = event.target.value;*/}
- {/* if (isNaN(Number(inputValue))) {*/}
- {/* return;*/}
- {/* }*/}
- {/* formik.handleChange({*/}
- {/* target: {*/}
- {/* name: "postal_code", value: inputValue,*/}
- {/* },*/}
- {/* });*/}
- {/* }}*/}
- {/* size="small"*/}
- {/* label={t("LoanRequest.text_field_postal_code")}*/}
- {/* placeholder={t("LoanRequest.text_field_enter_your_postal_code")}*/}
- {/* fullWidth*/}
- {/* onBlur={formik.handleBlur("postal_code")}*/}
- {/* error={formik.touched.postal_code && Boolean(formik.errors.postal_code)}*/}
- {/* helperText={formik.touched.postal_code && formik.errors.postal_code}*/}
- {/* />*/}
- {/* */}
- {/* */}
- {/* {*/}
- {/* const inputValue = event.target.value;*/}
- {/* if (isNaN(Number(inputValue))) {*/}
- {/* return;*/}
- {/* }*/}
- {/* formik.handleChange({*/}
- {/* target: {*/}
- {/* name: "telephone_number", value: inputValue,*/}
- {/* },*/}
- {/* });*/}
- {/* }}*/}
- {/* label={t("LoanRequest.text_field_tel_number")}*/}
- {/* placeholder={t("LoanRequest.text_field_enter_your_tel_number")}*/}
- {/* fullWidth*/}
- {/* onBlur={formik.handleBlur("telephone_number")}*/}
- {/* error={formik.touched.telephone_number && Boolean(formik.errors.telephone_number)}*/}
- {/* helperText={formik.touched.telephone_number && formik.errors.telephone_number}*/}
- {/* />*/}
- {/* */}
- {/**/}
- {/**/}
- {/* */}
- {/* {*/}
- {/* formik.setFieldValue('navgan_type', event.target.value)*/}
- {/* }}*/}
- {/* setFieldTouched={formik.setFieldTouched}*/}
- {/* error={formik.touched.navgan_type && Boolean(formik.errors.navgan_type)}*/}
- {/* helperText={formik.touched.navgan_type && formik.errors.navgan_type}*/}
- {/* onBlur={formik.handleBlur("navgan_type")}*/}
- {/* />*/}
- {/* */}
- {/* */}
- {/* */}
- {/* */}
- {/**/}
- {/**/}
- {/* */}
- {/* {*/}
- {/* formik.setFieldValue('province_id', event.target.value);*/}
- {/* setProvinceID(event.target.value)*/}
- {/* formik.setFieldTouched("city_id", false, false);*/}
- {/* formik.setFieldValue("city_id", "")*/}
- {/* }}*/}
- {/* setFieldTouched={formik.setFieldTouched}*/}
- {/* error={formik.touched.province_id && Boolean(formik.errors.province_id)}*/}
- {/* helperText={formik.touched.province_id && formik.errors.province_id}*/}
- {/* onBlur={formik.handleBlur("province_id")}*/}
- {/* />*/}
- {/* */}
- {/* */}
- {/* formik.setFieldValue('city_id', event.target.value)}*/}
- {/* setFieldTouched={formik.setFieldTouched}*/}
- {/* error={formik.touched.city_id && Boolean(formik.errors.city_id)}*/}
- {/* helperText={formik.touched.city_id && formik.errors.city_id}*/}
- {/* onBlur={formik.handleBlur("city_id")}*/}
- {/* />*/}
- {/* */}
- {/**/}
- {/**/}
- {/* */}
- {/* formik.setFieldValue('vehicle_type', event.target.value)}*/}
- {/* error={formik.touched.vehicle_type && Boolean(formik.errors.vehicle_type)}*/}
- {/* helperText={formik.touched.vehicle_type && formik.errors.vehicle_type}*/}
- {/* onBlur={formik.handleBlur("vehicle_type")}*/}
- {/* />*/}
- {/* */}
- {/* */}
- {/* */}
- {/* */}
- {/**/}
- {/**/}
- {/* */}
- {/* {*/}
- {/* formik.setFieldValue('education_id', event.target.value)*/}
- {/* }}*/}
- {/* setFieldTouched={formik.setFieldTouched}*/}
- {/* error={formik.touched.education_id && Boolean(formik.errors.education_id)}*/}
- {/* helperText={formik.touched.education_id && formik.errors.education_id}*/}
- {/* onBlur={formik.handleBlur("education_id")}*/}
- {/* />*/}
- {/* */}
- {/* */}
- {/* {*/}
- {/* formik.setFieldValue('occupation_id', event.target.value)*/}
- {/* }}*/}
- {/* setFieldTouched={formik.setFieldTouched}*/}
- {/* error={formik.touched.occupation_id && Boolean(formik.errors.occupation_id)}*/}
- {/* helperText={formik.touched.occupation_id && formik.errors.occupation_id}*/}
- {/* onBlur={formik.handleBlur("occupation_id")}*/}
- {/* />*/}
- {/* */}
- {/**/}
-
-
-
-
-
-
-
- {
- formik.setFieldValue("checkedBox", event.target.checked)
- }}
- />}
- label={`${t("LoanRequest.checkbox")}`}/>
-
-
-
-
-
-
+
+ {t("LoanRequest.real_person")}
+
+
+ {t("LoanRequest.legal_person")}
+
+
+
+ {
+ personType === "real" ? :
+
+ }
>
)}
>);
diff --git a/src/components/dashboard/navgan/add-request-loan/forms/LegalPersonDatePicker.jsx b/src/components/dashboard/navgan/add-request-loan/forms/LegalPersonDatePicker.jsx
index b256be3..733e33a 100644
--- a/src/components/dashboard/navgan/add-request-loan/forms/LegalPersonDatePicker.jsx
+++ b/src/components/dashboard/navgan/add-request-loan/forms/LegalPersonDatePicker.jsx
@@ -26,8 +26,8 @@ function ButtonField(props) {
sx={{ width: "100%", padding: 0.8 }}
variant="outlined"
color={
- props.slotProps.formik.touched.birthday &&
- Boolean(props.slotProps.formik.errors.birthday)
+ props.slotProps.formik.touched.company_date &&
+ Boolean(props.slotProps.formik.errors.company_date)
? "error"
: "primary"
}
@@ -37,30 +37,14 @@ function ButtonField(props) {
aria-label={ariaLabel}
onClick={() => setOpen?.((prev) => !prev)}
>
- {label ? `${t("birthday")}: ${label}` : `${t("birthday")}`}
+ {label ? `${t("company_date")}: ${label}` : `${t("company_date")}`}
);
}
function ButtonDatePicker(props) {
- const { config } = useConfig();
const t = useTranslations();
const [open, setOpen] = useState(false);
- const dateRange = useMemo(() => {
- const today = moment();
- const min = moment(
- `${config.add_request_loan_birthday_range.min}-01-01`,
- "jYYYY-jMM-jDD"
- ).toDate();
- const max = moment(
- `${config.add_request_loan_birthday_range.max}-${today.format(
- "jMM-jDD"
- )}`,
- "jYYYY-jMM-jDD"
- ).toDate();
- return { min, max };
- }, [config.add_request_loan_birthday_range]);
-
return (
setOpen(false)}
onOpen={() => setOpen(true)}
/>
);
}
-const LegalPersonDatePicker = () => {
+const LegalPersonDatePicker = ({ formik, disabled }) => {
return (
{
>
{
- formik.setFieldValue("birthday", moment(newValue));
+ formik.setFieldValue("company_date", moment(newValue));
}}
/>
- {formik.touched.birthday && formik.errors.birthday}
+ {formik.touched.company_date && formik.errors.company_date}
);
diff --git a/src/components/dashboard/navgan/add-request-loan/forms/LegalPersonForm.jsx b/src/components/dashboard/navgan/add-request-loan/forms/LegalPersonForm.jsx
index dbda8fa..d45dbe4 100644
--- a/src/components/dashboard/navgan/add-request-loan/forms/LegalPersonForm.jsx
+++ b/src/components/dashboard/navgan/add-request-loan/forms/LegalPersonForm.jsx
@@ -1,20 +1,168 @@
-import {Grid, TextField, ToggleButton, ToggleButtonGroup} from "@mui/material";
+import {Box, Button, Checkbox, FormControlLabel, Grid, TextField, ToggleButton, ToggleButtonGroup} from "@mui/material";
import {useTranslations} from "next-intl";
import useCities from "@/lib/app/hooks/useCities";
import UseEducations from "@/lib/app/hooks/useEducations";
import useOccupations from "@/lib/app/hooks/useOccupations";
-import MuiDatePicker from "@/core/components/MuiDatePicker";
import * as React from "react";
import SelectBox from "@/core/components/SelectBox";
import useLimitedProvince from "@/lib/app/hooks/useLimitedProvince";
import PlateNumber from "@/core/components/PlateNumber";
+import {useRouter} from "next/router";
+import {useRequest, useUser} from "@witel/webapp-builder";
+import * as Yup from "yup";
+import {SEND_LOAN_REQUEST_NAVGAN} from "@/core/data/apiRoutes";
+import DataSaverOnIcon from "@mui/icons-material/DataSaverOn";
+import {useFormik} from "formik";
+import LegalPersonDatePicker from "@/components/dashboard/navgan/add-request-loan/forms/LegalPersonDatePicker";
-const LegalPersonForm = ({formik}) => {
+const LegalPersonForm = ({setFinishLoanRequest}) => {
const t = useTranslations();
+ const router = useRouter()
+ const requestServer = useRequest()
+ const {getUser, changeUser} = useUser()
const {cityTextField, cityList, setProvinceID, isLoadingCityList} = useCities()
const {provinceList, isLoadingProvinceList, errorProvinceList} = useLimitedProvince()
const {educationsList, isLoadingEducationsList, errorEducationsList} = UseEducations()
const {occupationsList, isLoadingOccupationsList, errorOccupationsList} = useOccupations()
+
+ const initialValues = {
+ person_type: "legal",
+ company_tel_number: "",
+ vehicle_type: "",
+ province_id: "",
+ boss_father_name: "",
+ company_postal_code : "",
+ register_number: "",
+ boss_gender: "",
+ boss_first_name: "",
+ boss_last_name: "",
+ city_id: "",
+ navgan_id: "",
+ boss_national_code: "",
+ national_number: "",
+ company_name: "",
+ boss_national_serial_number: "",
+ boss_national_card_tracking_code: "",
+ national_serial_number_or_tracking_code: "national_serial_number",
+ navgan_type: "",
+ plate_part1: "",
+ plate_part2: "الف",
+ plate_part3: "",
+ plate_part4: "",
+ address: "",
+ company_date: "",
+ education_id: "",
+ occupation_id: "",
+ checkedBox: false,
+ };
+
+ const validationSchema = Yup.object().shape({
+ company_tel_number: Yup.mixed()
+ .test("max", `${t("LoanRequest.company_tel_number_max")}`, (value) => {
+ const stringValue = String(value);
+ return stringValue.length === 11
+ })
+ .required(t("LoanRequest.error_message_company_tel_number")),
+ vehicle_type: Yup.string().required(t("LoanRequest.error_message_vehicle_type")),
+ register_number: Yup.string().required(t("LoanRequest.error_message_register_number")),
+ boss_father_name: Yup.string().required(t("LoanRequest.error_message_boss_father_name")),
+ company_name: Yup.string().required(t("LoanRequest.error_message_company_name")),
+ boss_gender: Yup.string().required(t("LoanRequest.error_message_boss_gender")),
+ navgan_type: Yup.string().required(t("LoanRequest.error_message_navgan_type")),
+ occupation_id: Yup.string().required(t("LoanRequest.error_message_occupation_id")),
+ education_id: Yup.string().required(t("LoanRequest.error_message_education_id")),
+ address: Yup.string().required(t("LoanRequest.error_message_address")),
+ company_date: Yup.string().required(t("LoanRequest.error_message_date_of_birth")),
+ company_postal_code: Yup.mixed()
+ .test("max", `${t("LoanRequest.company_postal_code_max")}`, (value) => value.toString().length === 10)
+ .required(t("LoanRequest.error_message_company_postal_code")),
+ plate_part1: Yup.mixed().test("max", `${t("LoanRequest.error_message_plate_number")}`, (value) => value.toString().length === 2)
+ .required(t("LoanRequest.error_message_plate_number")),
+ plate_part2: Yup.mixed()
+ .required(t("LoanRequest.error_message_plate_number")),
+ plate_part3: Yup.mixed().test("max", `${t("LoanRequest.error_message_plate_number")}`, (value) => value.toString().length === 3)
+ .required(t("LoanRequest.error_message_plate_number")),
+ plate_part4: Yup.mixed().test("max", `${t("LoanRequest.error_message_plate_number")}`, (value) => value.toString().length === 2)
+ .required(t("LoanRequest.error_message_plate_number")),
+ navgan_id: Yup.mixed().required(t("LoanRequest.error_message_navgan_id")),
+ province_id: Yup.string().required(t("LoanRequest.error_message_province_id")),
+ city_id: Yup.string().required(t("LoanRequest.error_message_city_id")),
+ boss_first_name: Yup.string().required(t("LoanRequest.error_message_boss_first_name")),
+ boss_last_name: Yup.string().required(t("LoanRequest.error_message_boss_last_name")),
+ boss_national_code: Yup.mixed()
+ .test("is-number", `${t("LoanRequest.boss_national_code_number")}`, (value) => !isNaN(value))
+ .test("positive", `${t("LoanRequest.boss_national_code_positive")}`, (value) => value >= 0)
+ .test("max", `${t("LoanRequest.boss_national_code_max")}`, (value) => value.toString().length === 10)
+ .required(t("LoanRequest.error_message_national_id")),
+ national_number: Yup.mixed().when('person_type', ([person_type], schema) => {
+ return person_type === 'legal' ? schema
+ .test("is-number", `${t("LoanRequest.national_number_number")}`, (value) => !isNaN(value))
+ .test("positive", `${t("LoanRequest.national_number_positive")}`, (value) => value >= 0)
+ .test("max", `${t("LoanRequest.national_number_max")}`, (value) => value && value.toString().length === 11)
+ .required(t("LoanRequest.error_message_national_number")) : schema;
+ }),
+ boss_national_serial_number: Yup.string().when('national_serial_number_or_tracking_code', ([national_serial_number_or_tracking_code], schema) => {
+ return national_serial_number_or_tracking_code === 'national_serial_number' ? schema.required(t("LoanRequest.error_message_boss_national_serial_number")) : schema
+ }),
+ boss_national_card_tracking_code: Yup.string().when('national_serial_number_or_tracking_code', ([national_serial_number_or_tracking_code], schema) => {
+ return national_serial_number_or_tracking_code === 'national_card_tracking_code' ? schema.required(t("LoanRequest.error_message_boss_national_card_tracking_code")) : schema
+ })
+ });
+
+ const handleSubmit = async (values, props) => {
+ props.setSubmitting(true)
+ let _national_number = values.person_type === "legal" ? {
+ shenase_meli: values.national_number
+ } : {}
+
+ const _national_card = values.national_serial_number_or_tracking_code === "national_serial_number" ? {
+ national_serial_number: values.national_serial_number
+ } : {
+ national_tracking_code: values.national_card_tracking_code
+ }
+
+ let _data = {
+ is_legal_person: values.person_type === 'legal' ? 1 : 0,
+ telephone_number: values.company_tel_number,
+ register_number: values.register_number,
+ national_code: values.boss_national_code,
+ vehicle_type: values.vehicle_type,
+ company_name: values.company_name,
+ province_id: values.province_id,
+ father_name: values.father_name,
+ first_name: values.first_name,
+ last_name: values.last_name,
+ city_id: values.city_id,
+ navgan_id: values.navgan_id,
+ postal_code: values.postal_code,
+ navgan_type: values.navgan_type,
+ gender: values.gender,
+ plate_part1: values.plate_part1,
+ plate_part2: values.plate_part2,
+ plate_part3: values.plate_part3,
+ plate_part4: values.plate_part4,
+ address: values.address,
+ birthday: values.birthday.locale('en').format("YYYY-MM-DD"),
+ education_id: values.education_id,
+ occupation_id: values.occupation_id, ..._national_card, ..._national_number
+ }
+
+ await requestServer(SEND_LOAN_REQUEST_NAVGAN, "post", {
+ auth: true, notification: true, data: _data
+ }).then(() => {
+ router.replace('/dashboard/navgan/followUp-loan')
+ getUser((data) => {
+ changeUser(data);
+ });
+ }).catch(() => {
+ }).finally(() => {
+ props.setSubmitting(false)
+ })
+ };
+
+ const formik = useFormik({
+ initialValues, validationSchema, onSubmit: handleSubmit
+ })
return (
<>
@@ -97,7 +245,7 @@ const LegalPersonForm = ({formik}) => {
sx={{width: "100%"}}
name="company_postal_code"
variant="outlined"
- value={formik.values.postal_code}
+ value={formik.values.company_postal_code}
inputProps={{inputMode: 'numeric', pattern: '[0-9]*'}}
type={'tel'}
onChange={(event) => {
@@ -107,7 +255,7 @@ const LegalPersonForm = ({formik}) => {
}
formik.handleChange({
target: {
- name: "postal_code", value: inputValue,
+ name: "company_postal_code", value: inputValue,
},
});
}}
@@ -125,7 +273,7 @@ const LegalPersonForm = ({formik}) => {
sx={{width: "100%"}}
name="company_tel_number"
variant="outlined"
- value={formik.values.telephone_number}
+ value={formik.values.company_tel_number}
inputProps={{inputMode: 'numeric', pattern: '[0-9]*'}}
type={'tel'}
size="small"
@@ -136,7 +284,7 @@ const LegalPersonForm = ({formik}) => {
}
formik.handleChange({
target: {
- name: "telephone_number", value: inputValue,
+ name: "company_tel_number", value: inputValue,
},
});
}}
@@ -149,7 +297,7 @@ const LegalPersonForm = ({formik}) => {
/>
- {
/>
+
+
+ {
+ const inputValue = event.target.value;
+ if (isNaN(Number(inputValue))) {
+ return;
+ }
+ formik.handleChange({
+ target: {
+ name: "boss_national_code", value: inputValue,
+ },
+ });
+ }}
+ label={t("LoanRequest.text_field_boss_national_code")}
+ placeholder={t("LoanRequest.text_field_enter_your_boss_national_code")}
+ onBlur={formik.handleBlur("boss_national_code")}
+ error={formik.touched.boss_national_code && Boolean(formik.errors.boss_national_code)}
+ helperText={formik.touched.boss_national_code && formik.errors.boss_national_code}
+ fullWidth
+ />
+
+
+ {
+ formik.setFieldValue('boss_gender', event.target.value)
+ }}
+ setFieldTouched={formik.setFieldTouched}
+ error={formik.touched.boss_gender && Boolean(formik.errors.boss_gender)}
+ helperText={formik.touched.boss_gender && formik.errors.boss_gender}
+ onBlur={formik.handleBlur("boss_gender")}
+ />
+
+
+
+
+
+
+
+
+
+
{
name="boss_national_serial_number"
variant="outlined"
size="small"
- value={formik.values.national_serial_number}
+ value={formik.values.boss_national_serial_number}
label={t("LoanRequest.text_field_boss_national_serial_number")}
placeholder={t("LoanRequest.text_field_enter_your_boss_national_serial_number")}
fullWidth
@@ -250,7 +485,7 @@ const LegalPersonForm = ({formik}) => {
name="boss_national_card_tracking_code"
variant="outlined"
size="small"
- value={formik.values.national_card_tracking_code}
+ value={formik.values.boss_national_card_tracking_code}
label={t("LoanRequest.text_field_boss_national_card_tracking_code")}
placeholder={t("LoanRequest.text_field_enter_your_boss_national_card_tracking_code")}
fullWidth
@@ -266,7 +501,7 @@ const LegalPersonForm = ({formik}) => {
sx={{width: "100%"}}
name="boss_father_name"
variant="outlined"
- value={formik.values.father_name}
+ value={formik.values.boss_father_name}
onChange={formik.handleChange}
size="small"
label={t("LoanRequest.text_field_boss_father_name")}
@@ -278,93 +513,6 @@ const LegalPersonForm = ({formik}) => {
/>
-
-
- {
- const inputValue = event.target.value;
- if (isNaN(Number(inputValue))) {
- return;
- }
- formik.handleChange({
- target: {
- name: "national_code", value: inputValue,
- },
- });
- }}
- label={t("LoanRequest.text_field_national_code")}
- placeholder={t("LoanRequest.text_field_enter_your_national_code")}
- onBlur={formik.handleBlur("national_id")}
- error={formik.touched.national_id && Boolean(formik.errors.national_id)}
- helperText={formik.touched.national_id && formik.errors.national_id}
- fullWidth
- />
-
-
- {
- formik.setFieldValue('gender', event.target.value)
- }}
- setFieldTouched={formik.setFieldTouched}
- error={formik.touched.boss_gender && Boolean(formik.errors.boss_gender)}
- helperText={formik.touched.boss_gender && formik.errors.boss_gender}
- onBlur={formik.handleBlur("boss_gender")}
- />
-
-
-
-
-
-
-
-
-
-
{
/>
+
+
+
+
+
+
+
+ {
+ formik.setFieldValue("checkedBox", event.target.checked)
+ }}
+ />}
+ label={`${t("LoanRequest.checkbox")}`}/>
+
+
+
+
+
+
>
)
}
diff --git a/src/components/dashboard/navgan/add-request-loan/forms/RealPersonForm.jsx b/src/components/dashboard/navgan/add-request-loan/forms/RealPersonForm.jsx
index d39d330..d3cef38 100644
--- a/src/components/dashboard/navgan/add-request-loan/forms/RealPersonForm.jsx
+++ b/src/components/dashboard/navgan/add-request-loan/forms/RealPersonForm.jsx
@@ -1,16 +1,132 @@
-import {Grid, TextField, ToggleButton, ToggleButtonGroup} from "@mui/material";
+import {Box, Button, Checkbox, FormControlLabel, Grid, TextField, ToggleButton, ToggleButtonGroup} from "@mui/material";
import SelectBox from "@/core/components/SelectBox";
import MuiDatePicker from "@/core/components/MuiDatePicker";
import {useTranslations} from "next-intl";
import useLimitedProvince from "@/lib/app/hooks/useLimitedProvince";
import useCities from "@/lib/app/hooks/useCities";
-import UseEducations from "@/lib/app/hooks/useEducations";
-import useOccupations from "@/lib/app/hooks/useOccupations";
+import {useFormik} from "formik";
+import * as Yup from "yup";
+import DataSaverOnIcon from "@mui/icons-material/DataSaverOn";
+import {SEND_LOAN_REQUEST_NAVGAN} from "@/core/data/apiRoutes";
+import {useRequest, useUser} from "@witel/webapp-builder";
+import {useRouter} from "next/router";
+import {useState} from "react";
-const RealPersonForm = ({formik}) => {
+const RealPersonForm = ({setFinishLoanRequest}) => {
const t = useTranslations();
const {provinceList, isLoadingProvinceList, errorProvinceList} = useLimitedProvince()
const {cityTextField, cityList, setProvinceID, isLoadingCityList} = useCities()
+ const requestServer = useRequest()
+ const {getUser, changeUser} = useUser()
+ const router = useRouter()
+
+ const initialValues = {
+ person_type : "real",
+ telephone_number: "",
+ father_name: "",
+ gender: "",
+ first_name: "",
+ last_name: "",
+ city_id: "",
+ province_id: "",
+ navgan_id: "",
+ national_code: "",
+ national_serial_number: "",
+ national_card_tracking_code: "",
+ national_serial_number_or_tracking_code: "national_serial_number",
+ postal_code: "",
+ navgan_type: "",
+ address: "",
+ birthday: "",
+ checkedBox: false,
+ };
+
+ const validationSchema = Yup.object().shape({
+ telephone_number: Yup.mixed()
+ .test("max", `${t("LoanRequest.tel_number_max")}`, (value) => {
+ const stringValue = String(value);
+ return stringValue.length === 11
+ })
+ .required(t("LoanRequest.error_message_tel_number")),
+ father_name: Yup.string().required(t("LoanRequest.error_message_father_name")),
+ gender: Yup.string().required(t("LoanRequest.error_message_gender")),
+ navgan_type: Yup.string().required(t("LoanRequest.error_message_navgan_type")),
+ address: Yup.string().required(t("LoanRequest.error_message_address")),
+ birthday: Yup.string().required(t("LoanRequest.error_message_date_of_birth")),
+ postal_code: Yup.mixed()
+ .test("max", `${t("LoanRequest.postal_code_max")}`, (value) => value.toString().length === 10)
+ .required(t("LoanRequest.error_message_postal_code")),
+ navgan_id: Yup.mixed().required(t("LoanRequest.error_message_navgan_id")),
+ province_id: Yup.string().required(t("LoanRequest.error_message_province_id")),
+ city_id: Yup.string().required(t("LoanRequest.error_message_city_id")),
+ first_name: Yup.string().required(t("LoanRequest.error_message_first_name")),
+ last_name: Yup.string().required(t("LoanRequest.error_message_last_name")),
+ national_code: Yup.mixed()
+ .test("is-number", `${t("LoanRequest.national_code_number")}`, (value) => !isNaN(value))
+ .test("positive", `${t("LoanRequest.national_code_positive")}`, (value) => value >= 0)
+ .test("max", `${t("LoanRequest.national_code_max")}`, (value) => value.toString().length === 10)
+ .required(t("LoanRequest.error_message_national_id")),
+ national_number: Yup.mixed().when('person_type', ([person_type], schema) => {
+ return person_type === 'legal' ? schema
+ .test("is-number", `${t("LoanRequest.national_number_number")}`, (value) => !isNaN(value))
+ .test("positive", `${t("LoanRequest.national_number_positive")}`, (value) => value >= 0)
+ .test("max", `${t("LoanRequest.national_number_max")}`, (value) => value && value.toString().length === 11)
+ .required(t("LoanRequest.error_message_national_number")) : schema;
+ }),
+ national_serial_number: Yup.string().test("max", `${t("LoanRequest.national_serial_number_max")}`, (value) => value && value.toString().length === 10).when('national_serial_number_or_tracking_code', ([national_serial_number_or_tracking_code], schema) => {
+ return national_serial_number_or_tracking_code === 'national_serial_number' ? schema.required(t("LoanRequest.error_message_shenasname_serial")) : schema
+ }),
+ national_card_tracking_code: Yup.string().when('national_serial_number_or_tracking_code', ([national_serial_number_or_tracking_code], schema) => {
+ return national_serial_number_or_tracking_code === 'national_card_tracking_code' ? schema.required(t("LoanRequest.error_message_tracking_code")) : schema
+ }),
+ });
+
+ const handleSubmit = async (values, props) => {
+ props.setSubmitting(true)
+ let _national_number = values.person_type === "legal" ? {
+ shenase_meli: values.national_number
+ } : {}
+
+ const _national_card = values.national_serial_number_or_tracking_code === "national_serial_number" ? {
+ national_serial_number: values.national_serial_number
+ } : {
+ national_tracking_code: values.national_card_tracking_code
+ }
+
+ let _data = {
+ is_legal_person: 0,
+ telephone_number: values.telephone_number,
+ national_code: values.national_code,
+ vehicle_type: values.vehicle_type,
+ province_id: values.province_id,
+ father_name: values.father_name,
+ first_name: values.first_name,
+ last_name: values.last_name,
+ city_id: values.city_id,
+ navgan_id: values.navgan_id,
+ postal_code: values.postal_code,
+ navgan_type: values.navgan_type,
+ gender: values.gender,
+ address: values.address,
+ birthday: values.birthday.locale('en').format("YYYY-MM-DD"), ..._national_card, ..._national_number
+ }
+
+ await requestServer(SEND_LOAN_REQUEST_NAVGAN, "post", {
+ auth: true, notification: true, data: _data
+ }).then(() => {
+ router.replace('/dashboard/navgan/followUp-loan')
+ getUser((data) => {
+ changeUser(data);
+ });
+ }).catch(() => {
+ }).finally(() => {
+ props.setSubmitting(false)
+ })
+ };
+
+ const formik = useFormik({
+ initialValues, validationSchema, onSubmit: handleSubmit
+ })
return (
<>
@@ -96,9 +212,9 @@ const RealPersonForm = ({formik}) => {
}}
label={t("LoanRequest.text_field_national_code")}
placeholder={t("LoanRequest.text_field_enter_your_national_code")}
- onBlur={formik.handleBlur("national_id")}
- error={formik.touched.national_id && Boolean(formik.errors.national_id)}
- helperText={formik.touched.national_id && formik.errors.national_id}
+ onBlur={formik.handleBlur("national_code")}
+ error={formik.touched.national_code && Boolean(formik.errors.national_code)}
+ helperText={formik.touched.national_code && formik.errors.national_code}
fullWidth
/>
@@ -333,6 +449,63 @@ const RealPersonForm = ({formik}) => {
/>
+
+
+
+
+
+
+
+ {
+ formik.setFieldValue("checkedBox", event.target.checked)
+ }}
+ />}
+ label={`${t("LoanRequest.checkbox")}`}/>
+
+
+
+
+
+
>
)
}
diff --git a/src/components/dashboard/navgan/add-request-loan/index.jsx b/src/components/dashboard/navgan/add-request-loan/index.jsx
index 211862c..bbe445b 100644
--- a/src/components/dashboard/navgan/add-request-loan/index.jsx
+++ b/src/components/dashboard/navgan/add-request-loan/index.jsx
@@ -1,20 +1,11 @@
-import {Box, Chip, Divider} from "@mui/material";
import {useTranslations} from "next-intl";
import AddFormComponent from "@/components/dashboard/navgan/add-request-loan/forms/AddForm";
-import {CenterLayout, useUser} from "@witel/webapp-builder";
const LoanRequestComponent = () => {
const t = useTranslations();
return (
<>
-
-
-
-
-
>
);