import {Box, Button, Chip, Divider, Grid, Stack, TextField, ToggleButton, ToggleButtonGroup} from "@mui/material";
import {useFormik} from "formik";
import {useTranslations} from "next-intl";
import * as Yup from "yup";
import SelectBox from "@/core/components/SelectBox";
import PlateNumber from "@/core/components/PlateNumber";
import MuiDatePicker from "@/core/components/MuiDatePicker";
import moment from "jalali-moment";
import useProvince from "@/lib/app/hooks/useProvince";
import useCities from "@/lib/app/hooks/useCities";
import UseEducations from "@/lib/app/hooks/useEducations";
import useOccupations from "@/lib/app/hooks/useOccupations";
import {UPDATE_LOAN} from "@/core/data/apiRoutes";
import {useRequest} from "@witel/webapp-builder";
import {useRouter} from "next/router";
import {useEffect} from "react";
import EditIcon from '@mui/icons-material/Edit';
import * as React from "react";
import useProjectTitle from "@/lib/app/hooks/useProjectTitle";
import useActivityType from "@/lib/app/hooks/useActivityType";
const UpdateFormReal = ({LoanDetails, LoanId}) => {
const t = useTranslations();
const provinceStates = useProvince();
const router = useRouter()
const citiesStates = useCities();
const {projectTitle, isLoadingProjectTitle, errorProjectTitle} = useProjectTitle();
const {activityType, isLoadingActivityType, errorActivityType} = useActivityType();
const educationStates = UseEducations();
const occupationStates = useOccupations();
const requestServer = useRequest();
const initialValues = {
national_serial_number_or_tracking_code: LoanDetails.national_serial_number ? "serial_number" : "tracking_code",
national_id: LoanDetails.national_id,
activity_type: LoanDetails.activity_type_id,
navgan_plan_id: LoanDetails.navgan_plan_id,
postal_code: LoanDetails.postal_code,
address: LoanDetails.address,
birthday: LoanDetails.birthday ? moment(LoanDetails.birthday) : "",
navgan_id: LoanDetails.navgan_id,
province_id: LoanDetails.province_id,
city_id: LoanDetails.city_id,
first_name: LoanDetails.first_name,
last_name: LoanDetails.last_name,
father_name: LoanDetails.father_name,
gender: LoanDetails.gender,
occupation_id : LoanDetails.occupation_id,
navgan_type: LoanDetails.navgan_type,
vehicle_type: LoanDetails.vehicle_type,
telephone_number: LoanDetails.telephone_number,
plate_part1: LoanDetails.plate_number.split("-")[0],
plate_part2: LoanDetails.plate_number.split("-")[1],
plate_part3: LoanDetails.plate_number.split("-")[2],
plate_part4: LoanDetails.plate_number.split("-")[3],
education_id: LoanDetails.education_id,
national_serial_number: LoanDetails.national_serial_number ?? "",
national_tracking_code: LoanDetails.national_tracking_code ?? ""
};
useEffect(() => {
citiesStates.setProvinceID(LoanDetails.province_id)
}, [LoanDetails.province_id]);
const validationSchema = Yup.object().shape({
postal_code: Yup.mixed()
.test("max", `${t("ShowLoan.postal_code_max")}`, (value) => value.toString().length === 10)
.required(t("ShowLoan.error_message_postal_code")),
address: Yup.string().required(t("ShowLoan.error_message_address")),
province_id: Yup.string().required(t("ShowLoan.error_message_province_id")),
activity_type: Yup.string().required(t("ShowLoan.error_message_activity_type")),
navgan_plan_id: Yup.string().required(t("ShowLoan.error_message_navgan_plan_id")),
city_id: Yup.string().required(t("ShowLoan.error_message_city_id")),
telephone_number: Yup.mixed()
.test("max", `${t("ShowLoan.tel_number_max")}`, (value) => {
const stringValue = String(value);
return stringValue.length === 11
})
.required(t("ShowLoan.error_message_tel_number")),
occupation_id: Yup.string().required(t("ShowLoan.error_message_occupation_id")),
first_name: Yup.string().required(t("ShowLoan.error_message_first_name")),
last_name: Yup.string().required(t("ShowLoan.error_message_last_name")),
gender: Yup.string().required(t("ShowLoan.error_message_gender")),
father_name: Yup.string().required(t("ShowLoan.error_message_father_name")),
education_id: Yup.string().required(t("ShowLoan.error_message_education_id")),
birthday: Yup.string().required(t("ShowLoan.error_message_date_of_birth")),
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 === 'serial_number' ? schema.required(t("ShowLoan.error_message_shenasname_serial")) : schema
}),
national_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 === 'tracking_code' ? schema.required(t("ShowLoan.error_message_tracking_code")) : schema
})
});
const handleSubmit = async (values, props) => {
props.setSubmitting(true)
const formData = new FormData();
if (values.national_serial_number_or_tracking_code === "serial_number") {
formData.append("national_serial_number", values.national_serial_number)
} else {
formData.append("national_tracking_code", values.national_tracking_code);
}
formData.append("birthday", values.birthday.locale('en').format("YYYY-MM-DD"));
formData.append("postal_code", values.postal_code);
formData.append("navgan_plan_id", values.navgan_plan_id);
formData.append("activity_type", values.activity_type);
formData.append("first_name", values.first_name);
formData.append("last_name", values.last_name);
formData.append("father_name", values.father_name);
formData.append("gender", values.gender);
formData.append("province_id", LoanDetails.province_id);
formData.append("city_id", LoanDetails.city_id);
formData.append("telephone_number", values.telephone_number);
formData.append("education_id", values.education_id);
formData.append("occupation_id", values.occupation_id);
formData.append("address", values.address);
await requestServer(UPDATE_LOAN + LoanId, "post", {
auth: true, notification: true, data: formData
}).then(() => {
router.push("/dashboard/navgan/followUp-loan");
}).catch(() => {
}).finally(() => {
props.setSubmitting(false);
})
};
const formik = useFormik({
initialValues,
validationSchema,
onSubmit: handleSubmit,
});
return (<>
{
formik.setFieldValue("activity_type", event.target.value);
}}
setFieldTouched={formik.setFieldTouched}
error={formik.touched.activity_type && Boolean(formik.errors.activity_type)}
helperText={formik.touched.activity_type && formik.errors.activity_type}
onBlur={formik.handleBlur("activity_type")}
/>
{
const inputValue = event.target.value;
if (isNaN(Number(inputValue))) {
return;
}
formik.handleChange({
target: {
name: "postal_code", value: inputValue,
},
});
}}
error={!!(formik.touched.postal_code && formik.errors.postal_code)}
fullWidth
helperText={formik.touched.postal_code ? formik.errors.postal_code : null}
/>
{
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('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")}
/>
{
if (value === null) return
formik.handleChange({
target: {
name: "national_serial_number_or_tracking_code", value: value,
},
})
value === "serial_number" ? formik.setFieldValue("national_tracking_code", formik.initialValues.national_tracking_code, false) : formik.setFieldValue("national_serial_number", formik.initialValues.national_serial_number, false)
}}
>
{t("ShowLoan.text_field_shenasname_serial")}
{t("ShowLoan.text_field_national_trackin_code")}
{formik.values.national_serial_number_or_tracking_code === "serial_number" ? () : ()}
{provinceStates.provinceList.length !== 0 ? {
formik.setFieldValue('province_id', event.target.value);
citiesStates.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")}
/> : }
{citiesStates.cityList.length !== 0 ? 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")}
/> : }
{
const inputValue = event.target.value;
if (isNaN(Number(inputValue))) {
return;
}
formik.handleChange({
target: {
name: "telephone_number", value: inputValue,
},
});
}}
label={t("ShowLoan.text_field_tel_number")}
placeholder={t("ShowLoan.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}
/>
{educationStates.educationsList.length !== 0 ? {
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")}
/> : }
{occupationStates.occupationsList.length !== 0 ? {
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")}
/> : }
{LoanDetails.state_id === 17 && (
)}
>);
};
export default UpdateFormReal;