/// <summary> /// Adds session in local directory. /// </summary> public async Task <RepositoryResponse> AddSessionAsync(Session session) { if (session.Event?.Id is null) { return(new RepositoryResponse(RepositoryResponseStatus.ClientError, "Session event Id cannot be null.")); } session.Id ??= Guid.NewGuid().ToString(); var targetFile = GetSessionFile(session); await _fileSystem.CreateNonexistentFileAsync(targetFile, Json.EmptyArray).ConfigureAwait(false); _applicationCache.SessionsByEventId[session.Event.Id].Add(session.Id, session.Name); await _applicationCacheSaver.SaveCacheAsync(_applicationCache).ConfigureAwait(false); return(RepositoryResponse.Ok); }
/// <summary> /// Gets events from local directories. /// </summary> public async Task <RepositoryResponse <IReadOnlyList <Event> > > GetEventsAsync() { if (_applicationCache.EventsById.Count > 0) { var eventsFromCache = _applicationCache.EventsById.Select(x => new Event(x.Key, x.Value)); return(new RepositoryResponse <IReadOnlyList <Event> >(eventsFromCache.ToList())); } var predefinedEventsTasks = Constants.Events.Predefined.Select(x => { var @event = new Event(x); return(AddEventAsync(@event, saveCache: false)); }); var predefinedEvents = await Task.WhenAll(predefinedEventsTasks).ConfigureAwait(false); await _applicationCacheSaver.SaveCacheAsync(_applicationCache).ConfigureAwait(false); return(new RepositoryResponse <IReadOnlyList <Event> >(predefinedEvents)); }
private async Task ChangeSessionAsync() { var sessionChangeViewModel = new SessionChangeViewModel(_event, _sessionRepository); var contructed = await sessionChangeViewModel.ConstructAsync().ConfigureAwait(true); if (contructed is false) { await CloseWindowDialogHandleAsync("Nie można załadować sesji"); return; } sessionChangeViewModel.AcceptRenameSessionCommand.Subscribe(UpdateSessionIfNameChanged); sessionChangeViewModel.Sessions.CollectionChanged += (_, o) => OnSessionDelete(o, sessionChangeViewModel); var result = await ShowSessionChangeDialog.Handle(sessionChangeViewModel); if (result is not null && result.Session.Id != CurrentSession.Id) { CurrentSession = result.Session; _applicationCache.LastChoosenSession = CurrentSession.Id !; await _applicationCacheSaver.SaveCacheAsync(_applicationCache).ConfigureAwait(true); } }