Ticket System

Ticket Events

Source route: /promotion/ticket-system

Use this page to manage ticket-event campaigns with prize rules and distribution timing.

What You Can Do

  • filter campaigns by active period, status, product type, currency, name, and ticket ID
  • create or edit ticket events
  • open ticket listing for one event
  • open view-only mode for inspection
  • trigger automatic rank assignment when the event is pending distribution
  • change list status in the states where the source allows it

Status Model

The current source shows these ticket states:

  • active
  • inactive
  • inrunning
  • pending_distribution
  • completed

Important behavior:

  • status badge changes are intended for active and inactive
  • pending_distribution can also expose a status-style action when price distribution is disabled
  • distribution generation is a separate action, not the same as normal status toggle

Distribution Action

When a row is pending_distribution, has ticket count, and priceDistribution is true, the list can expose a Generate action.

That action triggers automatic rank assignment for the ticket event.

Ticket Modal

The create/edit modal includes source-backed fields such as:

  • active period start and end
  • distribution amount date
  • currency
  • product type
  • ticket generation mode
  • wallet type
  • total users
  • amount trigger fields
  • min odds
  • verified-player-only and multiple-wins-allowed flags
  • prize rules with rank ranges and percentages

Validation Rules That Matter

Before save, the source checks:

  • total prize-rule percentage must equal 100
  • the total number of ranked users across prize rules must exactly match totalUsers

If either check fails, the event is blocked from saving.

When To Use This Page

  • when the promotion distributes prize pools by rank
  • when a campaign needs event-level listing and distribution control
  • when promo logic is tied to tickets rather than bonus balances or code redemption

Listing Detail Follow-Up

The listing action opens /promotion/ticket-system/listing/{id}.

That route is not a separate menu page. It is the follow-up detail screen for one ticket event and is used to review:

  • ticket number
  • player ID
  • username
  • win amount
  • rank
  • verifier
  • status
  • created time

The filter sidebar there supports ticket number, player ID, username, and ticket status.

The action column appears only when the parent event is pending_distribution and priceDistribution is false. In that state:

  • rows without rank show Add Rank
  • rows with rank show View Rank

Use this detail flow after opening one event's listing action to inspect ticket rows and manage manual rank assignment for eligible records.