Preskoči na sadržaj

Admin Portal

The Admin Portal is the comprehensive management interface for HNS staff to manage all aspects of ticketing operations.

Tech Stack

  • Backend: Symfony (PHP)
  • Templates: Twig
  • Styling: Tailwind CSS
  • Interactivity: Alpine.js for dynamic components
  • Stadium Maps: SVG-based visualization

User Roles

Role Permissions
Super Admin Full system access, can approve cancellations
Match Manager Create/edit matches, configure sales phases
Stadium Operator Seat operations, stadium configuration
Quota Manager Create/manage quotas, CSV import
BLACKADMIN Blacklist management, violation monitoring
Support Agent Ticket lookup, transfers, refunds
Finance Reports, reconciliation
Read-Only View dashboards and reports only
Admin Portal
├── Dashboard
├── Events & Matches
│   ├── Match List
│   ├── Create Match (Wizard)
│   └── Match Detail
│       ├── Info Tab
│       ├── Stadium Tab
│       ├── Sales Phases Tab
│       └── Quotas Tab
├── Stadium Management
│   ├── Stadium Templates
│   ├── Seat Operations
│   └── Sector Transfer
├── Quota Management
│   ├── Quota List
│   ├── Create Quota
│   ├── CSV Import
│   └── Quota Detail
├── Blacklist (BLACKADMIN)
│   ├── Blacklist Entries
│   ├── CSV Import
│   └── Violation Attempts
├── Reports
│   ├── Sales Reports
│   ├── Real-Time Dashboard
│   ├── Financial Reports
│   └── Operational Reports
├── Support Tools
│   ├── Ticket Lookup
│   ├── Transfer Tickets
│   ├── Process Refunds
│   └── Emergency Print
└── Settings
    ├── Users & Permissions
    └── System Configuration

Screens

Dashboard

Purpose: Overview of upcoming matches, key metrics, and quick actions.

Key Components:

  • Stats Cards: Total upcoming matches, tickets sold today, active quotas, pending support tickets
  • Upcoming Matches Table: Next 5 matches with status, sales progress, quick actions
  • Sales Progress Chart: Today's sales volume over time
  • Quick Actions: Create match, import quotas, view reports

Workflow Reference: Real-Time Statistics

Layout:

┌─────────────────────────────────────────────────────────────────┐
│  HNS Admin Portal                           [User] [Logout]     │
├─────────────────────────────────────────────────────────────────┤
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐            │
│ │ Upcoming │ │  Sold    │ │  Active  │ │  Support │            │
│ │ Matches  │ │  Today   │ │  Quotas  │ │  Tickets │            │
│ │    5     │ │  1,234   │ │    42    │ │    8     │            │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘            │
│                                                                  │
│ ┌─────────────────────────────────┐ ┌─────────────────────────┐ │
│ │     Upcoming Matches            │ │     Quick Actions       │ │
│ │  ┌─────────────────────────┐    │ │                         │ │
│ │  │ CRO vs POL | Mar 15     │    │ │  [Create Match]         │ │
│ │  │ Sales: 85% | Published  │    │ │  [Import Quotas]        │ │
│ │  └─────────────────────────┘    │ │  [View Reports]         │ │
│ │  ...                            │ │                         │ │
│ └─────────────────────────────────┘ └─────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘


Match List

Purpose: View and manage all matches with filtering and bulk actions.

Key Components:

  • Filter Bar: Status dropdown, date range picker, search input
  • Data Table: Sortable columns, status badges, action buttons
  • Bulk Actions: Export selection, bulk status change

Table Columns:

Column Description
Match Home vs Away teams
Date Kick-off date/time
Venue Stadium name
Status Draft, Published, Cancelled, Closed
Sales Progress bar (sold/total)
Actions View, Edit, Cancel

Workflow Reference: Match Management


Create Match Wizard

Purpose: Multi-step wizard for creating new match events.

Steps:

  1. Basic Information
  2. Home Team (defaults to Croatia)
  3. Away Team (dropdown)
  4. Competition Type (UEFA Nations League, Friendly, Qualifier, etc.)
  5. Date and Time (kick-off)
  6. Venue/Stadium selection
  7. Away match toggle (for non-numbered seats)

  8. Stadium Configuration (skipped for away matches)

  9. Select stadium template
  10. Configure active sectors
  11. Set pricing per sector/category
  12. Define capacity

  13. Sales Phases

  14. Phase 1: Loyalty Early Access
    • Start/End Date
    • Eligibility Rules (min points)
    • Ticket Limit
  15. Phase 2: General Public

    • Start/End Date
    • Ticket Limit per customer
  16. Quotas (Initial)

  17. Pre-defined quota types (UEFA, Sponsors, Family)
  18. Sector allocations
  19. Percentage of capacity

  20. Content & Media

  21. Match banner upload
  22. Important info text
  23. Visibility status (Draft/Scheduled/Visible)

  24. Review & Publish

  25. Summary of all settings
  26. Validation warnings
  27. Publish or Save as Draft

