diff --git a/apps/web/public/static/locales/en/common.json b/apps/web/public/static/locales/en/common.json index 0f6213c745..6814596755 100644 --- a/apps/web/public/static/locales/en/common.json +++ b/apps/web/public/static/locales/en/common.json @@ -1307,6 +1307,7 @@ "do_this": "Do this", "turn_off": "Turn off", "turn_on": "Turn on", + "cancelled_bookings_cannot_be_rescheduled":"Cancelled bookings cannot be rescheduled", "settings_updated_successfully": "Settings updated successfully", "error_updating_settings": "Error updating settings", "personal_cal_url": "My personal {{appName}} URL", diff --git a/packages/features/bookings/lib/handleNewBooking.ts b/packages/features/bookings/lib/handleNewBooking.ts index 2ec81f8a5c..114dcb16e5 100644 --- a/packages/features/bookings/lib/handleNewBooking.ts +++ b/packages/features/bookings/lib/handleNewBooking.ts @@ -1078,6 +1078,13 @@ async function handler( if (!originalRescheduledBooking) { 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 }); + } } //checks what users are available diff --git a/packages/lib/errorCodes.ts b/packages/lib/errorCodes.ts index 07c51ae693..e7320a5726 100644 --- a/packages/lib/errorCodes.ts +++ b/packages/lib/errorCodes.ts @@ -6,4 +6,5 @@ export enum ErrorCode { AlreadySignedUpForBooking = "already_signed_up_for_this_booking_error", HostsUnavailableForBooking = "hosts_unavailable_for_booking", EventTypeNotFound = "event_type_not_found_error", + CancelledBookingsCannotBeRescheduled = "cancelled_bookings_cannot_be_rescheduled", }