2017-03-17 10:00:18 +01:00
|
|
|
|
using Microsoft.AspNetCore.Mvc.Rendering;
|
2017-04-06 16:59:17 +02:00
|
|
|
|
using Microsoft.eShopOnContainers.BuildingBlocks.Resilience.Http;
|
2017-03-03 16:00:15 +01:00
|
|
|
|
using Microsoft.eShopOnContainers.WebMVC.ViewModels;
|
2017-03-17 10:00:18 +01:00
|
|
|
|
using Microsoft.Extensions.Logging;
|
2016-10-31 09:25:47 +01:00
|
|
|
|
using Microsoft.Extensions.Options;
|
2016-11-05 11:09:14 +01:00
|
|
|
|
using Newtonsoft.Json;
|
|
|
|
|
using Newtonsoft.Json.Linq;
|
2017-03-17 10:00:18 +01:00
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Threading.Tasks;
|
2017-05-04 13:01:14 +02:00
|
|
|
|
using WebMVC.Infrastructure;
|
2016-10-21 05:46:30 +02:00
|
|
|
|
|
|
|
|
|
namespace Microsoft.eShopOnContainers.WebMVC.Services
|
|
|
|
|
{
|
|
|
|
|
public class CatalogService : ICatalogService
|
|
|
|
|
{
|
2017-02-06 13:53:36 +01:00
|
|
|
|
private readonly IOptionsSnapshot<AppSettings> _settings;
|
2017-05-04 13:01:14 +02:00
|
|
|
|
private readonly IHttpClient _apiClient;
|
|
|
|
|
private readonly ILogger<CatalogService> _logger;
|
|
|
|
|
|
2016-10-31 09:25:47 +01:00
|
|
|
|
private readonly string _remoteServiceBaseUrl;
|
2017-05-04 13:01:14 +02:00
|
|
|
|
|
|
|
|
|
public CatalogService(IOptionsSnapshot<AppSettings> settings, IHttpClient httpClient, ILogger<CatalogService> logger)
|
|
|
|
|
{
|
2016-10-31 09:25:47 +01:00
|
|
|
|
_settings = settings;
|
2017-03-17 13:12:34 +01:00
|
|
|
|
_apiClient = httpClient;
|
2017-05-04 13:01:14 +02:00
|
|
|
|
_logger = logger;
|
2016-11-05 11:09:14 +01:00
|
|
|
|
|
2017-05-04 13:01:14 +02:00
|
|
|
|
_remoteServiceBaseUrl = $"{_settings.Value.CatalogUrl}/api/v1/catalog/";
|
|
|
|
|
}
|
2017-02-15 23:12:37 -08:00
|
|
|
|
|
2017-05-04 13:01:14 +02:00
|
|
|
|
public async Task<Catalog> GetCatalogItems(int page, int take, int? brand, int? type)
|
|
|
|
|
{
|
|
|
|
|
var allcatalogItemsUri = API.Catalog.GetAllCatalogItems(_remoteServiceBaseUrl, page, take, brand, type);
|
2017-02-15 23:12:37 -08:00
|
|
|
|
|
2017-05-04 13:01:14 +02:00
|
|
|
|
var dataString = await _apiClient.GetStringAsync(allcatalogItemsUri);
|
2017-02-15 23:12:37 -08:00
|
|
|
|
|
2016-11-05 11:09:14 +01:00
|
|
|
|
var response = JsonConvert.DeserializeObject<Catalog>(dataString);
|
2016-10-31 09:25:47 +01:00
|
|
|
|
|
2016-11-05 11:09:14 +01:00
|
|
|
|
return response;
|
2016-10-31 09:25:47 +01:00
|
|
|
|
}
|
|
|
|
|
|
2016-11-05 11:09:14 +01:00
|
|
|
|
public async Task<IEnumerable<SelectListItem>> GetBrands()
|
2016-10-31 09:25:47 +01:00
|
|
|
|
{
|
2017-05-04 13:01:14 +02:00
|
|
|
|
var getBrandsUri = API.Catalog.GetAllBrands(_remoteServiceBaseUrl);
|
|
|
|
|
|
|
|
|
|
var dataString = await _apiClient.GetStringAsync(getBrandsUri);
|
2016-11-05 11:09:14 +01:00
|
|
|
|
|
2016-10-31 09:25:47 +01:00
|
|
|
|
var items = new List<SelectListItem>();
|
2016-11-07 18:37:11 +01:00
|
|
|
|
items.Add(new SelectListItem() { Value = null, Text = "All", Selected = true });
|
2016-11-05 11:09:14 +01:00
|
|
|
|
|
2017-05-04 13:01:14 +02:00
|
|
|
|
var brands = JArray.Parse(dataString);
|
|
|
|
|
|
|
|
|
|
foreach (var brand in brands.Children<JObject>())
|
2016-11-05 11:09:14 +01:00
|
|
|
|
{
|
2017-03-20 14:18:20 -04:00
|
|
|
|
items.Add(new SelectListItem()
|
|
|
|
|
{
|
|
|
|
|
Value = brand.Value<string>("id"),
|
|
|
|
|
Text = brand.Value<string>("brand")
|
|
|
|
|
});
|
2016-11-05 11:09:14 +01:00
|
|
|
|
}
|
2016-10-31 09:25:47 +01:00
|
|
|
|
|
|
|
|
|
return items;
|
|
|
|
|
}
|
|
|
|
|
|
2016-11-05 11:09:14 +01:00
|
|
|
|
public async Task<IEnumerable<SelectListItem>> GetTypes()
|
2016-10-31 09:25:47 +01:00
|
|
|
|
{
|
2017-05-04 13:01:14 +02:00
|
|
|
|
var getTypesUri = API.Catalog.GetAllTypes(_remoteServiceBaseUrl);
|
|
|
|
|
|
|
|
|
|
var dataString = await _apiClient.GetStringAsync(getTypesUri);
|
2016-11-05 11:09:14 +01:00
|
|
|
|
|
2016-10-31 09:25:47 +01:00
|
|
|
|
var items = new List<SelectListItem>();
|
2016-11-07 18:37:11 +01:00
|
|
|
|
items.Add(new SelectListItem() { Value = null, Text = "All", Selected = true });
|
2016-11-05 11:09:14 +01:00
|
|
|
|
|
2017-05-04 13:01:14 +02:00
|
|
|
|
var brands = JArray.Parse(dataString);
|
|
|
|
|
foreach (var brand in brands.Children<JObject>())
|
2016-11-05 11:09:14 +01:00
|
|
|
|
{
|
2017-03-20 14:18:20 -04:00
|
|
|
|
items.Add(new SelectListItem()
|
|
|
|
|
{
|
|
|
|
|
Value = brand.Value<string>("id"),
|
|
|
|
|
Text = brand.Value<string>("type")
|
|
|
|
|
});
|
2016-11-05 11:09:14 +01:00
|
|
|
|
}
|
2016-10-31 09:25:47 +01:00
|
|
|
|
return items;
|
2016-10-21 05:46:30 +02:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|