Key Components:

  • Step indicator (progress bar)
  • Form sections with validation
  • Date/time pickers
  • Stadium mini-map preview
  • Sector selection interface

Workflow Reference: Match Management


Match Detail

Purpose: View and manage all aspects of a specific match.

Tab Structure:

Info Tab

  • Match details (teams, date, venue)
  • Edit basic information
  • Status management (Publish, Cancel, Close)
  • Notification options (with/without ticket holder notification)

Stadium Tab

  • Interactive stadium map
  • Sector status overview
  • Link to seat operations
  • Capacity breakdown by status

Sales Phases Tab

  • Phase configuration
  • Edit phase dates
  • View phase performance

Quotas Tab

  • List of quotas for this match
  • Create new quota
  • Quick status overview (allocated, claimed, sold)

Action Buttons:

  • Export Access Control Data (pre-match)
  • Close Match (post-match, with attendance import)
  • Cancel Match (requires Super Admin)

Workflow References: - Match Management - Stadium Configuration


Stadium Management - Seat Operations

Purpose: Individual and bulk seat status management.

Key Components:

  • Stadium Visualization: Full stadium view with zoom capability
  • Selection Tools:
  • Click individual seats
  • Multi-select mode (Ctrl+click)
  • Select by section
  • Select by row range
  • Select by seat range
  • Filter-based selection
  • Status Change Panel:
  • Current status display
  • New status dropdown (valid transitions only)
  • Reason field (required)
  • Apply button with confirmation

Selection Summary Panel:

Selected: 856 seats
├── Available: 856
├── Sold: 0
├── Reserved: 0
└── Other: 0

[Change Status ▼]

Seat Status Colors:

Status Color Description
Available Green Ready for sale
Sold Blue Purchased
Reserved Yellow In cart/pending
Technical Purple Press/media
Official Gold VIP allocation
Blocked Red Unavailable
Maintenance Gray Under repair
Quarantined Orange Investigation
Allocated Cyan Quota assigned
Inactive Light Gray Not in use

Workflow Reference: Seat Operations


Seat Search & Lookup

Purpose: Find seats by various criteria and view/modify details.

Search Methods:

  1. By Seat Number: Stadium, Section, Row, Seat
  2. By Reservation/Quota: Document type and number
  3. By Email: Customer email address
  4. Via Stadium Map: Click on seat in visualization
  5. Advanced Search: Multi-criteria filters

Seat Detail Modal:

┌─────────────────────────────────────────────┐
│ Seat: Maksimir - Section A - Row 5 - Seat 12│
├─────────────────────────────────────────────┤
│ Status:        Sold (blue badge)            │
│ Match:         Croatia vs Poland - 15.03.26 │
│ Linked Doc:    Quota #300032x [View →]      │
│ Customer:      J*** K*** (OIB: *******34)   │
│ Email:         j***@email.com               │
│ Order:         #4100234                      │
│ Price:         50.00 EUR                     │
│ Payment:       Paid                          │
│ Last Change:   15.11.2025 14:32 by admin    │
├─────────────────────────────────────────────┤
│ [Change Status] [Modify Assignment] [History]│
└─────────────────────────────────────────────┘

Workflow Reference: Seat Operations - Part 5


Quota Management - Quota List

Purpose: View and manage all quotas across matches.

Key Components:

  • Filter Bar: Match dropdown, status filter, search by email
  • Data Table: Sortable, paginated

Table Columns:

Column Description
Quota ID Unique identifier
Match Match name and date
Recipient Email and internal note
Sectors Allocated sectors
Total Total seats allocated
Status Breakdown Allocated/Reserved/Sold/Delegated
Deadline Expiration date (visual reminder)
Actions View, Edit, Cancel

Status Badges:

  • Active: Green - quota is active
  • Past Deadline: Yellow - visual reminder, still claimable
  • Cancelled: Red - admin cancelled

Workflow Reference: Quota Creation


Quota Management - Create Quota

Purpose: Create individual quota with seat allocation.

Form Fields:

Field Type Description
Recipient Email Email input Unique identifier
Internal Note Text Admin-only label
Match Dropdown Target match
Sectors Multi-select Sector codes (D1, C1, B2)
Quantity Number Total tickets
Discount Code Dropdown 0 (full), GR (free), or %
Allocation Algorithm Radio NM (Best Seats) or REDOM (Distributed)
Expiration Date DateTime Visual reminder
Can Create Subquotas Checkbox Allow delegation
Delayed Payment Checkbox Deferred payment option
Transfer Permission Radio YES (unlimited) / NO (standard rules)
Auto-Send Email Checkbox Send notification on create

Validation:

  • Email format
  • Sector codes exist for match
  • Sufficient inventory available
  • Expiration is future date

