Files
Benny JooandGitHub b3a28dca25 refactor: circular deps between app store and lib [4] (#23829)
* mv team queries to features from lib

* update imports

* same

* wip

* move event manager test

* calendar manager to features from lib

* update imports

* update imports

* fix

* mv getEventTypeById

* fix

* fix

* remove

* fix type check error

* fix tests

* fix tests

* fix
2025-09-18 01:42:40 +01:00

57 lines
1.9 KiB
TypeScript

// eslint-disable-next-line no-restricted-imports
import type EventManager from "@calcom/features/bookings/lib/EventManager";
import type { createLoggerWithEventDetails } from "../../../handleNewBooking/logger";
import type {
NewTimeSlotBooking,
SeatedBooking,
RescheduleSeatedBookingObject,
HandleSeatsResultBooking,
} from "../../types";
import combineTwoSeatedBookings from "./combineTwoSeatedBookings";
import moveSeatedBookingToNewTimeSlot from "./moveSeatedBookingToNewTimeSlot";
const ownerRescheduleSeatedBooking = async (
rescheduleSeatedBookingObject: RescheduleSeatedBookingObject,
newTimeSlotBooking: NewTimeSlotBooking | null,
seatedBooking: SeatedBooking,
resultBooking: HandleSeatsResultBooking | null,
eventManager: EventManager,
loggerWithEventDetails: ReturnType<typeof createLoggerWithEventDetails>
) => {
const { originalRescheduledBooking, tAttendees } = rescheduleSeatedBookingObject;
const { evt } = rescheduleSeatedBookingObject;
evt.attendees =
originalRescheduledBooking?.attendees.map((attendee) => {
return {
name: attendee.name,
email: attendee.email,
timeZone: attendee.timeZone,
language: { translate: tAttendees, locale: attendee.locale ?? "en" },
};
}) ?? [];
// If there is no booking during the new time slot then update the current booking to the new date
if (!newTimeSlotBooking) {
resultBooking = await moveSeatedBookingToNewTimeSlot(
rescheduleSeatedBookingObject,
seatedBooking,
eventManager,
loggerWithEventDetails
);
} else {
// If a booking already exists during the new time slot then merge the two bookings together
resultBooking = await combineTwoSeatedBookings(
rescheduleSeatedBookingObject,
seatedBooking,
newTimeSlotBooking,
eventManager,
loggerWithEventDetails
);
}
return resultBooking;
};
export default ownerRescheduleSeatedBooking;