Operator guideENtransactionscasinodetail

Transactions / Casino Transaction Detail

Read-only detail page for a single casino transaction identified by `casinoTransactionId`.

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 surface shows

This route shows one casino transaction selected by the legacy transactionId URL segment.

At runtime the page does not treat that segment as the generic transaction id. It passes the value into useTransactions({ casinoTransactionId }), so the route behaves as a detail view keyed by casinoTransactionId.

It is a read-only inspection page designed for cases where the operator needs a single transaction in a fuller layout than the list row can provide.

How to read it

The page fetches the transaction by casinoTransactionId through the same admin list endpoint used by the casino-transactions grid and then renders the first returned row as a key-value summary.

The detail view is strongest for:

  • checking the exact transaction id
  • checking the internal casinoTransactionId versus the stored transactionId
  • confirming player email
  • confirming the game and provider
  • confirming the timestamps rendered by the shared key-value component
  • reading the non-null payload keys returned for that single row

Known caveats

  • The page fetches through the same casino transaction hook used by the list, but with casinoTransactionId pinned.
  • This is a list-query shim, not a dedicated detail endpoint. The route still goes through GET /api/admin/get-casino-transactions.
  • The route has no dedicated action bar, modal stack, or edit flow. It is a read-only detail page that relies on standard module navigation to leave the screen.
  • TransactionGamingDetails returns null while the query is loading and also returns null when the filtered query comes back empty. There is no dedicated empty-state card on this route.
  • The visible field inventory depends on the transaction object returned by the hook. KeyValueDisplay removes null and undefined keys before rendering.
  • The visible sections are generated by frontend heuristics, not by a backend-authored display schema. Non-null keys are grouped into Identifiers, Financial Details, Dates & Timestamps, Status Information, and Additional Details.
  • The dedicated detail page is not the same renderer as the inline expansion panel in the casino-transactions list. The list uses a bespoke card layout with UTC wording and explicit status mapping, while this route shows raw payload keys through KeyValueDisplay.
  • KeyValueDisplay formats createdAt and updatedAt in the browser or workstation timezone because no explicit timezone is passed into getFormattedDateTime().
  • The Status row on this route uses the generic KeyValueDisplay status formatter. Numeric payload values such as 0/1/2/3 can therefore appear more raw than the humanized Pending / Complete / Failed / Rollback labels shown in the list row.
Calculation notes

Calculations

calculation

Route param to casino transaction id

Formula Text
The URL segment is named `transactionId`, but `TransactionGamingDetails` passes it into `useTransactions({ casinoTransactionId })`.
Operator Note
Treat the dedicated detail route as a `casinoTransactionId` lookup, not as a generic transaction-id detail endpoint.
calculation

Detail fetch shape

Formula Text
The detail route reuses the casino-transactions query filtered by `casinoTransactionId` instead of owning a dedicated detail payload contract.
Operator Note
Treat field presence as payload-dependent rather than guaranteed across all casino transaction types.
calculation

Loading and empty render behavior

Formula Text
`TransactionGamingDetails` returns `null` while the list hook is loading and also returns `null` when the filtered query returns no rows.
Operator Note
The route does not show a dedicated spinner or empty-state card for a missing transaction.
calculation

Label and group generation

Formula Text
Frontend `formatKeyName()` humanizes raw keys and `KeyValueDisplay` groups non-null fields into identifiers, financial, dates, status, or other buckets.
Operator Note
A row can disappear from the page simply because its source value is `null` or `undefined` in the selected transaction payload.
calculation

Dedicated detail renderer differs from inline list detail

Formula Text
The route uses `KeyValueDisplay`, while the casino-transactions list row uses a bespoke expansion card with explicit status labels and UTC timestamp wording.
Operator Note
Operators can see the same transaction described slightly differently on the list row versus the dedicated detail page.
Metric dictionary

Metrics

metric

Amount

Monetary amount shown for the selected casino transaction.

metric

Before Balance

Wallet balance before the selected transaction when present.

metric

After Balance

Wallet balance after the selected transaction when present.

Operational notes

Notes

item

The route segment is named `transactionId`, but the page passes that value into `useTransactions({ casinoTransactionId })`.

item

The detail page reuses the list hook instead of calling a dedicated detail endpoint.

item

`gaming.sql` exposes the payload aliases that the detail page turns into visible rows, including `casinoTransactionId`, `transactionId`, balance fields, provider/game names, and marketing-related flags.

item

The page renders only the first row returned by the filtered list query.

item

`TransactionGamingDetails` returns `null` during loading and when the filtered query returns no rows.

item

`KeyValueDisplay` formats `createdAt` and `updatedAt` with the browser or workstation timezone because no explicit timezone is passed to `getFormattedDateTime()`.

item

The dedicated route is not the same renderer as the inline casino-transactions row expansion; the row expansion lives in `TransactionGamingRow.tsx` and applies its own status/date presentation.

Related references

Related pages

pageTransactions / Banking

Filterable banking transaction dashboard with weekly summary cards, backend stats charts, CSV export, and a detailed ledger-style table.

pageTransactions / Casino

Game transaction dashboard with real-time list mode, monthly analytics mode, filterable table, and a dedicated transaction detail route.

pageTransactions / Failed Deposit

Triage grid for failed deposit rows, their provider reasons, and the error-group classification used for later analysis.

pageTransactions / Failed Deposit Error Groups

Configuration surface for creating, editing, importing, exporting, and assigning failed-deposit error groups and their reasons.

pageTransactions / KYC

Action-heavy KYC document queue exposed under the transactions area for document review, verification, re-request, download, and third-party checks.

pageTransactions / Shared Detail Modals

Reusable read-only transaction payload modals for banking-style rows on banking, withdrawals, and failed-deposit surfaces.