<?php
/**
 * POST { turno_id, paciente_id }
 * Vincula un paciente al turno para que los consentimientos puedan crearse.
 */
require_once __DIR__ . '/_helpers.php';
require_once __DIR__ . '/../../../classes/lab/ActividadAdmin.php';
requireMethod('POST');
requireTurnero();

$d          = inputJson();
$turnoId    = (int)($d['turno_id']   ?? 0);
$pacienteId = (int)($d['paciente_id'] ?? 0);

if (!$turnoId || !$pacienteId) jsonError('turno_id y paciente_id requeridos.');

$pdo = db();

// Obtener nombre real del paciente
$nombre = $pdo->prepare('SELECT nombre_completo FROM lab_pacientes WHERE id = ?');
$nombre->execute([$pacienteId]);
$nombreCompleto = $nombre->fetchColumn() ?: null;

$stmt = $pdo->prepare(
    'UPDATE turnero_turnos SET paciente_id = ?, paciente_nombre = COALESCE(?, paciente_nombre) WHERE id = ?'
);
$stmt->execute([$pacienteId, $nombreCompleto, $turnoId]);

if (!$stmt->rowCount()) jsonError('Turno no encontrado.', 404);

// Vincular a la persona equivocada manda la atención a otra historia clínica,
// así que queda registrado quién hizo la vinculación.
try {
    (new ActividadAdmin())->registrar(
        adminId(),
        'turnero',
        'vincular_paciente',
        $turnoId,
        [
            'turno_id'         => $turnoId,
            'paciente_id'      => $pacienteId,
            'paciente_nombre'  => $nombreCompleto,
        ]
    );
} catch (\Throwable $e) {
    error_log('[vincular_paciente] auditoría: ' . $e->getMessage());
}

jsonOk(['turno_id' => $turnoId, 'paciente_id' => $pacienteId]);
