diff --git a/public/locales/fa/app.json b/public/locales/fa/app.json
index c9645ab..152cef7 100644
--- a/public/locales/fa/app.json
+++ b/public/locales/fa/app.json
@@ -127,6 +127,11 @@
"change_phone_number": "تغییر شماره",
"complete_information": "مشخصات"
},
+ "RegisterDeadline": {
+ "before": "ثبت نام هنوز شروع نشده",
+ "after": "زمان ثبت نام به اتمام رسید",
+ "soon": "ثبت نام به زودی آغاز میگردد"
+ },
"Dashboard": {
"dashboard_page": "داشبورد",
"go_to_add_request_loan": "درخواست تسهیلات نوسازی ناوگان",
diff --git a/src/components/dashboard/navgan/past-add-request-loan/forms/AddForm.jsx b/src/components/dashboard/navgan/past-add-request-loan/forms/AddForm.jsx
deleted file mode 100644
index c8cdcbb..0000000
--- a/src/components/dashboard/navgan/past-add-request-loan/forms/AddForm.jsx
+++ /dev/null
@@ -1,616 +0,0 @@
-import SelectBox from "@/core/components/SelectBox";
-import DataSaverOnIcon from "@mui/icons-material/DataSaverOn";
-import {
- Box,
- Button,
- Checkbox,
- 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 {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";
-
-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: "",
- vehicle_type: "",
- province_id: "",
- city_id: "",
- navgan_id: "",
- national_id: "",
- national_number: "",
- national_serial_number: "",
- national_card_tracking_code: "",
- national_serial_number_or_tracking_code: "national_serial_number",
- postal_code: "",
- navgan_type: "",
- plate_part1: "",
- plate_part2: "الف",
- plate_part3: "",
- plate_part4: "",
- address: "",
- birthday: "",
- 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")),
- vehicle_type: Yup.string().required(t("LoanRequest.error_message_vehicle_type")),
- 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")),
- postal_code: Yup.mixed()
- .test("max", `${t("LoanRequest.postal_code_max")}`, (value) => value.toString().length === 10)
- .required(t("LoanRequest.error_message_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")),
- 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_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
- }),
- 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: values.person_type === 'legal' ? 1 : 0,
- telephone_number: values.telephone_number,
- national_id: values.national_id,
- vehicle_type: values.vehicle_type,
- province_id: values.province_id,
- city_id: values.city_id,
- navgan_id: values.navgan_id,
- postal_code: values.postal_code,
- navgan_type: values.navgan_type,
- 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 (<>
- {finishLoanRequest ? (
-
-
- {t("LoanRequest.finish_loan_request")}
-
-
-
- ) : (<>
-
-
- {
- if (value === null) return
- formik.handleChange({
- target: {
- name: "person_type", value: value,
- },
- })
- }}
- >
-
- {t("LoanRequest.real_person")}
-
-
- {t("LoanRequest.legal_person")}
-
-
-
-
- {
- const inputValue = event.target.value;
- if (isNaN(Number(inputValue))) {
- return;
- }
- formik.handleChange({
- target: {
- name: "national_id", 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
- />
-
-
-
- {
- 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
- />
-
-
-
-
-
- {
- 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' ? (
-
-
- ) : (
-
- )}
-
-
-
-
-
-
-
- {
- 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")}`}/>
-
-
-
-
-
-
- >)}
- >);
-};
-
-export default AddFormComponent;
diff --git a/src/components/dashboard/navgan/past-add-request-loan/index.jsx b/src/components/dashboard/navgan/past-add-request-loan/index.jsx
deleted file mode 100644
index 06ad301..0000000
--- a/src/components/dashboard/navgan/past-add-request-loan/index.jsx
+++ /dev/null
@@ -1,23 +0,0 @@
-import {Box, Chip, Divider} from "@mui/material";
-import {useTranslations} from "next-intl";
-import AddFormComponent from "@/components/dashboard/navgan/past-add-request-loan/forms/AddForm";
-import {CenterLayout, useUser} from "@witel/webapp-builder";
-
-const LoanRequestComponent = () => {
- const t = useTranslations();
-
- return (
- <>
-
-
-
-
-
-
- >
- );
-};
-
-export default LoanRequestComponent;
diff --git a/src/middlewares/Deadline.jsx b/src/middlewares/Deadline.jsx
deleted file mode 100644
index bce5db3..0000000
--- a/src/middlewares/Deadline.jsx
+++ /dev/null
@@ -1,41 +0,0 @@
-import {CenterLayout, FullPageLayout, useConfig} from "@witel/webapp-builder";
-import moment from "jalali-moment";
-import SvgMaintenance from "@/core/components/svgs/SvgMaintenance";
-import {Typography} from "@mui/material";
-
-const DeadlineMiddleware = ({children, type = '', withMessage = false, serverToday}) => {
- const {config} = useConfig()
- const middleware = config.deadlines[type]
-
- if (!middleware) return children
-
- const fromDate = moment(middleware.date.from, 'jYYYY/jMM/jDD')
- const toDate = moment(middleware.date.to, 'jYYYY/jMM/jDD')
- const today = moment(serverToday)
-
- if (today.isBetween(fromDate, toDate, null, '[]')) {
- return children
- } else if (today.isAfter(toDate, null)) {
- if (!withMessage) return
- return (
-
-
-
- {middleware.messages.after || ''}
-
-
- )
- } else if (today.isBefore(fromDate, null)) {
- if (!withMessage) return
- return (
-
-
-
- {middleware.messages.before || ''}
-
-
- )
- }
-}
-
-export default DeadlineMiddleware
\ No newline at end of file
diff --git a/src/middlewares/RegisterDeadline.jsx b/src/middlewares/RegisterDeadline.jsx
new file mode 100644
index 0000000..c165913
--- /dev/null
+++ b/src/middlewares/RegisterDeadline.jsx
@@ -0,0 +1,49 @@
+import { CenterLayout, FullPageLayout, useConfig } from "@witel/webapp-builder";
+import moment from "jalali-moment";
+import SvgMaintenance from "@/core/components/svgs/SvgMaintenance";
+import { Typography } from "@mui/material";
+import { useTranslations } from "next-intl";
+
+const RegisterDeadlineMiddleware = ({ children, serverToday }) => {
+ const { config } = useConfig();
+ const t = useTranslations();
+
+ const fromDate = moment(config.navgan_registration_start_date, "YYYY/MM/DD HH:mm:ss");
+ const toDate = moment(config.navgan_registration_end_date, "YYYY/MM/DD HH:mm:ss");
+ const today = moment(serverToday);
+
+ if (config.navgan_registration_status) {
+ if (today.isBetween(fromDate, toDate, null, "[]")) {
+ return children;
+ } else if (today.isAfter(toDate, null)) {
+ return (
+
+
+
+ {t("RegisterDeadline.after")}
+
+
+ );
+ } else if (today.isBefore(fromDate, null)) {
+ return (
+
+
+
+ {t("RegisterDeadline.before")}
+
+
+ );
+ }
+ } else {
+ return (
+
+
+
+ {t("RegisterDeadline.soon")}
+
+
+ );
+ }
+};
+
+export default RegisterDeadlineMiddleware;
diff --git a/src/pages/dashboard/navgan/add-request-loan/index.jsx b/src/pages/dashboard/navgan/add-request-loan/index.jsx
index d413ad0..16dfaf2 100644
--- a/src/pages/dashboard/navgan/add-request-loan/index.jsx
+++ b/src/pages/dashboard/navgan/add-request-loan/index.jsx
@@ -1,19 +1,21 @@
-import {globalServerProps} from "@/core/utils/globalServerProps";
-import DeadlineMiddleware from "@/middlewares/Deadline";
import LoanRequestComponent from "@/components/dashboard/navgan/add-request-loan";
+import { globalServerProps } from "@/core/utils/globalServerProps";
+import RegisterDeadlineMiddleware from "@/middlewares/RegisterDeadline";
export default function AddLoanRequest(props) {
- return (
-
- );
+ return (
+
+
+
+ );
}
-export async function getServerSideProps({req, locale}) {
+export async function getServerSideProps({ req, locale }) {
return {
props: {
- ...await globalServerProps({req, locale}),
+ ...(await globalServerProps({ req, locale })),
title: "LoanRequest.loan_request_page",
- layout: {name: 'DashboardLayout', props: {permissions: ["can_request_navgan_loan"]}}
+ layout: { name: "DashboardLayout", props: { permissions: ["can_request_navgan_loan"] } },
},
};
}
diff --git a/src/pages/dashboard/navgan/past-add-request-loan/index.jsx b/src/pages/dashboard/navgan/past-add-request-loan/index.jsx
deleted file mode 100644
index 904c461..0000000
--- a/src/pages/dashboard/navgan/past-add-request-loan/index.jsx
+++ /dev/null
@@ -1,19 +0,0 @@
-import LoanRequestComponent from "src/components/dashboard/navgan/past-add-request-loan";
-import {globalServerProps} from "@/core/utils/globalServerProps";
-import DeadlineMiddleware from "@/middlewares/Deadline";
-
-export default function AddLoanRequest(props) {
- return (
-
- );
-}
-
-export async function getServerSideProps({req, locale}) {
- return {
- props: {
- ...await globalServerProps({req, locale}),
- title: "LoanRequest.loan_request_page",
- layout: {name: 'DashboardLayout', props: {permissions: ["can_request_navgan_loan"]}}
- },
- };
-}