import React, { useEffect, useState } from 'react' import { useRouter } from 'next/router' import Calendar from '../../../../components/calendar' import { getServerSideBooking } from '../../../../lib/getServerSideProps' import { IBooking } from '../../../../db/booking' import { patchBooking } from '../../../../helpers/booking' import { log } from '../../../../helpers/log' import { BOOKING_STATUS } from '../../../../db/enums' import BookingTable from '../../../../components/bookingTable' import withAuth from '../../../../helpers/withAuth' export const getServerSideProps = getServerSideBooking function ShowBookingAdmin({ booking: bookingProp }: { booking: IBooking }) { 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 patchBookingStatus = async (status: BOOKING_STATUS) => { try { setStoringBookingError(null) setStoringBooking(true) const updatedBooking = await patchBooking(booking.uuid, { status }) setBooking(updatedBooking) } catch (error) { setStoringBookingError('Buchung konnte nicht gespeichert werden.') log.error('Failed to store booking', error) } setStoringBooking(false) } return ( <>