using MeterVault.Core.Domain; using MeterVault.Infrastructure.Ingestion; namespace MeterVault.App.Localization; /// How meter-event outcomes are worded — one place, shared by the event dialog and the meter page. public static class MeterEventText { public static string Problem(MeterEventProblem problem) => problem switch { MeterEventProblem.None => string.Empty, MeterEventProblem.UnknownMeter => Strings.MeterDetail_MeterGone, MeterEventProblem.NotRecordableForMode => Strings.MeterEvent_ProblemNotForMode, MeterEventProblem.AmountRequired => Strings.MeterEvent_ProblemAmountRequired, MeterEventProblem.AmountOutOfRange => Strings.MeterEvent_ProblemAmountOutOfRange, MeterEventProblem.NoteRequired => Strings.MeterEvent_ProblemNoteRequired, MeterEventProblem.LevelNeedsCalibration => Strings.MeterEvent_ProblemNeedsCalibration, MeterEventProblem.LevelAtSameTime => Strings.MeterEvent_ProblemLevelAtSameTime, MeterEventProblem.LaterBoundaryDependsOnIt => Strings.MeterEvent_ProblemLaterBoundary, MeterEventProblem.OldRegisterBelowPreviousReading => Strings.MeterEvent_ProblemBelowPrevious, MeterEventProblem.ReadingAtSameTime => Strings.MeterEvent_ProblemReadingAtSameTime, MeterEventProblem.BoundaryAlreadyRecorded => Strings.MeterEvent_ProblemAlreadyRecorded, MeterEventProblem.StartReadingRejected => Strings.MeterEvent_ProblemStartRejected, MeterEventProblem.NotFound => Strings.MeterEvent_ProblemNotFound, MeterEventProblem.Imported => Strings.MeterEvent_ProblemImported, MeterEventProblem.NotManual => Strings.MeterEvent_ProblemNotManual, _ => problem.ToString(), }; public static string Saved(MeterEventType type) => type switch { MeterEventType.MeterSwap => Strings.MeterEvent_SavedSwap, MeterEventType.CounterReset => Strings.MeterEvent_SavedReset, MeterEventType.TankLevel => Strings.MeterEvent_SavedTankLevel, MeterEventType.Delivery => Strings.MeterEvent_SavedDelivery, _ => Strings.MeterEvent_SavedNote, }; public static string Intro(MeterEventType type) => type switch { MeterEventType.MeterSwap => Strings.MeterEvent_IntroSwap, MeterEventType.CounterReset => Strings.MeterEvent_IntroReset, MeterEventType.TankLevel => Strings.MeterEvent_IntroTankLevel, MeterEventType.Delivery => Strings.MeterEvent_IntroDelivery, _ => Strings.MeterEvent_IntroNote, }; /// The Material icon for an event type, so menus and the events list read at a glance. public static string Icon(MeterEventType type) => type switch { MeterEventType.MeterSwap => MudBlazor.Icons.Material.Filled.SwapHoriz, MeterEventType.CounterReset => MudBlazor.Icons.Material.Filled.RestartAlt, MeterEventType.TankLevel => MudBlazor.Icons.Material.Filled.Straighten, MeterEventType.Delivery => MudBlazor.Icons.Material.Filled.LocalShipping, MeterEventType.Correction => MudBlazor.Icons.Material.Filled.Build, _ => MudBlazor.Icons.Material.Filled.StickyNote2, }; }