import { NextResponse } from "next/server";
import { acessoDoChat } from "@/lib/chats/acesso";
import { createAdminClient } from "@/lib/supabase-server";

/*
  Quem existe para conversar.

  Hoje so a equipe: na aba da loja a conversa nasce do pedido, e nao de uma
  lista de contatos — comecar um fio com um cliente que nunca comprou seria
  abrir uma caixa vazia.
*/

const CARGOS: Record<string, string> = {
  owner: "Dono",
  admin: "Administrador",
  manager: "Gerente",
  financial: "Financeiro",
  production: "Produção",
  sales: "Vendas",
  viewer: "Visualização",
};

export async function GET() {
  const acesso = await acessoDoChat();
  if ("erro" in acesso) return acesso.erro;

  const admin = createAdminClient();
  const { data, error } = await admin
    .from("company_users")
    .select("user_id,email,role,active")
    .eq("company_id", acesso.ctx.companyId)
    .neq("user_id", acesso.user.id);

  if (error) return NextResponse.json({ error: error.message }, { status: 400 });

  const equipe = ((data || []) as { user_id: string; email?: string; role?: string; active?: boolean }[])
    .filter((pessoa) => pessoa.active !== false)
    .map((pessoa) => ({
      id: pessoa.user_id,
      nome: String(pessoa.email || "").split("@")[0] || "Colega",
      email: pessoa.email || "",
      cargo: CARGOS[String(pessoa.role || "")] || "Equipe",
    }))
    .sort((a, b) => a.nome.localeCompare(b.nome, "pt-BR"));

  return NextResponse.json({ ok: true, equipe });
}
