public async Task <PagedList <RecommendDTO> > GetUserRecommendations(RecommendationsParams recommendationsParams) { var users = _context.Users.OrderBy(u => u.UserName).AsQueryable(); var recommendations = _context.Recommendations.AsQueryable(); if (recommendationsParams.Predicate == "recommended") { recommendations = recommendations.Where(recommend => recommend.SourceUserId == recommendationsParams.UserId); users = recommendations.Select(recommend => recommend.RecommendedUser); } if (recommendationsParams.Predicate == "recommendedBy") { recommendations = recommendations.Where(recommend => recommend.RecommendedUserId == recommendationsParams.UserId); users = recommendations.Select(recommend => recommend.SourceUser); //list of users that have recommended the currently logged in user } var RecommendedUsers = users.Select(user => new RecommendDTO { Username = user.UserName, Nickname = user.Nickname, Age = user.Birthday.CalculateAge(), PhotoUrl = user.Photos.FirstOrDefault(p => p.IsMain).Url, InterestedIn = user.InterestedIn, Id = user.Id }); return(await PagedList <RecommendDTO> .CreateAsync(RecommendedUsers, recommendationsParams.PageNumber, recommendationsParams.PageSize)); }
public async Task <ActionResult <IEnumerable <RecommendDTO> > > GetUserRecommendations([FromQuery] RecommendationsParams recommendationsParams) { recommendationsParams.UserId = User.GetUserId(); var users = await _recommendationsRepository.GetUserRecommendations(recommendationsParams); Response.AddPaginationHeader(users.CurrentPage, users.PageSize, users.TotalCount, users.TotalPages); return(Ok(users)); }