fix: reschedule timezone (#10697)
* fix: reschedule timezone Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in> * fix: use original rescheduled booking Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in> * only when organizer reschedules --------- Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in> Co-authored-by: CarinaWolli <wollencarina@gmail.com>
This commit is contained in:
parent
7dafaf1381
commit
1a818ab0c3
|
@ -652,7 +652,6 @@ async function handler(
|
|||
|
||||
const fullName = getFullName(bookerName);
|
||||
|
||||
const tAttendees = await getTranslation(language ?? "en", "common");
|
||||
const tGuests = await getTranslation("en", "common");
|
||||
log.debug(`Booking eventType ${eventTypeId} started`);
|
||||
const dynamicUserList = Array.isArray(reqBody.user) ? reqBody.user : getUsernameList(reqBody.user);
|
||||
|
@ -848,6 +847,46 @@ async function handler(
|
|||
|
||||
const allCredentials = await getAllCredentials(organizerUser, eventType);
|
||||
|
||||
let rescheduleUid = reqBody.rescheduleUid;
|
||||
let bookingSeat: Prisma.BookingSeatGetPayload<{ include: { booking: true; attendee: true } }> | null = null;
|
||||
type BookingType = Prisma.PromiseReturnType<typeof getOriginalRescheduledBooking>;
|
||||
let originalRescheduledBooking: BookingType = null;
|
||||
|
||||
if (rescheduleUid) {
|
||||
// rescheduleUid can be bookingUid and bookingSeatUid
|
||||
bookingSeat = await prisma.bookingSeat.findUnique({
|
||||
where: {
|
||||
referenceUid: rescheduleUid,
|
||||
},
|
||||
include: {
|
||||
booking: true,
|
||||
attendee: true,
|
||||
},
|
||||
});
|
||||
if (bookingSeat) {
|
||||
rescheduleUid = bookingSeat.booking.uid;
|
||||
}
|
||||
originalRescheduledBooking = await getOriginalRescheduledBooking(
|
||||
rescheduleUid,
|
||||
!!eventType.seatsPerTimeSlot
|
||||
);
|
||||
if (!originalRescheduledBooking) {
|
||||
throw new HttpError({ statusCode: 404, message: "Could not find original booking" });
|
||||
}
|
||||
}
|
||||
|
||||
const isOrganizerRescheduling = organizerUser.id === userId;
|
||||
|
||||
const attendeeInfoOnReschedule =
|
||||
isOrganizerRescheduling && originalRescheduledBooking
|
||||
? originalRescheduledBooking.attendees.find((attendee) => attendee.email === bookerEmail)
|
||||
: null;
|
||||
|
||||
const attendeeLanguage = attendeeInfoOnReschedule ? attendeeInfoOnReschedule.locale : language;
|
||||
const attendeeTimezone = attendeeInfoOnReschedule ? attendeeInfoOnReschedule.timeZone : reqBody.timeZone;
|
||||
|
||||
const tAttendees = await getTranslation(attendeeLanguage ?? "en", "common");
|
||||
|
||||
// use host default
|
||||
if (isTeamEventType && locationBodyString === OrganizerDefaultConferencingAppType) {
|
||||
const metadataParseResult = userMetadataSchema.safeParse(organizerUser.metadata);
|
||||
|
@ -868,8 +907,8 @@ async function handler(
|
|||
name: fullName,
|
||||
firstName: (typeof bookerName === "object" && bookerName.firstName) || "",
|
||||
lastName: (typeof bookerName === "object" && bookerName.lastName) || "",
|
||||
timeZone: reqBody.timeZone,
|
||||
language: { translate: tAttendees, locale: language ?? "en" },
|
||||
timeZone: attendeeTimezone,
|
||||
language: { translate: tAttendees, locale: attendeeLanguage ?? "en" },
|
||||
},
|
||||
];
|
||||
|
||||
|
@ -883,7 +922,7 @@ async function handler(
|
|||
name: "",
|
||||
firstName: "",
|
||||
lastName: "",
|
||||
timeZone: reqBody.timeZone,
|
||||
timeZone: attendeeTimezone,
|
||||
language: { translate: tGuests, locale: "en" },
|
||||
});
|
||||
return guestArray;
|
||||
|
@ -982,34 +1021,6 @@ async function handler(
|
|||
seatsPerTimeSlot: eventType.seatsPerTimeSlot,
|
||||
};
|
||||
|
||||
let rescheduleUid = reqBody.rescheduleUid;
|
||||
let bookingSeat: Prisma.BookingSeatGetPayload<{ include: { booking: true; attendee: true } }> | null = null;
|
||||
type BookingType = Prisma.PromiseReturnType<typeof getOriginalRescheduledBooking>;
|
||||
let originalRescheduledBooking: BookingType = null;
|
||||
|
||||
if (rescheduleUid) {
|
||||
// rescheduleUid can be bookingUid and bookingSeatUid
|
||||
bookingSeat = await prisma.bookingSeat.findUnique({
|
||||
where: {
|
||||
referenceUid: rescheduleUid,
|
||||
},
|
||||
include: {
|
||||
booking: true,
|
||||
attendee: true,
|
||||
},
|
||||
});
|
||||
if (bookingSeat) {
|
||||
rescheduleUid = bookingSeat.booking.uid;
|
||||
}
|
||||
originalRescheduledBooking = await getOriginalRescheduledBooking(
|
||||
rescheduleUid,
|
||||
!!eventType.seatsPerTimeSlot
|
||||
);
|
||||
if (!originalRescheduledBooking) {
|
||||
throw new HttpError({ statusCode: 404, message: "Could not find original booking" });
|
||||
}
|
||||
}
|
||||
|
||||
/* Used for seats bookings to update evt object with video data */
|
||||
const addVideoCallDataToEvt = (bookingReferences: BookingReference[]) => {
|
||||
const videoCallReference = bookingReferences.find((reference) => reference.type.includes("_video"));
|
||||
|
@ -1397,7 +1408,7 @@ async function handler(
|
|||
const updatedBookingAttendees = updatedNewBooking.attendees.map((attendee) => {
|
||||
const evtAttendee = {
|
||||
...attendee,
|
||||
language: { translate: tAttendees, locale: language ?? "en" },
|
||||
language: { translate: tAttendees, locale: attendeeLanguage ?? "en" },
|
||||
};
|
||||
return evtAttendee;
|
||||
});
|
||||
|
@ -1529,7 +1540,7 @@ async function handler(
|
|||
} else {
|
||||
// Need to add translation for attendees to pass type checks. Since these values are never written to the db we can just use the new attendee language
|
||||
const bookingAttendees = booking.attendees.map((attendee) => {
|
||||
return { ...attendee, language: { translate: tAttendees, locale: language ?? "en" } };
|
||||
return { ...attendee, language: { translate: tAttendees, locale: attendeeLanguage ?? "en" } };
|
||||
});
|
||||
|
||||
evt = { ...evt, attendees: [...bookingAttendees, invitee[0]] };
|
||||
|
|
Loading…
Reference in New Issue
Block a user