Ruleta de sorteo (poseedores de NFT)
Requisitos de acceso
- Permiso (módulo):
manageToken - Licencia/Feature: Ninguna específica (depende de la tokenización/NFTs)
- Acceso: GENERAL → Tokenización → NFTs/Assets → botón Ruleta en una NFT (ruta
/roulette/:id)
Qué es / cuándo usarlo
Herramienta de sorteo/giveaway entre los poseedores de una NFT específica. La pantalla carga todos los propietarios (owners) del asset indicado en la URL (/roulette/:id), los cruza con la base de usuarios para mostrar email/nombre, y ofrece una ruleta en pantalla completa que elige un ganador de forma aleatoria.
Úselo para promociones del tipo "quien tenga la NFT X participa en el sorteo de un premio". El acceso se realiza desde el listado de NFTs (Tokenización), no desde un ítem de menú propio.
Requisitos previos
- Permiso:
manageTokenregistrado para el rol del operador (permiso doble: enum CPM + módulo dinámico en la BD). El guard de ruta requiere este módulo. - Licencia/Feature: depende de que el tenant tenga tokenización/NFTs habilitadas.
- Dependencias de otras pantallas: la NFT/colección debe existir y tener poseedores. El acceso parte de Tokenización → NFTs/Assets (
/manage-assets), mediante un botón que navega aroulette/<assetId>.
Paso a paso
- En Tokenización → NFTs/Assets, localice la NFT y haga clic en la acción que abre la Ruleta.
- La pantalla lista los poseedores (cliente, email, token, precio pagado).
- (Opcional) Use Mostrar/Ocultar precio pagado para ver el monto pagado por cada poseedor.
- Haga clic en Girar para abrir la ruleta en pantalla completa y sortear un ganador.
- Haga clic en un poseedor para ver los Detalles del propietario.
- Use Exportar CSV para descargar la base de usuarios indicando quién posee la NFT.
Filtros y columnas
| Filtro / Columna | Qué muestra | Origen del dato |
|---|---|---|
Cliente (customer) | Poseedor de la NFT | getAllOwners(assetId) cruzado con la base de usuarios |
Email (email) | Email del poseedor | mapa customer_id → usuario |
| Token | Identificación del token/NFT | owner record |
Precio pagado (price_paid) | Cuánto pagó el poseedor | se muestra solo con el toggle activado; formateado vía BigNumber (2 decimales) |
| Mostrar precio pagado | Activa/desactiva la columna de precio | showPricePaid (client) |
Acciones y modales
- Girar: abre el modal
RouletteFullScreencon todos los poseedores y sortea visualmente un ganador (el límite de renderizado de la ruleta se gestiona dentro del modal para soportar muchos participantes). - Detalles del propietario: abre
RouletteOwnerDetailsModalComponentcon los datos del poseedor seleccionado. - Exportar CSV: descarga
users_<fecha>.csvcon la base de usuarios y una columnahaveNFT(Yespara quienes poseen la NFT del sorteo). - Volver: regresa a la pantalla anterior (
location.back()).
Reglas de negocio / precauciones
Atención
- El sorteo considera solo los poseedores actuales del asset cargado — quien vendió/transfirió la NFT antes de la carga no participa.
- El precio pagado es información sensible: mantenga la columna oculta en presentaciones públicas.
- El resultado de la ruleta es un sorteo visual en el cliente; registre el ganador manualmente para fines del premio (la pantalla no persiste el resultado).
- Valores financieros: el precio pagado se trata como BigNumber y se muestra con 2 decimales — los valores no finitos aparecen como "-".