File "AsignacionModelo-20260419204147.php"

Full Path: C:/wamp64/www/Formaciones/Modelos/AsignacionModelo-20260419204147.php
File size: 2.93 KB
MIME-type: text/x-php
Charset: utf-8

<?php
// Modelos/AsignacionModelo.php

class AsignacionModelo {
    private $db;
    private $db_externa;

    public function __construct($db, $db_externa) {
        $this->db = $db;
        $this->db_externa = $db_externa;
    }

    public function obtenerHistorial($limit, $offset) {
        $query = "SELECT ca.id, u.name as user_name, u.cedula, u.ccosto, c.title as course_title, ca.assigned_at
                  FROM course_assignments ca 
                  JOIN users u ON u.id = ca.user_id 
                  JOIN courses c ON c.id = ca.course_id 
                  ORDER BY ca.id DESC LIMIT $limit OFFSET $offset";
        return $this->db->query($query);
    }

    public function obtenerCentrosDeCosto() {
        $query = "SELECT DISTINCT ccosto, descripcion FROM empleados WHERE ccosto IS NOT NULL ORDER BY ccosto ASC";
        return $this->db_externa->query($query);
    }

    public function obtenerEmpleadosPorCCosto($ccosto) {
        $stmt = $this->db_externa->prepare("SELECT cedula, nombre, ccosto FROM empleados WHERE ccosto = ?");
        $stmt->bind_param("s", $ccosto);
        $stmt->execute();
        return $stmt->get_result();
    }

    public function yaEstaAsignado($usuario_id, $curso_id) {
        $stmt = $this->db->prepare("SELECT id FROM course_assignments WHERE user_id = ? AND course_id = ?");
        $stmt->bind_param("ii", $usuario_id, $curso_id);
        $stmt->execute();
        return $stmt->get_result()->num_rows > 0;
    }

    public function registrarAsignacion($usuario_id, $curso_id) {
        $stmt = $this->db->prepare("INSERT INTO course_assignments (user_id, course_id, assigned_at) VALUES (?, ?, NOW())");
        $stmt->bind_param("ii", $usuario_id, $curso_id);
        return $stmt->execute();
    }
	
	/** Contar el total de asignaciones para la paginación */
	public function contarTotal() {
		$sql = "SELECT COUNT(*) as total FROM course_assignments";
		$resultado = $this->db->query($sql);
		$fila = $resultado->fetch_assoc();
		return $fila['total'] ?? 0;
	}	
	
	public function borrar($id) {
        $stmt = $this->db->prepare("DELETE FROM course_assignments WHERE id = ?");
        $stmt->bind_param("i", $id);
        return $stmt->execute();
    }
	
	public function buscarCentrosDeCosto($term) {
		$like = "%$term%";
		$stmt = $this->db_externa->prepare(
			"SELECT DISTINCT ccosto, descripcion FROM empleados 
			 WHERE ccosto LIKE ? OR descripcion LIKE ? 
			 ORDER BY ccosto ASC
			 LIMIT 30"
		);
		$stmt->bind_param("ss", $like, $like);
		$stmt->execute();
		return $stmt->get_result();
	}

	public function buscarEmpleadosNomina($term) {
		$like = "%$term%";
		$stmt = $this->db_externa->prepare(
			"SELECT cedula, nombre, apellido FROM empleados 
			 WHERE cedula LIKE ? OR nombre LIKE ? OR apellido LIKE ? 
			 LIMIT 20"
		);
		$stmt->bind_param("sss", $like, $like, $like);
		$stmt->execute();
		return $stmt->get_result();
	}
}