public async Task <PaginatedList <TicketDto> > Handle(GetMyTicketsQuery request, CancellationToken cancellationToken) { await ValidateRequest(request); return(await _context.Conversations.Include(x => x.ConversationUsers) .Where(x => x.OrganizationId == request.OrganizationId && x.ConversationUsers.Any(y => y.IsDisabled == false && y.ConversationId == x.Id && y.UserId == _currentUser.UserId)) .ProjectTo <TicketDto>(_mapper.ConfigurationProvider) .PaginatedListAsync(request.PageNumber, request.PageSize));; }
private async Task ValidateRequest(GetMyTicketsQuery request) { if (await _context.Organizations.AsNoTracking().AnyAsync(x => x.Id == request.OrganizationId) == false) { throw new NotFoundException(nameof(Organization), request.OrganizationId); } if (await _context.OrganizationUsers.AsNoTracking().AnyAsync(x => x.OrganizationId == request.OrganizationId && x.UserId == _currentUser.UserId) == false) { throw new ForbiddenAccessException(); } }