File "guardar_paciente.php.bak"

Full Path: C:/wamp64/www/casos_medicos/pacientes/guardar_paciente.php.bak
File size: 7.25 KB
MIME-type: text/x-php
Charset: utf-8

<?php
include("../conexion.php");
session_start();
if(!isset($_SESSION['usuario'])) header('Location: ../login.php');

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    echo 'Método no permitido.';
    exit;
}

// Recoger y sanitizar campos
$cedula = $conn->real_escape_string($_POST['cedula'] ?? '');
$nombre = $conn->real_escape_string($_POST['nombre'] ?? '');
$fecha_nac = $conn->real_escape_string($_POST['fecha_nacimiento'] ?? null);
$edad = intval($_POST['edad'] ?? 0);

// IDs de maestras (permitir NULL)
$id_afp = isset($_POST['afp_id']) && $_POST['afp_id'] !== '' ? intval($_POST['afp_id']) : 'NULL';
$id_eps = isset($_POST['eps_id']) && $_POST['eps_id'] !== '' ? intval($_POST['eps_id']) : 'NULL';
$id_arl = isset($_POST['arl_id']) && $_POST['arl_id'] !== '' ? intval($_POST['arl_id']) : 'NULL';
$id_empresa = isset($_POST['empresa_id']) && $_POST['empresa_id'] !== '' ? intval($_POST['empresa_id']) : 'NULL';
$id_planta = isset($_POST['planta_id']) && $_POST['planta_id'] !== '' ? intval($_POST['planta_id']) : 'NULL';
$id_estado = isset($_POST['estado_id']) && $_POST['estado_id'] !== '' ? intval($_POST['estado_id']) : 'NULL';

// Otros campos de texto/numéricos
$tipo_contrato = $conn->real_escape_string($_POST['tipo_contrato'] ?? '');
$regional = $conn->real_escape_string($_POST['regional'] ?? '');
$centro_trabajo = $conn->real_escape_string($_POST['centro_trabajo'] ?? '');
$cargo_inicial = $conn->real_escape_string($_POST['cargo_inicial'] ?? '');
$fecha_inicio = $conn->real_escape_string($_POST['fecha_inicio'] ?? null);
$tipo_rehabilitacion = $conn->real_escape_string($_POST['tipo_rehabilitacion'] ?? '');
$cargo_reubicado = $conn->real_escape_string($_POST['cargo_reubicado'] ?? '');
$productividad = is_numeric($_POST['productividad'] ?? null) ? $conn->real_escape_string($_POST['productividad']) : 'NULL';
$semanas_cotizacion = is_numeric($_POST['semanas_cotizacion'] ?? null) ? intval($_POST['semanas_cotizacion']) : 'NULL';

// Campos de contacto opcionales (si los tienes en la tabla)
$direccion = $conn->real_escape_string($_POST['direccion'] ?? '');
$telefono = $conn->real_escape_string($_POST['telefono'] ?? '');
$correo = $conn->real_escape_string($_POST['correo'] ?? '');

// Manejo de la foto
$foto_path = '';
if (!empty($_FILES['foto']['name'])) {
    $uploads_dir = __DIR__ . '/../uploads';
    if (!is_dir($uploads_dir)) mkdir($uploads_dir, 0755, true);

    $original = basename($_FILES['foto']['name']);
    $safe_name = time() . '_' . preg_replace('/[^a-zA-Z0-9._-]/', '_', $original);
    $target = $uploads_dir . '/' . $safe_name;

    if (move_uploaded_file($_FILES['foto']['tmp_name'], $target)) {
        // ruta relativa desde el proyecto (ajusta si tu app usa otra)
        $foto_path = 'uploads/' . $safe_name;
        // escapar para SQL cuando se use
        $foto_path_sql = $conn->real_escape_string($foto_path);
    } else {
        $foto_path = '';
        $foto_path_sql = "''";
    }
} else {
    $foto_path_sql = "NULL";
}

// Verificar existencia por cédula
$check = $conn->query("SELECT id FROM hoja_vida WHERE cedula = '".$conn->real_escape_string($cedula)."' LIMIT 1");
if ($check === false) {
    echo "Error comprobando existencia: " . $conn->error;
    exit;
}

