public (int, List <FriendDTO>) GetFriends(FriendsPageFilter filter) { var user = usersDbList.Find(u => u.Id == filter.UserId).FirstOrDefault(); var friendsIds = user.FriendsIds; var totalNumber = friendsIds.Count; var queryableUsers = usersDbList.AsQueryable(); var queryableLibraries = libraryDbList.AsQueryable(); var queryResult = from u in usersDbList.AsQueryable() join l in queryableLibraries on u.LibraryId equals l.Id where friendsIds.Contains(u.Id) orderby(u.Username) select new FriendDTO() { Id = u.Id, Name = u.Username, Age = DateTime.Now.Year - u.YearOfBirth, LibraryName = l.Name, IsFriend = true }; var friends = (totalNumber, queryResult.Skip(filter.PageIndex * filter.PageSize) .Take(filter.PageSize).ToList()); return(friends); }
public async Task <FriendsPageModel> GetFriendsAsync(FriendsPageFilter filter) { var channel = new Channel(channelTarget, ChannelCredentials.Insecure); try { var client = new FriendsGrpcService.FriendsGrpcServiceClient(channel); var request = new GetFriendsRequest() { UserId = filter.UserId.ToString(), PageIndex = filter.PageIndex, PageSize = filter.PageSize }; var response = await client.GetFriendsAsync(request); return(new FriendsPageModel() { TotalNumber = response.TotalNumber, Friends = response.Friends.Select(f => FriendGrpcConverter.ToModel(f)).ToList() }); } finally { await channel.ShutdownAsync(); } }
public FriendsPageModel GetFriends(FriendsPageFilter filter) { var(totaNumber, friends) = _friendsService.GetFriends(filter); return(new FriendsPageModel() { Friends = friends.Select(s => FriendWebConverter.ToModel(s)).ToList(), TotalNumber = totaNumber }); }
public (int, List <FriendDTO>) GetFriends(FriendsPageFilter filter) { //TODO OPTIMIZE QUERY PLEASEEEEE //TODO correct filter and check if data is correct var query = _context.Friendships.Where(f => f.FirstFriendId == filter.UserId).Include(f => f.SecondFriend) .ThenInclude(fr => fr.Library) .OrderBy(f => f.SecondFriend.Name); int totalNumber = query.Count(); var friends = query.Skip(filter.PageIndex * filter.PageSize).Take(filter.PageSize).Select(f => FriendCoreConverter.ToDTO(f.SecondFriend, true)).ToList(); return(totalNumber, friends); }
public override Task <GetFriendsResponse> GetFriends(GetFriendsRequest request, ServerCallContext context) { var filter = new FriendsPageFilter() { UserId = Guid.Parse(request.UserId), PageIndex = request.PageIndex, PageSize = request.PageSize }; var(totalNumber, friends) = _friendsService.GetFriends(filter); var response = new GetFriendsResponse() { TotalNumber = totalNumber }; response.Friends.AddRange(friends.Select(f => FriendGrpcConverter.ToMessage(f)).ToList()); return(Task.FromResult(response)); }
public FriendsPageModel GetFriends(FriendsPageFilter filter) { return(_friendsService.GetFriendsAsync(filter).Result); }