<?php
require 'conexion.php';

header('Content-Type: application/json'); // Asegura que la respuesta sea JSON

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    try {
        // 🔹 Recibir 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;
        $id_evento = $_POST['id_evento'] ?? null; // Asegurar que recibimos el ID del evento
        $diagnostico_cie10 = $_POST['diagnostico_cie10'] ?? null;
        $tratamiento = $_POST['tratamiento'] ?? null;
        $descanso_medico = $_POST['descanso_medico'] ?? "No";
        $fecha_inicio_descanso = !empty($_POST['fecha_inicio_descanso']) ? $_POST['fecha_inicio_descanso'] : "0000-00-00";
        $fecha_final_descanso = !empty($_POST['fecha_final_descanso']) ? $_POST['fecha_final_descanso'] : "0000-00-00";
        $seguimiento = $_POST['seguimiento'] ?? "No";
        $responsable_registro = $_POST['responsable_registro'] ?? null;

        // 🔹 Validación básica
        if (!$id_atencion || !$fecha_atencion || !$hora_atencion || !$dni) {
            throw new Exception("Faltan datos obligatorios.");
        }

        // 🔹 Obtener el ID del trabajador basado en el DNI
        $stmtTrabajador = $pdo->prepare("SELECT id_trabajador FROM Trabajador WHERE dni_ce = ? LIMIT 1");
        $stmtTrabajador->execute([$dni]);
        $trabajador = $stmtTrabajador->fetch(PDO::FETCH_ASSOC);

        if (!$trabajador) {
            throw new Exception("El trabajador con DNI {$dni} no existe.");
        }
        $id_trabajador = $trabajador['id_trabajador'];

        // 🔹 Verificar si el ID del evento existe en la tabla Evento
        if (!empty($id_evento)) {
            $stmtEvento = $pdo->prepare("SELECT id_evento FROM Evento WHERE id_evento = ? LIMIT 1");
            $stmtEvento->execute([$id_evento]);
            $evento = $stmtEvento->fetch(PDO::FETCH_ASSOC);

            if (!$evento) {
                throw new Exception("El evento seleccionado no existe.");
            }
        }

        // 🔹 Actualizar los datos del trabajador
        $queryTrabajador = "UPDATE Trabajador 
                            SET apellidos_nombres = ?, sexo = ?, edad = ?, empresa = ?, 
                                area = ?, puesto_trabajo = ?
                            WHERE id_trabajador = ?";
        $stmtTrabajadorUpdate = $pdo->prepare($queryTrabajador);
        $stmtTrabajadorUpdate->execute([
            $apellidos_nombres, $sexo, $edad, $empresa, $area, $puesto_trabajo, $id_trabajador
        ]);

        // 🔹 Actualizar la atención médica
        $queryAtencion = "UPDATE Atencion_Medica 
                          SET fecha_atencion = ?, hora_atencion = ?, id_trabajador = ?, lugar_atencion = ?, 
                              id_evento = ?, diagnostico_cie10 = ?, tratamiento = ?, descanso_medico = ?, 
                              fecha_inicio_descanso = ?, fecha_final_descanso = ?, seguimiento = ?, 
                              responsable_registro = ?
                          WHERE id_atencion = ?";
        $stmtAtencion = $pdo->prepare($queryAtencion);
        $result = $stmtAtencion->execute([
            $fecha_atencion, $hora_atencion, $id_trabajador, $lugar_atencion, 
            $id_evento, $diagnostico_cie10, $tratamiento, $descanso_medico, 
            $fecha_inicio_descanso, $fecha_final_descanso, $seguimiento, 
            $responsable_registro, $id_atencion
        ]);

        if ($result) {
            echo json_encode(["status" => "success", "message" => "Atención y datos del trabajador actualizados correctamente"]);
        } else {
            throw new Exception("Error al actualizar la atención médica.");
        }

    } catch (Exception $e) {
        echo json_encode(["status" => "error", "message" => $e->getMessage()]);
    }
    exit();
}
?>
