/*
|--------------------------------------------------------------------------
| Agência PSI
|--------------------------------------------------------------------------
| Criado e desenvolvido por Leonardo Nohama
|
| Tecnologia aplicada à escuta.
| Estrutura para o cuidado.
|
| Arquivo: src/navigation/menus/clinic.menu.js
| Data: 2026
| Local: São Carlos/SP — Brasil
|--------------------------------------------------------------------------
| © 2026 — Todos os direitos reservados
|--------------------------------------------------------------------------
*/
export default function adminMenu(ctx = {}) {
    const menu = [
        {
            label: 'Clínica',
            items: [
                // ✅ usar name real da rota (evita /admin cair em redirect estranho)
                { label: 'Dashboard', icon: 'pi pi-fw pi-home', to: { name: 'admin.dashboard' } },

                {
                    label: 'Agenda da Clínica',
                    icon: 'pi pi-fw pi-calendar',
                    to: { name: 'admin-agenda-clinica' },
                    feature: 'agenda.view',
                    badgeKey: 'agendaHoje'
                },

                {
                    label: 'Recorrências',
                    icon: 'pi pi-fw pi-refresh',
                    to: { name: 'admin-agenda-recorrencias' },
                    feature: 'agenda.view'
                },

                // ✅ Compromissos determinísticos (tipos)
                {
                    label: 'Compromissos',
                    icon: 'pi pi-fw pi-clock',
                    to: { name: 'admin-agenda-compromissos' },
                    feature: 'agenda.view'
                }
            ]
        },

        // CRM de conversas / WhatsApp
        {
            label: 'Conversas',
            icon: 'pi pi-fw pi-comments',
            to: { name: 'admin-conversas' },
            badgeKey: 'conversasUnread'
        },

        // ✅ SEM IF: sempre existe, só fica visível quando a feature estiver ligada
        {
            label: 'Pacientes',
            visible: () => {
                // 1) enquanto tenant/features estão carregando, NÃO some (evita piscar ao trocar de aba)
                if (ctx?.tenantLoading?.()) return true;
                if (ctx?.tenantFeaturesLoading?.()) return true;

                // 2) quando estabilizou, aí sim decide pela feature
                return !!ctx?.tenantFeatureEnabled?.('patients');
            },
            items: [
                // ✅ usar name real das rotas (você já tem todas no routes.clinic.js)
                { label: 'Lista de Pacientes', icon: 'pi pi-fw pi-users', to: { name: 'admin-pacientes' }, quickCreate: true, quickCreateRoute: 'admin-pacientes-cadastro', quickCreateLinkTo: { name: 'admin-pacientes-link-externo' } },
                { label: 'Grupos', icon: 'pi pi-fw pi-sitemap', to: { name: 'admin-pacientes-grupos' } },
                { label: 'Tags', icon: 'pi pi-fw pi-tags', to: { name: 'admin-pacientes-tags' } },
                { label: 'Médicos & Referências', icon: 'pi pi-fw pi-heart', to: { name: 'admin-pacientes-medicos' } },
                { label: 'Link Externo', icon: 'pi pi-fw pi-link', to: { name: 'admin-pacientes-link-externo' } },
                { label: 'Cadastros recebidos', icon: 'pi pi-inbox', to: { name: 'admin-pacientes-recebidos' }, badgeKey: 'cadastrosRecebidos' }
                // "Templates de Documentos" movido pra Configurações
            ]
        },

        {
            label: 'Gestão',
            items: [
                { label: 'Profissionais', icon: 'pi pi-fw pi-id-card', to: { name: 'admin-clinic-professionals' } },
                {
                    label: 'Tipos de Clínicas',
                    icon: 'pi pi-fw pi-sliders-h',
                    to: { name: 'admin-clinic-features' },
                    visible: () => {
                        if (ctx?.tenantLoading?.()) return true; // ← true durante loading (evita piscar)
                        const role = ctx?.role?.();
                        return role === 'clinic_admin'; // tenant_admin normaliza para clinic_admin
                    }
                },
                { label: 'Meu plano', icon: 'pi pi-fw pi-credit-card', to: { name: 'admin-meu-plano' } }
            ]
        },

        {
            label: 'Financeiro',
            items: [{ label: 'Cobranças', icon: 'pi pi-fw pi-wallet', to: { name: 'admin-financeiro' } }]
        },

        {
            label: 'Sistema',
            items: [
                { label: 'Meu Perfil', icon: 'pi pi-fw pi-user', to: '/account/profile' },
                { label: 'Meu Negócio', icon: 'pi pi-fw pi-building', to: '/account/negocio' },
                { label: 'Segurança', icon: 'pi pi-fw pi-shield', to: { name: 'admin-settings-security' } },
                {
                    label: 'Agendamento Online (PRO)',
                    icon: 'pi pi-fw pi-calendar-plus',
                    to: { name: 'admin-online-scheduling' },
                    feature: 'online_scheduling.manage',
                    proBadge: true
                },
                {
                    label: 'Agendamentos Recebidos',
                    icon: 'pi pi-fw pi-inbox',
                    to: { name: 'admin-agendamentos-recebidos' },
                    feature: 'online_scheduling.manage',
                    proBadge: true,
                    badgeKey: 'agendamentosRecebidos'
                }
            ]
        }
    ];

    return menu;
}
