File "FormacionControlador.php"

Full Path: C:/wamp64/www/Formaciones/Controladores/FormacionControlador.php
File size: 5.46 KB
MIME-type: text/x-php
Charset: utf-8

<?php
// Controladores/FormacionControlador.php
require_once 'Modelos/FormacionModelo.php';

class FormacionControlador {
    private $modelo;

    public function __construct($db) {
        $this->modelo = new FormacionModelo($db);
        if (!esta_autenticado()) {
            header("Location: index.php?r=auth/login");
            exit;
        }
    }

    public function index() {
        $busqueda = $_GET['busqueda'] ?? '';
        $por_pagina = 10;
        $pagina_actual = isset($_GET['p']) ? (int)$_GET['p'] : 1;
        $inicio = ($pagina_actual - 1) * $por_pagina;

        $total_registros = $this->modelo->contarTodas($busqueda);
        $total_paginas = ceil($total_registros / $por_pagina);
        
        $Formaciones = $this->modelo->listarPaginadas($busqueda, $por_pagina, $inicio);
        $areas = $this->modelo->obtenerAreas();

        require_once 'Vistas/admin/formacion.php';
    }

    public function guardar() {
        if ($_SERVER['REQUEST_METHOD'] === 'POST') {
            // Capturar y sanitizar datos
            $area            = trim($_POST['area'] ?? '');
            $tipo_formacion  = trim($_POST['tipo_formacion'] ?? '');
            $f_ini           = trim($_POST['fecha_Inicial'] ?? '');
            $f_fin           = trim($_POST['fecha_Final'] ?? '');
            $responsable     = trim($_POST['Responsable'] ?? '');
            $cedula          = trim($_POST['Cedula'] ?? '');
            $cargo           = trim($_POST['Cargo'] ?? '');
            $temas           = trim($_POST['Temas'] ?? '');
            
            // Quien está logueado actualmente
            $quien_registra = usuario_actual()['nombre']; 

            // DEBUG: Registrar valores recibidos
            error_log("=== DATOS RECIBIDOS EN CONTROLADOR ===");
            error_log("Area: " . $area);
            error_log("Tipo Formación: " . $tipo_formacion);
            error_log("Cedula: " . $cedula);
            error_log("Responsable: " . $responsable);
            error_log("Cargo: " . $cargo);
            error_log("Fecha Inicial: " . $f_ini);
            error_log("Fecha Final: " . $f_fin);
            error_log("Temas: " . $temas);
            error_log("Quien Registra: " . $quien_registra);

            // Manejo del archivo
            $file_data = null;
            if (isset($_FILES['evidencia']) && $_FILES['evidencia']['error'] === UPLOAD_ERR_OK) {
                $file_data = file_get_contents($_FILES['evidencia']['tmp_name']);
                error_log("Archivo PDF cargado: " . strlen($file_data) . " bytes");
            } else {
                error_log("No se cargó archivo o hubo error: " . ($_FILES['evidencia']['error'] ?? 'no existe'));
            }

            // VALIDACIÓN
            if (empty($area)) {
                $_SESSION['error'] = "El campo Área es obligatorio.";
                error_log("ERROR: Área vacía");
            } elseif (empty($tipo_formacion)) {
                $_SESSION['error'] = "El campo Tipo de Formación es obligatorio.";
                error_log("ERROR: Tipo de formación vacío");
            } elseif (empty($cedula)) {
                $_SESSION['error'] = "El campo Cédula es obligatorio.";
                error_log("ERROR: Cédula vacía");
            } elseif (empty($f_ini) || empty($f_fin)) {
                $_SESSION['error'] = "Las fechas son obligatorias.";
                error_log("ERROR: Fechas vacías");
            } else {
                // Llamar al modelo con TODOS los parámetros en el orden correcto
                $exito = $this->modelo->guardar(
                    $area,              // 1
                    $tipo_formacion,    // 2
                    $cedula,            // 3
                    $responsable,       // 4
                    $cargo,             // 5
                    $f_ini,             // 6
                    $f_fin,             // 7
                    $temas,             // 8
                    $file_data,         // 9
                    $quien_registra     // 10
                );
                
                if ($exito) {
                    $_SESSION['exito'] = "Registro guardado exitosamente.";
                    error_log("SUCCESS: Registro guardado");
                } else {
                    $_SESSION['error'] = "Error técnico al guardar en la base de datos.";
                    error_log("ERROR: Fallo al ejecutar guardar()");
                }
            }
        }
        header("Location: index.php?r=admin/Formacion");
        exit;
    }

    public function verPdf() {
        $id = intval($_GET['id'] ?? 0);
        $res = $this->modelo->obtenerPorId($id);
        if ($res && $res['evidencia_datos']) {
            header("Content-type: application/pdf");
            echo $res['evidencia_datos'];
            exit;
        }
        echo "PDF no encontrado.";
    }

    public function descargar() {
        $id = intval($_GET['id'] ?? 0);
        $res = $this->modelo->obtenerPorId($id);
        if ($res && $res['evidencia_datos']) {
            header("Content-type: application/pdf");
            header("Content-Disposition: attachment; filename=\"evidencia_{$id}.pdf\"");
            echo $res['evidencia_datos'];
            exit;
        }
    }

    public function borrar() {
        $id = intval($_GET['id'] ?? 0);
        $this->modelo->borrar($id);
        header("Location: index.php?r=admin/Formacion");
        exit;
    }
}