File "guardar_paciente.php"

Full Path: C:/wamp64/www/casos_medicos/pacientes/guardar_paciente.php
File size: 4.62 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 campos básicos
$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);
$tipo_contrato = $conn->real_escape_string($_POST['tipo_contrato'] ?? '');

// IDs — acepta ambos formatos (id_afp o afp_id)
function pick_id($conn, $key1, $key2) {
    if(isset($_POST[$key1]) && $_POST[$key1] !== '') return intval($_POST[$key1]);
    if(isset($_POST[$key2]) && $_POST[$key2] !== '') return intval($_POST[$key2]);
    return 'NULL';
}

$id_afp = pick_id($conn, 'id_afp', 'afp_id');
$id_eps = pick_id($conn, 'id_eps', 'eps_id');
$id_arl = pick_id($conn, 'id_arl', 'arl_id');
$id_empresa = pick_id($conn, 'id_empresa', 'empresa_id');
$id_planta = pick_id($conn, 'id_planta', 'planta_id');
$id_estado = pick_id($conn, 'id_estado', 'estado_id');

// Otros campos
$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 = $_POST['productividad'] !== '' ? floatval($_POST['productividad']) : 'NULL';
$semanas_cotizacion = $_POST['semanas_cotizacion'] !== '' ? intval($_POST['semanas_cotizacion']) : 'NULL';

// Manejo de 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)) {
        $foto_path = 'uploads/' . $safe_name;
    }
}

// Escapado de fechas
$fecha_nac_sql = !empty($fecha_nac) ? "'$fecha_nac'" : "NULL";
$fecha_inicio_sql = !empty($fecha_inicio) ? "'$fecha_inicio'" : "NULL";

// Verificar si ya existe la cédula
$check = $conn->query("SELECT id FROM hoja_vida WHERE cedula = '$cedula' LIMIT 1");
if (!$check) {
    echo "Error verificando existencia: " . $conn->error;
    exit;
}

if ($check->num_rows > 0) {
    // UPDATE
    $update = "
        UPDATE hoja_vida SET
            nombre = '$nombre',
            fecha_nacimiento = $fecha_nac_sql,
            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_sql,
            tipo_rehabilitacion = '$tipo_rehabilitacion',
            cargo_reubicado = '$cargo_reubicado',
            productividad = $productividad,
            semanas_cotizacion = $semanas_cotizacion,
            id_estado = $id_estado
            " . (!empty($foto_path) ? ", foto = '$foto_path'" : "") . "
        WHERE cedula = '$cedula'
    ";

    $sql = $update;
} 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_sql, $edad, $id_afp, $id_eps, $id_arl, '$tipo_contrato',
            $id_empresa, $id_planta, '$regional', '$centro_trabajo',
            '$cargo_inicial', $fecha_inicio_sql, '$tipo_rehabilitacion',
            '$cargo_reubicado', $productividad, $semanas_cotizacion, $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>";
}
?>