From 438a73b0cdf7cf735ce1ae128eea44e8279a9870 Mon Sep 17 00:00:00 2001 From: Amit Sharma <74371312+Amit91848@users.noreply.github.com> Date: Wed, 29 Jan 2025 00:55:41 +0530 Subject: [PATCH] feat: Setting for rescheduling past bookings (#18358) * feat: Setting for rescheduling past bookings * fix stuff * rename column * add e2e test * fix column name * fix typo --------- Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com> Co-authored-by: Peer Richelsen Co-authored-by: CarinaWolli --- .../components/booking/BookingListItem.tsx | 2 +- apps/web/lib/booking.ts | 1 + .../reschedule/[uid]/getServerSideProps.ts | 3 +- .../bookings/views/bookings-single-view.tsx | 31 ++++++------ apps/web/playwright/reschedule.e2e.ts | 47 +++++++++++++++++++ apps/web/public/static/locales/en/common.json | 2 + .../tabs/advanced/EventAdvancedTab.tsx | 16 +++++++ packages/lib/defaultEvents.ts | 1 + packages/lib/server/eventTypeSelect.ts | 1 + packages/lib/server/repository/eventType.ts | 2 + packages/lib/test/builder.ts | 1 + .../event-types/hooks/useEventTypeForm.ts | 1 + .../migration.sql | 2 + packages/prisma/schema.prisma | 1 + packages/prisma/zod-utils.ts | 1 + .../routers/viewer/bookings/get.handler.ts | 1 + .../trpc/server/routers/viewer/slots/util.ts | 1 + 17 files changed, 97 insertions(+), 17 deletions(-) create mode 100644 packages/prisma/migrations/20241223163249_allow_rescheduling_past_booking_setting/migration.sql diff --git a/apps/web/components/booking/BookingListItem.tsx b/apps/web/components/booking/BookingListItem.tsx index 3ae610aad9..ee86420da8 100644 --- a/apps/web/components/booking/BookingListItem.tsx +++ b/apps/web/components/booking/BookingListItem.tsx @@ -216,7 +216,7 @@ function BookingListItem(booking: BookingItemProps) { ]; const editBookingActions: ActionType[] = [ - ...(isBookingInPast + ...(isBookingInPast && !booking.eventType.allowReschedulingPastBookings ? [] : [ { diff --git a/apps/web/lib/booking.ts b/apps/web/lib/booking.ts index 97e9cef7b0..13a95ac662 100644 --- a/apps/web/lib/booking.ts +++ b/apps/web/lib/booking.ts @@ -37,6 +37,7 @@ export const getEventTypesFromDB = async (id: number) => { price: true, currency: true, bookingFields: true, + allowReschedulingPastBookings: true, disableGuests: true, timeZone: true, profile: { diff --git a/apps/web/lib/reschedule/[uid]/getServerSideProps.ts b/apps/web/lib/reschedule/[uid]/getServerSideProps.ts index fe3974642f..ef6ac935bd 100644 --- a/apps/web/lib/reschedule/[uid]/getServerSideProps.ts +++ b/apps/web/lib/reschedule/[uid]/getServerSideProps.ts @@ -57,6 +57,7 @@ export async function getServerSideProps(context: GetServerSidePropsContext) { }, }, slug: true, + allowReschedulingPastBookings: true, team: { select: { parentId: true, @@ -131,7 +132,7 @@ export async function getServerSideProps(context: GetServerSidePropsContext) { }); const isBookingInPast = booking.endTime && new Date(booking.endTime) < new Date(); - if (isBookingInPast) { + if (isBookingInPast && !eventType.allowReschedulingPastBookings) { const destinationUrlSearchParams = new URLSearchParams(); const responses = bookingSeat ? getSafe(bookingSeat.data, ["responses"]) : booking.responses; const name = getSafe(responses, ["name"]); diff --git a/apps/web/modules/bookings/views/bookings-single-view.tsx b/apps/web/modules/bookings/views/bookings-single-view.tsx index e228303366..5cb9fe155c 100644 --- a/apps/web/modules/bookings/views/bookings-single-view.tsx +++ b/apps/web/modules/bookings/views/bookings-single-view.tsx @@ -730,22 +730,23 @@ export default function Success(props: PageProps) { <> - {!props.recurringBookings && !isBookingInPast && ( - - - - {t("reschedule")} - + {!props.recurringBookings && + (!isBookingInPast || eventType.allowReschedulingPastBookings) && ( + + + + {t("reschedule")} + + + {t("or_lowercase")} - {t("or_lowercase")} - - )} + )}