"use strict";
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const index = require("./orgDomains-W_rFTMBa.cjs");
const common = require("./common-C_pLEsZT.cjs");
const markHostsAsNoShowInBooking = async (booking, hostsThatDidntJoinTheCall) => {
  try {
    await Promise.allSettled(
      hostsThatDidntJoinTheCall.map((host) => {
        if (booking?.user?.id === host.id) {
          return index.prisma.booking.update({
            where: {
              uid: booking.uid
            },
            data: {
              noShowHost: true
            }
          });
        } else if (booking.attendees?.some((attendee) => attendee.email === host.email)) {
          return index.prisma.attendee.update({
            where: { id: host.id },
            data: { noShow: true }
          });
        }
        return Promise.resolve();
      })
    );
  } catch (error) {
    common.log.error("Error marking hosts as no show in booking", error);
  }
};
async function triggerHostNoShow(payload) {
  const result = await common.prepareNoShowTrigger(payload);
  if (!result)
    return;
  const { booking, webhook, hostsThatDidntJoinTheCall, originalRescheduledBooking, participants } = result;
  const maxStartTime = common.calculateMaxStartTime(booking.startTime, webhook.time, webhook.timeUnit);
  const hostsNoShowPromises = hostsThatDidntJoinTheCall.map((host) => {
    return common.sendWebhookPayload(
      webhook,
      index.WebhookTriggerEvents.AFTER_HOSTS_CAL_VIDEO_NO_SHOW,
      booking,
      maxStartTime,
      participants,
      originalRescheduledBooking,
      host.email
    );
  });
  await Promise.all(hostsNoShowPromises);
  await markHostsAsNoShowInBooking(booking, hostsThatDidntJoinTheCall);
}
exports.triggerHostNoShow = triggerHostNoShow;
