Operator guideENreportingplayerexclusions

Reporting / Player Exclusions

Audit report for exclusion records, exclusion ownership, and active versus inactive restriction coverage.

Reader view

Clean portal guidance

This page keeps the operator explanation, field and action descriptions, and screenshots visible without exposing repo paths, raw sidecars, or editorial-only implementation details.

Narrative content

Page body

What this page shows

Player Exclusions is the exclusion audit report for restriction records and their current activity state. It combines active or expired exclusions with player identity, exclusion ownership, and record-count context.

When to use it

  • review active versus inactive exclusions
  • filter by exclusion type or exclusion owner
  • inspect how many exclusion records belong to one player

How to read it

The summary cards show the top exclusion counts for the current query:

  • Active Exclusions
  • Self-Exclusions
  • Permanent Exclusions
  • Total Excluded Players

These cards count distinct players in the backend summary, not table rows. The table and pagination are record-oriented.

The table is record-oriented:

  • one row is one exclusion record
  • Times Excluded shows how many total exclusion records the player has in backend history
  • Status reflects whether that record is currently active or expired

Action and filter behavior

  • Refresh is the primary apply action. It copies the currently edited filter controls into the active query state and immediately re-runs the report.
  • Reset Filters restores the default last-week view: Start Date = today - 7 days, End Date = tomorrow, Status = Active Exclusions, and no user-id or exclusion-type narrowing.
  • Export CSV uses the currently active filter state and requests the full result set rather than the visible page slice.
  • pressing Enter in the filter fields also applies the staged filters.

Known caveats

  • the backend accepts excludedBy, but the current FE does not expose that filter to operators
  • All Exclusions is a visible Status option, but the FE omits showActive for that option and the backend defaults missing showActive back to true; in the current traced flow it behaves like active-only instead of truly unfiltered active plus expired data
  • Times Excluded is calculated from all exclusion records for the player, not only the currently filtered page
  • exclusion type is derived from three backend source families: limits, restricted users, and disabled-user state
  • the visible summary cards expose only four counters; operator, regulatory, inactive, and total-record counters stay backend-only in the current FE
  • Unique Player ID is a clickable chip that deep-links to /player/:userId
  • date filters apply to exclusion_start_date; they do not filter by exclusion end date
  • backend date replacements expand Start Date to start-of-day and End Date to end-of-day before filtering

Filters that change the result

  • User ID
  • Exclusion Type
  • Start Date
  • End Date
  • Status
  • rows per page

Verification status

  • status: verified_backend
  • FE route, summary cards, table columns, status caveat, and export flow are mapped
  • gs-admin-backend owns exclusion classification, active-state logic, and summary aggregation
  • nx-workspace is not required for the current operator meaning
Calculation notes

Calculations

calculation

Exclusion type derivation

One visible exclusion label can come from different backend restriction sources.

Source Fields
limits, restricted_users, users.disabled
Transform
The backend derives exclusion type from responsible-gaming limits, restricted-user records with exclusion reasons, and disabled-user state.
calculation

Active status

`Active` and `Expired` are backend truth states, not FE-only chips.

Source Fields
exclusion_end_date, showActive
Transform
`Status` is backend-derived from exclusion end-date or disabled-user activity state and current time, then filtered by the `showActive` request flag.
calculation

All Exclusions status caveat

In the current traced flow, `All Exclusions` behaves like active-only instead of active plus expired.

Source Fields
showActive, activeShowActive
Transform
The FE maps `All Exclusions` to omitted `showActive`, but the backend service defaults missing `showActive` to `true` and still applies `e.is_active = true`.
calculation

Times Excluded

Helps operators see repeated restriction history for the same player.

Source Fields
user_id, exclusion_count
Transform
`Times Excluded` counts all exclusion records for the player from the exclusions CTE, not only the currently visible filtered subset.
calculation

Summary distinct player counts

Visible cards are player counts, not row counts.

Source Fields
user_id, is_active, exclusion_type, excluded_by_type
Transform
Summary counters use `COUNT(DISTINCT e.user_id)` for active, inactive, permanent, self, operator, regulatory, excluded-by-self, excluded-by-operator, and total player counts. Only `total_exclusion_records` uses `COUNT(*)`.
calculation

Refresh and apply flow

Unsaved filter edits do not affect the table until `Refresh` is used.

