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