using System; using System.Reactive; using System.Reactive.Linq; using EinmaleinsTrainer.Models; using ReactiveUI; namespace EinmaleinsTrainer.ViewModels; public class ResultViewModel : ViewModelBase { public string Text { get; private set;} = ""; public string TimeRequiredText { get; private set;} = ""; public bool ShowTimeRequired => !string.IsNullOrEmpty(TimeRequiredText); private ResultModel _model = new(); public void Init(ResultModel result) { double percent = result.Score * 1.0 / result.Total; if (percent > 0.9) { Text = $"๐ŸŽ‰ {result.Score} von {result.Total} richtig!"; } else if (percent > 0.5) { Text = $"๐Ÿ‘ {result.Score} von {result.Total} richtig."; } else if (percent > 0.25) { Text = $"๐Ÿคจ {result.Score} von {result.Total} richtig."; } else if (percent > 0.0) { Text = $"๐Ÿ˜‘ {result.Score} von {result.Total} richtig."; } else { Text = $"๐Ÿ˜ญ {result.Score} von {result.Total} richtig."; } if (result.TimeRequired != null) { int SecondsRequired = (int)Math.Round(result.TimeRequired.Value.TotalSeconds, 0, MidpointRounding.AwayFromZero); TimeRequiredText = $"In {SecondsRequired} s gelรถst."; } else { TimeRequiredText = ""; } _model = result; } public ReactiveCommand RestartCommand { get; } public ResultViewModel() { RestartCommand = ReactiveCommand.Create( execute: () => { return _model; }, canExecute: Observable.Return(true).ObserveOn(RxApp.MainThreadScheduler), outputScheduler: RxApp.MainThreadScheduler); } }