File "FormacionModelo.php.bak"

Full Path: C:/wamp64/www/Formaciones/Modelos/FormacionModelo.php.bak
File size: 3.18 KB
MIME-type: text/x-php
Charset: utf-8

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