<?php
    ini_set('display_errors', 0);
    ini_set('log_errors', 1);
    error_reporting(E_ALL);

    /*--------- Configuracion base ---------*/
    require_once "./config/app.php";
    require_once "./autoload.php";
    require_once "./vendor/autoload.php"; // 👈 MPDF

    /*---------- Iniciando sesion ----------*/
    require_once "./app/views/inc/session_start.php";

    if (isset($_SESSION['login'], $_SESSION['sindicato_codigo'])) {
        if (!isset($_SESSION['gestion'])) {

            $gestionCtrl = new \app\controllers\gestionController();
            $estadoGestion = $gestionCtrl->estadoGestionControlador($_SESSION['sindicato_codigo']);

            if (isset($estadoGestion['gestion'], $estadoGestion['id_gestion'])) {
                $_SESSION['gestion']        = $estadoGestion['gestion'];
                $_SESSION['id_gestion']     = $estadoGestion['id_gestion'];
                $_SESSION['gestion_activa'] = true;
            } else {
                $_SESSION['gestion_activa'] = false;
                unset($_SESSION['gestion'], $_SESSION['id_gestion']);
            }
        }
    }

    /*---------------- Ruteo (Híbrido Apache/Nginx) ---------------*/
    $param_vistas = "";

    // 1. Intentar obtener de la variable $_GET (Apache/.htaccess)
    if(isset($_GET['views']) && $_GET['views'] != ""){
        $param_vistas = $_GET['views'];
    } 
    // 2. Parche para Nginx: Leer la URI directamente si $_GET está vacío
    else if(isset($_SERVER['REQUEST_URI'])) {
        $full_path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
        // Quitamos la barra inicial y el nombre del archivo si aparece
        $param_vistas = str_replace(['/index.php', 'index.php'], '', $full_path);
        $param_vistas = trim($param_vistas, '/');
    }

    // 3. Procesar el ruteo final
    if($param_vistas != ""){
        $url = explode("/", $param_vistas);
    } else {
        $url = ["homeService"];
    }

    /*========= CONTEXTO MULTI-SINDICATO =========*/
    if ($url[0] === "login" && isset($url[1])) {
        $_SESSION['sindicato_codigo'] = strtoupper($url[1]);

        // Reiniciar cualquier gestión previa
        unset($_SESSION['gestion'], $_SESSION['id_gestion'], $_SESSION['gestion_activa']);

        $login = new app\controllers\loginController();
        $login->login();
        exit;
    }

    /*========= 📄 REPORTE CIERRE DE GESTIÓN ==========*/
    if ($url[0] === "reporte-cierre" && isset($url[1])) {
        $controller = new app\controllers\reporteCierreGestionController();
        $controller->imprimirActaCierreControlador($url[1]);
        exit; // 🔴 MUY IMPORTANTE
    }

    /*========= 📄 REPORTE ARQUEO DE CAJA CHICA ==========*/
	if ($url[0] === "reporte-arqueo" && isset($url[1], $url[2])) {
	    // Activar errores solo para esta petición
	    ini_set('display_errors', 1);
	    ini_set('log_errors', 1);
	    error_reporting(E_ALL);
	
	    $controller = new \app\controllers\reporteArqueoController();
	    $controller->imprimirArqueoControlador($url[1], $url[2]);
	    exit; 
	}

    /*========= 📄 REPORTE HISTÓRICO ACTA ==========*/
    if ($url[0] === "reporte-acta" && isset($url[1])) {
        $controller = new app\controllers\reporteHistoricoController();
        $controller->imprimirActaHistorica($url[1]);
        exit;
    }

    /*========= 🧾 RECIBO DE INGRESO ==========*/
    if ($url[0] === "ingreso-print" && isset($url[1])) {
        if (!isset($_SESSION['login']) || $_SESSION['login'] !== true) {
            header("Location: ".APP_URL);
            exit;
        }
        $controller = new app\controllers\ingresoPrintController();
        $controller->imprimirPDF($url[1]);
        exit;
    }

    /*========= 🧾 COMPROBANTE DE EGRESO ===============*/
    if ($url[0] === "egreso-print" && isset($url[1])) {
        $controller = new app\controllers\egresoPrintController();
        $controller->imprimirPDF($url[1]);
        exit;
    }

    /*---------- Controlador de vistas ----------*/
    require_once "./app/controllers/viewsController.php";

    /*-------------- Vista publica --------------*/
    $vistasPublicas = ["login", "homeService"];

    /* ========== LOGOUT (ANTES DE HTML) =========== */
    if ($url[0] === "logOut") {
        $login = new app\controllers\loginController();
        $login->cerrarSesionControlador();
        exit;
    }
?>
<!DOCTYPE html>
<html lang="es">
<head>
    <?php require_once "./app/views/inc/head.php"; ?>
</head>
<body>
    <?php
        use app\controllers\viewsController;
        use app\controllers\loginController;
        //$insLogin = new loginController();
        $viewsController= new viewsController();
        $vista = $viewsController->obtenerVistasControlador($url[0]);

        /*------------------ Vistas publicas ------------------*/
        if(in_array($url[0], $vistasPublicas)){
            require_once "./app/views/content/".$url[0]."-view.php";
        }else{

            // 🔐 Validar sesión SOLO para vistas privadas
            if (!isset($_SESSION['login']) ||
                $_SESSION['login'] !== true ||
                empty($_SESSION['sindicato_codigo'])){
                header("Location: ".APP_URL);
                exit;
            }

            require_once "./app/middlewares/auth.php";
            require_once "./app/helpers/permisos.php";

            require_once "./app/views/inc/navbar.php";            
            require_once $vista;
        }
        require_once "./app/views/inc/script.php"; 
    ?>
</body>
</html>