public async Task GetProducts()

in Source/ApiGWs/Tailwind.Traders.WebBff/Controllers/ProductsController.cs [87:114]


        public async Task<IActionResult> GetProducts([FromQuery] int[] brand = null, [FromQuery] string[] type = null)
        {
            var client = _httpClientFactory.CreateClient(HttpClients.ApiGW);

            var result = await client.GetStringAsync(API.Products.GetTypes(_settings.ProductsApiUrl, VERSION_API));
            var types = JsonConvert.DeserializeObject<IEnumerable<ProductType>>(result);

            var selectedTypeIds = types.Where(t => type.Contains(t.Code)).Select(t => t.Id).ToArray();

            var productsUrl = brand.Count() > 0 || type.Count() > 0 ?
                API.Products.GetProductsByFilter(_settings.ProductsApiUrl, VERSION_API, brand, selectedTypeIds) :
                API.Products.GetProducts(_settings.ProductsApiUrl, VERSION_API);

            var resultProducts = await client.GetAsync(productsUrl);
            result = await resultProducts.Content.ReadAsStringAsync();
            var products = JsonConvert.DeserializeObject<IEnumerable<Product>>(result);

            result = await client.GetStringAsync(API.Products.GetBrands(_settings.ProductsApiUrl, VERSION_API));
            var brands = JsonConvert.DeserializeObject<IEnumerable<ProductBrand>>(result);            

            var aggresponse = new
            {
                Products = products,
                Brands = brands,
                Types = types
            };
            return Ok(aggresponse);
        }