"use server";

import { db } from "@/lib/db";
import { asistencia } from "@/db/schema";
import { revalidatePath } from "next/cache";
import { getServerSession } from "next-auth/next";
import { authOptions } from "@/lib/auth";
import crypto from "crypto";

export async function registrarAsistenciaBlock(claseId: string, registros: { inscripcionId: string; asistio: boolean; pagoDebe: boolean; observacion?: string }[]) {
  const session = await getServerSession(authOptions);
  if (!session || (session.user.role !== "PROFESOR" && session.user.role !== "SUPERADMIN" && session.user.role !== "ADMIN_COLEGIO")) {
    throw new Error("No tienes permisos para registrar asistencia.");
  }

  // Iterar por cada registro y hacer insert con duplicado
  for (const registro of registros) {
    const id = crypto.randomUUID();
    await db.insert(asistencia)
      .values({
        id,
        inscripcionId: registro.inscripcionId,
        claseId: claseId,
        asistio: registro.asistio,
        pagoDebe: registro.pagoDebe,
        observacion: registro.observacion || null,
        fecha: new Date(),
        updatedAt: new Date(),
      })
      .onDuplicateKeyUpdate({
        set: {
          asistio: registro.asistio,
          pagoDebe: registro.pagoDebe,
          observacion: registro.observacion || null,
          fecha: new Date(),
          updatedAt: new Date(),
        }
      });
  }

  revalidatePath("/profesor");
  revalidatePath("/dashboard/morosos");
  
  return { success: true };
}
