<?php // Modelos/FormacionModelo.php class FormacionModelo { private $db; public function __construct($db) { $this->db = $db; } public function getDB() { return $this->db; } public function guardar($area, $tipo_formacion, $cedula, $responsable, $cargo, $f_ini, $f_fin, $temas, $file_data, $quien_registra) { $sql = "INSERT INTO formacion ( area, tipo_formacion, cedula_usuario, capacitador, cargoCap, fecha_Inicial, fecha_Final, temas, evidencia_datos, namePro, created_at ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NOW())"; $stmt = $this->db->prepare($sql); if (!$stmt) { error_log("Error preparando: " . $this->db->error); return false; } // En PHP 7.4 es más estable pasar el blob directamente como string $blob = $file_data ?? ''; $stmt->bind_param("ssssssssss", $area, $tipo_formacion, $cedula, $responsable, $cargo, $f_ini, $f_fin, $temas, $blob, $quien_registra ); $resultado = $stmt->execute(); if (!$resultado) { error_log("Error ejecutando: " . $stmt->error); } $stmt->close(); return $resultado; } public function listarPaginadas($busqueda = '', $limit = 10, $offset = 0) { $sql = "SELECT i.*, u.name as nombre_usuario FROM formacion i LEFT JOIN users u ON i.cedula_usuario = u.cedula WHERE 1=1"; if (!empty($busqueda)) { $sql .= " AND (i.area LIKE ? OR i.cedula_usuario LIKE ? OR i.capacitador LIKE ?)"; } $sql .= " ORDER BY i.created_at DESC LIMIT ? OFFSET ?"; $stmt = $this->db->prepare($sql); if (!empty($busqueda)) { $term = "%$busqueda%"; $stmt->bind_param("sssii", $term, $term, $term, $limit, $offset); } else { $stmt->bind_param("ii", $limit, $offset); } $stmt->execute(); return $stmt->get_result(); } public function contarTodas($busqueda = '') { $sql = "SELECT COUNT(*) as total FROM formacion i WHERE 1=1"; if (!empty($busqueda)) { $sql .= " AND (area LIKE ? OR cedula_usuario LIKE ? OR capacitador LIKE ?)"; $stmt = $this->db->prepare($sql); $term = "%$busqueda%"; $stmt->bind_param("sss", $term, $term, $term); } else { $stmt = $this->db->prepare($sql); } $stmt->execute(); return $stmt->get_result()->fetch_assoc()['total']; } public function obtenerPorId($id) { $stmt = $this->db->prepare("SELECT * FROM formacion WHERE id = ?"); $stmt->bind_param("i", $id); $stmt->execute(); return $stmt->get_result()->fetch_assoc(); } // Obtener todas las áreas para el select public function obtenerAreas() { $query = "SELECT area FROM areas ORDER BY area ASC"; return $this->db->query($query); } public function borrar($id) { $stmt = $this->db->prepare("DELETE FROM formacion WHERE id = ?"); $stmt->bind_param("i", $id); return $stmt->execute(); } }