diff --git a/public/locales/fa/app.json b/public/locales/fa/app.json index b1e8c16..af54719 100644 --- a/public/locales/fa/app.json +++ b/public/locales/fa/app.json @@ -7,7 +7,7 @@ "login_navy": "ورود اعضای ناوگان", "register_navy": "ثبت نام اعضای ناوگان", "login_welfare_services": "ورود اعضای خدمات رفاهی", - "user_welfare_services": "خدمات رفاهی", + "register_welfare_services": "ثبت نام اعضای خدمات رفاهی", "user_navy": "ناوگان", "header": { "open_profile": "پروفایل", diff --git a/src/components/login-welfare-services/SendUserData.jsx b/src/components/login-welfare-services/SendUserData.jsx new file mode 100644 index 0000000..ec8072f --- /dev/null +++ b/src/components/login-welfare-services/SendUserData.jsx @@ -0,0 +1,164 @@ +// import Notifications from "@/core/components/notifications"; +import LinkRouting from "@/core/components/LinkRouting"; +import StyledForm from "@/core/components/StyledForm"; +import { LOGIN_SEND_OTP_TOKEN } from "@/core/data/apiRoutes"; +import CenterLayout from "@/layouts/CenterLayout"; +import FullPageLayout from "@/layouts/FullPageLayout"; +import useDirection from "@/lib/app/hooks/useDirection"; +import FingerprintIcon from "@mui/icons-material/Fingerprint"; +import PersonAddIcon from "@mui/icons-material/PersonAdd"; +import { + Box, + Button, + Container, + Grid, + Paper, + Stack, + TextField, + Typography, +} from "@mui/material"; +import axios from "axios"; +import { Field, Formik } from "formik"; +import { useTranslations } from "next-intl"; +import Image from "next/image"; +import { useSearchParams } from "next/navigation"; +import * as Yup from "yup"; + +const SendUserData = ({ setOtpToken, setPhoneNumber }) => { + const t = useTranslations(); + const { directionApp } = useDirection(); + + const searchParams = useSearchParams(); + const backUrlDecodedPath = searchParams.get("back_url"); + + const initialValues = { + phone_number: "", + }; + const validationSchema = Yup.object().shape({ + phone_number: Yup.string().required(t("LoginPage.error_message_required")), + }); + + const handleSubmit = async (values, props) => { + await axios + .post(LOGIN_SEND_OTP_TOKEN, { + phone_number: values.phone_number, + }) + .then(function (response) { + setPhoneNumber(values.phone_number); + setOtpToken(true); + }) + .catch(function (error) { + // Notifications(directionApp, error.response, t); + props.setSubmitting(false); + }); + }; + + return ( + + + + + + {(props) => ( + + + {t("app_name")} + + + {t("login_welfare_services")} + + + + + + + + + + + + + + + + + + )} + + + + + + + {t("LoginPage.link_routing_back_to")}{" "} + {backUrlDecodedPath + ? t("LoginPage.link_routing_previuos_page") + : t("LoginPage.link_routing_main_page")} + + + + ); +}; + +export default SendUserData; diff --git a/src/components/login-welfare-services/index.jsx b/src/components/login-welfare-services/index.jsx index 3ec6b1b..ba30668 100644 --- a/src/components/login-welfare-services/index.jsx +++ b/src/components/login-welfare-services/index.jsx @@ -1,166 +1,18 @@ -import LinkRouting from "@/core/components/LinkRouting"; -// import Notifications from "@/core/components/notifications"; -import StyledForm from "@/core/components/StyledForm"; -// import { GET_USER_TOKEN } from "@/core/data/apiRoutes"; -import CenterLayout from "@/layouts/CenterLayout"; -import FullPageLayout from "@/layouts/FullPageLayout"; -import useDirection from "@/lib/app/hooks/useDirection"; -import useUser from "@/lib/app/hooks/useUser"; -import LoginIcon from "@mui/icons-material/Login"; -import PersonAddIcon from "@mui/icons-material/PersonAdd"; -import { - Box, - Button, - Container, - Grid, - Paper, - Stack, - TextField, - Typography, -} from "@mui/material"; -// import axios from "axios"; -import { Field, Formik } from "formik"; -import { useTranslations } from "next-intl"; -import Image from "next/image"; -import { useSearchParams } from "next/navigation"; -import * as Yup from "yup"; +import SendUserData from "./SendUserData"; +import { useState } from "react"; +import SendToken from "./SendToken"; const LoginComponent = () => { - const t = useTranslations(); - const { directionApp } = useDirection(); - const { setToken } = useUser(); // pass token to set token + const [otpToken, setOtpToken] = useState(false); + const [PhoneNumber, setPhoneNumber] = useState(""); - // gettin url query - const searchParams = useSearchParams(); - const backUrlDecodedPath = searchParams.get("back_url"); - - // formik properties - // const handleSubmit = async (values, props) => { - // await axios - // .post(GET_USER_TOKEN, { - // phone_number: values.phone_number - // }) - // .then(function (response) { - // setToken(response.data.token); - // }) - // .catch(function (error) { - // Notifications(directionApp, error.response, t); - // props.setSubmitting(false); - // }); - // }; - const initialValues = { - phone_number: "" - }; - const validationSchema = Yup.object().shape({ - phone_number: Yup.string().required(t("LoginPage.error_message_required")) - }); - - return ( - - - - - - {(props) => ( - - - {t("app_name")} - - - {t("login_welfare_services")} - - - - - - - - - - - - - - - - - - )} - - - - - - - {t("LoginPage.link_routing_back_to")}{" "} - {backUrlDecodedPath - ? t("LoginPage.link_routing_previuos_page") - : t("LoginPage.link_routing_main_page")} - - - - ); + if (!otpToken) { + return ( + + ); + } else { + return ; + } }; export default LoginComponent; diff --git a/src/components/login-welfare-services/sendToken.jsx b/src/components/login-welfare-services/sendToken.jsx index e69de29..00414b7 100644 --- a/src/components/login-welfare-services/sendToken.jsx +++ b/src/components/login-welfare-services/sendToken.jsx @@ -0,0 +1,130 @@ +// import Notifications from "@/core/components/notifications"; +import StyledForm from "@/core/components/StyledForm"; +import { LOGIN } from "@/core/data/apiRoutes"; +import CenterLayout from "@/layouts/CenterLayout"; +import FullPageLayout from "@/layouts/FullPageLayout"; +import useDirection from "@/lib/app/hooks/useDirection"; +import useUser from "@/lib/app/hooks/useUser"; +import LoginIcon from "@mui/icons-material/Login"; +import { + Box, + Button, + Container, + Grid, + Paper, + Stack, + TextField, + Typography, +} from "@mui/material"; +import axios from "axios"; +import { Field, Formik } from "formik"; +import { useTranslations } from "next-intl"; +import Image from "next/image"; +import * as Yup from "yup"; + +const SendToken = ({ PhoneNumber }) => { + const t = useTranslations(); + const { directionApp } = useDirection(); + const { setToken } = useUser(); + + const initialValues = { + phone_number: PhoneNumber, + verification_code: "", + }; + const validationSchema = Yup.object().shape({ + verification_code: Yup.string().required( + t("LoginPage.error_message_required") + ), + }); + + const handleSubmit = async (values, props) => { + await axios + .post(LOGIN, { + phone_number: values.phone_number, + verification_code: values.verification_code, + }) + .then(function (response) { + setToken(response.data.token); + }) + .catch(function (error) { + Notifications(directionApp, error.response, t); + props.setSubmitting(false); + }); + }; + + return ( + + + + + + {(props) => ( + + + {t("app_name")} + + + {t("login_navy")} + + + + + + + + + + + + + )} + + + + + + ); +}; + +export default SendToken; diff --git a/src/components/register-welfare-services/SendUserData.jsx b/src/components/register-welfare-services/SendUserData.jsx new file mode 100644 index 0000000..ddf4933 --- /dev/null +++ b/src/components/register-welfare-services/SendUserData.jsx @@ -0,0 +1,171 @@ +import LinkRouting from "@/core/components/LinkRouting"; +import StyledForm from "@/core/components/StyledForm"; +import { REGISTER_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 { + Box, + Button, + Container, + Paper, + Stack, + TextField, + Typography, +} from "@mui/material"; +import axios from "axios"; +import { Field, Formik } from "formik"; +import { useTranslations } from "next-intl"; +import Image from "next/image"; +import { useSearchParams } from "next/navigation"; +import * as Yup from "yup"; + +const SendUserData = ({ + setOtpToken, + setPhoneNumber, + setNationalId, + setTypeId, +}) => { + const t = useTranslations(); + + const searchParams = useSearchParams(); + const backUrlDecodedPath = searchParams.get("back_url"); + + const initialValues = { + type_id: "2", + phone_number: "", + national_id: "", + }; + const validationSchema = Yup.object().shape({ + phone_number: Yup.string().required( + t("RegisterPage.error_message_required") + ), + national_id: Yup.string().required( + t("RegisterPage.error_message_required") + ), + }); + + const handleSubmit = async (values, props) => { + await axios + .post(REGISTER_SEND_OTP_TOKEN, { + type_id: values.type_id, + national_id: values.national_id, + phone_number: values.phone_number, + }) + .then(function (response) { + setPhoneNumber(values.phone_number); + setNationalId(values.national_id); + setTypeId(values.type_id); + setOtpToken(true); + }) + .catch(function (error) { + Notifications(directionApp, error.response, t); + props.setSubmitting(false); + }); + }; + + return ( + + + + + + {(props) => ( + + + {t("app_name")} + + + {t("register_welfare_services")} + + + + + + + + + + )} + + + + + + + {t("RegisterPage.link_routing_back_to")}{" "} + {t("RegisterPage.link_routing_login_navy")} + + + + ); +}; + +export default SendUserData; diff --git a/src/components/register-welfare-services/index.jsx b/src/components/register-welfare-services/index.jsx index b9a35c5..24678eb 100644 --- a/src/components/register-welfare-services/index.jsx +++ b/src/components/register-welfare-services/index.jsx @@ -1,169 +1,32 @@ -import StyledForm from "@/core/components/StyledForm"; -import { - Box, - Button, - Container, - Paper, - Stack, - Typography, - TextField, -} from "@mui/material"; -import { Field, Formik } from "formik"; -import Image from "next/image"; -import FingerprintIcon from "@mui/icons-material/Fingerprint"; -import FullPageLayout from "@/layouts/FullPageLayout"; -import CenterLayout from "@/layouts/CenterLayout"; -import { useTranslations } from "next-intl"; -import * as Yup from "yup"; -import LinkRouting from "@/core/components/LinkRouting"; -import { useSearchParams } from "next/navigation"; -import useDirection from "@/lib/app/hooks/useDirection"; -import useUser from "@/lib/app/hooks/useUser"; -// import { GET_USER_TOKEN } from "@/core/data/apiRoutes"; -// import axios from "axios"; +import { useState } from "react"; +import SendToken from "./SendToken"; +import SendUserData from "./SendUserData"; const RegisterNavyComponent = () => { - const t = useTranslations(); + const [otpToken, setOtpToken] = useState(false); + const [PhoneNumber, setPhoneNumber] = useState(""); + const [nationalId, setNationalId] = useState(""); + const [navganId, setNavganId] = useState(""); + const [typeId, setTypeId] = useState(""); - const { directionApp } = useDirection(); - const { setToken } = useUser(); - - const searchParams = useSearchParams(); - const backUrlDecodedPath = searchParams.get("back_url"); - - const initialValues = { - type_id: "2", - phone_number: "", - national_id: "", - navgan_id: "", - }; - const validationSchema = Yup.object().shape({ - phone_number: Yup.string().required( - t("RegisterPage.error_message_required") - ), - national_id: Yup.string().required( - t("RegisterPage.error_message_required") - ), - }); - // const handleSubmit = async (values, props) => { - // await axios - // .post(GET_USER_TOKEN, { - // type_id: values.type_id, - // national_id: values.national_id, - // navgan_id: values.navgan_id, - // phone_number: values.phone_number, - // }) - // .then(function (response) { - // setToken(response.data.token); - // }) - // .catch(function (error) { - // Notifications(directionApp, error.response, t); - // props.setSubmitting(false); - // }); - // }; - - return ( - - - - - - {(props) => ( - - - {t("app_name")} - - - {t("register_navy")} - - - - - - - - - - )} - - - - - - - {t("RegisterPage.link_routing_back_to")}{" "} - {t("RegisterPage.link_routing_login_navy")} - - - - ); + if (!otpToken) { + return ( + + ); + } else { + return ( + + ); + } }; export default RegisterNavyComponent; diff --git a/src/components/register-welfare-services/sendToken.jsx b/src/components/register-welfare-services/sendToken.jsx index e69de29..3fa7f1c 100644 --- a/src/components/register-welfare-services/sendToken.jsx +++ b/src/components/register-welfare-services/sendToken.jsx @@ -0,0 +1,127 @@ +import StyledForm from "@/core/components/StyledForm"; +import { REGISTER } from "@/core/data/apiRoutes"; +import CenterLayout from "@/layouts/CenterLayout"; +import FullPageLayout from "@/layouts/FullPageLayout"; +// import useDirection from "@/lib/app/hooks/useDirection"; +import useUser from "@/lib/app/hooks/useUser"; +import LoginIcon from "@mui/icons-material/Login"; +import { + Box, + Button, + Container, + Paper, + Stack, + TextField, + Typography, +} from "@mui/material"; +import axios from "axios"; +import { Field, Formik } from "formik"; +import { useTranslations } from "next-intl"; +import Image from "next/image"; +import * as Yup from "yup"; + +const SendToken = ({ PhoneNumber, nationalId, typeId }) => { + const t = useTranslations(); + // const { directionApp } = useDirection(); + const { setToken } = useUser(); + + const initialValues = { + phone_number: PhoneNumber, + national_id: nationalId, + type_id: typeId, + verification_code: "", + }; + const validationSchema = Yup.object().shape({ + verification_code: Yup.string().required( + t("RegisterPage.error_message_required") + ), + }); + + const handleSubmit = async (values, props) => { + await axios + .post(REGISTER, { + phone_number: values.phone_number, + national_id: values.national_id, + type_id: values.type_id, + verification_code: values.verification_code, + }) + .then(function (response) { + setToken(response.data.token); + }) + .catch(function (error) { + // Notifications(directionApp, error.response, t); + props.setSubmitting(false); + }); + }; + + return ( + + + + + + {(props) => ( + + + {t("app_name")} + + + {t("register_navy")} + + + + + + + + + )} + + + + + + ); +}; + +export default SendToken;