import { PrismaClient } from "@prisma/client";
import bcrypt from "bcryptjs";

const prisma = new PrismaClient();

async function main() {
  console.log("Iniciando la creación del nuevo colegio con sus cursos y estudiantes...");

  // 1. Encriptar la contraseña maestra
  const hashedPassword = await bcrypt.hash("cursosnirgua*2026", 10);

  // 2. Crear el nuevo Colegio
  const nuevoColegio = await prisma.colegio.create({
    data: {
      nombre: "Instituto Tecnológico del Centro",
      ubicacion: "Av. Bolívar, Nirgua, Yaracuy",
      email: "contacto@itc.edu.ve",
      telefono: "0254-1234567",
      color: "#2ecc71" // Un color verde para diferenciarlo
    }
  });

  console.log(`✅ Colegio creado: ${nuevoColegio.nombre} (ID: ${nuevoColegio.id})`);

  // Nombres de ejemplo para cursos y estudiantes
  const nombresCursos = [
    "Introducción a la Programación Web",
    "Diseño Gráfico para Principiantes",
    "Marketing Digital Básico",
    "Inglés Conversacional Nivel 1",
    "Reparación de Computadoras"
  ];

  // 3. Crear 5 cursos gratis para este colegio
  for (let i = 0; i < 5; i++) {
    const curso = await prisma.curso.create({
      data: {
        colegioId: nuevoColegio.id,
        titulo: nombresCursos[i],
        categoria: "Tecnología y Oficios",
        precio: 0,
        fechaInicio: new Date(new Date().setDate(new Date().getDate() + 7)), // Comienza en 7 días
        mostrarPrecio: true,
        tipoCobro: "GRATIS",
        matriculaMax: 20
      }
    });

    console.log(`✅ Curso gratis creado: ${curso.titulo}`);

    // 4. Crear 3 estudiantes únicos para cada curso e inscribirlos
    for (let j = 1; j <= 3; j++) {
      const estudianteEmail = `estudiante${i + 1}_${j}@itc.edu.ve`;
      
      const estudiante = await prisma.user.create({
        data: {
          name: `Estudiante ${j} - ${curso.titulo.split(' ')[0]}`,
          apellido: "Prueba",
          email: estudianteEmail,
          password: hashedPassword,
          role: "ESTUDIANTE",
          status: "SOLVENTE",
          colegioId: nuevoColegio.id // Asignado a la sede
        }
      });

      // Crear la inscripción
      await prisma.inscripcion.create({
        data: {
          userId: estudiante.id,
          cursoId: curso.id,
          estadoFlujo: "INSCRITO",
          estadoPago: "APROBADO" // Es gratis, así que ya está aprobado
        }
      });
      
      console.log(`   🎓 Inscrito: ${estudiante.email}`);
    }
  }

  console.log("🎉 ¡Proceso finalizado con éxito! El colegio, cursos y estudiantes han sido creados.");
}

main()
  .catch((e) => {
    console.error("Error durante el script:", e);
    process.exit(1);
  })
  .finally(async () => {
    await prisma.$disconnect();
  });
