Ejemplo n.º 1
0
        public async Task <FindTeamProjection> HandleAsync(FindTeamQuery query, CancellationToken cancellationToken)
        {
            if (_authenticatedUserAccessor.AuthenticatedUser.Teams.All(t => t.Id != query.TeamId))
            {
                throw new UserNotAddedToTeamException
                      (
                          _authenticatedUserAccessor.AuthenticatedUser.Id,
                          query.TeamId
                      );
            }

            var team = await _cache.GetOrSetAsync
                       (
                _cacheKey.FindTeam(query.TeamId),
                async() => await _teamsCollection.Find(t => t.Id == query.TeamId)
                .Project(t => new FindTeamProjection
                         (
                             t.Id.ToString(),
                             t.Name
                         ))
                .SingleOrDefaultAsync(cancellationToken)
                       );

            if (team == null)
            {
                throw new TeamNotFoundException
                      (
                          query.TeamId
                      );
            }

            return(team);
        }
Ejemplo n.º 2
0
        public Task HandleAsync(TeamMemberRemovedEvent @event, CancellationToken cancellationToken)
        {
            _cache.Remove(_cacheKey.FindTeam
                          (
                              @event.TeamId
                          ));

            return(Task.CompletedTask);
        }
Ejemplo n.º 3
0
        public async Task HandleAsync(TeamInvitationAcceptedEvent @event,
                                      CancellationToken cancellationToken)
        {
            var teamId = await _invitationsCollection.Find(i => i.Id == @event.InvitationId)
                         .Project(i => i.Team.Id)
                         .SingleAsync(cancellationToken);

            _cache.Remove(_cacheKey.FindTeam
                          (
                              teamId
                          ));
        }
        public async Task HandleAsync(TeamRoleUpdatedEvent @event, CancellationToken cancellationToken)
        {
            var teamIds = await _teamsCollection.Find(t => t.Roles.Any(r => r.Id == @event.RoleId))
                          .Project(t => t.Id)
                          .ToListAsync(cancellationToken);

            foreach (var teamId in teamIds)
            {
                _cache.Remove(_cacheKey.FindTeam
                              (
                                  teamId
                              ));
            }
        }