<?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();
}
}