Skip to main content

Theming, Resources, Localization & Modernization

The Operations Dashboard gets a light/dark theme switch, a reusable StatusChip UserControl, captions in Strings.resx + Strings.de.resx, two cultures (en-US, de-DE) switched at runtime, and culture-aware dates and currency (6/14/2026 · $1,850.0014.06.2026 · 1.850,00 €).

Run it

cd "LearnWisej-Samples/Production Architecture Deep Dive\Module 10\TicketOps"
dotnet run -f net10.0 --urls http://localhost:5110

Then open http://localhost:5110 (or open TicketOps.slnx in Visual Studio and press F5).

The screens

  • Operations Dashboard: Theme and Culture pickers, four KPI cards (one StatusChip each), the work-order grid (Due and Cost formatted for the culture), a detail strip for the selected order, Open detail… and Next status, and a status line. Picking Italiano shows the "not shipped" message; Next status on a finished order shows the domain rule.
  • Work order detail (dialog): the same chip, captions and formatting, and Next status / Close.

Where things live

TicketOps/
├─ Views/ OperationsDashboard, WorkOrderDetail
├─ Controls/ StatusChip, StatusBanner
├─ Themes/TicketOps.mixin.theme the "chip" appearance and chip-* colours
├─ Resources/ Strings.resx, Strings.de.resx, Strings.cs
├─ Services/ SessionContext, LocalizationService, WorkOrderService
├─ Domain/ WorkOrder (CanAdvance), DashboardSnapshot, OperationResult
├─ Data/ IWorkOrderRepository + in-memory implementation
├─ Infrastructure/ ThemeSwitcher, ILog/ActivityLog, AppComposition
└─ docs/ the deliverables