diff --git a/public/locales/fa/app.json b/public/locales/fa/app.json index af40ec3..950e384 100644 --- a/public/locales/fa/app.json +++ b/public/locales/fa/app.json @@ -45,7 +45,7 @@ "button_back_dashboard": "بازگشت به صفحه اصلی" }, "Titles": { - "title_login_page": "صفحه ورود", + "title_login_page": "ورود به سامانه", "title_register_page": "صفحه ثبت نام", "title_login_navy_page": "ورود اعضای ناوگان", "title_login_welfare_services_page": "ورود اعضای خدمات رفاهی", @@ -124,7 +124,12 @@ "loan_request_correction": "اصلاح درخواست", "loan_request_detail": "مشاهده جزئیات", "request_number": "درخواست شماره", - "no_request_found": "درخواستی یافت نشد" + "no_request_found": "درخواستی یافت نشد", + "loan_unique_code": "کد یکتا", + "loan_date": "تاریخ درخواست", + "loan_status": "وضعیت", + "loan_bank_branch": "اطلاعات شعبه", + "loan_details": "نمایش" }, "LoanRequest": { "loan_request_page": "ثبت درخواست وام", diff --git a/src/components/dashboard/navgan/followUp-loan/index.jsx b/src/components/dashboard/navgan/followUp-loan/index.jsx index de3176c..558babb 100644 --- a/src/components/dashboard/navgan/followUp-loan/index.jsx +++ b/src/components/dashboard/navgan/followUp-loan/index.jsx @@ -1,14 +1,12 @@ -import DashboardLayouts from "@/layouts/dashboardLayouts"; import { Grid, Stack, } from "@mui/material"; import {useEffect, useState} from "react"; import {SHOW_LOAN_REQUEST_NAVGAN} from "@/core/data/apiRoutes"; -import useLoading from "@/lib/app/hooks/useLoading"; -import useRequest from "@/lib/app/hooks/useRequest"; import moment from "jalali-moment"; import RequestCard from "@/components/dashboard/navgan/followUp-loan/RequestCard"; +import {useLoading, useRequest} from "@witel/webapp-builder"; const LoanFollowUpComponent = () => { const requestServer = useRequest(); @@ -34,7 +32,6 @@ const LoanFollowUpComponent = () => { }, []); return ( - { ))} - ); }; diff --git a/src/components/first/LoanRegister.jsx b/src/components/first/LoanRegister.jsx index 7ba93fd..810c5da 100644 --- a/src/components/first/LoanRegister.jsx +++ b/src/components/first/LoanRegister.jsx @@ -30,18 +30,6 @@ const LoanRegister = () => { padding: 1 }}> - - {t("firstPage.login_button")} - - - - - {t("firstPage.register_button")} diff --git a/src/components/login/SendToken.jsx b/src/components/login/SendToken.jsx index 2a2f287..044ede9 100644 --- a/src/components/login/SendToken.jsx +++ b/src/components/login/SendToken.jsx @@ -1,9 +1,6 @@ import ResendToken from "@/core/components/ResendToken"; import StyledForm from "@/core/components/StyledForm"; import {LOGIN} from "@/core/data/apiRoutes"; -import CenterLayout from "@/layouts/CenterLayout"; -import FullPageLayout from "@/layouts/FullPageLayout"; -import useUser from "@/lib/app/hooks/useUser"; import ChangeCircleIcon from "@mui/icons-material/ChangeCircle"; import LoginIcon from "@mui/icons-material/Login"; import {Box, Button, Container, Grid, Paper, Stack, TextField, Typography,} from "@mui/material"; @@ -11,8 +8,8 @@ import {Field, Formik} from "formik"; import {useTranslations} from "next-intl"; import * as Yup from "yup"; import SvgLogin from "@/core/components/svgs/SvgLogin"; -import useRequest from "@/lib/app/hooks/useRequest"; import AutoSubmit from "@/core/components/AutoSubmit"; +import {CenterLayout, FullPageLayout, useRequest, useUser} from "@witel/webapp-builder"; const SendTokenComponent = ({ PhoneNumber, diff --git a/src/components/login/SendUserData.jsx b/src/components/login/SendUserData.jsx index 6743799..d791869 100644 --- a/src/components/login/SendUserData.jsx +++ b/src/components/login/SendUserData.jsx @@ -1,8 +1,5 @@ -import LinkRouting from "@/core/components/LinkRouting"; import StyledForm from "@/core/components/StyledForm"; import {SEND_OTP_TOKEN} from "@/core/data/apiRoutes"; -import CenterLayout from "@/layouts/CenterLayout"; -import FullPageLayout from "@/layouts/FullPageLayout"; import FingerprintIcon from "@mui/icons-material/Fingerprint"; import PersonAddIcon from "@mui/icons-material/PersonAdd"; import {Button, Container, Grid, Paper, Stack, TextField, Typography,} from "@mui/material"; @@ -11,7 +8,8 @@ import {useTranslations} from "next-intl"; import {useSearchParams} from "next/navigation"; import * as Yup from "yup"; import SvgLogin from "@/core/components/svgs/SvgLogin"; -import useRequest from "@/lib/app/hooks/useRequest"; +import {CenterLayout, FullPageLayout, LinkRouting, useRequest} from "@witel/webapp-builder"; + const SendUserDataComponent = ({ setOtpToken, @@ -97,21 +95,6 @@ const SendUserDataComponent = ({ flexDirection: {xs: "column-reverse", sm: "row"}, }} > - - - - - - - diff --git a/src/components/register/RequestOtp.jsx b/src/components/register/RequestOtp.jsx deleted file mode 100644 index a24aa4f..0000000 --- a/src/components/register/RequestOtp.jsx +++ /dev/null @@ -1,131 +0,0 @@ -import LinkRouting from "@/core/components/LinkRouting"; -import StyledForm from "@/core/components/StyledForm"; -import {SEND_OTP_TOKEN} from "@/core/data/apiRoutes"; -import CenterLayout from "@/layouts/CenterLayout"; -import FullPageLayout from "@/layouts/FullPageLayout"; -import FingerprintIcon from "@mui/icons-material/Fingerprint"; -import {Button, Container, Paper, Stack, TextField, Typography,} from "@mui/material"; -import {Field, Formik} from "formik"; -import {useTranslations} from "next-intl"; -import {useSearchParams} from "next/navigation"; -import * as Yup from "yup"; -import SvgLogin from "@/core/components/svgs/SvgLogin"; -import useRequest from "@/lib/app/hooks/useRequest"; - -const RequestOtpComponent = ({ - setOtpToken, - setPhoneNumber, - PhoneNumber, - setTimer, - initialTimerValue, - }) => { - const t = useTranslations(); - const requestServer = useRequest(); - - const searchParams = useSearchParams(); - const backUrlDecodedPath = searchParams.get("back_url"); - - const initialValues = { - phone_number: PhoneNumber, - }; - const validationSchema = Yup.object().shape({ - phone_number: Yup.string().required( - t("RegisterPage.error_message_phone_number") - ), - }); - - const handleSubmit = (values, props) => { - requestServer(SEND_OTP_TOKEN, "post", { - auth: false, data: { - phone_number: values.phone_number, - } - }) - .then(function (response) { - setPhoneNumber(values.phone_number); - setOtpToken(true); - setTimer(initialTimerValue); - }).catch(function (error) { - props.setSubmitting(false); - }); - }; - - return ( - - - - - - {(props) => ( - - - - - - {t("Titles.title_register_page")} - - - - - - - - - )} - - - - - - - {t("RegisterPage.link_routing_back_to")}{" "} - {backUrlDecodedPath - ? t("RegisterPage.link_routing_previuos_page") - : t("RegisterPage.link_routing_register")} - - - - ); -}; - -export default RequestOtpComponent; diff --git a/src/components/register/index.jsx b/src/components/register/index.jsx deleted file mode 100644 index eb11ad0..0000000 --- a/src/components/register/index.jsx +++ /dev/null @@ -1,90 +0,0 @@ -import LinkRouting, {NextLinkComposed} from "@/core/components/LinkRouting"; -import CenterLayout from "@/layouts/CenterLayout"; -import FullPageLayout from "@/layouts/FullPageLayout"; -import useUser from "@/lib/app/hooks/useUser"; -import {Box, Button, Grid, Stack} from "@mui/material"; -import {useTranslations} from "next-intl"; -import {useSearchParams} from "next/navigation"; -import SvgDashboard from "@/core/components/svgs/SvgDashboard"; - -const RegisterComponent = () => { - const t = useTranslations(); - const {isAuth} = useUser(); - - const searchParams = useSearchParams(); - const backUrlDecodedPath = searchParams.get("back_url"); - - return ( - - - - {isAuth ? ( - - ) : ( - - - - - - {/**/} - {/* */} - {/* {t("register_welfare_services")}*/} - {/* */} - {/**/} - - - )} - - - - {t("RegisterPage.link_routing_back_to")}{" "} - {backUrlDecodedPath - ? t("RegisterPage.link_routing_previuos_page") - : t("LoginPage.link_routing_main_page")} - - - - ); -}; - -export default RegisterComponent; diff --git a/src/components/register/navy/UserRegister.jsx b/src/components/register/navy/UserRegister.jsx deleted file mode 100644 index 9714636..0000000 --- a/src/components/register/navy/UserRegister.jsx +++ /dev/null @@ -1,176 +0,0 @@ -import StyledForm from "@/core/components/StyledForm"; -import {REGISTER} from "@/core/data/apiRoutes"; -import CenterLayout from "@/layouts/CenterLayout"; -import FullPageLayout from "@/layouts/FullPageLayout"; -import LoginIcon from "@mui/icons-material/Login"; -import ChangeCircleIcon from "@mui/icons-material/ChangeCircle"; -import {Box, Button, Chip, Container, Divider, Paper, Stack, TextField, Typography,} from "@mui/material"; -import {Field, Formik} from "formik"; -import {useTranslations} from "next-intl"; -import * as Yup from "yup"; -import ResendToken from "@/core/components/ResendToken"; -import useUser from "@/lib/app/hooks/useUser"; -import SvgRegister from "@/core/components/svgs/SvgRegister"; -import useRequest from "@/lib/app/hooks/useRequest"; -import AutoSubmit from "@/core/components/AutoSubmit"; - -const UserRegisterComponent = ({ - PhoneNumber, - setOtpToken, - initialTimerValue, - timer, - setTimer, - }) => { - const t = useTranslations(); - const {setToken} = useUser(); - const requestServer = useRequest(); - - const initialValues = { - type_id: "1", - verification_code: "", - phone_number: PhoneNumber, - national_id: "", - }; - - const validationSchema = Yup.object().shape({ - verification_code: Yup.string().required( - t("RegisterPage.error_message_verification_code") - ), - national_id: Yup.string().required( - t("RegisterPage.error_message_national_id") - ), - }); - - const handleSubmit = (values, props) => { - requestServer(REGISTER, "post", { - auth: false, data: { - type_id: values.type_id, - national_id: values.national_id, - phone_number: values.phone_number, - verification_code: values.verification_code, - } - }) - .then(function (response) { - setOtpToken(true); - setToken(response.data.token); - }).catch(function (error) { - props.setSubmitting(false); - }); - }; - - return ( - - - - - - {(props) => ( - - - - - - {t("register_navy")} - - - - - - {t("LoginPage.sent_token_to")}: {PhoneNumber} - - - - e.target.value.length <= 6 ? props.setFieldValue("verification_code", e.target.value) : ""} - /> - - - - - - - - - - - )} - - - - - - ); -}; - -export default UserRegisterComponent; diff --git a/src/components/register/navy/index.jsx b/src/components/register/navy/index.jsx deleted file mode 100644 index 9296f78..0000000 --- a/src/components/register/navy/index.jsx +++ /dev/null @@ -1,37 +0,0 @@ -import {useState} from "react"; -import RequestOtpComponent from "../RequestOtp"; -import UserRegisterComponent from "./UserRegister"; - -const NavyComponent = () => { - const [otpToken, setOtpToken] = useState(false); - const [PhoneNumber, setPhoneNumber] = useState(""); - - // For Resend Token (read ResendToken Component Doc) - const initialTimerValue = 30; - const [timer, setTimer] = useState(initialTimerValue); - // End For Resend Token - - if (!otpToken) { - return ( - - ); - } else { - return ( - - ); - } -}; - -export default NavyComponent; diff --git a/src/components/register/welfare-services/UserRegister.jsx b/src/components/register/welfare-services/UserRegister.jsx deleted file mode 100644 index a043a53..0000000 --- a/src/components/register/welfare-services/UserRegister.jsx +++ /dev/null @@ -1,174 +0,0 @@ -import StyledForm from "@/core/components/StyledForm"; -import {REGISTER} from "@/core/data/apiRoutes"; -import CenterLayout from "@/layouts/CenterLayout"; -import FullPageLayout from "@/layouts/FullPageLayout"; -import LoginIcon from "@mui/icons-material/Login"; -import ChangeCircleIcon from "@mui/icons-material/ChangeCircle"; -import {Box, Button, Chip, Container, Divider, Paper, Stack, TextField, Typography,} from "@mui/material"; -import {Field, Formik} from "formik"; -import {useTranslations} from "next-intl"; -import * as Yup from "yup"; -import ResendToken from "@/core/components/ResendToken"; -import useUser from "@/lib/app/hooks/useUser"; -import SvgRegister from "@/core/components/svgs/SvgRegister"; -import useRequest from "@/lib/app/hooks/useRequest"; - -const UserRegisterComponent = ({ - PhoneNumber, - setOtpToken, - initialTimerValue, - timer, - setTimer, - }) => { - const t = useTranslations(); - const {setToken} = useUser(); - const requestServer = useRequest(); - - const initialValues = { - type_id: "2", - verification_code: "", - phone_number: PhoneNumber, - national_id: "", - }; - - const validationSchema = Yup.object().shape({ - verification_code: Yup.string().required( - t("RegisterPage.error_message_verification_code") - ), - national_id: Yup.string().required( - t("RegisterPage.error_message_national_id") - ), - }); - - const handleSubmit = (values, props) => { - requestServer(REGISTER, "post", { - auth: false, data: { - type_id: values.type_id, - national_id: values.national_id, - phone_number: values.phone_number, - verification_code: values.verification_code, - } - }) - .then(function (response) { - setOtpToken(true); - setToken(response.data.token); - }).catch(function (error) { - props.setSubmitting(false); - }); - }; - - return ( - - - - - - {(props) => ( - - - - - - {t("register_welfare_services")} - - - - - - {t("LoginPage.sent_token_to")}: {PhoneNumber} - - - - - - - - - - - - - - )} - - - - - - ); -}; - -export default UserRegisterComponent; diff --git a/src/components/register/welfare-services/index.jsx b/src/components/register/welfare-services/index.jsx deleted file mode 100644 index 322490f..0000000 --- a/src/components/register/welfare-services/index.jsx +++ /dev/null @@ -1,37 +0,0 @@ -import {useState} from "react"; -import RequestOtpComponent from "../RequestOtp"; -import UserRegisterComponent from "./UserRegister"; - -const WelfareServicesComponent = () => { - const [otpToken, setOtpToken] = useState(false); - const [PhoneNumber, setPhoneNumber] = useState(""); - - // For Resend Token (read ResendToken Component Doc) - const initialTimerValue = 30; - const [timer, setTimer] = useState(initialTimerValue); - // End For Resend Token - - if (!otpToken) { - return ( - - ); - } else { - return ( - - ); - } -}; - -export default WelfareServicesComponent; diff --git a/src/core/components/ResendToken.jsx b/src/core/components/ResendToken.jsx index 906581c..2216c99 100644 --- a/src/core/components/ResendToken.jsx +++ b/src/core/components/ResendToken.jsx @@ -1,11 +1,8 @@ -import Notifications from "@/core/components/notifications"; -import useDirection from "@/lib/app/hooks/useDirection"; import {Button} from "@mui/material"; -import axios from "axios"; import {useTranslations} from "next-intl"; import {useEffect} from "react"; import {LOGIN, SEND_OTP_TOKEN} from "../data/apiRoutes"; -import useRequest from "@/lib/app/hooks/useRequest"; +import {useDirection, useRequest} from "@witel/webapp-builder"; const ResendToken = ({initialTimerValue, timer, setTimer, PhoneNumber, disabled}) => { const t = useTranslations(); diff --git a/src/layouts/dashboard.jsx b/src/layouts/dashboard.jsx index 9883080..a814c9a 100644 --- a/src/layouts/dashboard.jsx +++ b/src/layouts/dashboard.jsx @@ -2,6 +2,7 @@ import {DashboardLayout as DashboardLayoutPure, useUser} from "@witel/webapp-bui import headerProfileItems from "@/core/data/headerProfileItems"; import sidebarMenu from "@/core/data/sidebarMenu"; import {GET_SIDEBAR_NOTIFICATION} from "@/core/data/apiRoutes"; +import UserInfo from "@/middlewares/UserInfo"; import {useTranslations} from "next-intl"; import moment from "jalali-moment"; @@ -12,14 +13,13 @@ const DashboardLayout = (props) => { return ( <> diff --git a/src/middlewares/UserInfo.jsx b/src/middlewares/UserInfo.jsx new file mode 100644 index 0000000..3f594c4 --- /dev/null +++ b/src/middlewares/UserInfo.jsx @@ -0,0 +1,9 @@ +import {useUser} from "@witel/webapp-builder"; + +const UserInfo = ({children}) => { + const {user} = useUser(); + const userAccess = user.profile_completed; + return userAccess ? <>{children} : ''; +}; + +export default UserInfo; diff --git a/src/pages/login.jsx b/src/pages/login.jsx index 63e88c7..39502a9 100644 --- a/src/pages/login.jsx +++ b/src/pages/login.jsx @@ -4,7 +4,7 @@ import {WithoutAuthMiddleware} from "@witel/webapp-builder"; export default function Login() { return ( - + ); diff --git a/src/pages/register/index.jsx b/src/pages/register/index.jsx deleted file mode 100644 index 3f078d7..0000000 --- a/src/pages/register/index.jsx +++ /dev/null @@ -1,22 +0,0 @@ -import RegisterComponent from "@/components/register"; -import {parse} from "next-useragent"; -import {WithoutAuthMiddleware} from "@witel/webapp-builder"; - -export default function Register() { - return ( - - - - ); -} - -export async function getServerSideProps({req, locale}) { - const {isBot} = parse(req.headers["user-agent"]); - return { - props: { - messages: (await import(`&/locales/${locale}/app.json`)).default, - title: "Titles.title_register_page", - isBot, - }, - }; -} diff --git a/src/pages/register/navy/index.jsx b/src/pages/register/navy/index.jsx deleted file mode 100644 index 2272d57..0000000 --- a/src/pages/register/navy/index.jsx +++ /dev/null @@ -1,22 +0,0 @@ -import NavyComponent from "@/components/register/navy"; -import WithoutAuthMiddleware from "@/middlewares/WithoutAuth"; -import {parse} from "next-useragent"; - -export default function Register() { - return ( - - - - ); -} - -export async function getServerSideProps({req, locale}) { - const {isBot} = parse(req.headers["user-agent"]); - return { - props: { - messages: (await import(`&/locales/${locale}/app.json`)).default, - title: "Titles.title_register_navy_page", - isBot, - }, - }; -} diff --git a/src/pages/register/welfare-services/index.jsx b/src/pages/register/welfare-services/index.jsx deleted file mode 100644 index ce05a4f..0000000 --- a/src/pages/register/welfare-services/index.jsx +++ /dev/null @@ -1,21 +0,0 @@ -import WithoutAuthMiddleware from "@/middlewares/WithoutAuth"; -import {parse} from "next-useragent"; - -export default function Register() { - return ( - - {/**/} - - ); -} - -export async function getServerSideProps({req, locale}) { - const {isBot} = parse(req.headers["user-agent"]); - return { - props: { - messages: (await import(`&/locales/${locale}/app.json`)).default, - title: "Titles.title_register_welfare_services_page", - isBot, - }, - }; -}