Files
calendar/packages/features/tasker/tasks/triggerNoShow/triggerGuestNoShow.ts
T
Udit TakkarandGitHub 04b49acbb0 chore: add rescheduled by property (#17631)
* refactor: add rescheduledBy

* chore

* fix: bug

* test: add test for rescheduled booking

* fix: test
2024-11-21 11:51:19 -05:00

50 lines
1.4 KiB
TypeScript

import { prisma } from "@calcom/prisma";
import { WebhookTriggerEvents } from "@calcom/prisma/enums";
import { calculateMaxStartTime, sendWebhookPayload, prepareNoShowTrigger, log } from "./common";
import type { Host } from "./common";
const markAllGuestNoshowInBooking = async ({
bookingId,
hostsThatJoinedTheCall,
}: {
bookingId: number;
hostsThatJoinedTheCall: Host[];
}) => {
try {
const hostsThatJoinedTheCallEmails = hostsThatJoinedTheCall.map((h) => h.email);
await prisma.attendee.updateMany({
where: {
bookingId,
email: { notIn: hostsThatJoinedTheCallEmails },
},
data: { noShow: true },
});
} catch (err) {
log.error("Error marking guests as no show in booking", err);
}
};
export async function triggerGuestNoShow(payload: string): Promise<void> {
const result = await prepareNoShowTrigger(payload);
if (!result) return;
const { webhook, booking, hostsThatJoinedTheCall, didGuestJoinTheCall, originalRescheduledBooking } =
result;
const maxStartTime = calculateMaxStartTime(booking.startTime, webhook.time, webhook.timeUnit);
if (!didGuestJoinTheCall) {
await sendWebhookPayload(
webhook,
WebhookTriggerEvents.AFTER_GUESTS_CAL_VIDEO_NO_SHOW,
booking,
maxStartTime,
originalRescheduledBooking
);
await markAllGuestNoshowInBooking({ bookingId: booking.id, hostsThatJoinedTheCall });
}
}