From 2cc569b30001624b13db760871e756112048c5c7 Mon Sep 17 00:00:00 2001 From: Mohammad Jalali Date: Sun, 7 Jan 2024 15:56:34 +0330 Subject: [PATCH 1/2] mohammad complte update new features and fix its bugs --- public/locales/fa/app.json | 1 + .../dashboard/navgan/show/form/UpdateForm.jsx | 264 ++++++++++-------- 2 files changed, 142 insertions(+), 123 deletions(-) diff --git a/public/locales/fa/app.json b/public/locales/fa/app.json index 5c4d71d..696dcb5 100644 --- a/public/locales/fa/app.json +++ b/public/locales/fa/app.json @@ -228,6 +228,7 @@ }, "ShowLoan": { "show_loan_page": "نمایش وام | ناوگان", + "update_loan_page": "ویرایش وام | {person_type}", "loading_show_component": "درحال دریافت اطلاعات درخواست...", "tel_number_max": "شماره ثابت می بایست 11 رقم باشد", "text_field_national_id": "کد ملی", diff --git a/src/components/dashboard/navgan/show/form/UpdateForm.jsx b/src/components/dashboard/navgan/show/form/UpdateForm.jsx index edddcc1..d844bdd 100644 --- a/src/components/dashboard/navgan/show/form/UpdateForm.jsx +++ b/src/components/dashboard/navgan/show/form/UpdateForm.jsx @@ -1,5 +1,5 @@ import StyledForm from "@/core/components/StyledForm"; -import {Box, Chip, Divider, Stack, TextField} from "@mui/material"; +import {Box, Button, Chip, Divider, Stack, TextField, ToggleButton, ToggleButtonGroup} from "@mui/material"; import {Field, Formik} from "formik"; import {useTranslations} from "next-intl"; import * as Yup from "yup"; @@ -15,6 +15,7 @@ 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'; const UpdateForm = ({LoanDetails, LoanId}) => { const t = useTranslations(); @@ -29,14 +30,10 @@ const UpdateForm = ({LoanDetails, LoanId}) => { shenase_meli: LoanDetails.shenase_meli } : {} - const _national_card = LoanDetails.national_serial_number ? { - national_serial_number: LoanDetails.national_serial_number - } : { - national_tracking_code: LoanDetails.national_card_tracking_code - } // initial values const initialValues = { is_legal_person: LoanDetails.is_legal_person, + national_serial_number_or_tracking_code: LoanDetails.national_serial_number ? "serial_number" : "tracking_code", national_id: LoanDetails.national_id, postal_code: LoanDetails.postal_code, address: LoanDetails.address, @@ -53,7 +50,9 @@ const UpdateForm = ({LoanDetails, LoanId}) => { plate_part3: LoanDetails.plate_number.split("-")[2], plate_part4: LoanDetails.plate_number.split("-")[3], education_id: LoanDetails.education_id, - occupation_id: LoanDetails.occupation_id, ..._national_card, ..._shenase_meli, + occupation_id: LoanDetails.occupation_id, ..._shenase_meli, + national_serial_number: LoanDetails.national_serial_number ?? "", + national_tracking_code: LoanDetails.national_card_tracking_code ?? "" }; // end initial values @@ -93,10 +92,10 @@ const UpdateForm = ({LoanDetails, LoanId}) => { .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 + return national_serial_number_or_tracking_code === '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 + 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("LoanRequest.error_message_tracking_code")) : schema }) }); // end validation @@ -105,33 +104,47 @@ const UpdateForm = ({LoanDetails, LoanId}) => { 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); + } + if (values.is_legal_person === 1) { + formData.append("national_id", values.national_id); + } + formData.append("birthday", values.birthday.locale('en').format("YYYY-MM-DD")); formData.append("postal_code", values.postal_code); - formData.append("address", values.address); formData.append("province_id", values.province_id); formData.append("city_id", values.city_id); formData.append("telephone_number", values.telephone_number); - formData.append("occupation_id", values.occupation_id); formData.append("education_id", values.education_id); - formData.append("national_serial_number", values.national_serial_number); - formData.append("birthday", values.birthday.locale('en').format("YYYY-MM-DD")); + formData.append("occupation_id", values.occupation_id); + formData.append("address", values.address); + + for (var pair of formData.entries()) { + console.log(pair[0] + ':' + pair[1]); + } + await requestServer(UPDATE_LOAN + LoanId, "post", { auth: true, notification: true, data: formData }).then(() => { - router.push("/dashboard/navgan/followUp-loan") + router.push("/dashboard/navgan/followUp-loan"); }).catch(() => { }).finally(() => { - props.setSubmitting(false) + props.setSubmitting(false); }) }; // end submit - return ( <> @@ -170,8 +183,8 @@ const UpdateForm = ({LoanDetails, LoanId}) => { as={TextField} sx={{width: "100%"}} name="national_id" - disabled - variant="standard" + disabled={props.values.is_legal_person !== 1} + variant={props.values.is_legal_person !== 1 ? "standard" : "outlined"} size="small" label={t("ShowLoan.text_field_national_id")} placeholder={t("ShowLoan.text_field_enter_your_national_id")} @@ -389,63 +402,76 @@ const UpdateForm = ({LoanDetails, LoanId}) => { width: "100%", }} > - { - initialValues.national_serial_number ? ( - - - + + { + if (value === null) return + props.handleChange({ + target: { + name: "national_serial_number_or_tracking_code", value: value, + }, + }) + value === "serial_number" ? + props.setFieldValue("national_tracking_code", props.initialValues.national_tracking_code, false) + : props.setFieldValue("national_serial_number", props.initialValues.national_serial_number, false) + }} + > + + {t("LoanRequest.text_field_shenasname_serial")} + + + {t("LoanRequest.text_field_national_trackin_code")} + + + + + {props.values.national_serial_number_or_tracking_code === "serial_number" ? ( + ) : ( - - - - ) - } + + )} + { > + + { as={TextField} sx={{width: "100%"}} name="postal_code" - variant="standard" + variant="outlined" size="small" - disabled label={t("ShowLoan.text_field_postal_code")} placeholder={t( "ShowLoan.text_field_enter_your_postal_code" @@ -503,16 +537,6 @@ const UpdateForm = ({LoanDetails, LoanId}) => { } /> - - { name="province_id" label={t("ShowLoan.text_field_province_id")} size="small" - disabled - variant="standard" + variant="outlined" selectType="province_id" schema={{value: "value", name: "name"}} isLoading={provinceStates.isLoadingProvinceList} @@ -567,9 +590,8 @@ const UpdateForm = ({LoanDetails, LoanId}) => { label={citiesStates.cityList.length === 0 ? `${t("ShowLoan.cityList_empty")}` : citiesStates.cityTextField} size="small" selectType="city_id" - // disabled={citiesStates.cityList.length === 0} - disabled - variant="standard" + disabled={citiesStates.cityList.length === 0} + variant="outlined" selectors={citiesStates.cityList} select={props.values.city_id} schema={{value: "value", name: "name"}} @@ -588,6 +610,16 @@ const UpdateForm = ({LoanDetails, LoanId}) => { type={"text"} />} + + { sx={{width: "100%"}} name="telephone_number" size="small" - variant="standard" - disabled + variant="outlined" type={'tel'} value={props.values.telephone_number} onChange={(event) => { @@ -625,16 +656,6 @@ const UpdateForm = ({LoanDetails, LoanId}) => { helperText={props.touched.telephone_number && props.errors.telephone_number} /> - - { name="education_id" label={t("ShowLoan.text_field_education_id")} size="small" - variant="standard" - disabled + variant="outlined" isLoading={educationStates.isLoadingEducationsList} errorEcured={educationStates.errorEducationsList} selectType="education_id" @@ -684,8 +704,7 @@ const UpdateForm = ({LoanDetails, LoanId}) => { name="occupation_id" label={t("ShowLoan.text_field_occupation_id")} size="small" - disabled - variant="standard" + variant="outlined" isLoading={occupationStates.isLoadingOccupationsList} errorEcured={occupationStates.errorOccupationsList} selectType="occupation_id" @@ -732,9 +751,8 @@ const UpdateForm = ({LoanDetails, LoanId}) => { rows={4} sx={{width: "100%"}} name="address" - variant="standard" + variant="outlined" size="small" - disabled label={t("ShowLoan.text_field_address")} placeholder={t("ShowLoan.text_field_enter_your_address")} type={"text"} @@ -753,17 +771,17 @@ const UpdateForm = ({LoanDetails, LoanId}) => { width: {xs: "100%", sm: "30%", md: "25%"}, }} > - {/*}*/} - {/* disabled={props.isSubmitting || !props.dirty || !props.isValid}*/} - {/*>*/} - {/* {t("ShowLoan.button_submit")}*/} - {/**/} + From 413b6bca2e360bcd912e2537f347ff3b90bac482 Mon Sep 17 00:00:00 2001 From: Mohammad Jalali Date: Sun, 7 Jan 2024 16:57:51 +0330 Subject: [PATCH 2/2] debug and check with data --- public/locales/fa/app.json | 12 +++++++ .../dashboard/navgan/show/form/UpdateForm.jsx | 31 ++++++++++--------- 2 files changed, 29 insertions(+), 14 deletions(-) diff --git a/public/locales/fa/app.json b/public/locales/fa/app.json index 696dcb5..261793b 100644 --- a/public/locales/fa/app.json +++ b/public/locales/fa/app.json @@ -231,6 +231,18 @@ "update_loan_page": "ویرایش وام | {person_type}", "loading_show_component": "درحال دریافت اطلاعات درخواست...", "tel_number_max": "شماره ثابت می بایست 11 رقم باشد", + "national_code_number": "کد ملی می بایست شامل اعداد باشد", + "national_code_positive": "کد ملی می بایست مثبت باشد", + "national_code_max": "کد ملی می بایست 10 رقم باشد", + "national_number_positive": "شناسه ملی می بایست مثبت باشد", + "error_message_national_id": "لطفا کد ملی خود را وارد کنید!", + "national_number_number": "شناسه ملی می بایست شامل اعداد باشد", + "national_number_max": "شناسه ملی می بایست 11 رقم باشد", + "error_message_national_number": "لطفا شناسه ملی خود را وارد کنید!", + "error_message_shenasname_serial": "لطفا سریال پشت کارت ملی خود را وارد کنید!", + "error_message_tracking_code": "لطفا کد رهگیری کارت ملی خود را وارد کنید!", + "text_field_shenasname_serial": "سریال پشت کارت ملی", + "text_field_national_trackin_code": "کد رهگیری کارت ملی", "text_field_national_id": "کد ملی", "text_field_postal_code": "کد پستی", "text_field_national_serial_number": "سریال پشت کارت ملی", diff --git a/src/components/dashboard/navgan/show/form/UpdateForm.jsx b/src/components/dashboard/navgan/show/form/UpdateForm.jsx index d844bdd..c4d4434 100644 --- a/src/components/dashboard/navgan/show/form/UpdateForm.jsx +++ b/src/components/dashboard/navgan/show/form/UpdateForm.jsx @@ -52,7 +52,7 @@ const UpdateForm = ({LoanDetails, LoanId}) => { education_id: LoanDetails.education_id, occupation_id: LoanDetails.occupation_id, ..._shenase_meli, national_serial_number: LoanDetails.national_serial_number ?? "", - national_tracking_code: LoanDetails.national_card_tracking_code ?? "" + national_tracking_code: LoanDetails.national_tracking_code ?? "" }; // end initial values @@ -79,23 +79,25 @@ const UpdateForm = ({LoanDetails, LoanId}) => { occupation_id: Yup.string().required(t("ShowLoan.error_message_occupation_id")), education_id: Yup.string().required(t("ShowLoan.error_message_education_id")), birthday: Yup.string().required(t("ShowLoan.error_message_date_of_birth")), - national_id: 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_id: Yup.mixed().when('is_legal_person', ([is_legal_person], schema) => { + return is_legal_person === 1 ? schema + .test("is-number", `${t("ShowLoan.national_code_number")}`, (value) => !isNaN(value)) + .test("positive", `${t("ShowLoan.national_code_positive")}`, (value) => value >= 0) + .test("max", `${t("ShowLoan.national_code_max")}`, (value) => value && value.toString().length === 10) + .required(t("ShowLoan.error_message_national_id")) : schema; + }), shenase_meli: Yup.mixed().when('is_legal_person', ([is_legal_person], schema) => { return is_legal_person === 1 ? 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; + .test("is-number", `${t("ShowLoan.national_number_number")}`, (value) => !isNaN(value)) + .test("positive", `${t("ShowLoan.national_number_positive")}`, (value) => value >= 0) + .test("max", `${t("ShowLoan.national_number_max")}`, (value) => value && value.toString().length === 11) + .required(t("ShowLoan.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 === 'serial_number' ? schema.required(t("LoanRequest.error_message_shenasname_serial")) : 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("LoanRequest.error_message_tracking_code")) : schema + return national_serial_number_or_tracking_code === 'tracking_code' ? schema.required(t("ShowLoan.error_message_tracking_code")) : schema }) }); // end validation @@ -428,10 +430,10 @@ const UpdateForm = ({LoanDetails, LoanId}) => { }} > - {t("LoanRequest.text_field_shenasname_serial")} + {t("ShowLoan.text_field_shenasname_serial")} - {t("LoanRequest.text_field_national_trackin_code")} + {t("ShowLoan.text_field_national_trackin_code")} @@ -771,6 +773,7 @@ const UpdateForm = ({LoanDetails, LoanId}) => { width: {xs: "100%", sm: "30%", md: "25%"}, }} > + {console.log(props.errors)}