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); }
public Task HandleAsync(TeamMemberRemovedEvent @event, CancellationToken cancellationToken) { _cache.Remove(_cacheKey.FindTeam ( @event.TeamId )); 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.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 )); } }