Files
pfadi-bussle/pages/api/booking/index.ts
2020-10-26 23:43:39 +01:00

39 lines
1.1 KiB
TypeScript

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