<?php

require_once __DIR__ . "/../../config/Database.php";

if ($_SERVER['REQUEST_METHOD'] === 'GET' && isset($_GET['n'])){
    $numero_inserts = intval($_GET['n']);

    if ($numero_inserts <= 0) {
        echo "El número de inserts debe ser un entero positivo.";
        exit;
    }

    // Configuración de rangos para campos aleatorios
    $id_examen_min = 1;
    $id_examen_max = 15;
    $id_tipo_id_min = 1;
    $id_tipo_id_max = 5;
    $id_rango_edad_min = 1;
    $id_rango_edad_max = 7;
    $id_genero_min = 1;
    $id_genero_max = 3;

    $conn = Database::getInstance();

    $conn->begin_transaction();

    try {
        for ($i = 1; $i <= $numero_inserts; $i++) {
            $nombres = "Nombre" . $i;
            $primer_apellido = "ApellidoP" . $i;
            $segundo_apellido = "ApellidoM" . $i;
            $correo = "correo" . $i . "@gmail.com";
            
            $fecha_entrada = date('Y-m-d H:i:s');
            // fecha_salida es NULL por defecto en la tabla, o se puede especificar como NULL

            $telefono = '';
            for ($j = 0; $j < 10; $j++) {
                $telefono .= rand(0, 9);
            }

            $id_examen = rand($id_examen_min, $id_examen_max);
            $id_tipo_id = rand($id_tipo_id_min, $id_tipo_id_max);
            $id_rango_edad = rand($id_rango_edad_min, $id_rango_edad_max);
            $id_genero = rand($id_genero_min, $id_genero_max);

            $sql = "INSERT INTO candidato (fecha_entrada, nombres, primer_apellido, segundo_apellido, correo, telefono, id_examen, id_tipo_id, id_rango_edad, id_genero) 
                    VALUES ('{$fecha_entrada}', '{$nombres}', '{$primer_apellido}', '{$segundo_apellido}', '{$correo}', '{$telefono}', {$id_examen}, {$id_tipo_id}, {$id_rango_edad}, {$id_genero})";

            if (!$conn->query($sql)) {
                throw new Exception("Error al insertar el registro {$i}: " . $conn->error);
            }
        }
        $conn->commit();
        echo "Se han insertado {$numero_inserts} registros exitosamente.";

    } catch (Exception $e) {
        $conn->rollback();
        echo "Error en la transacción: " . $e->getMessage();
    } finally {
        $conn->close();
    }
    
} else {
    echo "Parámetros incorrectos. Asegúrate de pasar 'n' como parámetro GET con un número entero. Por ejemplo: .../ruta/inserts-prueba.php?n=5";
}

?>