Alterações e incluindo página Minhas Vans
This commit is contained in:
@@ -43,6 +43,7 @@ import './theme/variables.css';
|
|||||||
import { search, home, person } from 'ionicons/icons';
|
import { search, home, person } from 'ionicons/icons';
|
||||||
import { useState, useContext } from 'react';
|
import { useState, useContext } from 'react';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
import MinhasVans from './pages/MinhasVans';
|
||||||
|
|
||||||
setupIonicReact();
|
setupIonicReact();
|
||||||
|
|
||||||
@@ -62,6 +63,7 @@ const routes = (
|
|||||||
<Route exact path="/usuario/:id" component={Perfil}></Route>
|
<Route exact path="/usuario/:id" component={Perfil}></Route>
|
||||||
|
|
||||||
<Route exact path="/cadastro-van" component={CadastroVan}></Route>
|
<Route exact path="/cadastro-van" component={CadastroVan}></Route>
|
||||||
|
<Route exact path="/minhas-vans" component={MinhasVans}></Route>
|
||||||
<Route exact path="/">
|
<Route exact path="/">
|
||||||
<Redirect to="/login" />
|
<Redirect to="/login" />
|
||||||
</Route>
|
</Route>
|
||||||
|
|||||||
@@ -3,8 +3,11 @@ const vansRoutes = {
|
|||||||
list: {
|
list: {
|
||||||
url: `${vansRoutesDefault}/list`
|
url: `${vansRoutesDefault}/list`
|
||||||
},
|
},
|
||||||
getById: {
|
getByPlate: {
|
||||||
url: `${vansRoutesDefault}/`
|
url: `${vansRoutesDefault}/plate`
|
||||||
|
},
|
||||||
|
getByUserId: {
|
||||||
|
url: `${vansRoutesDefault}/user`
|
||||||
},
|
},
|
||||||
create: {
|
create: {
|
||||||
url: `${vansRoutesDefault}/`
|
url: `${vansRoutesDefault}/`
|
||||||
|
|||||||
118
src/pages/MinhasVans.tsx
Normal file
118
src/pages/MinhasVans.tsx
Normal file
@@ -0,0 +1,118 @@
|
|||||||
|
import { IonBackButton, IonButtons, IonCard, IonCardContent, IonCardHeader, IonCardSubtitle, IonCardTitle, IonContent, IonHeader, IonIcon, IonItem, IonLabel, IonPage, IonTitle, IonToast, IonToolbar } from '@ionic/react';
|
||||||
|
import { Color } from '@ionic/react/node_modules/@ionic/core';
|
||||||
|
import { carOutline } from 'ionicons/icons';
|
||||||
|
import { useContext, useEffect, useState } from 'react';
|
||||||
|
import { useHistory, useLocation } from 'react-router';
|
||||||
|
|
||||||
|
import { UserContext } from '../App';
|
||||||
|
|
||||||
|
import * as vansRoutes from '../services/api/vans';
|
||||||
|
|
||||||
|
import sessionsService from '../services/functions/sessionsService'
|
||||||
|
|
||||||
|
interface VanInfo {
|
||||||
|
plate: string;
|
||||||
|
brand: string;
|
||||||
|
model: string;
|
||||||
|
seats_number: string;
|
||||||
|
document_status: boolean,
|
||||||
|
locator_name: string;
|
||||||
|
locator_address: string;
|
||||||
|
locator_complement: string;
|
||||||
|
locator_city: string;
|
||||||
|
locator_state: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
const MinhasVans: React.FC = () => {
|
||||||
|
const history = useHistory();
|
||||||
|
|
||||||
|
const [showToast, setShowToast] = useState(false);
|
||||||
|
const [toastMessage, setToastMessage] = useState('');
|
||||||
|
const [toastColor, setToastColor] = useState<Color>("primary");
|
||||||
|
|
||||||
|
const [userVans, setUserVans] = useState<VanInfo[]>();
|
||||||
|
|
||||||
|
const redirectUserToLogin = () => {
|
||||||
|
history.push({ pathname: '/login' });
|
||||||
|
}
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
const getUserVans = async () => {
|
||||||
|
let userId = ''
|
||||||
|
|
||||||
|
const refreshSessionRes = await sessionsService.refreshSession()
|
||||||
|
|
||||||
|
if (refreshSessionRes.error) {
|
||||||
|
redirectUserToLogin()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (refreshSessionRes.userId) {
|
||||||
|
userId = refreshSessionRes.userId
|
||||||
|
}
|
||||||
|
|
||||||
|
vansRoutes.getByUserId(userId).then(response => {
|
||||||
|
if (response.status === 'error') {
|
||||||
|
setToastColor("danger")
|
||||||
|
setToastMessage(response.message);
|
||||||
|
setShowToast(true);
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
setUserVans(response.data)
|
||||||
|
}).catch((err) => {
|
||||||
|
setToastColor("danger")
|
||||||
|
setToastMessage(err);
|
||||||
|
setShowToast(true);
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
getUserVans()
|
||||||
|
}, [])
|
||||||
|
|
||||||
|
return (
|
||||||
|
<IonPage>
|
||||||
|
<IonHeader>
|
||||||
|
<IonToolbar>
|
||||||
|
<IonTitle>Minhas vans</IonTitle>
|
||||||
|
<IonButtons slot="start">
|
||||||
|
<IonBackButton defaultHref="/perfil" />
|
||||||
|
</IonButtons>
|
||||||
|
</IonToolbar>
|
||||||
|
</IonHeader>
|
||||||
|
|
||||||
|
<IonContent>
|
||||||
|
{ userVans ? userVans.map((van, index) => {
|
||||||
|
return (
|
||||||
|
<IonCard key={index}>
|
||||||
|
<IonCardHeader>
|
||||||
|
<IonCardTitle>{van.plate}</IonCardTitle>
|
||||||
|
<IonCardSubtitle>{van.brand} - {van.model}</IonCardSubtitle>
|
||||||
|
</IonCardHeader>
|
||||||
|
{ van.locator_name ?
|
||||||
|
<>
|
||||||
|
<IonCardContent>{van.seats_number} assentos - Locador: {van.locator_name}</IonCardContent>
|
||||||
|
</> :
|
||||||
|
<>
|
||||||
|
<IonCardContent>{van.seats_number} assentos - Não é alugado</IonCardContent>
|
||||||
|
</>
|
||||||
|
}
|
||||||
|
</IonCard>
|
||||||
|
)
|
||||||
|
}) : <></>}
|
||||||
|
|
||||||
|
<IonToast
|
||||||
|
position="top"
|
||||||
|
color={toastColor}
|
||||||
|
isOpen={showToast}
|
||||||
|
onDidDismiss={() => setShowToast(false)}
|
||||||
|
message={toastMessage}
|
||||||
|
duration={2500}
|
||||||
|
/>
|
||||||
|
</IonContent>
|
||||||
|
</IonPage>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default MinhasVans;
|
||||||
@@ -78,7 +78,6 @@ const Perfil: React.FC<ScanNewProps> = (props) => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
const redirectUserToLogin = () => {
|
const redirectUserToLogin = () => {
|
||||||
// TODO, não impede o usuário de retornar a página de login
|
|
||||||
history.push({ pathname: '/login' });
|
history.push({ pathname: '/login' });
|
||||||
setToastMessage("Por favor, autentique-se!");
|
setToastMessage("Por favor, autentique-se!");
|
||||||
setShowToast(true);
|
setShowToast(true);
|
||||||
@@ -271,6 +270,10 @@ const Perfil: React.FC<ScanNewProps> = (props) => {
|
|||||||
<IonIcon icon={carOutline} slot="start" />
|
<IonIcon icon={carOutline} slot="start" />
|
||||||
<IonLabel>Cadastrar Van</IonLabel>
|
<IonLabel>Cadastrar Van</IonLabel>
|
||||||
</IonItem>
|
</IonItem>
|
||||||
|
<IonItem button onClick={() => history.push({ pathname: '/minhas-vans'})}>
|
||||||
|
<IonIcon icon={carOutline} slot="start" />
|
||||||
|
<IonLabel>Minhas Vans</IonLabel>
|
||||||
|
</IonItem>
|
||||||
<IonItem>
|
<IonItem>
|
||||||
<IonIcon icon={cardOutline} slot="start" />
|
<IonIcon icon={cardOutline} slot="start" />
|
||||||
<IonLabel>Pagamentos</IonLabel>
|
<IonLabel>Pagamentos</IonLabel>
|
||||||
|
|||||||
@@ -96,9 +96,13 @@ const PerfilEditar: React.FC = () => {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
setToastColor("success")
|
history.push({ pathname: '/perfil', state: {
|
||||||
setMessageToast(response.message);
|
redirectData: {
|
||||||
setShowToast(true);
|
showToastMessage: true,
|
||||||
|
toastColor: "success",
|
||||||
|
toastMessage: response.message,
|
||||||
|
},
|
||||||
|
}})
|
||||||
}).catch((err) => {
|
}).catch((err) => {
|
||||||
setToastColor("danger")
|
setToastColor("danger")
|
||||||
setMessageToast(err);
|
setMessageToast(err);
|
||||||
|
|||||||
@@ -17,10 +17,20 @@ function updateHeader() {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function getById(vanId: string) {
|
export async function getByPlate(vanId: string) {
|
||||||
updateHeader();
|
updateHeader();
|
||||||
|
|
||||||
const response = await instance.get(vansRoutes.getById.url + `/${vanId}`, {
|
const response = await instance.get(vansRoutes.getByPlate.url + `/${vanId}`, {
|
||||||
|
headers: header,
|
||||||
|
});
|
||||||
|
|
||||||
|
return response.data;
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function getByUserId(userId: string) {
|
||||||
|
updateHeader();
|
||||||
|
|
||||||
|
const response = await instance.get(vansRoutes.getByUserId.url + `/${userId}`, {
|
||||||
headers: header,
|
headers: header,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user