File "examenModel.php"

Full Path: C:/wamp64/www/Seleccion/models/examenModel.php
File size: 2.97 KB
MIME-type: text/x-php
Charset: utf-8

<?php
// models/Examen.php

class Examen {
    private $conn;
    private $table = 'examenes';

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

    public function crear($datos) {
        $query = "INSERT INTO " . $this->table . " 
                  (candidato_id, examenes_medicos, poligrafo, contratado, 
                   fecha_contratacion, observaciones, motivo_rechazo_examen)
                  VALUES 
                  (:candidato_id, :examenes_medicos, :poligrafo, :contratado,
                   :fecha_contratacion, :observaciones, :motivo_rechazo_examen)";

        $stmt = $this->conn->prepare($query);
        
        foreach($datos as $key => $value) {
            $stmt->bindValue(':' . $key, $value);
        }

        if($stmt->execute()) {
            return $this->conn->lastInsertId();
        }
        return false;
    }

    public function obtenerPorCandidato($candidato_id) {
        $query = "SELECT * FROM " . $this->table . " WHERE candidato_id = :candidato_id";
        $stmt = $this->conn->prepare($query);
        $stmt->bindValue(':candidato_id', $candidato_id);
        $stmt->execute();
        return $stmt->fetch();
    }

    public function actualizar($id, $datos) {
        $query = "UPDATE " . $this->table . " SET 
                  examenes_medicos = :examenes_medicos,
                  poligrafo = :poligrafo,
                  contratado = :contratado,
                  fecha_contratacion = :fecha_contratacion,
                  observaciones = :observaciones,
                  motivo_rechazo_examen = :motivo_rechazo_examen
                  WHERE id = :id";

        $stmt = $this->conn->prepare($query);
        
        foreach($datos as $key => $value) {
            $stmt->bindValue(':' . $key, $value);
        }
        $stmt->bindValue(':id', $id);

        return $stmt->execute();
    }

    public function obtenerContratados($filtros = []) {
        $query = "SELECT e.*, c.cedula, c.nombres_apellidos, c.celular,
                  r.codigo as requisicion_codigo, r.nombre_cargo, r.area
                  FROM " . $this->table . " e
                  INNER JOIN candidatos c ON e.candidato_id = c.id
                  INNER JOIN requisiciones r ON c.requisicion_id = r.id
                  WHERE e.contratado = 'Si'";
        
        if(!empty($filtros['fecha_desde'])) {
            $query .= " AND e.fecha_contratacion >= :fecha_desde";
        }
        
        if(!empty($filtros['fecha_hasta'])) {
            $query .= " AND e.fecha_contratacion <= :fecha_hasta";
        }
        
        $query .= " ORDER BY e.fecha_contratacion DESC";
        
        $stmt = $this->conn->prepare($query);
        
        if(!empty($filtros['fecha_desde'])) {
            $stmt->bindValue(':fecha_desde', $filtros['fecha_desde']);
        }
        
        if(!empty($filtros['fecha_hasta'])) {
            $stmt->bindValue(':fecha_hasta', $filtros['fecha_hasta']);
        }
        
        $stmt->execute();
        return $stmt->fetchAll();
    }
}
?>