File "PacienteNuevo.php"

Full Path: C:/wamp64/www/casos_medicos1/model/PacienteNuevo.php
File size: 5.49 KB
MIME-type: text/x-php
Charset: utf-8

<?php
require_once __DIR__ . '/conexion.php'; // Ruta correcta relativa al modelo

class Paciente {
    private $conn;

    public function __construct() {
        // Instancia de la clase Conexion
        $db = new Conexion();
        $this->conn = $db->getConexion();
    }

    public function obtenerAFPs() {
        $r = $this->conn->query("SELECT id, nombre FROM afp ORDER BY nombre");
        return $r ? $r->fetch_all(MYSQLI_ASSOC) : [];
    }

    public function obtenerEPS() {
        $r = $this->conn->query("SELECT id, nombre FROM eps ORDER BY nombre");
        return $r ? $r->fetch_all(MYSQLI_ASSOC) : [];
    }

    public function obtenerARL() {
        $r = $this->conn->query("SELECT id, nombre FROM arl ORDER BY nombre");
        return $r ? $r->fetch_all(MYSQLI_ASSOC) : [];
    }

    public function obtenerEmpresas() {
        $r = $this->conn->query("SELECT id, nombre FROM empresa ORDER BY nombre");
        return $r ? $r->fetch_all(MYSQLI_ASSOC) : [];
    }

    public function obtenerPlantasPorEmpresa($empresaId) {
    $empresaId = intval($empresaId);
    $r = $this->conn->query("SELECT id, nombre FROM planta WHERE id_empresa = $empresaId ORDER BY nombre");
    return $r ? $r->fetch_all(MYSQLI_ASSOC) : [];
    }

    public function obtenerEstados() {
        $r = $this->conn->query("SELECT id, nombre FROM estado ORDER BY nombre");
        return $r ? $r->fetch_all(MYSQLI_ASSOC) : [];
    }

    public function guardarPaciente($data, $file) {
        
    // Sanitizar datos básicos
    $cedula = $this->conn->real_escape_string($data['cedula']);
    $nombre = $this->conn->real_escape_string($data['nombre']);
    $fecha_nac = $this->conn->real_escape_string($data['fecha_nacimiento']);
    $edad = intval($data['edad']);
    $tipo_contrato = $this->conn->real_escape_string($data['tipo_contrato']);

    // IDs
    $id_afp = intval($data['afp_id'] ?: 0);
    $id_eps = intval($data['eps_id'] ?: 0);
    $id_arl = intval($data['arl_id'] ?: 0);
    $id_empresa = intval($data['empresa_id'] ?: 0);
    $id_planta = intval($data['planta_id'] ?: 0);
    $id_estado = intval($data['estado_id'] ?: 0);

    // Otros
    $regional = $this->conn->real_escape_string($data['regional']);
    $centro_trabajo = $this->conn->real_escape_string($data['centro_trabajo']);
    $cargo_inicial = $this->conn->real_escape_string($data['cargo_inicial']);
    $fecha_inicio = $this->conn->real_escape_string($data['fecha_inicio']);
    $tipo_rehabilitacion = $this->conn->real_escape_string($data['tipo_rehabilitacion']);
    $cargo_reubicado = $this->conn->real_escape_string($data['cargo_reubicado']);
    $productividad = $data['productividad'] !== '' ? floatval($data['productividad']) : 'NULL';
    $semanas_cotizacion = $data['semanas_cotizacion'] !== '' ? intval($data['semanas_cotizacion']) : 'NULL';

    // Manejo de foto
    $foto_path = '';
    if (!empty($file['foto']['name'])) {

        $uploads = __DIR__ . '/../uploads';
        if (!is_dir($uploads)) mkdir($uploads, 0755, true);

        $name = time() . '_' . preg_replace('/[^a-zA-Z0-9._-]/', '_', basename($file['foto']['name']));
        $destino = $uploads . '/' . $name;

        if (move_uploaded_file($file['foto']['tmp_name'], $destino)) {
            $foto_path = "uploads/$name";
        }
    }

    // Revisar si existe la cédula
    $check = $this->conn->query("SELECT id, foto FROM hoja_vida WHERE cedula = '$cedula' LIMIT 1");

    // Si existe → UPDATE
    if ($check->num_rows > 0) {
        $row = $check->fetch_assoc();
        $foto_sql = !empty($foto_path) ? ", foto = '$foto_path'" : "";

        $sql = "
            UPDATE hoja_vida SET
                nombre = '$nombre',
                fecha_nacimiento = '$fecha_nac',
                edad = $edad,
                id_afp = $id_afp,
                id_eps = $id_eps,
                id_arl = $id_arl,
                tipo_contrato = '$tipo_contrato',
                id_empresa = $id_empresa,
                id_planta = $id_planta,
                regional = '$regional',
                centro_trabajo = '$centro_trabajo',
                cargo_inicial = '$cargo_inicial',
                fecha_inicio = '$fecha_inicio',
                tipo_rehabilitacion = '$tipo_rehabilitacion',
                cargo_reubicado = '$cargo_reubicado',
                productividad = $productividad,
                semanas_cotizacion = $semanas_cotizacion,
                id_estado = $id_estado
                $foto_sql
            WHERE cedula = '$cedula'
        ";
    } 
    else { 
        // INSERT
        $sql = "
            INSERT INTO hoja_vida (
                cedula, nombre, foto, fecha_nacimiento, edad,
                id_afp, id_eps, id_arl, tipo_contrato,
                id_empresa, id_planta, regional, centro_trabajo,
                cargo_inicial, fecha_inicio, tipo_rehabilitacion,
                cargo_reubicado, productividad, semanas_cotizacion, id_estado
            ) VALUES (
                '$cedula', '$nombre', 
                " . (!empty($foto_path) ? "'$foto_path'" : "NULL") . ",
                '$fecha_nac', $edad,
                $id_afp, $id_eps, $id_arl, '$tipo_contrato',
                $id_empresa, $id_planta, '$regional', '$centro_trabajo',
                '$cargo_inicial', '$fecha_inicio', '$tipo_rehabilitacion',
                '$cargo_reubicado', $productividad, $semanas_cotizacion, $id_estado
            )
        ";
    }

    return $this->conn->query($sql);
}

}