Source Fields
userId, exclusionType, startDate, endDate, showActive, activeUserId, activeExclusionType, activeStartDate, activeEndDate, activeShowActive
Transform
The FE keeps editable filter controls separate from the active query state. Pressing `Refresh` copies the staged controls into the active state, resets pagination to page 1, and then re-fetches the report.
calculation

Default reset window

Reset returns the page to the default last-week active-exclusions audit view.

Source Fields
defaultStartDate, defaultEndDate, showActive
Transform
`Reset Filters` restores `Start Date = today - 7 days`, `End Date = tomorrow`, and `Status = Active Exclusions`. User-id and exclusion-type filters are cleared.
calculation

Date filter scope

The date range is inclusive by commenced date; it does not filter by `Date Ended`.

Source Fields
startDate, endDate, exclusion_start_date
Transform
Backend filters `exclusion_start_date >= startOfDay(startDate)` and `exclusion_start_date <= endOfDay(endDate)`.
calculation

Export full result set

CSV export is for the active filtered result set, not just the current table page.

Source Fields
exportCsv, limit, pageNo
Transform
FE export sends `limit=1000000`, `pageNo=1`, and `exportCsv=true`; backend export also forces size to `1000000` and offset to `0`.
Grid columns

Columns

field

Unique Player ID

Clickable player identifier chip that opens the player profile route.

field

Username

field

Email

field

Type of Exclusion

field

Date Commenced

field

Date Ended

field

Reason

Truncated reason text with a tooltip that reveals the full backend reason.

field

Excluded By

Display name of the exclusion owner. Self-originated rows fall back to `Self`.

field

Times Excluded

Count of all exclusion records for this player across backend history, not only the rows visible on the current page.

field

Status

Visible chip rendered as `Active` or `Expired`.

Filter dictionary

Filters

field

Start Date

Staged lower bound for `exclusion_start_date`; applied by `Refresh` or Enter.

Type
date
Default Value
today - 7 days
field

End Date

Staged upper bound for `exclusion_start_date`; backend expands the value to end-of-day.

Type
date
Default Value
tomorrow
field

User ID

Exact backend filter on `e.user_id`; applied by `Refresh` or Enter.

Type
text
field

Exclusion Type

Staged exact filter on derived backend `exclusion_type`.

Type
select
Options
All Types, Self-Excluded, Permanent, Operator-Excluded, Regulatory-Excluded
field

Excluded by

Backend-supported `excludedBy` request filter that is not rendered in the current FE filter card.

Type
select
Visibility
api_only
field

Status

Type
select
Options
Active Exclusions, Expired Exclusions, All Exclusions
Caveat
The current `All Exclusions` FE value omits `showActive`, but the backend default is active-only.
Summary cards

Summary cards

field

Active Exclusions

Visible count of distinct players with active exclusions in the active report query.

field

Self-Exclusions

Visible count of distinct players with self-excluded rows in the active report query.

field

Permanent Exclusions

Visible count of distinct players with permanent exclusion rows in the active report query.

field

Total Excluded Players

Number of distinct players represented by the current result set.

Widget map

Widgets

item

Filter Player Exclusions

Filter card with staged controls that become active when `Refresh` is used.

item

Press Enter in any field or click Refresh to apply filters

FE instruction that Enter applies staged filters.

item

Player Exclusions List

Record-oriented table where each row is one exclusion record.

item

Loading bar

Linear progress shown while the active SWR request is loading.

item

No exclusions found

Empty table state when the backend returns no rows for the active filters.

item

Table pagination

Backend pagination with row-size options 10, 20, 50, and 100.

item

Showing range summary

FE footer text showing current visible row range out of `totalCount`.

item

Export CSV

Full-query CSV export using the active filter snapshot.

Metric dictionary

Metrics

metric

Active Exclusions

Count of distinct players with active exclusion rows in the current query.

Aliases
player exclusions active exclusions
Backend Formula
COUNT(DISTINCT CASE WHEN e.is_active = true THEN e.user_id END)
Verification Status
verified_backend
Last Verified At
2026-05-05
metric

Self-Exclusions

Count of distinct players with exclusions classified as self-imposed restrictions.

Aliases
self exclusions, player self exclusion count
Backend Formula
COUNT(DISTINCT CASE WHEN e.exclusion_type = 'self-excluded' THEN e.user_id END)
Verification Status
verified_backend
Last Verified At
2026-05-05
metric

Permanent Exclusions

Count of distinct players with permanent exclusion rows in the current report query.

