コード例 #1
0
        /// <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);
        }
コード例 #2
0
        /// <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));
        }
コード例 #3
0
        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);
            }
        }