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;
}
}