コード例 #1
0
        public Task HandleAsync(TeamInvitationDeletedEvent @event, CancellationToken cancellationToken)
        {
            _cache.Remove(_cacheKey.FindTeamInvitation
                          (
                              @event.TeamId,
                              @event.InvitationId
                          ));

            return(Task.CompletedTask);
        }
コード例 #2
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.FindTeamInvitation
                          (
                              teamId,
                              @event.InvitationId
                          ));
        }
コード例 #3
0
        public async Task HandleAsync(TeamRoleUpdatedEvent @event, CancellationToken cancellationToken)
        {
            var invitationIds = await _invitationsCollection.Find(i => i.Team.Id == @event.TeamId)
                                .Project(i => i.Id)
                                .ToListAsync(cancellationToken);

            foreach (var invitationId in invitationIds)
            {
                _cache.Remove(_cacheKey.FindTeamInvitation
                              (
                                  @event.TeamId,
                                  invitationId
                              ));
            }
        }
コード例 #4
0
        public async Task <FindTeamInvitationProjection> HandleAsync(FindTeamInvitationQuery query,
                                                                     CancellationToken cancellationToken)
        {
            if (_authenticatedUserAccessor.AuthenticatedUser.Teams.All(t => t.Id != query.TeamId))
            {
                throw new UserNotAddedToTeamException
                      (
                          _authenticatedUserAccessor.AuthenticatedUser.Id,
                          query.TeamId
                      );
            }

            var invitation = await _cache.GetOrSetAsync
                             (
                _cacheKey.FindTeamInvitation(query.TeamId, query.InvitationId),
                async() => await _invitationsCollection
                .Find(i => i.Team.Id == query.TeamId && i.Id == query.InvitationId)
                .Project(i => new FindTeamInvitationProjection
                         (
                             i.Id.ToString(),
                             new Role
                             (
                                 i.Role.Id.ToString(),
                                 i.Role.Name
                             ),
                             i.Status.ToInvitationStatus()
                         ))
                .SingleOrDefaultAsync(cancellationToken)
                             );

            if (invitation == null)
            {
                throw new InvitationNotFoundException
                      (
                          query.InvitationId,
                          query.TeamId
                      );
            }

            return(invitation);
        }