diff --git a/pages/admin/booking/[uuid]/index.tsx b/pages/admin/booking/[uuid]/index.tsx index cf50db5..a2d640b 100644 --- a/pages/admin/booking/[uuid]/index.tsx +++ b/pages/admin/booking/[uuid]/index.tsx @@ -1,15 +1,16 @@ import React, { useEffect, useState } from 'react' import Footer from '../../../../components/footer' import Header from '../../../../components/header' -import Input from '../../../../components/input' import { getServerSideBooking } from '../../../../lib/getServerSideProps' import { BookingDocument } from '../../../../db/booking' import { getBookingStatus } from '../../../../helpers/booking' +import { dateFormatFrontend } from '../../../../helpers/date' +import { BOOKING_STATUS } from '../../../../db/enums' export const getServerSideProps = getServerSideBooking -async function storeBooking(booking: BookingDocument) { - const response = await fetch(`/api/admin/booking/${booking.uuid}`, { +async function patchBooking(uuid: string, bookingData: any) { + const response = await fetch(`/api/admin/booking/${uuid}`, { method: 'PATCH', mode: 'cors', cache: 'no-cache', @@ -18,7 +19,7 @@ async function storeBooking(booking: BookingDocument) { 'Content-Type': 'application/json', }, referrerPolicy: 'no-referrer', - body: JSON.stringify({ ...booking }), + body: JSON.stringify({ ...bookingData }), }) return response.json() } @@ -35,11 +36,13 @@ export default function ShowBookingAdmin({ // in case the props change, update the internal state useEffect(() => setBooking(bookingProp), [bookingProp]) - const onStoreBooking = async () => { + const onStoreBooking = async (confirmed: boolean) => { try { setStoringBookingError(null) setStoringBooking(true) - const updatedBooking = await storeBooking(booking) + const updatedBooking = await patchBooking(booking.uuid, { + status: confirmed ? BOOKING_STATUS.CONFIRMED : BOOKING_STATUS.REJECTED, + }) setBooking(updatedBooking) } catch (error) { setStoringBookingError('Buchung konnte nicht gespeichert werden.') @@ -54,20 +57,33 @@ export default function ShowBookingAdmin({

Buchung {booking.uuid}

- Buchungsstatus: {getBookingStatus(booking)} + Buchungszeitraum:{' '} + {dateFormatFrontend(new Date(booking.startDate))} -{' '} + {dateFormatFrontend(new Date(booking.endDate))} +
+
+ Bucher: {booking.booker.name} +
+
+ Buchungsstatus: {getBookingStatus(booking.status)}
- - {storingBookingError && (
{storingBookingError}
)}
+
diff --git a/pages/api/admin/booking/[uuid]/index.ts b/pages/api/admin/booking/[uuid]/index.ts index 8be8775..72a6b38 100644 --- a/pages/api/admin/booking/[uuid]/index.ts +++ b/pages/api/admin/booking/[uuid]/index.ts @@ -23,6 +23,9 @@ export default withSession(async function bookingHandler(req, res) { // FIXME: validate all the things booking.set(req.body) await booking.save() + + await booking.populate('booker').execPopulate() + res.status(200).json(booking.toJSON()) break default: