<?php
require_once __DIR__ . '/../shared/includes/protect.php';
require 'conexion.php';

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    try {
        // Iniciar la transacci��n
        $pdo->beginTransaction();

        // Recoger datos del formulario
        $id_atencion = $_POST['id_atencion'] ?? null;
        $fecha_atencion = $_POST['fecha_atencion'] ?? null;
        $hora_atencion = $_POST['hora_atencion'] ?? null;
        $apellidos_nombres = $_POST['apellidos_nombres'] ?? null;
        $sexo = $_POST['sexo'] ?? null;
        $edad = $_POST['edad'] ?? null;
        $dni = $_POST['dni'] ?? null;
        $empresa = $_POST['empresa'] ?? null;
        $area = $_POST['area'] ?? null;
        $puesto_trabajo = $_POST['puesto_trabajo'] ?? null;
        $lugar_atencion = $_POST['lugar_atencion'] ?? null;
        $tipo_evento = $_POST['tipo_evento'] ?? null; // �9�7 Se cambia de id_evento a tipo_evento
        $diagnostico_cie10 = $_POST['diagnostico_cie10'] ?? null;
        $tratamiento = $_POST['tratamiento'] ?? null;
        $descanso_medico = $_POST['descanso_medico'] ?? null;
        $fecha_inicio_descanso = !empty($_POST['fecha_inicio_descanso']) ? $_POST['fecha_inicio_descanso'] : NULL;
        $fecha_final_descanso = !empty($_POST['fecha_final_descanso']) ? $_POST['fecha_final_descanso'] : NULL;
        $seguimiento = $_POST['seguimiento'] ?? null;
        $responsable_registro = $_POST['responsable_registro'] ?? null;

        // �9�7 Validaci��n
        if (empty($id_atencion) || empty($fecha_atencion) || empty($hora_atencion) || empty($tipo_evento) || empty($dni)) {
            throw new Exception("Todos los campos obligatorios deben ser llenados.");
        }

        // �9�7 Actualizar datos en la tabla Atencion_Medica
        $queryAtencion = "UPDATE Atencion_Medica SET 
            fecha_atencion = :fecha_atencion, 
            hora_atencion = :hora_atencion, 
            lugar_atencion = :lugar_atencion, 
            tipo_evento = :tipo_evento,  -- �9�7 Ahora guardamos el nombre del evento, no el ID
            diagnostico_cie10 = :diagnostico_cie10, 
            tratamiento = :tratamiento, 
            descanso_medico = :descanso_medico, 
            fecha_inicio_descanso = :fecha_inicio_descanso, 
            fecha_final_descanso = :fecha_final_descanso, 
            seguimiento = :seguimiento, 
            responsable_registro = :responsable_registro
        WHERE id_atencion = :id_atencion";

        $stmtAtencion = $pdo->prepare($queryAtencion);
        $stmtAtencion->execute([
            ':fecha_atencion' => $fecha_atencion,
            ':hora_atencion' => $hora_atencion,
            ':lugar_atencion' => $lugar_atencion,
            ':tipo_evento' => $tipo_evento, // �9�7 Guardamos el nombre del evento en la BD
            ':diagnostico_cie10' => $diagnostico_cie10,
            ':tratamiento' => $tratamiento,
            ':descanso_medico' => $descanso_medico,
            ':fecha_inicio_descanso' => $fecha_inicio_descanso,
            ':fecha_final_descanso' => $fecha_final_descanso,
            ':seguimiento' => $seguimiento,
            ':responsable_registro' => $responsable_registro,
            ':id_atencion' => $id_atencion
        ]);

        // ✅ CAMBIO CRÍTICO: YA NO se actualiza tabla Trabajador desde este módulo
        // Solo el módulo de Recursos Humanos puede modificar datos de trabajadores
        // Esto resuelve el conflicto de escritura concurrente
        // Si los datos del trabajador están desactualizados, deben modificarse desde recursoshumanos

        // Verificar que el trabajador existe (sin modificarlo)
        $stmtVerificar = $pdo->prepare("SELECT id_trabajador FROM Trabajador WHERE dni_ce = :dni LIMIT 1");
        $stmtVerificar->execute([':dni' => $dni]);
        $trabajador = $stmtVerificar->fetch(PDO::FETCH_ASSOC);

        if (!$trabajador) {
            throw new Exception("El trabajador con DNI $dni no existe en el sistema. Por favor, regístrelo primero en el módulo de Recursos Humanos.");
        }

        // Confirmar la transacción
        $pdo->commit();

        // �9�7 Guardar mensaje en localStorage y redireccionar a index.php
        echo "<script>
                localStorage.setItem('toastMessage', 'Atenci��n m��dica y datos del trabajador actualizados correctamente');
                localStorage.setItem('toastType', 'success');
                window.location.href = 'index.php';
              </script>";

    } catch (Exception $e) {
        // �9�7 Si hay un error, revertir la transacci��n SOLO si ya se inici��
        if ($pdo->inTransaction()) {
            $pdo->rollBack();
        }
        echo "<script>
                localStorage.setItem('toastMessage', '" . addslashes($e->getMessage()) . "');
                localStorage.setItem('toastType', 'error');
                window.location.href = 'index.php';
              </script>";
    }
} else {
    echo "<script>
            localStorage.setItem('toastMessage', 'Acceso no permitido.');
            localStorage.setItem('toastType', 'error');
            window.location.href = 'index.php';
          </script>";
}
?>
