public IViewComponentResult Invoke(string makeCode, string colorName, string productName, int productId = 0) { if (string.IsNullOrEmpty(makeCode)) { return(Content("")); } IEnumerable <Product> products = _productService.SearchProducts( storeId: _storeContext.CurrentStore.Id, orderBy: ProductSortingEnum.CreatedOn); Product product = products.FirstOrDefault(x => x.Id == productId); ViewBag.ProductName = productName; //ACL and store mapping products = products.Where(p => _aclService.Authorize(p) && _storeMappingService.Authorize(p)); //availability dates products = products.Where(p => _productService.ProductIsAvailable(p) && p.MakeCode == makeCode && p.Id != productId); if (!products.Any()) { return(Content("")); } var productIds = _specificationAttributeService.GetSimilarProductIdsByColor(makeCode, colorName, product); products = products.Where(x => productIds.Contains(x.Id)); //prepare model var model = _productModelFactory.PrepareProductOverviewModels(products, true, true, 250, false); return(View(model)); }