<?php
/**
 * fotoCandidatoController.php
 * Sube fotos de candidatos → assets/candidatos/{nombre_original_sin_ext}.jpg
 * Acepta una o múltiples fotos. El nombre del archivo define el ID.
 */
if (session_status() === PHP_SESSION_NONE) { session_save_path("/home/evolucionamos/public_html/mejora/sessions"); session_start(); }
if (empty($_SESSION['adm']) || ($_SESSION['role'] != 1 && $_SESSION['role'] != 3)) {
    header("Location: ../../../administradores/index.php"); exit;
}

require_once __DIR__ . '/../../../app/helpers/csrf.php';
validarCSRF();

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    header("Location: ../../../administradores/configuracion.php"); exit;
}

$destDir = dirname(__DIR__, 3) . '/assets/candidatos/';
if (!is_dir($destDir)) { mkdir($destDir, 0755, true); }

$extsOk  = ['jpg','jpeg','png','webp'];
$subidas = 0;
$errores = 0;

// Normalizar $_FILES para uno o múltiples archivos
$files = [];
if (isset($_FILES['fotos']['name']) && is_array($_FILES['fotos']['name'])) {
    // Múltiples
    foreach ($_FILES['fotos']['name'] as $i => $name) {
        $files[] = [
            'name'     => $name,
            'tmp_name' => $_FILES['fotos']['tmp_name'][$i],
            'error'    => $_FILES['fotos']['error'][$i],
            'size'     => $_FILES['fotos']['size'][$i],
        ];
    }
} elseif (isset($_FILES['fotos']['name'])) {
    // Uno solo
    $files[] = $_FILES['fotos'];
}

foreach ($files as $file) {
    if ($file['error'] !== UPLOAD_ERR_OK) { $errores++; continue; }
    if ($file['size'] > 2097152)           { $errores++; continue; }
    if (!@getimagesize($file['tmp_name'])) { $errores++; continue; }

    $ext = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION));
    if (!in_array($ext, $extsOk)) { $errores++; continue; }

    // Usar nombre original sin extensión, sanitizado
    $base     = pathinfo($file['name'], PATHINFO_FILENAME);
    $base     = preg_replace('/[^a-zA-Z0-9_\-]/', '', $base);
    if ($base === '') { $errores++; continue; }

    $destFile = $destDir . $base . '.jpg';

    if ($ext === 'jpg' || $ext === 'jpeg') {
        if (move_uploaded_file($file['tmp_name'], $destFile)) { $subidas++; } else { $errores++; }
    } else {
        $img = match($ext) {
            'png'  => @imagecreatefrompng($file['tmp_name']),
            'webp' => @imagecreatefromwebp($file['tmp_name']),
            default => false,
        };
        if ($img) {
            imagejpeg($img, $destFile, 90);
            imagedestroy($img);
            $subidas++;
        } else { $errores++; }
    }
}

if ($errores === 0) {
    header("Location: ../../../administradores/configuracion.php?success={$subidas}+foto(s)+subida(s)+correctamente");
} else {
    header("Location: ../../../administradores/configuracion.php?success={$subidas}+subida(s)&error={$errores}+con+error");
}
exit;