// Preparar campos para construir SQL (manejo de NULLs)
$fecha_nac_sql = $fecha_nac !== '' ? "'".$conn->real_escape_string($fecha_nac)."'" : "NULL";
$fecha_inicio_sql = $fecha_inicio !== '' ? "'".$conn->real_escape_string($fecha_inicio)."'" : "NULL";
$productividad_sql = $productividad === 'NULL' ? "NULL" : $conn->real_escape_string($productividad);
$semanas_sql = $semanas_cotizacion === 'NULL' ? "NULL" : $semanas_cotizacion;


// Construir SQL de INSERT o UPDATE
if ($check->num_rows > 0) {
    // UPDATE
    $update_parts = [];
    $update_parts[] = "nombre = '".$conn->real_escape_string($nombre)."'";
    $update_parts[] = "fecha_nacimiento = $fecha_nac_sql";
    $update_parts[] = "edad = ".intval($edad);
    $update_parts[] = "id_afp = ".($id_afp === 'NULL' ? "NULL" : $id_afp);
    $update_parts[] = "id_eps = ".($id_eps === 'NULL' ? "NULL" : $id_eps);
    $update_parts[] = "id_arl = ".($id_arl === 'NULL' ? "NULL" : $id_arl);
    $update_parts[] = "tipo_contrato = '".$conn->real_escape_string($tipo_contrato)."'";
    $update_parts[] = "id_empresa = ".($id_empresa === 'NULL' ? "NULL" : $id_empresa);
    $update_parts[] = "id_planta = ".($id_planta === 'NULL' ? "NULL" : $id_planta);
    $update_parts[] = "regional = '".$conn->real_escape_string($regional)."'";
    $update_parts[] = "centro_trabajo = '".$conn->real_escape_string($centro_trabajo)."'";
    $update_parts[] = "cargo_inicial = '".$conn->real_escape_string($cargo_inicial)."'";
    $update_parts[] = "fecha_inicio = $fecha_inicio_sql";
    $update_parts[] = "tipo_rehabilitacion = '".$conn->real_escape_string($tipo_rehabilitacion)."'";
    $update_parts[] = "cargo_reubicado = '".$conn->real_escape_string($cargo_reubicado)."'";
    $update_parts[] = "productividad = ".($productividad_sql === "NULL" ? "NULL" : $productividad_sql);
    $update_parts[] = "semanas_cotizacion = ".($semanas_sql === "NULL" ? "NULL" : $semanas_sql);
    $update_parts[] = "id_estado = ".($id_estado === 'NULL' ? "NULL" : $id_estado);


    if (!empty($foto_path)) {
        $update_parts[] = "foto = '".$foto_path_sql."'";
    }

    $sql = "UPDATE hoja_vida SET " . implode(", ", $update_parts) . " WHERE cedula = '".$conn->real_escape_string($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 (
                '".$conn->real_escape_string($cedula)."',
                '".$conn->real_escape_string($nombre)."',
                ".(!empty($foto_path) ? "'".$foto_path_sql."'" : "NULL").",
                $fecha_nac_sql,
                ".intval($edad).",
                ".($id_afp === 'NULL' ? "NULL" : $id_afp).",
                ".($id_eps === 'NULL' ? "NULL" : $id_eps).",
                ".($id_arl === 'NULL' ? "NULL" : $id_arl).",
                '".$conn->real_escape_string($tipo_contrato)."',
                ".($id_empresa === 'NULL' ? "NULL" : $id_empresa).",
                ".($id_planta === 'NULL' ? "NULL" : $id_planta).",
                '".$conn->real_escape_string($regional)."',
                '".$conn->real_escape_string($centro_trabajo)."',
                '".$conn->real_escape_string($cargo_inicial)."',
                $fecha_inicio_sql,
                '".$conn->real_escape_string($tipo_rehabilitacion)."',
                '".$conn->real_escape_string($cargo_reubicado)."',
                ".($productividad_sql === "NULL" ? "NULL" : $productividad_sql).",
                ".($semanas_sql === "NULL" ? "NULL" : $semanas_sql).",
                ".($id_estado === 'NULL' ? "NULL" : $id_estado).",
             )";
}

// Ejecutar SQL
if ($conn->query($sql)) {
    header("Location: ../ver_paciente.php?cedula=" . urlencode($cedula));
    exit;
} else {
    echo "<h3>Error al guardar:</h3><pre>" . htmlspecialchars($conn->error) . "</pre>";
    echo "<h4>SQL ejecutado:</h4><pre>" . htmlspecialchars($sql) . "</pre>";
    exit;
}
?>