<?php
/**
 * POST /api/lab/save_asignacion.php
 * Asigna (o reasigna) una enfermera a un domicilio.
 * Body JSON:
 *   { domicilio_id, enfermera_id, notas? }
 *   -- Para liberar/completar:
 *   { id, accion: 'liberar'|'completar', motivo? }
 */
require_once __DIR__ . '/_helpers.php';
requireMethod('POST');

try {
    $datos = inputJson();
    $asig  = new Asignacion();
    $admin = adminId();

    // Liberar o completar
    if (!empty($datos['id']) && !empty($datos['accion'])) {
        $id = (int)$datos['id'];
        if ($datos['accion'] === 'liberar') {
            $asig->liberar($id, $admin, $datos['motivo'] ?? '');
            jsonOk(['id' => $id], 'Asignación liberada');
        }
        if ($datos['accion'] === 'completar') {
            $asig->completar($id, $admin);
            jsonOk(['id' => $id], 'Asignación completada');
        }
        jsonError('Acción no reconocida');
    }

    // Asignar / reasignar
    foreach (['domicilio_id', 'enfermera_id'] as $req) {
        if (empty($datos[$req])) {
            jsonError("El campo $req es obligatorio");
        }
    }

    $id = $asig->asignar(
        (int)$datos['domicilio_id'],
        (int)$datos['enfermera_id'],
        $admin,
        $datos['notas'] ?? ''
    );

    jsonOk(['id' => $id], 'Enfermera asignada correctamente');
} catch (Exception $e) {
    jsonError($e->getMessage(), 500);
}
