import type { Prisma as PrismaType } from "@prisma/client";

import { prisma } from "@calcom/prisma";

/**
 * Creates a team event type and assigns all team members as hosts
 * @param teamId - The team ID
 * @param eventType - Event type data to create
 * @returns The created event type
 */
export async function createRoundRobinTeamEventType({
  teamId,
  eventType,
}: {
  teamId: number;
  eventType: PrismaType.EventTypeCreateInput;
}) {
  const createdEventType = await prisma.eventType.create({
    data: {
      ...eventType,
      team: {
        connect: {
          id: teamId,
        },
      },
    },
    include: {
      team: true,
    },
  });

  const teamMemberships = await prisma.membership.findMany({
    where: {
      teamId,
    },
  });

  // Add all team members as hosts (excluding the current user who's already added)
  for (const membership of teamMemberships) {
    await prisma.host.create({
      data: {
        userId: membership.userId,
        eventTypeId: createdEventType.id,
        isFixed: false, // ROUND_ROBIN scheduling type
      },
    });
  }

  return createdEventType;
}
