Files
pfadi-bussle/pages/api/booking/index.ts
2021-03-22 23:14:48 +01:00

48 lines
1.3 KiB
TypeScript

import { Error } from 'mongoose'
import { NextApiRequest, NextApiResponse } from 'next'
import { Booking } from '../../../db/booking'
import { createBooking } from '../../../db/index'
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) {
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} from {booking.booker.email}`
)
await sendReceivedBookingAdminMail(booking)
console.log(`send booking ${booking.uuid} received to admin`)
await sendReceivedBookingBookerMail(booking)
console.log(
`send booking ${booking.uuid} received to {booking.booker.email}`
)
break
default:
res.setHeader('Allow', ['POST'])
res.status(405).end(`Method ${method} Not Allowed`)
}
}