Workflow Reference: Quota Creation


Quota Management - CSV Import

Purpose: Bulk import quotas from CSV file.

Steps:

  1. Select Match(es): Single or multiple matches
  2. Upload CSV: File with predefined format
  3. Validation Preview: Show valid/invalid rows with errors
  4. Confirm Import: Review and execute

CSV Format:

email,internal_note,sectors,quantity,discount_code,algorithm,expiration,can_subquota,delayed_payment,transfer
sponsor@company.hr,T-Com Sponsor,D1;C1,10,GR,NM,2026-03-10 23:59,TRUE,FALSE,NO

Validation Display:

Total rows: 287
├── Valid: 283 ✓
└── Invalid: 4 ✗
    - Row 45: Invalid email format
    - Row 78: Sector X99 does not exist
    - Row 156: Insufficient inventory (requested 50, available 23)
    - Row 231: Duplicate email in file

Workflow Reference: Quota Creation - A1


Quota Detail

Purpose: View full quota details with real-time status.

Sections:

  • Summary: Recipient, match, sectors, deadline
  • Status Breakdown: Visual chart of allocated/reserved/sold/delegated
  • Seat List: Table of all seats with individual status
  • Subquotas: List of delegated subquotas (if any)
  • Activity Log: Timeline of quota events

Actions:

  • Edit Quota
  • Cancel Quota (options: All Unused / Unfulfilled Only)
  • Resend Email
  • Masquerade as Owner (admin login as quota holder)

Workflow Reference: Quota Creation


Blacklist Management - Entry List

Purpose: View and manage blacklist entries.

Key Components:

  • Search Bar: By OIB or name
  • Data Table: Paginated list of entries
  • Quick Actions: Add entry, Import CSV, Clear all

Table Columns:

Column Description
OIB Partially masked (*34)
Name Full name
DOB Date of birth
Effective Date Date added
Actions View, Remove

Workflow Reference: Blacklist Management


Blacklist Management - CSV Import

Purpose: Bulk import blacklist from security team.

Process:

  1. Pre-Match Refresh: Clear existing entries (optional)
  2. Upload CSV: Standard format from police/security
  3. Validation: OIB format, duplicates
  4. Preview: Valid/invalid counts
  5. Confirm Import: Execute with audit note

CSV Format:

OIB,FirstName,LastName,DateOfBirth
12345678901,Ivan,Horvat,15.03.1985

Post-Import Warning: If imported OIB has existing tickets, system prompts for ticket cancellation.

Workflow Reference: Blacklist Management


Blacklist Management - Violation Attempts

Purpose: Monitor blocked purchase attempts.

Report Display:

Column Croatian Label Description
Date DATUM POKUSAJA Timestamp of attempt
First Name IME Attempted name
Last Name PREZIME Attempted surname
DOB DATUM_ROD Date of birth
OIB OIB Partially masked
Event - Match attempted
IP - IP address
User ID - HNS app account
Attempts - Repeat count

Filters: Date range, individual, event

Workflow Reference: Blacklist Management - Part 3


Reports - Sales Dashboard

Purpose: Real-time sales monitoring.

Key Components:

  • Live Counter: Tickets sold today (auto-refresh)
  • Sales by Channel: Online, Box Office, Quota
  • Sales by Sector: Heat map of stadium
  • Hourly Chart: Sales volume over time
  • Top Matches: Best-selling upcoming events

Workflow Reference: Real-Time Statistics


Reports - Financial Reports

Purpose: Financial reconciliation and export.

Report Types:

  • Daily sales summary
  • Payment method breakdown
  • Refund summary
  • Service fee report
  • Deferred payment status

Export: CSV, Excel, PDF

Workflow Reference: Financial Reporting


Support Tools - Ticket Lookup

Purpose: Find tickets for customer support inquiries.

Search Options:

  • Order number
  • Email address
  • OIB
  • Ticket barcode

Result Actions:

  • View ticket details
  • Transfer to another person
  • Process refund
  • Emergency print

Workflow References: - Customer Support Transfer - Customer Support Refund


Support Tools - Emergency Print

Purpose: Print physical tickets for edge cases.

Use Cases:

  • Customer phone malfunction
  • QR code display issues
  • VIP/official requirements

Process:

  1. Look up ticket by barcode/order
  2. Verify customer identity
  3. Select thermal printer
  4. Print ticket with unique barcode
  5. Invalidate mobile ticket (optional)

Workflow Reference: Emergency Ticket Printing


Cross-Portal Integration

Masquerade Function

Admin can "login as quota owner" to assist users:

  • Available from quota detail page
  • Full view of what quota holder sees
  • All actions logged with admin attribution
  • 30-minute session limit
  • Cannot perform payment actions

Audit Trail

All admin actions logged with:

  • Admin user ID
  • Timestamp
  • Action type
  • Before/after values
  • Reason (when required)

Last Updated: January 2026