import { NextResponse } from "next/server";
import { query } from "@/lib/db";

interface Categoria {
  id: number;
  nome: string;
}

interface Artigo {
  id: number;
  id_categoria: number;
  codigo: string;
  descricao: string;
  multa: number;
  fianca: number;
  pena_meses: number;
  definicao: string;
}

export async function GET() {
  const categorias = (await query("SELECT * FROM categorias ORDER BY id")) as Categoria[];
  const artigos = (await query("SELECT * FROM artigos ORDER BY id_categoria, codigo")) as Artigo[];

  const grouped = categorias.map((cat) => ({
    id: cat.id,
    nome: cat.nome,
    artigos: artigos
      .filter((a) => a.id_categoria === cat.id)
      .map((a) => ({
        id: a.id,
        codigo: a.codigo,
        descricao: a.descricao,
        multa: Number(a.multa) || 0,
        fianca: Number(a.fianca) || 0,
        pena: a.pena_meses || 0,
        definicao: a.definicao || "",
      }))
      .sort((a, b) => {
        const pa = a.codigo.split(".").map(Number);
        const pb = b.codigo.split(".").map(Number);
        for (let i = 0; i < Math.max(pa.length, pb.length); i++) {
          const diff = (pa[i] || 0) - (pb[i] || 0);
          if (diff !== 0) return diff;
        }
        return 0;
      }),
  })).filter((c) => c.artigos.length > 0);

  return NextResponse.json(grouped);
}
