also add mail when user cancels

This commit is contained in:
Thomas Ruoff
2022-04-08 00:01:52 +02:00
parent 0cdee14d18
commit 7f13a0063f
2 changed files with 49 additions and 10 deletions

View File

@@ -1,29 +1,37 @@
import { NextApiRequest, NextApiResponse } from 'next'
import Book from '../../../../components/book'
import { Booking } from '../../../../db/booking'
import { BOOKING_STATUS } from '../../../../db/enums'
import { patchBooking } from '../../../../db/index'
import {
sendBookingConfirmed,
sendBookingRejected,
sendBookingCanceled,
} from '../../../../helpers/mail'
function changedStatus(
booking: Booking,
updates: Partial<Booking>,
previous: Booking,
current: Partial<Booking>,
status: BOOKING_STATUS
): boolean {
return (
[BOOKING_STATUS.REQUESTED].includes(booking.status) &&
updates.status === status
[BOOKING_STATUS.REQUESTED].includes(previous.status) &&
current.status === status
)
}
function wasRejected(booking: Booking, updates: Partial<Booking>): boolean {
return changedStatus(booking, updates, BOOKING_STATUS.REJECTED)
function wasRejected(previous: Booking, current: Partial<Booking>): boolean {
return changedStatus(previous, current, BOOKING_STATUS.REJECTED)
}
function wasConfirmed(booking: Booking, updates: Partial<Booking>): boolean {
return changedStatus(booking, updates, BOOKING_STATUS.CONFIRMED)
function wasConfirmed(previous: Booking, current: Partial<Booking>): boolean {
return changedStatus(previous, current, BOOKING_STATUS.CONFIRMED)
}
function wasCanceled(previous: Booking, current: Partial<Booking>): boolean {
return (
[BOOKING_STATUS.REQUESTED, BOOKING_STATUS.CONFIRMED].includes(
previous.status
) && current.status === BOOKING_STATUS.CANCELED
)
}
export default async function userHandler(
@@ -58,6 +66,8 @@ export default async function userHandler(
sendBookingRejected(current)
} else if (wasConfirmed(previous, current)) {
sendBookingConfirmed(current)
} else if (wasCanceled(previous, current)) {
sendBookingCanceled(current)
}
res.status(200).json(current)