Beispiel #1
0
        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));
        }