Files
pfadi-bussle/pages/api/bookings/index.ts
Thomas Ruoff 8bb93b023a fix log msg
2022-06-23 23:16:18 +02:00

51 lines
1.4 KiB
TypeScript

import { Error } from 'mongoose'
import { NextApiRequest, NextApiResponse } from 'next'
import { Booking } from '../../../db/booking'
import { createBooking } from '../../../db/index'
import { log } from '../../../helpers/log'
import {
sendReceivedBookingAdminMail,
sendReceivedBookingBookerMail,
} from '../../../helpers/mail'
export default async function userHandler(
req: NextApiRequest,
res: NextApiResponse
): Promise<void> {
const { method } = req
let booking: Booking
switch (method) {
case 'POST':
try {
booking = await createBooking(req.body)
res.status(200).json(booking)
} catch (e) {
if (e instanceof Error.ValidationError) {
res.status(400).json({ message: e.message, errors: e.errors })
return
}
log.error('Failed to store booking', e)
res.status(500).end(`Internal Server Error...Guru is meditating...`)
return
}
log.info(
`received booking ${booking.uuid} from ${booking.email}`,
booking
)
await sendReceivedBookingAdminMail(booking)
log.info(`send booking ${booking.uuid} received to admin`, booking)
await sendReceivedBookingBookerMail(booking)
log.info(
`send booking ${booking.uuid} received to {booking.email}`,
booking
)
break
default:
res.setHeader('Allow', ['POST'])
res.status(405).end(`Method ${method} Not Allowed`)
}
}