Пример #1
0
        public Task HandleAsync(TeamCreatedEvent @event, CancellationToken cancellationToken)
        {
            _cache.Remove(_cacheKey.FindTeamMember
                          (
                              @event.TeamId,
                              _authenticatedUserAccessor.AuthenticatedUser.Id
                          ));

            return(Task.CompletedTask);
        }
        public Task HandleAsync(TeamMemberRemovedEvent @event, CancellationToken cancellationToken)
        {
            _cache.Remove(_cacheKey.FindTeamMember
                          (
                              @event.TeamId,
                              @event.MemberId
                          ));

            return(Task.CompletedTask);
        }
        public Task HandleAsync(AuthenticatedUserUpdatedEvent @event, CancellationToken cancellationToken)
        {
            foreach (var teamId in _authenticatedUserAccessor.AuthenticatedUser.Teams.Select(t => t.Id))
            {
                _cache.Remove(_cacheKey.FindTeamMember
                              (
                                  teamId,
                                  _authenticatedUserAccessor.AuthenticatedUser.Id
                              ));
            }

            return(Task.CompletedTask);
        }
Пример #4
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.FindTeamMember
                          (
                              teamId,
                              _authenticatedUserAccessor.AuthenticatedUser.Id
                          ));
        }
Пример #5
0
        public async Task HandleAsync(TeamUpdatedEvent @event, CancellationToken cancellationToken)
        {
            var memberIds = await _usersCollection.Find(m => m.Teams.Any(t => t.Id == @event.TeamId))
                            .Project(m => m.Id)
                            .ToListAsync(cancellationToken);

            foreach (var memberId in memberIds)
            {
                _cache.Remove(_cacheKey.FindTeamMember
                              (
                                  @event.TeamId,
                                  memberId
                              ));
            }
        }
Пример #6
0
        public async Task <FindTeamMemberProjection> HandleAsync(FindTeamMemberQuery query,
                                                                 CancellationToken cancellationToken)
        {
            if (_authenticatedUserAccessor.AuthenticatedUser.Teams.All(t => t.Id != query.TeamId))
            {
                throw new UserNotAddedToTeamException
                      (
                          _authenticatedUserAccessor.AuthenticatedUser.Id,
                          query.TeamId
                      );
            }

            var member = await _cache.GetOrSetAsync
                         (
                _cacheKey.FindTeamMember(query.TeamId, query.MemberId),
                async() => await _usersCollection
                .Find(m => m.Teams.Any(t => t.Id == query.TeamId) && m.Id == query.MemberId)
                .Project(m => new FindTeamMemberProjection
                         (
                             m.Id.ToString(),
                             m.Name,
                             m.EmailAddress,
                             new Role
                             (
                                 m.Teams.Single(t => t.Id == query.TeamId).Role.Id.ToString(),
                                 m.Teams.Single(t => t.Id == query.TeamId).Role.Name,
                                 m.Teams.Single(t => t.Id == query.TeamId).Role.Permissions
                                 .Select(p => p.ToQueryPermission()).Where(p => p != null).ToList()
                             )
                         ))
                .SingleOrDefaultAsync(cancellationToken)
                         );

            if (member == null)
            {
                throw new MemberNotFoundException
                      (
                          query.MemberId,
                          query.TeamId
                      );
            }

            return(member);
        }