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); }
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 )); }
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 )); } }
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); }