Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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();
            }
        }
Ejemplo n.º 3
0
        public FriendsPageModel GetFriends(FriendsPageFilter filter)
        {
            var(totaNumber, friends) = _friendsService.GetFriends(filter);

            return(new FriendsPageModel()
            {
                Friends = friends.Select(s => FriendWebConverter.ToModel(s)).ToList(),
                TotalNumber = totaNumber
            });
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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));
        }
Ejemplo n.º 6
0
 public FriendsPageModel GetFriends(FriendsPageFilter filter)
 {
     return(_friendsService.GetFriendsAsync(filter).Result);
 }