import { NextResponse } from "next/server";

import { acessoDaRota, respostaDeErro } from "@/lib/regras/servidor/acesso-da-rota";
import { criarRegra, listarRegras, opcoesDasRegras } from "@/lib/regras/servidor/servico";

/* As regras da empresa ("quando X, faça Y"): a lista, o que dá para escolher no
   formulário e a criação. Exige company.settings (as travas da tabela também). */

export async function GET() {
  const r = await acessoDaRota();
  if ("erro" in r) return r.erro;
  try {
    const [regras, opcoes] = await Promise.all([listarRegras(r.acesso), opcoesDasRegras(r.acesso)]);
    return NextResponse.json({ regras, opcoes });
  } catch (erro) {
    return respostaDeErro(erro);
  }
}

export async function POST(req: Request) {
  const r = await acessoDaRota();
  if ("erro" in r) return r.erro;
  const corpo = (await req.json().catch(() => null)) as Record<string, unknown> | null;
  try {
    const criada = await criarRegra(r.acesso, corpo ?? {}, corpo?.ativa === false ? false : true);
    return NextResponse.json({ ok: true, regra: criada });
  } catch (erro) {
    return respostaDeErro(erro);
  }
}
