import React, { useEffect, useState } from 'react' import { useRouter } from 'next/router' import Link from 'next/link' import Layout from '../../../../components/layout' import Calendar from '../../../../components/calendar' import { getServerSideBooking } from '../../../../lib/getServerSideProps' import { Booking } from '../../../../db/booking' import { getBookingStatus, patchBooking } from '../../../../helpers/booking' import { daysFormatFrontend } from '../../../../helpers/date' import { log } from '../../../../helpers/log' import { BOOKING_STATUS } from '../../../../db/enums' export const getServerSideProps = getServerSideBooking function ShowBookingAdmin({ booking: bookingProp }: { booking: Booking }) { const router = useRouter() const [booking, setBooking] = useState(bookingProp) const [storingBooking, setStoringBooking] = useState(false) const [storingBookingError, setStoringBookingError] = useState(null) // in case the props change, update the internal state useEffect(() => setBooking(bookingProp), [bookingProp]) const onStoreBooking = async (confirmed: boolean) => { try { setStoringBookingError(null) setStoringBooking(true) const updatedBooking = await patchBooking(booking.uuid, { status: confirmed ? BOOKING_STATUS.CONFIRMED : BOOKING_STATUS.REJECTED, }) setBooking(updatedBooking) } catch (error) { setStoringBookingError('Buchung konnte nicht gespeichert werden.') log.error('Failed to store booking', error) } setStoringBooking(false) } return (

Buchung {booking.uuid}

Buchungszeitraum: {daysFormatFrontend(booking.days)}
Bucher: {booking.name}
Buchungsstatus: {getBookingStatus(booking.status)}
{storingBookingError && (
{storingBookingError}
)}
Rechnung
) } ShowBookingAdmin.authenticationRequired = true export default ShowBookingAdmin