Aliases
permanent exclusions
Backend Formula
COUNT(DISTINCT CASE WHEN e.exclusion_type = 'permanent' THEN e.user_id END)
Verification Status
verified_backend
Last Verified At
2026-05-05
metric

Total Excluded Players

Number of distinct players represented by the current exclusion result set.

Aliases
total excluded players, unique excluded players
Backend Formula
COUNT(DISTINCT e.user_id)
Verification Status
verified_backend
Last Verified At
2026-05-05
metric

Total Exclusion Records

Total number of exclusion records in the current backend summary, including records not surfaced as cards.

Aliases
total exclusion records
Backend Formula
COUNT(*)
Verification Status
verified_backend
Last Verified At
2026-05-05
Comparison Notes
Returned in the backend summary object, but not rendered as a visible card on the current standalone page.
metric

Inactive Exclusions

Backend-only summary count of distinct players with inactive or expired exclusion rows in the current query.

Aliases
expired exclusions, inactive player exclusions
Backend Formula
COUNT(DISTINCT CASE WHEN e.is_active = false THEN e.user_id END)
Verification Status
verified_backend
Last Verified At
2026-05-05
Comparison Notes
Returned in the backend summary object, but not rendered as a visible card on the current standalone page.
metric

Operator Exclusions

Backend-only summary count of distinct players with operator-excluded rows.

Aliases
operator excluded players
Backend Formula
COUNT(DISTINCT CASE WHEN e.exclusion_type = 'operator-excluded' THEN e.user_id END)
Verification Status
verified_backend
Last Verified At
2026-05-05
Comparison Notes
Returned in the backend summary object, but not rendered as a visible card on the current standalone page.
metric

Regulatory Exclusions

Backend-only summary count of distinct players with regulatory-excluded rows.

Aliases
regulatory excluded players
Backend Formula
COUNT(DISTINCT CASE WHEN e.exclusion_type = 'regulatory-excluded' THEN e.user_id END)
Verification Status
verified_backend
Last Verified At
2026-05-05
Comparison Notes
Returned in the backend summary object, but not rendered as a visible card on the current standalone page.
metric

Excluded By Self

Backend-only summary count of distinct players whose exclusion source type is self.

Aliases
self owned exclusions
Backend Formula
COUNT(DISTINCT CASE WHEN e.excluded_by_type = 'self' THEN e.user_id END)
Verification Status
verified_backend
Last Verified At
2026-05-05
Comparison Notes
Returned in the backend summary object, but not rendered as a visible card on the current standalone page.
metric

Excluded By Operator

Backend-only summary count of distinct players whose exclusion source type is operator.

Aliases
operator owned exclusions
Backend Formula
COUNT(DISTINCT CASE WHEN e.excluded_by_type = 'operator' THEN e.user_id END)
Verification Status
verified_backend
Last Verified At
2026-05-05
Comparison Notes
Returned in the backend summary object, but not rendered as a visible card on the current standalone page.
Operational notes

Notes

item

The exclusion aggregation SQL is inline in `GetPlayerExclusionsReportService`.

item

Summary cards use distinct-player counts; the table and pagination use exclusion rows.

item

Summary cards expose only part of the backend summary object; inactive, operator, regulatory, source-owner, and total-record counters remain backend-only for now.

item

The FE does not render the backend `excludedBy` filter even though the API accepts it.

item

The visible `All Exclusions` status option omits `showActive`, but the backend default makes omitted `showActive` active-only in the current traced flow.

item

Date filtering applies to `exclusion_start_date` using start-of-day and end-of-day expansion.

item

CSV export requests `limit=1000000`, `pageNo=1`, and therefore bypasses visible pagination.

Related references

Related pages

pageReporting

Canonical entrypoint for standalone reporting pages outside the main Dashboard widgets.

pageReporting / Affiliate Events Report

Audit log of the events and saved amounts the platform sent to the affiliate system, with per-currency successful totals and a CSV export.

pageReporting / Bonus Performance

Grouped bonus performance report for activations, amounts, deposits, withdrawals, GGR, and NGR by bonus item.

pageReporting / Card Approval Rates

Snapshot report of card deposit approval rates for NetworxPay, Paydex, and Carouseller, split by Trusted and NonTrusted players, with today versus the previous 30 days and today top decline reasons.

pageReporting / Change Notification Detail

Detail page for one audit entry, including actor metadata, description, and before/after comparison views.

pageReporting / Change Notifications

Audit list for recorded configuration, administrator, and system change entries with filters for actor, entity, and change type.