public async Task AddEntryAsync(LapTimeEntry entry) { await EnsureActualAsync(); try { if (!_storage.IsBetter(entry)) { Logging.Debug($"Better entry available ({Id})"); return; } Logging.Debug($"New entry ({Id}): {entry.LapTime}"); SetDirty(); _storage.Set(entry); if (_readerFunc != null) { using (var reader = _readerFunc()) { reader.Export(new[] { entry }); _storage.SyncLastModified(reader); } } OnPropertyChanged(nameof(LastModified)); OnPropertyChanged(nameof(EntriesCount)); } catch (Exception e) { Logging.Error(e); } }
public void Set([NotNull] LapTimeEntry entry) { if (entry == null) { throw new ArgumentNullException(nameof(entry)); } Set(GetKey(entry.CarId, entry.TrackAcId), Pack(entry)); }
private void AddEntry(LapTimeEntry entry) { InitializeCm(); if (_cmStorage.IsBetter(entry)) { _cmStorage.Set(entry); UpdateAsync().Forget(); } }
public bool IsBetter([NotNull] LapTimeEntry entry) { if (entry == null) { throw new ArgumentNullException(nameof(entry)); } var existing = GetLapTime(entry.CarId, entry.TrackAcId); return(existing == null || existing.LapTime > entry.LapTime); }
public async Task RemoveEntryAsync(LapTimeEntry entry) { if (EnabledSources.Any(x => x.ReadOnly)) { NonfatalError.Notify("Can’t remove entry from read-only sources", $"Please, disable {EnabledSources.Where(x => x.ReadOnly).Select(x => x.DisplayName).JoinToReadableString()}.", solutions: new[] { new NonfatalErrorSolution("Disable read-only sources", null, token => { foreach (var source in EnabledSources) { source.IsEnabled = false; } RaiseEntriesChanged(); return(Task.Delay(0)); }), }); return; } var car = CarsManager.Instance.GetById(entry.CarId)?.DisplayName ?? entry.CarId; var track = TracksManager.Instance.GetLayoutByKunosId(entry.TrackId)?.LayoutName ?? entry.TrackId; if (ModernDialog.ShowMessage($"Are you sure you want to remove {car} on {track} lap time?", "Remove Lap Time", MessageBoxButton.YesNo) != MessageBoxResult.Yes) { return; } try { using (WaitingDialog.Create("Deleting…")) { var changed = false; foreach (var source in EnabledSources) { changed |= await source.RemoveAsync(entry.CarId, entry.TrackId); } if (changed) { Logging.Debug("Removed"); RaiseEntriesChanged(); } } } catch (Exception e) { NonfatalError.Notify("Can’t remove entry", e); } }
public LapTimeWrapped(LapTimeEntry entry) { Entry = entry; }
private string Pack(LapTimeEntry entry) { return(entry.EntryDate.ToUnixTimestamp().ToInvariantString() + ";" + ((long)entry.LapTime.TotalMilliseconds).ToInvariantString()); }