<?php
// api_corp/CORP_EVALUACIONES/matricula_auth.php
// POST { "ID_CURSO": 1 }
// Crea ESTUDIANTES_AUTH para todos los estudiantes matriculados en el curso

header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: Content-Type, Authorization");
header("Access-Control-Allow-Methods: POST, OPTIONS");
header("Content-Type: application/json; charset=utf-8");

if ($_SERVER["REQUEST_METHOD"] === "OPTIONS") { http_response_code(200); exit; }

require_once(__DIR__ . "/../../config.php");

function ok($data = [])  { echo json_encode(array_merge(["success" => true], $data)); exit; }
function fail($msg, $code = 400) {
    http_response_code($code);
    echo json_encode(["success" => false, "message" => $msg]); exit;
}

if ($_SERVER["REQUEST_METHOD"] !== "POST") fail("Método no permitido.", 405);

$body     = json_decode(file_get_contents("php://input"), true) ?: [];
$idCurso  = (int)($body["ID_CURSO"] ?? 0);
if (!$idCurso) fail("ID_CURSO requerido.");

// Traer todos los estudiantes matriculados activos en el curso
$st = $mysqli->prepare("
    SELECT e.ID_ESTUDIANTE, e.DOCUMENTO_ESTUDIANTE
    FROM MATRICULAS m
    INNER JOIN ESTUDIANTES e ON e.ID_ESTUDIANTE = m.ID_ESTUDIANTE
    WHERE m.ID_CURSO = ?
      AND m.ESTADO_MATRICULA = 1
      AND e.ESTADO_ESTUDIANTE = 1
");
if (!$st) fail("Error interno.");
$st->bind_param("i", $idCurso);
$st->execute();
$rows = $st->get_result()->fetch_all(MYSQLI_ASSOC);

if (!$rows) fail("No hay estudiantes matriculados en ese curso.");

$creados    = 0;
$existentes = 0;

foreach ($rows as $est) {
    // Contraseña inicial = número de documento
    $hash = password_hash($est["DOCUMENTO_ESTUDIANTE"], PASSWORD_BCRYPT);

    $ins = $mysqli->prepare("
        INSERT IGNORE INTO ESTUDIANTES_AUTH
            (ID_ESTUDIANTE, PASSWORD_HASH, DEBE_CAMBIAR_PASS)
        VALUES (?, ?, 1)
    ");
    $ins->bind_param("is", $est["ID_ESTUDIANTE"], $hash);
    $ins->execute();

    if ($ins->affected_rows > 0) $creados++;
    else $existentes++;
}

ok([
    "creados"    => $creados,
    "existentes" => $existentes,
    "total"      => count($rows),
    "message"    => "Auth creadas. Contraseña inicial = número de documento."
]);