'use client'; import { BuildingOfficeIcon, ArrowLeftIcon, PaintBrushIcon, MapPinIcon, UserGroupIcon, ChartBarIcon, FolderIcon, LifebuoyIcon, CreditCardIcon, DocumentTextIcon, ArchiveBoxIcon, ShareIcon } from '@heroicons/react/24/outline'; import Link from 'next/link'; import { useEffect, useState } from 'react'; import { useParams } from 'next/navigation'; import Tabs, { TabItem } from '@/components/ui/Tabs'; // Mapeamento de ícones para cada solução const SOLUTION_ICONS: Record> = { 'crm': UserGroupIcon, 'erp': ChartBarIcon, 'projetos': FolderIcon, 'helpdesk': LifebuoyIcon, 'pagamentos': CreditCardIcon, 'contratos': DocumentTextIcon, 'documentos': ArchiveBoxIcon, 'social': ShareIcon, }; interface AgencyTenant { id: string; name: string; subdomain: string; domain: string; email: string; phone: string; website: string; cnpj: string; razao_social: string; description: string; industry: string; team_size: string; address: string; neighborhood: string; number: string; complement: string; city: string; state: string; zip: string; primary_color: string; secondary_color: string; logo_url: string; logo_horizontal_url: string; is_active: boolean; created_at: string; updated_at: string; } interface AgencyDetails { tenant: AgencyTenant; admin?: { id: string; email: string; name: string; }; subscription?: { plan_id: string; plan_name: string; status: string; solutions: Array<{ id: string; name: string; slug: string; icon: string; }>; }; access_url: string; } export default function AgencyDetailPage() { const params = useParams(); const [details, setDetails] = useState(null); const [loading, setLoading] = useState(true); useEffect(() => { if (params.id) { fetchAgency(params.id as string); } }, [params.id]); const fetchAgency = async (id: string) => { try { const response = await fetch(`/api/admin/agencies/${id}`, { headers: { 'Authorization': `Bearer ${localStorage.getItem('token')}`, }, }); if (response.ok) { const data = await response.json(); // Handle both flat (legacy) and nested (new) responses if (data.tenant) { setDetails(data); } else { // Fallback for legacy flat response setDetails({ tenant: data, access_url: `http://${data.subdomain}.localhost`, // Fallback URL }); } } } catch (error) { console.error('Error fetching agency:', error); } finally { setLoading(false); } }; if (loading) { return (
); } if (!details || !details.tenant) { return (
Erro! Agência não encontrada.
Voltar para Agências
); } const { tenant } = details; const tabsConfig: TabItem[] = [ { name: 'Visão Geral', icon: BuildingOfficeIcon, content: (
{/* Informações Básicas */}

Dados da Empresa

Razão Social
{tenant.razao_social || '-'}
CNPJ
{tenant.cnpj || '-'}
Setor
{tenant.industry || '-'}
Tamanho da Equipe
{tenant.team_size || '-'}
Descrição
{tenant.description || '-'}
{/* Localização */}

Localização

Endereço
{tenant.address ? ( <> {tenant.address} {tenant.number ? `, ${tenant.number}` : ''} {tenant.complement ? ` - ${tenant.complement}` : ''} ) : '-'}
Bairro
{tenant.neighborhood || '-'}
Cidade / UF
{tenant.city && tenant.state ? `${tenant.city} - ${tenant.state}` : '-'}
CEP
{tenant.zip || '-'}
{/* Contato */}

Contato

Email
{tenant.email || '-'}
Telefone
{tenant.phone || '-'}
Website
{tenant.website ? ( {tenant.website} ) : '-'}
{/* Metadados */}

Metadados

Criada em
{new Date(tenant.created_at).toLocaleDateString('pt-BR')}
Última atualização
{new Date(tenant.updated_at).toLocaleDateString('pt-BR')}
) }, { name: 'Identidade Visual', icon: PaintBrushIcon, content: (
{/* Cores da Marca */}

Cores da Marca

Cor Primária
{tenant.primary_color || '-'} Cor principal da marca
Cor Secundária
{tenant.secondary_color || '-'} Cor de apoio da marca
{/* Logos */}

Logotipos

{/* Logo Principal */}
Logo Principal
{tenant.logo_url ? ( Logo ) : ( Sem logo )}
{/* Logo Horizontal */}
Logo Horizontal
{tenant.logo_horizontal_url ? ( Logo Horizontal ) : ( Sem logo horizontal )}
) }, { name: 'Plano e Soluções', content: (
{details.subscription ? ( <> {/* Informações do Plano */}
Plano
{details.subscription.plan_name}
Status
{details.subscription.status === 'active' ? 'Ativa' : details.subscription.status}
{/* Soluções Disponíveis */} {details.subscription.solutions && details.subscription.solutions.length > 0 && (

Soluções Disponíveis ({details.subscription.solutions.length})

{details.subscription.solutions.map((solution) => { const Icon = SOLUTION_ICONS[solution.slug] || FolderIcon; return (
{solution.name} {solution.slug}
); })}
)}
{/* Ações */}
Ver Detalhes do Plano → Gerenciar Soluções
) : (

Nenhuma Assinatura

Esta agência ainda não possui um plano ativo.

)}
) } ]; return (
Voltar para Agências
{tenant.logo_url ? ( {tenant.name} ) : ( )}

{tenant.name}

{tenant.subdomain}.aggios.app | {tenant.is_active ? 'Ativa' : 'Inativa'}
Editar Dados
); }