import Box from '@mui/material/Box'; import Typography from '@mui/material/Typography'; import List from '@mui/material/List'; import Button from '@mui/material/Button'; import Paper from '@mui/material/Paper'; import Container from '@mui/material/Container'; import {useTranslation} from 'react-i18next'; import {useRouter} from 'next/router'; import ShareEvent from '../ShareEvent'; import useToastStore from '../../stores/useToastStore'; import useEventStore from '../../stores/useEventStore'; import usePassengersActions from '../../hooks/usePassengersActions'; import AvailableTravel from './AvailableTravel'; import {TravelEntity} from '../../generated/graphql'; const AssignPassenger = () => { const {t} = useTranslation(); const {addToast, clearToast} = useToastStore(({addToast, clearToast}) => ({ addToast, clearToast, })); const event = useEventStore(s => s.event); const router = useRouter(); const { query: {passengerId}, } = router; const {updatePassenger} = usePassengersActions(); if (!event) return null; const {travels, name, waitingPassengers, uuid} = event; const availableTravels = travels?.data?.filter( ({attributes}) => attributes.passengers && attributes?.seats > attributes.passengers.data.length ); const passenger = waitingPassengers.data?.find( waitingPassenger => waitingPassenger.id === passengerId ); const assign = async (travel: TravelEntity) => { try { await updatePassenger(passengerId as string, { travel: travel.id, }); addToast( t('passenger.success.added_to_car', { name: passenger.attributes.name, }), ); } catch (error) { console.error(error); addToast(t('passenger.errors.cant_select_travel')); } }; return (
{availableTravels.length === 0 && ( {t('passenger.assign.no_travel.title')} {t('passenger.assign.no_travel.desc', { name: passenger?.attributes?.name, })} )} {availableTravels.length > 0 && ( <> {t`passenger.assign.availableCars`} {availableTravels.map((travel, index) => { return ( ); })} )}
); }; export default AssignPassenger;