From 967cabfe2fb823321f70d4fd01581d803198713d Mon Sep 17 00:00:00 2001 From: Amirhossein Mahmoodi Date: Sat, 11 May 2024 14:01:22 +0330 Subject: [PATCH 1/2] change register deadline --- public/locales/fa/app.json | 5 + .../past-add-request-loan/forms/AddForm.jsx | 616 ------------------ .../navgan/past-add-request-loan/index.jsx | 23 - src/middlewares/Deadline.jsx | 41 -- src/middlewares/RegisterDeadline.jsx | 51 ++ .../navgan/add-request-loan/index.jsx | 18 +- .../navgan/past-add-request-loan/index.jsx | 19 - 7 files changed, 66 insertions(+), 707 deletions(-) delete mode 100644 src/components/dashboard/navgan/past-add-request-loan/forms/AddForm.jsx delete mode 100644 src/components/dashboard/navgan/past-add-request-loan/index.jsx delete mode 100644 src/middlewares/Deadline.jsx create mode 100644 src/middlewares/RegisterDeadline.jsx delete mode 100644 src/pages/dashboard/navgan/past-add-request-loan/index.jsx 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..a103325 --- /dev/null +++ b/src/middlewares/RegisterDeadline.jsx @@ -0,0 +1,51 @@ +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); + + console.log(config.navgan_registration_status); + + 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"]}} - }, - }; -} From 715f3dc13e25f97a2f1520a2bb2dda17f368092e Mon Sep 17 00:00:00 2001 From: Amirhossein Mahmoodi Date: Sat, 11 May 2024 14:01:44 +0330 Subject: [PATCH 2/2] change register deadline --- src/middlewares/RegisterDeadline.jsx | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/middlewares/RegisterDeadline.jsx b/src/middlewares/RegisterDeadline.jsx index a103325..c165913 100644 --- a/src/middlewares/RegisterDeadline.jsx +++ b/src/middlewares/RegisterDeadline.jsx @@ -12,8 +12,6 @@ const RegisterDeadlineMiddleware = ({ children, serverToday }) => { const toDate = moment(config.navgan_registration_end_date, "YYYY/MM/DD HH:mm:ss"); const today = moment(serverToday); - console.log(config.navgan_registration_status); - if (config.navgan_registration_status) { if (today.isBetween(fromDate, toDate, null, "[]")) { return children;