/* ===== Quem entrou decide o que vê (14/11) ==========================
   Até aqui o perfil era um SELETOR: qualquer um trocava de "Dono" para
   "Vendedor" no topo da tela. Servia para demonstrar, não para valer.

   Agora o perfil vem de quem entrou. O app pergunta ao banco quem é a
   pessoa (rpc/meu_acesso) e monta as telas a partir da FUNÇÃO dela.

   DUAS COISAS DIFERENTES NO BANCO, DE PROPÓSITO
   - papel  (já existia): o que a pessoa pode EDITAR nos mapas da ValorIA.
            master/admin. Não encostei nele: autorizado() e pode_editar()
            dependem dele e quebrariam.
   - funcao (nova):       o lugar da pessoa na operação da Iunes. É só
            isto que decide as telas.

   A TRAVA DE VERDADE NÃO ESTÁ AQUI
   Esconder um item de menu não protege nada: quem souber mexer no
   navegador chega na tela assim mesmo. O que protege os DADOS são as
   regras do próprio banco (RLS), que já valem por e-mail. Este arquivo
   organiza a vista; o banco é que nega o dado.
   ================================================================== */

/* Telas que cada função enxerga. '*' = todas.
   Um id que não existir aqui é simplesmente ignorado, então acrescentar
   tela nova não quebra nada: ela só não aparece para quem não foi
   listado. */
const AC_TELAS = {
  dono: '*',
  visitante: '*',   /* vê tudo, mas sem gravar nada (ver roBlock) */
  frotas: ['frota','manutencao','consumo','rastreamento','mercado'],
  escritorio: ['estoque','clientes','cadastros','relatorios','mercado','logistica'],
};

/* Como a função aparece no canto da tela */
const AC_ROTULOS = {
  dono:       {label:'Dono e Logística', short:'Dono · Logística', role:'dono'},
  vendedor:   {label:'Vendedor',         short:'Vendedor',         role:'vendedor'},
  frotas:     {label:'Frotas',           short:'Frotas',           role:'frotas'},
  escritorio: {label:'Escritório',       short:'Escritório',       role:'escritorio'},
  visitante:  {label:'Visitante',        short:'Somente leitura',  role:'visitante'},
};

function acIniciais(nome){
  const p = String(nome||'').trim().split(/\s+/).filter(Boolean);
  if(!p.length) return '··';
  return ((p[0][0]||'') + (p.length>1 ? p[p.length-1][0] : '')).toUpperCase();
}

/* Monta o perfil a partir da linha do banco.
   Para vendedor o id TEM que ser o id do vendedor (V-01, V-02...), porque
   é por ele que a tela acha a carteira dele. O banco já exige vínculo
   para quem é vendedor, então aqui ele nunca chega vazio. */
function acPerfil(a){
  if(!a) return null;
  const f = AC_ROTULOS[a.funcao] ? a.funcao : 'visitante';
  const r = AC_ROTULOS[f];
  const nome = a.nome || a.email || 'Sem nome';
  return {
    id: f==='vendedor' ? a.vinculo : 'P-' + f.toUpperCase(),
    label: nome + ' · ' + r.label,
    short: r.short,
    name: nome,
    iniciais: acIniciais(nome),
    role: r.role,
    funcao: f,
    email: a.email,
    daConta: true,
  };
}

/* Filtra o menu. sellerNav continua valendo para vendedor, porque as
   telas dele são outras, não um recorte das do dono. */
function acItens(todos, vendaNav, perfil){
  if(!perfil) return [];
  if(perfil.role==='vendedor') return vendaNav;
  const p = AC_TELAS[perfil.funcao];
  if(p==='*') return perfil.role==='visitante'
    ? todos.filter(i=>i.id!=='cadastros')
    : todos;
  const ordem = todos.filter(i=>p.indexOf(i.id)>=0);
  return ordem.length ? ordem : todos.filter(i=>i.id==='mercado');
}

/* Primeira tela de cada um: onde o trabalho dela começa. */
function acPrimeiraTela(perfil, itens){
  if(!perfil) return 'espaco';
  if(perfil.role==='vendedor') return 'v-painel';
  if(perfil.funcao==='dono') return 'espaco';
  return itens.length ? itens[0].id : 'mercado';
}
