* refactor: handleNewBooking #3 * refactor: create booking factor * refactor: handleNewBooking * refactor: seats and rescheduleUId * chore: remove comment * fix: type err * chore: add missing statement * chore: use less params and other improvements * chore: name * chore: improvement * fix: type err * Typo fix * chore: fix type err * refactor: more readable * refactor: improve code * fix: conflicts --------- Co-authored-by: Joe Au-Yeung <j.auyeung419@gmail.com> Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com> Co-authored-by: Syed Ali Shahbaz <52925846+alishaz-polymath@users.noreply.github.com>
44 lines
1.2 KiB
TypeScript
44 lines
1.2 KiB
TypeScript
import dayjs from "@calcom/dayjs";
|
|
import { checkBookingLimits, checkDurationLimits } from "@calcom/lib/server";
|
|
import type { IntervalLimit } from "@calcom/types/Calendar";
|
|
|
|
import type { NewBookingEventType } from "./types";
|
|
|
|
type EventType = Pick<NewBookingEventType, "bookingLimits" | "durationLimits" | "id" | "schedule">;
|
|
|
|
type InputProps = {
|
|
eventType: EventType;
|
|
reqBodyStart: string;
|
|
reqBodyRescheduleUid?: string;
|
|
};
|
|
|
|
export const checkBookingAndDurationLimits = async ({
|
|
eventType,
|
|
reqBodyStart,
|
|
reqBodyRescheduleUid,
|
|
}: InputProps) => {
|
|
if (
|
|
Object.prototype.hasOwnProperty.call(eventType, "bookingLimits") ||
|
|
Object.prototype.hasOwnProperty.call(eventType, "durationLimits")
|
|
) {
|
|
const startAsDate = dayjs(reqBodyStart).toDate();
|
|
if (eventType.bookingLimits && Object.keys(eventType.bookingLimits).length > 0) {
|
|
await checkBookingLimits(
|
|
eventType.bookingLimits as IntervalLimit,
|
|
startAsDate,
|
|
eventType.id,
|
|
reqBodyRescheduleUid,
|
|
eventType.schedule?.timeZone
|
|
);
|
|
}
|
|
if (eventType.durationLimits) {
|
|
await checkDurationLimits(
|
|
eventType.durationLimits as IntervalLimit,
|
|
startAsDate,
|
|
eventType.id,
|
|
reqBodyRescheduleUid
|
|
);
|
|
}
|
|
}
|
|
};
|