public async Task <ActionResult> Index(int manufacturerId = 0)
        {
            if (manufacturerId <= 0)
            {
                return(new HttpStatusCodeResult(System.Net.HttpStatusCode.BadRequest, "Mandatory argument was not specified"));
            }

            var result = new ManufacturerProductsViewModel();

            var manufacturerTask         = _manufacturerClient.GetManufacturer(manufacturerId);
            var manufacturerProductsTask = _productClient.GetManufacturerProducts(manufacturerId);
            await Task.WhenAll(new[] { manufacturerTask, manufacturerProductsTask });

            if (manufacturerTask.Result.IsSuccessStatusCode)
            {
                result.Manufacturer = await manufacturerTask.Result.Content.ReadAsAsync <ManufacturerViewModel>();
            }
            else
            {
                ModelState.AddModelError(string.Empty, _genericErrorMessage);
            }

            if (manufacturerProductsTask.Result.IsSuccessStatusCode)
            {
                result.Products = (await manufacturerProductsTask.Result.Content.ReadAsAsync <IEnumerable <ProductViewModel> >()).OrderBy(_ => _.Name);
            }
            else
            {
                ModelState.AddModelError(string.Empty, _genericErrorMessage);
            }

            return(View(result));
        }