From 6b7ebe046af5d871df6ca8e48328b3dbd0d6d298 Mon Sep 17 00:00:00 2001 From: Hugo Falcao Date: Tue, 10 May 2022 21:27:33 -0300 Subject: [PATCH] Inicio --- src/App.tsx | 2 +- .../BuscarPassageiro/BuscarPassageiro.css | 7 + .../BuscarPassageiro/BuscarPassageiro.tsx | 218 ++++++++++++++++++ src/pages/MainPages.tsx | 10 +- src/services/users.ts | 2 +- 5 files changed, 236 insertions(+), 3 deletions(-) create mode 100644 src/pages/BuscarPassageiro/BuscarPassageiro.css create mode 100644 src/pages/BuscarPassageiro/BuscarPassageiro.tsx diff --git a/src/App.tsx b/src/App.tsx index 1dc24c1..0b04991 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -42,7 +42,7 @@ const App: React.FC = () => ( - + diff --git a/src/pages/BuscarPassageiro/BuscarPassageiro.css b/src/pages/BuscarPassageiro/BuscarPassageiro.css new file mode 100644 index 0000000..80598b6 --- /dev/null +++ b/src/pages/BuscarPassageiro/BuscarPassageiro.css @@ -0,0 +1,7 @@ +#nome-sobrenome{ + display: flex; +} + +.toast-notification{ + --background: rgb(255, 0, 0); +} \ No newline at end of file diff --git a/src/pages/BuscarPassageiro/BuscarPassageiro.tsx b/src/pages/BuscarPassageiro/BuscarPassageiro.tsx new file mode 100644 index 0000000..9f9664c --- /dev/null +++ b/src/pages/BuscarPassageiro/BuscarPassageiro.tsx @@ -0,0 +1,218 @@ +import { IonToast, IonProgressBar, IonItem, IonLabel, IonInput, IonBackButton, IonButton, IonButtons, IonCardTitle, IonCol, IonContent, IonGrid, IonHeader, IonPage, IonRow, IonToolbar } from '@ionic/react'; +import { arrowBack, logoFacebook, mail } from 'ionicons/icons'; +import { Action } from '../../components/Action'; +import { useEffect, useState } from 'react'; +import { useHistory, useParams } from 'react-router'; +import './BuscarPassageiro.css'; +import ModalExample from '../../components/Email'; +import * as UsersService from '../../services/users' + +const BuscarPassageiro: React.FC = () => { + const history = useHistory(); + + const [showToast, setShowToast] = useState(false); + const [messageToast, setMessageToast ] = useState(''); + + const [email, setEmail] = useState(''); + const [password, setPassword] = useState(''); + const [confirmPassword, setConfirmPassword] = useState(''); + const [firstName, setFirstName] = useState(''); + const [lastName, setLastName] = useState(''); + const [birthDate, setBirthDate] = useState(''); + const [lResult, setlResult] = useState({ + error: '', + success: true + }); + + const emailValidate = () => { + var usuario = email.substring(0, email.indexOf("@")); + var dominio = email.substring(email.indexOf("@") + 1, email.length); + + if ((usuario.length >= 1) && + (dominio.length >= 3) && + (usuario.search("@") == -1) && + (dominio.search("@") == -1) && + (usuario.search(" ") == -1) && + (dominio.search(" ") == -1) && + (dominio.search(".") != -1) && + (dominio.indexOf(".") >= 1) && + (dominio.lastIndexOf(".") < dominio.length - 1)) + { + return true; + } else { + return false; + } + }; + + const clearResult = () => { + lResult.error = ''; + lResult.success = true; + } + + const fieldValidate = async () => { + clearResult(); + + if(!emailValidate()) { + lResult.error = 'O EMAIL é inválido!'; + lResult.success = false; + return lResult; + } else if(password.length < 7 || password.length > 12) { //TODO: validar de acordo com a documentação + lResult.error = 'A senha deve ter de 7 a 12 caracteres!'; + lResult.success = false; + return lResult; + } + + return lResult; + }; + + const handleSubmit = async () => { + + if(name != '' && email != '' && birthDate != '' && password != '' && confirmPassword != '') { + if(password === confirmPassword){ + const signUpForm = { + name: firstName +' '+ lastName, + email: email, + birth_date: birthDate, + password: password + } + + let result = fieldValidate(); + if((await result).success) { + + let retorno = await UsersService.create(signUpForm); + console.log(retorno); + if(retorno.token) { + // let signIn = await Api.signIn(email, passwordField); + // if(signIn.token) { + // await AsyncStorage.setItem('token', signIn.token); + // await AsyncStorage.setItem('cpf', retorno.cpf); + history.push('home'); + + } else { + setMessageToast(retorno.message); + setShowToast(true); + } + } else{ + setMessageToast(lResult.error); + setShowToast(true); + } + } else { + setMessageToast('As senhas devem ser iguais!'); + setShowToast(true); + } + } else { + setMessageToast('Nenhum campo pode ser nulo!'); + setShowToast(true); + } + }; + + const { name } = useParams<{ name: string; }>(); + + return ( + + + + + + + + + + + + + {/* Como você deseja se cadastrar? */} + BuscarPassageiro + + + {/* + + Continuar com Facebook + + + + Continuar com e-mail + */} + + +
+ + Nome + setFirstName(e.target.value)} + // error={isError} + // onIonChange={(e: any) => setFirstName(e.detail.value)} + > + + + + Sobrenome + setLastName(e.target.value)} + > + + +
+ + + E-mail + setEmail(e.target.value)} + > + + + + + Data de nascimento + setBirthDate(e.target.value)} + > + + + + + Senha + setPassword(e.target.value)} + > + + + Confirme a senha + setConfirmPassword(e.target.value)} + > + + + Cadastrar-se +
+
+ + Ao se cadastrar, você aceita nossos Termos e Condições e nossa Política de Privacidade. + + +
+ {/*
*/} + setShowToast(false)} + message={messageToast} + duration={2500} + /> +
+
+ ); +}; + +export default BuscarPassageiro; \ No newline at end of file diff --git a/src/pages/MainPages.tsx b/src/pages/MainPages.tsx index 3803212..6879edc 100644 --- a/src/pages/MainPages.tsx +++ b/src/pages/MainPages.tsx @@ -13,6 +13,7 @@ import { IonReactRouter } from '@ionic/react-router'; import { search, home, person } from 'ionicons/icons'; import Home from './Home'; +import BuscarPassageiro from './BuscarPassageiro/BuscarPassageiro'; export const MainPages: React.FC = () => { @@ -22,7 +23,14 @@ export const MainPages: React.FC = () => { - } /> + + + + + + + } /> diff --git a/src/services/users.ts b/src/services/users.ts index 73440e1..e14e17d 100644 --- a/src/services/users.ts +++ b/src/services/users.ts @@ -1,7 +1,7 @@ import instance from '../services/api'; // import LocalStorage from '../LocalStorage'; -let token:string; +// let token:string; let header:string; function updateHeader() {