diff --git a/SampleWebApiAspNetCore/Controllers/v1/FoodsController.cs b/SampleWebApiAspNetCore/Controllers/v1/FoodsController.cs index 892e327..3bd84dc 100644 --- a/SampleWebApiAspNetCore/Controllers/v1/FoodsController.cs +++ b/SampleWebApiAspNetCore/Controllers/v1/FoodsController.cs @@ -19,13 +19,16 @@ public class FoodsController : ControllerBase private readonly IFoodRepository _foodRepository; private readonly IMapper _mapper; private readonly ILinkService _linkService; + private readonly IFoodService _foodService public FoodsController( IFoodRepository foodRepository, + IFoodService foodService, IMapper mapper, ILinkService linkService) { _foodRepository = foodRepository; + _foodService = foodService; _mapper = mapper; _linkService = linkService; } @@ -33,30 +36,13 @@ public FoodsController( [HttpGet(Name = nameof(GetAllFoods))] public ActionResult GetAllFoods(ApiVersion version, [FromQuery] QueryParameters queryParameters) { - List foodItems = _foodRepository.GetAll(queryParameters).ToList(); - - var allItemCount = _foodRepository.Count(); - - var paginationMetadata = new - { - totalCount = allItemCount, - pageSize = queryParameters.PageCount, - currentPage = queryParameters.Page, - totalPages = queryParameters.GetTotalPages(allItemCount) - }; - - Response.Headers.Add("X-Pagination", JsonSerializer.Serialize(paginationMetadata)); - - var links = _linkService.CreateLinksForCollection(queryParameters, allItemCount, version); - var toReturn = foodItems.Select(x => _linkService.ExpandSingleFoodItem(x, x.Id, version)); - - return Ok(new - { - value = toReturn, - links = links - }); + var result = _foodService.GetAllFoods(queryParameters, version); + // Add the X-Pagination header to the response + Response.Headers.Add("X-Pagination", JsonSerializer.Serialize(result.PaginationMetadata)); + return Ok(result); } + [HttpGet] [Route("{id:int}", Name = nameof(GetSingleFood))] public ActionResult GetSingleFood(ApiVersion version, int id)