コード例 #1
0
        public async Task <GetPaginatedLocationPostsResponse> GetPaginatedPostsByLocation(GetPaginatedLocationPostsRequest req)
        {
            var postsFromDb  = _dbContext.UserPosts.Include(x => x.Owner).Include(x => x.Photos).ToList();
            var postsInRange = new List <GetPostResponse>();

            postsFromDb.ForEach(post =>
            {
                if (CoordinateHelper.IsCoordinateInRange(post.Latitude, post.Longitude, req.Latitude, req.Longitude, req.Range))
                {
                    postsInRange.Add(_mapper.Map <GetPostResponse>(post));
                }
            });

            postsInRange = postsInRange.OrderByDescending(x => x.CreationDate).Skip((req.Page - 1) * req.MaxPerPage).Take(req.MaxPerPage).ToList();

            return(new GetPaginatedLocationPostsResponse {
                Latitude = req.Latitude, Longitude = req.Longitude, MaxPerPage = req.MaxPerPage, Page = req.Page, Posts = postsInRange
            });
        }