diff --git a/packages/features/bookings/lib/handleNewBooking.ts b/packages/features/bookings/lib/handleNewBooking.ts index 1eb57953b9..a5084f426f 100644 --- a/packages/features/bookings/lib/handleNewBooking.ts +++ b/packages/features/bookings/lib/handleNewBooking.ts @@ -570,7 +570,7 @@ async function handler( dateFrom: dayjs(start).tz(reqBody.timeZone).format(), dateTo: dayjs(end).tz(reqBody.timeZone).format(), timeZone: reqBody.timeZone, - originalRescheduledBooking, + originalRescheduledBooking: originalRescheduledBooking ?? null, }, loggerWithEventDetails, shouldServeCache diff --git a/packages/features/bookings/lib/handleNewBooking/originalRescheduledBookingUtils.ts b/packages/features/bookings/lib/handleNewBooking/originalRescheduledBookingUtils.ts index ea4f9667f8..39256263d7 100644 --- a/packages/features/bookings/lib/handleNewBooking/originalRescheduledBookingUtils.ts +++ b/packages/features/bookings/lib/handleNewBooking/originalRescheduledBookingUtils.ts @@ -5,28 +5,20 @@ import { HttpError } from "@calcom/lib/http-error"; import { BookingRepository } from "@calcom/lib/server/repository/booking"; import { BookingStatus } from "@calcom/prisma/enums"; -export const validateOriginalRescheduledBooking = async ( - originalRescheduledBooking: OriginalRescheduledBooking -) => { - if (!originalRescheduledBooking) { +export async function getOriginalRescheduledBooking(uid: string, seatsEventType?: boolean) { + const originalBooking = await BookingRepository.findOriginalRescheduledBooking(uid, seatsEventType); + + if (!originalBooking) { throw new HttpError({ statusCode: 404, message: "Could not find original booking" }); } - if ( - originalRescheduledBooking.status === BookingStatus.CANCELLED && - !originalRescheduledBooking.rescheduled - ) { - throw new HttpError({ statusCode: 403, message: ErrorCode.CancelledBookingsCannotBeRescheduled }); + if (originalBooking.status === BookingStatus.CANCELLED && !originalBooking.rescheduled) { + throw new HttpError({ statusCode: 400, message: ErrorCode.CancelledBookingsCannotBeRescheduled }); } -}; - -export async function getOriginalRescheduledBooking(uid: string, seatsEventType?: boolean) { - const originalBooking = await BookingRepository.findOriginalRescheduledBooking(uid, seatsEventType); - validateOriginalRescheduledBooking(originalBooking); return originalBooking; } -export type BookingType = Prisma.PromiseReturnType; +export type BookingType = Prisma.PromiseReturnType | null; -export type OriginalRescheduledBooking = Awaited>; +export type OriginalRescheduledBooking = Awaited> | null; diff --git a/packages/lib/server/getServerErrorFromUnknown.ts b/packages/lib/server/getServerErrorFromUnknown.ts index 23ee3b333f..d33138c932 100644 --- a/packages/lib/server/getServerErrorFromUnknown.ts +++ b/packages/lib/server/getServerErrorFromUnknown.ts @@ -95,7 +95,7 @@ function getStatusCode(cause: Error): number { case ErrorCode.AvailabilityNotFoundInSchedule: return 400; case ErrorCode.CancelledBookingsCannotBeRescheduled: - return 403; + return 400; case ErrorCode.NoAvailableUsersFound: case ErrorCode.HostsUnavailableForBooking: case ErrorCode.PaymentCreationFailure: