import { NextResponse } from "next/server";
import { getBotSbisItem, getBotSbisPrices } from "@/lib/bot-api";
import { adminAuthorized } from "@/lib/admin-auth";

function fail(error: string, status = 400) { return NextResponse.json({ error }, { status }); }

/**
 * Admin view of the full SBIS item card (contract §3в.2): composition with
 * Qty/NetQty/Output, explicit root Output as weight, and the price list id
 * chosen by the bot (SBIS_PRICE_ID).
 */
export async function GET(request: Request) {
  if (!(await adminAuthorized(request))) return fail("Unauthorized", 401);
  const params = new URL(request.url).searchParams;
  try {
    if (params.get("prices") === "1") {
      const prices = await getBotSbisPrices();
      return NextResponse.json({ defaultId: prices.default_id, prices: prices.prices }, { headers: { "Cache-Control": "no-store" } });
    }
    const sbisId = (params.get("sbisId") || "").trim();
    if (!/^\d+$/.test(sbisId)) return fail("Укажите числовой sbis_id");
    const item = await getBotSbisItem(sbisId);
    return NextResponse.json({
      sbisId: item.sbis_id,
      name: item.name,
      description: item.description,
      measureUnit: item.measure_unit ?? null,
      productionVolume: item.production_volume ?? null,
      productionMeasure: item.production_measure ?? null,
      weight: item.weight ?? null,
      weightStatus: item.weight_status,
      composition: item.composition || [],
      priceListId: item.price_list?.id ?? null,
      updatedAt: item.updated_at
    }, { headers: { "Cache-Control": "no-store" } });
  } catch (error) {
    const status = typeof (error as { status?: unknown })?.status === "number" ? Number((error as { status: number }).status) : 502;
    return fail(error instanceof Error ? error.message : "Карточка СБИС недоступна", status);
  }
}
