<?php
namespace app\models;
require_once __DIR__ . '/conexion.php';

use PDO;

class datos extends conexion
{
    public function obtenerDatos()
    {
        $db = $this->DB();
        $q  = $db->prepare("SELECT * FROM datos");
        $q->execute();
        return $q->fetch(PDO::FETCH_OBJ);
    }

    /**
     * Actualiza configuración general.
     * Sprint 14: firma completa con tiempo_palabra + logo + bg_desktop + bg_mobile
     */
    public function actualizarDatos(
        $titulo,
        $app,
        $saludo,
        $parrafo,
        $nota,
        $modal,
        $estadoCerrado,
        $mensajeVotoRealizado,
        $mensajeVoto,
        $mensajeDeTexto,
        $celular,
        $resultadosOff,
        $textoWS,
        $textoComuniquese,
        $minCandidates,
        $maxCandidates,
        $tiempo_palabra = 120,
        $logo           = null,
        $bg_desktop     = null,
        $bg_mobile      = null,
        $usar_poderes   = 1
    ) {
        $db = $this->DB();

        // Construir SET dinámico — solo actualizar assets si se subió archivo
        $sets = "
            titulo                = :titulo,
            app                   = :app,
            saludo                = :saludo,
            parrafo               = :parrafo,
            nota                  = :nota,
            modal                 = :modal,
            estadoCerrado         = :estadoCerrado,
            mensajeVotoRealizado  = :mensajeVotoRealizado,
            mensajeVoto           = :mensajeVoto,
            mensajeDeTexto        = :mensajeDeTexto,
            celular               = :celular,
            resultadosOff         = :resultadosOff,
            textoWS               = :textoWS,
            textoComuniquese      = :textoComuniquese,
            minCandidates         = :minCandidates,
            maxCandidates         = :maxCandidates,
            tiempo_palabra        = :tiempo_palabra,
            usar_poderes          = :usar_poderes";

        $params = [
            ':titulo'               => $titulo,
            ':app'                  => $app,
            ':saludo'               => $saludo,
            ':parrafo'              => $parrafo,
            ':nota'                 => $nota,
            ':modal'                => $modal,
            ':estadoCerrado'        => $estadoCerrado,
            ':mensajeVotoRealizado' => $mensajeVotoRealizado,
            ':mensajeVoto'          => $mensajeVoto,
            ':mensajeDeTexto'       => $mensajeDeTexto,
            ':celular'              => $celular,
            ':resultadosOff'        => $resultadosOff,
            ':textoWS'              => $textoWS,
            ':textoComuniquese'     => $textoComuniquese,
            ':minCandidates'        => (int)$minCandidates,
            ':maxCandidates'        => (int)$maxCandidates,
            ':tiempo_palabra'       => (int)$tiempo_palabra,
            ':usar_poderes'         => (int)$usar_poderes,
        ];

        if ($logo !== null) {
            $sets .= ", logo = :logo";
            $params[':logo'] = $logo;
        }
        if ($bg_desktop !== null) {
            $sets .= ", bg_desktop = :bg_desktop";
            $params[':bg_desktop'] = $bg_desktop;
        }
        if ($bg_mobile !== null) {
            $sets .= ", bg_mobile = :bg_mobile";
            $params[':bg_mobile'] = $bg_mobile;
        }

        $q = $db->prepare("UPDATE datos SET $sets WHERE id = 1");
        $q->execute($params);
        return $q->rowCount();
    }
}
