public async Task <IActionResult> GetSeachByName([FromQuery(Name = "name")] string name, [FromQuery(Name = "page")] int page) { var apiResponse = await BestBuyApi.GetProductsWithName(name, page); if (apiResponse is null) { return(StatusCode(500)); } int numberOfProducts = apiResponse.SelectToken("total").Value <int?>() ?? 0; if (numberOfProducts <= 0) { return(NotFound()); } var products = apiResponse.SelectTokens("products[*]") .Select(product => new ShortProduct { Id = product["sku"].Value <int?>() ?? 0, Name = product["name"].Value <string>() ?? "", Price = product["salePrice"].Value <float?>() ?? 0, ThumbnailImage = product["thumbnailImage"].Value <string>() ?? "" }).ToList(); return(Ok(products)); }
public async Task <IActionResult> GetDetailedProductById(int id) { var productResponse = await BestBuyApi.GetProductDetailById(id); if (productResponse is null) { return(StatusCode(500)); } int numberOfProducts = productResponse.SelectToken("total").Value <int?>() ?? 0; if (numberOfProducts <= 0) { return(NotFound()); } var alsoViewedResponse = await BestBuyApi.GetAlsoViewedProducts(id); List <ShortProduct> alsoViewedProducts = new List <ShortProduct>(); var resultFromJToken = alsoViewedResponse.SelectToken("results"); if (alsoViewedResponse != null && resultFromJToken.Count() > 0) { alsoViewedProducts = resultFromJToken.Select(result => new ShortProduct { Id = result["sku"].Value <int?>() ?? 0, Name = result["names"]["title"].Value <string>() ?? "", ThumbnailImage = result["images"]["standard"].Value <string>() ?? "", Price = result["prices"]["current"].Value <float?>() ?? 0 }).Take(3).ToList(); } var detailedProduct = new DetailedProduct { Id = productResponse.SelectToken("products[0].sku").Value <int?>() ?? 0, ImageUrl = productResponse.SelectToken("products[0].image").Value <string>() ?? "", Name = productResponse.SelectToken("products[0].name").Value <string>() ?? "", RegularPrice = productResponse.SelectToken("products[0].regularPrice").Value <float?>() ?? 0, SalePrice = productResponse.SelectToken("products[0].salePrice").Value <float?>() ?? 0, ReviewCount = productResponse.SelectToken("products[0].customerReviewCount").Value <int?>() ?? 0, ReviewAverage = productResponse.SelectToken("products[0].customerReviewAverage").Value <float?>() ?? 0, Description = productResponse.SelectToken("products[0].shortDescription").Value <string>() ?? "", AlsoViewed = alsoViewedProducts }; return(Ok(detailedProduct)); }