import { createClient } from "@/lib/supabase-server";
import { createQuote, listQuotes } from "@/lib/api-v1/services/quotes-service";
import { ApiV1Error } from "@/lib/api-v1/errors";
import { jsonOk, toErrorResponse } from "@/lib/api-v1/response";

export const runtime = "nodejs";

function formatMoney(value: number) {
  return new Intl.NumberFormat("pt-BR", { style: "currency", currency: "BRL" }).format(value || 0);
}

async function getAuth() {
  const supabase = await createClient();
  const {
    data: { user },
  } = await supabase.auth.getUser();
  return { supabase, user };
}

export async function GET(request: Request) {
  try {
    const { supabase, user } = await getAuth();
    if (!user) throw new ApiV1Error(401, "unauthorized", "Nao autenticado.");
    return jsonOk(await listQuotes({ supabase, user, request }));
  } catch (error) {
    return toErrorResponse(error);
  }
}

export async function POST(req: Request) {
  try {
    const { supabase, user } = await getAuth();
    if (!user) throw new ApiV1Error(401, "unauthorized", "Nao autenticado.");
    const body = (await req.json().catch(() => null)) as Record<string, unknown> | null;
    const result = await createQuote({ supabase, user, request: req, body });

    return jsonOk({ ok: true, quoteId: result.quoteId, quoteNumber: result.quoteNumber });
  } catch (error) {
    return toErrorResponse(error);
  }
}
