<?php
/**
 * POST /api/lab/autorizar_orden.php
 * Cambia el estado de una orden médica (flujo de revisión).
 * Body JSON:
 *   { id, accion: 'en_revision'|'autorizada'|'rechazada'|'completada', comentario? }
 */
require_once __DIR__ . '/_helpers.php';
requireMethod('POST');

try {
    $datos     = inputJson();
    $om        = new OrdenMedica();
    $admin     = adminId();

    if (empty($datos['id'])) {
        jsonError('El campo id es obligatorio');
    }
    if (empty($datos['accion'])) {
        jsonError('El campo accion es obligatorio');
    }

    $id         = (int)$datos['id'];
    $accion     = $datos['accion'];
    $comentario = $datos['comentario'] ?? '';

    if ($accion === 'rechazada' && empty($comentario)) {
        jsonError('El motivo de rechazo es obligatorio');
    }

    $om->cambiarEstado($id, $accion, $admin, $comentario);

    $mensajes = [
        'en_revision' => 'Orden marcada en revisión',
        'autorizada'  => 'Orden autorizada correctamente',
        'rechazada'   => 'Orden rechazada',
        'en_domicilio'=> 'Orden marcada como en domicilio',
        'completada'  => 'Orden completada',
    ];

    jsonOk(['id' => $id], $mensajes[$accion] ?? 'Estado actualizado');
} catch (InvalidArgumentException $e) {
    jsonError($e->getMessage());
} catch (Exception $e) {
    jsonError($e->getMessage(), 500);
}
