<?php
/**
 * configuracionController.php — Sprint 14
 * Rutas assets confirmadas:
 *   logo      → assets/images/logo.png       (usado por index.php)
 *   bg_desktop → assets/images/2a.jpg        (≥1200px en estilos.css)
 *   bg_mobile  → assets/images/2.jpg         (300-1199px en estilos.css)
 */
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/models/datos.php';
require_once __DIR__ . '/../../../app/helpers/csrf.php';

validarCSRF();

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

$d   = new \app\models\datos();
$cfg = $d->obtenerDatos();

// Preservar valores actuales de BD
$notaDB = $cfg->nota ?? '';

// Tiempo de palabra
$tiempo_palabra = isset($_POST['tiempo_palabra']) ? (int)$_POST['tiempo_palabra'] : 120;
$usar_poderes  = isset($_POST['usar_poderes'])  ? (int)$_POST['usar_poderes']  : 1;

// ── Uploads de assets ────────────────────────────────────────────────────────
// Rutas destino confirmadas desde estilos.css e index.php
$uploadDir = dirname(__DIR__, 3) . '/assets/images/';
if (!is_dir($uploadDir)) { mkdir($uploadDir, 0755, true); }

$archivos = [
    // campo       → nombre fijo destino            → extensiones permitidas
    'logo'       => ['logo.png',   ['png','jpg','jpeg','webp']],
    'bg_desktop' => ['2a.jpg',     ['jpg','jpeg','png','webp']],
    'bg_mobile'  => ['2.jpg',      ['jpg','jpeg','png','webp']],
];

$logo = $bg_desktop = $bg_mobile = null;

foreach ($archivos as $campo => [$destNombre, $exts]) {
    if (empty($_FILES[$campo]['tmp_name']) || $_FILES[$campo]['error'] !== UPLOAD_ERR_OK) {
        continue;
    }
    // Validar extensión
    $ext = strtolower(pathinfo($_FILES[$campo]['name'], PATHINFO_EXTENSION));
    if (!in_array($ext, $exts)) { continue; }
    // Validar tamaño (2MB)
    if ($_FILES[$campo]['size'] > 2097152) { continue; }
    // Validar que es imagen real
    if (!@getimagesize($_FILES[$campo]['tmp_name'])) { continue; }

    // Para logo: mantener nombre logo.png independientemente de la extensión subida
    // Para fondos: siempre .jpg (el CSS espera 2.jpg y 2a.jpg)
    $dest = $uploadDir . $destNombre;
    if (move_uploaded_file($_FILES[$campo]['tmp_name'], $dest)) {
        // Guardar en BD la ruta relativa desde la raíz del proyecto
        $$campo = 'assets/images/' . $destNombre;
    }
}

// ── Guardar ──────────────────────────────────────────────────────────────────
$d->actualizarDatos(
    strip_tags(trim($_POST['titulo']               ?? '')),
    strip_tags(trim($_POST['app']                  ?? '')),
    strip_tags(trim($_POST['saludo']               ?? '')),
    strip_tags(trim($_POST['parrafo']              ?? '')),
    $notaDB,
    strip_tags(trim($_POST['modal']                ?? '')),
    strip_tags(trim($_POST['estadoCerrado']        ?? '')),
    strip_tags(trim($_POST['mensajeVotoRealizado'] ?? '')),
    strip_tags(trim($_POST['mensajeVoto']          ?? '')),
    strip_tags(trim($_POST['mensajeDeTexto']       ?? '')),
    strip_tags(trim($_POST['celular']              ?? '')),
    $cfg->resultadosOff ?? 'false',
    strip_tags(trim($_POST['textoWS']              ?? '')),
    strip_tags(trim($_POST['textoComuniquese']     ?? '')),
    1,
    1,
    $tiempo_palabra,
    $logo,
    $bg_desktop,
    $bg_mobile,
    $usar_poderes
);

header("Location: ../../../administradores/configuracion.php?success=Configuración+guardada+correctamente");
exit;
