public async Task <IActionResult> GetList(int dialogId, int lastKey = -1, int count = 1000) { var currentUserId = CurrentUserId(); if (count < 0) { count = 1000; } var isAccess = (await _dialogsRepository.GetList() .Include(p => p.DialogsUsers) .ThenInclude(p => p.User) .FirstOrDefaultAsync(p => p.Id == dialogId)) ?.DialogsUsers?.Any(p => p.UserId == currentUserId) ?? false; if (!isAccess) { return(StatusCode(404)); } var query = _messagesRepository.GetList() .Where(p => p.DialogId == dialogId); if (lastKey > 0) { query = query.Where(p => p.Id < lastKey); } var result = query.Take(count).ToList(); return(Ok(result.Select(p => new MessageView(p)).ToList())); }