import React, { useEffect, useState } from 'react' import { useRouter } from 'next/router' import { BookingStatus, Booking } from '@prisma/client' import Link from 'next/link' import Calendar from '../../../../components/calendar' import { getServerSideBooking } from '../../../../lib/getServerSideProps' import { getBookingStatus, patchBooking } from '../../../../helpers/booking' import { daysFormatFrontend } from '../../../../helpers/date' import { log } from '../../../../helpers/log' 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 ? BookingStatus.CONFIRMED : BookingStatus.REJECTED, }) setBooking(updatedBooking) } catch (error) { setStoringBookingError('Buchung konnte nicht gespeichert werden.') log.error('Failed to store booking', error) } setStoringBooking(false) } return ( <>