Roleta de sorteio (detentores de NFT)
Pré-requisitos de acesso
- Permissão (módulo):
manageToken - Licença/Feature: Nenhuma específica (depende da tokenização/NFTs)
- Acesso: GERAL → Tokenização → NFTs/Assets → botão Roleta em uma NFT (rota
/roulette/:id)
O que é / quando usar
Ferramenta de sorteio/giveaway entre os detentores de uma NFT específica. A tela carrega todos os donos (owners) do asset informado na URL (/roulette/:id), cruza com a base de usuários para exibir e-mail/nome, e oferece uma roleta em tela cheia que escolhe um ganhador aleatório.
Use para promoções do tipo "quem tem a NFT X concorre a um prêmio". O acesso é feito a partir da listagem de NFTs (Tokenização), não por um item de menu próprio.
Pré-condições
- Permissão:
manageTokencadastrado para a role do operador (permissão dupla: enum CPM + módulo dinâmico no DB). O guard de rota exige este módulo. - Licença/Feature: depende de o tenant ter tokenização/NFTs habilitadas.
- Dependências de outras telas: a NFT/coleção precisa existir e ter detentores. O acesso parte de Tokenização → NFTs/Assets (
/manage-assets), via botão que navega pararoulette/<assetId>.
Passo a passo
- Em Tokenização → NFTs/Assets, localize a NFT e clique na ação que abre a Roleta.
- A tela lista os detentores (cliente, e-mail, token, preço pago).
- (Opcional) Use Mostrar/Ocultar preço pago para exibir o valor pago por cada detentor.
- Clique em Girar para abrir a roleta em tela cheia e sortear um ganhador.
- Clique em um detentor para ver Detalhes do proprietário.
- Use Exportar CSV para baixar a base de usuários sinalizando quem possui a NFT.
Filtros e colunas
| Filtro / Coluna | O que mostra | Origem do dado |
|---|---|---|
Cliente (customer) | Detentor da NFT | getAllOwners(assetId) cruzado com a base de usuários |
E-mail (email) | E-mail do detentor | mapa customer_id → usuário |
| Token | Identificação do token/NFT | owner record |
Preço pago (price_paid) | Quanto o detentor pagou | exibido só com o toggle ligado; formatado via BigNumber (2 casas) |
| Mostrar preço pago | Liga/desliga a coluna de preço | showPricePaid (client) |
Ações e modais
- Girar: abre o modal
RouletteFullScreencom todos os detentores e sorteia visualmente um ganhador (a limitação de desenho da roleta é feita dentro do modal para suportar muitos participantes). - Detalhes do proprietário: abre
RouletteOwnerDetailsModalComponentcom dados do detentor selecionado. - Exportar CSV: baixa
users_<data>.csvcom a base de usuários e uma colunahaveNFT(Yespara quem possui a NFT sorteável). - Voltar: retorna à tela anterior (
location.back()).
Regras de negócio / cuidados
Atenção
- O sorteio considera apenas os detentores atuais do asset carregado — quem vendeu/transferiu a NFT antes do carregamento não entra.
- O preço pago é informação sensível: mantenha a coluna oculta em apresentações públicas.
- O resultado da roleta é um sorteio visual no cliente; registre o ganhador manualmente para fins de prêmio (a tela não persiste o resultado).
- Valores financeiros: o preço pago é tratado como BigNumber e exibido com 2 casas — valores não-finitos aparecem como "-".