import { t as WebhookTriggerEvents, p as prisma } from "./index-Cw1zbw54.js";
import { p as prepareNoShowTrigger, c as calculateMaxStartTime, s as sendWebhookPayload, l as log } from "./common-cNQ15z0G.js";
const markHostsAsNoShowInBooking = async (booking, hostsThatDidntJoinTheCall) => {
  try {
    await Promise.allSettled(
      hostsThatDidntJoinTheCall.map((host) => {
        if (booking?.user?.id === host.id) {
          return prisma.booking.update({
            where: {
              uid: booking.uid
            },
            data: {
              noShowHost: true
            }
          });
        } else if (booking.attendees?.some((attendee) => attendee.email === host.email)) {
          return prisma.attendee.update({
            where: { id: host.id },
            data: { noShow: true }
          });
        }
        return Promise.resolve();
      })
    );
  } catch (error) {
    log.error("Error marking hosts as no show in booking", error);
  }
};
async function triggerHostNoShow(payload) {
  const result = await prepareNoShowTrigger(payload);
  if (!result)
    return;
  const { booking, webhook, hostsThatDidntJoinTheCall, originalRescheduledBooking, participants } = result;
  const maxStartTime = calculateMaxStartTime(booking.startTime, webhook.time, webhook.timeUnit);
  const hostsNoShowPromises = hostsThatDidntJoinTheCall.map((host) => {
    return sendWebhookPayload(
      webhook,
      WebhookTriggerEvents.AFTER_HOSTS_CAL_VIDEO_NO_SHOW,
      booking,
      maxStartTime,
      participants,
      originalRescheduledBooking,
      host.email
    );
  });
  await Promise.all(hostsNoShowPromises);
  await markHostsAsNoShowInBooking(booking, hostsThatDidntJoinTheCall);
}
export {
  triggerHostNoShow
};
