<?php
/**
 * Controlador para vista filtrada de Proyectos Administrativos
 * Filtra por el nombre del proyecto marcado como preferencia.
 *
 * Ruta: es:bez:admin_threads_filtro
 *
 * @author NICC
 * @date 2026-03-02
 */

/** @var \dokuwiki\plugin\bez\meta\action $this */

use dokuwiki\plugin\bez\mdl\AdminThreadFactory;

// Verificar permisos
if ($this->model->get_level() < BEZ_AUTH_USER) {
    throw new \dokuwiki\plugin\bez\meta\PermissionDeniedException();
}

// Liberar sesión PHP para evitar bloqueo durante queries pesadas (previene error 520)
if (session_status() === PHP_SESSION_ACTIVE) {
    session_write_close();
}

// Inicializar DB + Factory (consolidado en helper)
list($sqlite, $factory) = helper_plugin_bez_db::initAdmin('AdminThreadFactory', true, true);

// Obtener la preferencia actual
$nombreFiltro = null;
$preferenciaId = null;

try {
    $resP = $sqlite->query("SELECT p.admin_thread_id, t.trabajador_nombre
                            FROM admin_thread_preferencia p
                            JOIN admin_thread t ON t.id = p.admin_thread_id
                                AND t.deleted_at IS NULL
                            LIMIT 1");
    $arrP = $sqlite->res2arr($resP);
    if (!empty($arrP)) {
        $preferenciaId = intval($arrP[0]['admin_thread_id']);
        $nombreFiltro = $arrP[0]['trabajador_nombre'];
    }
} catch (\Exception $e) {
    // Tabla puede no existir aún
}

// Si no hay preferencia, mostrar mensaje vacío
$proyectos = [];
if ($nombreFiltro !== null) {
    // Filtrar todos los proyectos administrativos con ese nombre
    $sql = "SELECT * FROM admin_thread_view WHERE trabajador_nombre = ? AND state != 'compilado' ORDER BY created_at DESC";
    $res = $sqlite->query($sql, [$nombreFiltro]);
    $proyectos = $sqlite->res2arr($res);
}

// Pasar datos al template
$this->tpl->set('proyectos', $proyectos);
$this->tpl->set('nombreFiltro', $nombreFiltro);
$this->tpl->set('preferenciaId', $preferenciaId);
$this->tpl->set('totalProyectos', count($proyectos));
