<?php
/**
 * votacionController.php — Sprint 9A
 * Agrega campo 'pregunta' en crear y actualizar
 */
namespace app\controller\administradores;

use app\models\votacion;

require_once '../../../app/models/votacion.php';
require_once '../../../app/helpers/csrf.php';

session_save_path("/home/evolucionamos/public_html/mejora/sessions");
session_start();

if (empty($_SESSION['adm']) || $_SESSION['role'] != 1) {
    header("Location: ../../../administradores/index.php"); exit;
}

validarCSRF();

$model  = new votacion();
$accion = isset($_POST['accion']) ? strip_tags($_POST['accion']) : '';

switch ($accion) {

    case 'crear':
        $pregunta = isset($_POST['pregunta'])     ? strip_tags(trim($_POST['pregunta'])) : '';
        $titulo   = $pregunta; // título = pregunta — campo unificado Sprint 16
        $tipo     = isset($_POST['tipo'])         ? strip_tags($_POST['tipo'])           : 'eleccion';
        $desc     = isset($_POST['descripcion'])  ? strip_tags(trim($_POST['descripcion'])) : '';
        $min      = isset($_POST['min_candidatos']) ? max(1, (int)$_POST['min_candidatos']) : 1;
        $max      = isset($_POST['max_candidatos']) ? max(1, (int)$_POST['max_candidatos']) : 1;

        if (!$pregunta) {
            header("Location: ../../../administradores/votaciones.php?error=Enunciado+obligatorio"); exit;
        }

        $id = $model->crear($titulo, $tipo, $desc, $min, $max, $_SESSION['adm'], $pregunta);
        header("Location: ../../../administradores/votacion_detalle.php?id=$id&success=Votación+creada");
        exit;

    case 'actualizar':
        $id       = (int)$_POST['id'];
        $pregunta = isset($_POST['pregunta'])     ? strip_tags(trim($_POST['pregunta'])) : '';
        $titulo   = $pregunta; // título = pregunta — campo unificado Sprint 16
        $tipo     = isset($_POST['tipo'])         ? strip_tags($_POST['tipo'])           : 'eleccion';
        $desc     = isset($_POST['descripcion'])  ? strip_tags(trim($_POST['descripcion'])) : '';
        $min      = isset($_POST['min_candidatos']) ? max(1, (int)$_POST['min_candidatos']) : 1;
        $max      = isset($_POST['max_candidatos']) ? max(1, (int)$_POST['max_candidatos']) : 1;

        $model->actualizar($id, $titulo, $tipo, $desc, $min, $max, $pregunta);
        header("Location: ../../../administradores/votacion_detalle.php?id=$id&success=Votación+actualizada");
        exit;

    case 'cambiar_estado':
        $id     = (int)$_POST['id'];
        $estado = isset($_POST['estado']) ? strip_tags($_POST['estado']) : '';
        $redir  = isset($_POST['redir'])  ? strip_tags($_POST['redir'])  : 'detalle';
        $ok     = $model->cambiarEstado($id, $estado);
        $msg    = $ok ? "Estado+cambiado+a+$estado" : "Transición+no+permitida";
        $type   = $ok ? 'success' : 'error';

        // Soporte redirigir a resultados.php (cuando se cambia desde allí)
        if ($redir === 'resultados') {
            header("Location: ../../../administradores/resultados.php?$type=$msg"); exit;
        }
        header("Location: ../../../administradores/votacion_detalle.php?id=$id&$type=$msg");
        exit;

    case 'eliminar':
        $id  = (int)$_POST['id'];
        $ok  = $model->eliminar($id);
        $msg = $ok ? "Votación+eliminada" : "Solo+se+pueden+eliminar+votaciones+en+configuración";
        $type = $ok ? 'success' : 'error';
        header("Location: ../../../administradores/votaciones.php?$type=$msg"); exit;

    default:
        header("Location: ../../../administradores/votaciones.php?error=Acción+no+válida"); exit;
}
