import { createBooking } from '../../../db/index'
import { Error } from 'mongoose'

import { sendReceivedBookingMail } from '../../../helpers/mail'

export default async function userHandler(req, res) {
  const { method } = req

  let 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.ValidatorError) {
          res.status(400).end(e.message)
          return
        }
        res.status(500).end(`Internal Server Error...Guru is meditating...`)
        return
      }

      await sendReceivedBookingMail(booking)
      console.log('sent receivedBookingMail')
      break
    default:
      res.setHeader('Allow', ['POST'])
      res.status(405).end(`Method ${method} Not Allowed`)
  }
}
