diff --git a/public/locales/fa/app.json b/public/locales/fa/app.json index 6031f3e..0c9d741 100644 --- a/public/locales/fa/app.json +++ b/public/locales/fa/app.json @@ -125,8 +125,8 @@ "error_message_vehicle_type": "لطفا نوع وسیله نقلیه خود را وارد کنید!", "error_message_plate_number": "لطفا شماره پلاک خود را وارد کنید!", "error_message_navgan_id": "لطفا کد ناوگان خود را وارد کنید!", - "error_message_province": "لطفا استان خود را وارد کنید!", - "error_message_national_code": "لطفا کد ملی خود را وارد کنید!", + "error_message_province_id": "لطفا استان خود را وارد کنید!", + "error_message_national_id": "لطفا کد ملی خود را وارد کنید!", "error_message_shenasname_id": "لطفا شماره شناسنامه خود را وارد کنید!", "text_field_phone_number": "شماره تلفن", "text_field_enter_your_phone_number": "شماره تلفن خود را وارد کنید", @@ -134,14 +134,14 @@ "text_field_enter_your_name": "نام خود را وارد کنید", "text_field_vehicle_type": "نام وسیله نقلیه", "text_field_enter_your_vehicle_type": "نام وسیله نقلیه خود را وارد کنید", - "text_field_province": "استان", + "text_field_province_id": "استان", "text_field_loading_provinces_list": "درحال دریافت استان ها", "text_field_error_fetching_provinces": "خطا در دریافت استان ها", - "text_field_enter_your_province": "استان خود را وارد کنید", + "text_field_enter_your_province_id": "استان خود را وارد کنید", "text_field_navgan_id": "شماره ناوگان", "text_field_enter_your_navgan_id": "شماره ناوگان خود را وارد کنید", - "text_field_national_code": "کد ملی", - "text_field_enter_your_national_code": "کد ملی خود را وارد کنید", + "text_field_national_id": "کد ملی", + "text_field_enter_your_national_id": "کد ملی خود را وارد کنید", "text_field_shenasname_id": "شماره شناسنامه", "text_field_enter_your_shenasname_id": "شماره شناسنامه خود را وارد کنید", "text_field_plate_number": "شماره پلاک", @@ -158,7 +158,8 @@ "file_field_payan_khedmat_image": "تصویر کارت پایان خدمت", "error_message_national_card_image": "تصویر کارت ملی خود را وارد کنید", "error_message_shenasname_image": "تصویر شناسنامه خود را وارد کنید", - "error_message_payan_khedmat_image": "تصویر کارت پایان خدمت خود را وارد کنید" + "error_message_payan_khedmat_image": "تصویر کارت پایان خدمت خود را وارد کنید", + "add_loan_request_permission": "اکنون امکان ثبت درخواست جدید برای شما مقدور نیست" }, "EditLoanRequest": { "edit_loan_request_page": "ویرایش درخواست وام" diff --git a/src/components/dashboard/refahi/add-request-loan/accessibility/index.jsx b/src/components/dashboard/refahi/add-request-loan/accessibility/index.jsx new file mode 100644 index 0000000..3618d0b --- /dev/null +++ b/src/components/dashboard/refahi/add-request-loan/accessibility/index.jsx @@ -0,0 +1,32 @@ +import {Button, Typography} from "@mui/material"; +import {useTranslations} from "next-intl"; +import CenterLayout from "@/layouts/CenterLayout"; +import {useRouter} from "next/router"; +import {NextLinkComposed} from "@/core/components/LinkRouting"; + +const AccessibilityComponent = () => { + const t = useTranslations(); + const router = useRouter(); + + return ( + + + {t("LoanRequest.add_loan_request_permission")} + + + + ); +}; + +export default AccessibilityComponent; diff --git a/src/components/dashboard/refahi/add-request-loan/forms/AddForm.jsx b/src/components/dashboard/refahi/add-request-loan/forms/AddForm.jsx index 4c67ee3..4051854 100644 --- a/src/components/dashboard/refahi/add-request-loan/forms/AddForm.jsx +++ b/src/components/dashboard/refahi/add-request-loan/forms/AddForm.jsx @@ -20,18 +20,20 @@ import {useTranslations} from "next-intl"; import * as Yup from "yup"; import useRequest from "@/lib/app/hooks/useRequest"; import useProvince from "@/lib/app/hooks/useProvince"; +import {useRouter} from "next/router"; const AddFormComponent = () => { const t = useTranslations(); const requestServer = useRequest() - const {provinceList, isLoadingProvinceList, errorProvinceList} = useProvince() + const {provinceList, isLoadingProvinceList, errorProvinceList} = useProvince(); + const router = useRouter(); // initial values, validation and request action of form const initialValues = { name: "", phone_number: "", - province: "", - national_code: "", + province_id: "", + national_id: "", shenasname_id: "", sherkat_naft_doc: null, estate_doc: null, @@ -46,9 +48,9 @@ const AddFormComponent = () => { phone_number: Yup.string().required( t("LoanRequest.error_message_phone_number") ), - province: Yup.string().required(t("LoanRequest.error_message_province")), - national_code: Yup.string().required( - t("LoanRequest.error_message_national_code") + province_id: Yup.string().required(t("LoanRequest.error_message_province_id")), + national_id: Yup.string().required( + t("LoanRequest.error_message_national_id") ), shenasname_id: Yup.string().required( t("LoanRequest.error_message_shenasname_id") @@ -64,8 +66,8 @@ const AddFormComponent = () => { const formData = new FormData(); formData.append("name", values.name); formData.append("phone_number", values.phone_number); - formData.append("province_id", values.province); - formData.append("national_id", values.national_code); + 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 != null) formData.append("sherkat_naft_doc", values.sherkat_naft_doc); @@ -81,6 +83,7 @@ const AddFormComponent = () => { formData.append("payan_khedmat_image", values.payan_khedmat_image); requestServer(SEND_LOAN_REQUEST_WELFARE, "post", {auth: true, data: formData}) .then(function (response) { + router.replace('/dashboard/refahi/followUp-loan'); }) .catch(function (error) { }) @@ -179,18 +182,18 @@ const AddFormComponent = () => { }} > - {t("LoanRequest.text_field_province")} + {t("LoanRequest.text_field_province_id")} - {props.touched.province && props.errors.province ? props.errors.province : ""} + {props.touched.province_id && props.errors.province_id ? props.errors.province_id : ""} @@ -237,21 +240,21 @@ const AddFormComponent = () => { diff --git a/src/components/dashboard/refahi/add-request-loan/index.jsx b/src/components/dashboard/refahi/add-request-loan/index.jsx index feb8df0..bc82ac7 100644 --- a/src/components/dashboard/refahi/add-request-loan/index.jsx +++ b/src/components/dashboard/refahi/add-request-loan/index.jsx @@ -1,16 +1,15 @@ import DashboardLayouts from "@/layouts/dashboardLayouts"; import useUser from "@/lib/app/hooks/useUser"; -import {Box, Chip, Divider} from "@mui/material"; import {useTranslations} from "next-intl"; import AddFormComponent from "@/components/dashboard/refahi/add-request-loan/forms/AddForm"; +import AccessibilityComponent from "@/components/dashboard/refahi/add-request-loan/accessibility"; const LoanRequestComponent = () => { const t = useTranslations(); const {user} = useUser(); - return ( - + {user.can_request_a_new_loan ? : } ); }; diff --git a/src/components/dashboard/refahi/edit-request-loan/forms/EditForm.jsx b/src/components/dashboard/refahi/edit-request-loan/forms/EditForm.jsx index 9ea22c2..36f5aa0 100644 --- a/src/components/dashboard/refahi/edit-request-loan/forms/EditForm.jsx +++ b/src/components/dashboard/refahi/edit-request-loan/forms/EditForm.jsx @@ -1,72 +1,23 @@ 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 {UPDATE_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 EditFormComponent = ({provinceList, initialValues}) => { 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({ @@ -74,8 +25,8 @@ const EditFormComponent = () => { 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")), + province_id: Yup.string().required(t("LoanRequest.error_message_province_id")), + national_id: Yup.string().required(t("LoanRequest.error_message_national_id")), 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")), @@ -205,7 +156,7 @@ const EditFormComponent = () => { > { name="national_id" variant="outlined" size="small" - label={t("LoanRequest.text_field_national_code")} + label={t("LoanRequest.text_field_national_id")} placeholder={t( - "LoanRequest.text_field_enter_your_national_code" + "LoanRequest.text_field_enter_your_national_id" )} type={"text"} error={ @@ -307,7 +258,7 @@ const EditFormComponent = () => { setFieldValue={props.setFieldValue} default_image={initialValues.sherkat_naft_doc} fieldName="sherkat_naft_doc" - imageAlt={t("app_name")} + imageAlt={t("LoanRequest.file_field_sherkat_naft_doc")} label={t("LoanRequest.file_field_sherkat_naft_doc")} enableDelete={false} error={ @@ -326,7 +277,7 @@ const EditFormComponent = () => { setFieldValue={props.setFieldValue} default_image={initialValues.estate_doc} fieldName="estate_doc" - imageAlt={t("app_name")} + imageAlt={t("LoanRequest.file_field_estate_doc")} label={t("LoanRequest.file_field_estate_doc")} enableDelete={false} error={ @@ -345,7 +296,7 @@ const EditFormComponent = () => { setFieldValue={props.setFieldValue} default_image={initialValues.agreement_doc} fieldName="agreement_doc" - imageAlt={t("app_name")} + imageAlt={t("LoanRequest.file_field_agreement_doc")} label={t("LoanRequest.file_field_agreement_doc")} enableDelete={false} error={ @@ -364,7 +315,7 @@ const EditFormComponent = () => { setFieldValue={props.setFieldValue} default_image={initialValues.shenasname_image} fieldName="shenasname_image" - imageAlt={t("app_name")} + imageAlt={t("LoanRequest.file_field_shenasname_image")} label={t("LoanRequest.file_field_shenasname_image")} enableDelete={false} error={ @@ -383,7 +334,7 @@ const EditFormComponent = () => { setFieldValue={props.setFieldValue} default_image={initialValues.payan_khedmat_image} fieldName="payan_khedmat_image" - imageAlt={t("app_name")} + imageAlt={t("LoanRequest.file_field_payan_khedmat_image")} label={t("LoanRequest.file_field_payan_khedmat_image")} enableDelete={false} error={ diff --git a/src/components/dashboard/refahi/edit-request-loan/index.jsx b/src/components/dashboard/refahi/edit-request-loan/index.jsx index 4be62ff..89de937 100644 --- a/src/components/dashboard/refahi/edit-request-loan/index.jsx +++ b/src/components/dashboard/refahi/edit-request-loan/index.jsx @@ -1,16 +1,80 @@ import DashboardLayouts from "@/layouts/dashboardLayouts"; -import useUser from "@/lib/app/hooks/useUser"; -import {useTranslations} from "next-intl"; import EditFormComponent from "@/components/dashboard/refahi/edit-request-loan/forms/EditForm"; +import {useEffect, useState} from "react"; +import {DETAILS_LOAN_REQUEST_WELFARE, GET_PROVINCE_LIST} from "@/core/data/apiRoutes"; +import useLoading from "@/lib/app/hooks/useLoading"; +import useRequest from "@/lib/app/hooks/useRequest"; +import {useRouter} from "next/router"; +import {log} from "next/dist/server/typescript/utils"; const LoanRequestComponent = () => { - const t = useTranslations(); - const {user} = useUser(); + const requestServer = useRequest(); + const {setLoadingPage} = useLoading(); + const router = useRouter(); + + 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(() => { + setLoadingPage(false); + }); + }, []); + + // get form data + useEffect(() => { + if (!provinceList) return; + setLoadingPage(true); + 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, + state_id: item.state_id + }; + setInitialValues(formattedData); + }) + .catch(() => { + setLoadingPage(false); + }); + }, [provinceList, router]); + + // Redirect to /dashboard/refahi/followUp-loan if state_id is not 7 + useEffect(() => { + if (!initialValues) return + if (initialValues.state_id === 7) return + + router.replace('/dashboard/refahi/followUp-loan'); + }, [initialValues]); return ( - - - + <> + {initialValues && initialValues.state_id === 7 && ( + + + + )} + ); };