public async Task <IActionResult> Details(long id)
        {
            Product p = await context.Products
                        .Include(p => p.Category)
                        .Include(p => p.Supplier)
                        .FirstOrDefaultAsync(p => p.ProductId == id);

            return(View("ProductEditor", ProductViewModelFactory.Details(p)));
        }
Ejemplo n.º 2
0
        [TestMethod] public void CreateTest()
        {
            var o = GetRandom.Object <ProductObject>();
            var v = ProductViewModelFactory.Create(o);

            Assert.AreEqual(v.Id, o.Id);
            Assert.AreEqual(v.Name, o.Name);
            Assert.AreEqual(v.Description, o.Description);
            Assert.AreEqual(v.Category, o.Category);
            Assert.AreEqual(v.BiddingEndDate, ProductViewModelFactory.timeLeft(o.BiddingEndDate));
        }
 public CatalogController(InventoryManager inventoryManager, ContactFactory contactFactory, ProductViewModelFactory productViewModelFactory, AccountManager accountManager, CatalogManager catalogManager, GiftCardManager giftCardManager, PricingManager pricingManager, CartManager cartManager, CommerceUserContext commerceUserContext, CatalogItemContext catalogItemContext, CatalogUrlService catalogUrlRepository, StorefrontContext storefrontContext, CategoryViewModelFactory categoryViewModelFactory, GetChildProductsService getChildProductsService)
 {
     InventoryManager         = inventoryManager;
     ProductViewModelFactory  = productViewModelFactory;
     CatalogManager           = catalogManager;
     GiftCardManager          = giftCardManager;
     CommerceUserContext      = commerceUserContext;
     CatalogItemContext       = catalogItemContext;
     StorefrontContext        = storefrontContext;
     CategoryViewModelFactory = categoryViewModelFactory;
     GetChildProductsService  = getChildProductsService;
 }
        public ActionResult ProductRating()
        {
            if (CatalogManager.CatalogContext == null)
            {
                return(Context.PageMode.IsExperienceEditor ? (ActionResult)this.InfoMessage(InfoMessage.Error("This rendering cannot be shown without a valid catalog context.")) : new EmptyResult());
            }
            if (!ProductViewModelFactory.IsValid(RenderingContext.Current.Rendering.Item))
            {
                return(Context.PageMode.IsExperienceEditor ? (ActionResult)this.InfoMessage(InfoMessage.Error("Invalid datasource. Please pick a product.")) : new EmptyResult());
            }

            var model = ProductViewModelFactory.Create(RenderingContext.Current.Rendering.Item);

            return(View(model));
        }
        private IEnumerable <RelationshipViewModel> GroupRelationshipsByDescription(IEnumerable <CatalogRelationshipInformation> productRelationshipInfoList)
        {
            var relationshipGroups = new Dictionary <string, RelationshipViewModel>(StringComparer.OrdinalIgnoreCase);

            if (productRelationshipInfoList != null)
            {
                foreach (var relationshipInfo in productRelationshipInfoList)
                {
                    var relationshipDescription = string.IsNullOrWhiteSpace(relationshipInfo.RelationshipDescription) ? GetRelationshipName(relationshipInfo.RelationshipName) : relationshipInfo.RelationshipDescription;
                    RelationshipViewModel relationshipModel;
                    if (!relationshipGroups.TryGetValue(relationshipDescription, out relationshipModel))
                    {
                        relationshipModel = new RelationshipViewModel
                        {
                            Name        = relationshipInfo.RelationshipName,
                            Description = relationshipDescription
                        };

                        relationshipGroups[relationshipDescription] = relationshipModel;
                    }

                    var targetItemId = new ID(relationshipInfo.ToItemExternalId);
                    var targetItem   = Context.Database.GetItem(targetItemId);
                    var productModel = ProductViewModelFactory.Create(targetItem);

                    relationshipModel.ChildProducts.Add(productModel);
                }
            }

            if (relationshipGroups.Count <= 0)
            {
                return(relationshipGroups.Values);
            }

            var productViewModelList = relationshipGroups.Values.SelectMany(v => v.ChildProducts).ToArray();

            if (!productViewModelList.Any())
            {
                return(relationshipGroups.Values);
            }

            CatalogManager.GetProductBulkPrices(productViewModelList);
            InventoryManager.GetProductsStockStatusForList(productViewModelList);

            return(relationshipGroups.Values);
        }
        public async Task <IActionResult> Create([FromForm] Product product)
        {
            if (ModelState.IsValid)
            {
                // reset these properties to ensure
                //  - primary key for productId is allocated by database server
                //  - and to prevent EFCore dealing with related data here
                product.ProductId = default;
                product.Category  = default;
                product.Supplier  = default;
                context.Products.Add(product);
                await context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View("ProductEditor", ProductViewModelFactory.Create(product, _categories, _suppliers)));
        }
        public async Task <IActionResult> Edit([FromForm] Product product)
        {
            //var errors = ModelState
            //    .Where(x => x.Value.Errors.Count > 0)
            //    .Select(x => new { x.Key, x.Value.Errors })
            //    .ToArray();

            if (ModelState.IsValid)
            {
                product.Category = default;
                product.Supplier = default;
                context.Products.Update(product);
                await context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View("ProductEditor", ProductViewModelFactory.Edit(product, _categories, _suppliers)));
        }
 public void Process(GetPageMetadataArgs args)
 {
     if (CatalogItemContext.IsCategory)
     {
         var category = CategoryViewModelFactory.Create(CatalogItemContext.Current.Item);
         args.Metadata.PageTitle   = category.Title;
         args.Metadata.Description = StringUtil.RemoveTags(category.Description);
     }
     if (CatalogItemContext.IsProduct)
     {
         var product = ProductViewModelFactory.Create(CatalogItemContext.Current.Item);
         args.Metadata.PageTitle   = product.Title;
         args.Metadata.Description = StringUtil.RemoveTags(product.Description);
         foreach (var tag in product.Tags)
         {
             args.Metadata.KeywordsList.Add(tag);
         }
     }
 }
        public ActionResult VisitedProductDetailsPage()
        {
            if (CatalogManager.CatalogContext == null || StorefrontContext.Current == null)
            {
                return(Context.PageMode.IsExperienceEditor ? (ActionResult)this.InfoMessage(InfoMessage.Error("This rendering cannot be shown without a valid catalog context.")) : new EmptyResult());
            }
            if (!ProductViewModelFactory.IsValid(RenderingContext.Current.Rendering.Item))
            {
                return(Context.PageMode.IsExperienceEditor ? (ActionResult)this.InfoMessage(InfoMessage.Error("Invalid datasource. Please pick a product.")) : new EmptyResult());
            }

            var model = ProductViewModelFactory.Create(RenderingContext.Current.Rendering.Item);

            if (model != null)
            {
                CatalogManager.VisitedProductDetailsPage(model.ProductId, model.ProductName, model.ParentCategoryId, model.ParentCategoryName);
            }

            return(new EmptyResult());
        }
Ejemplo n.º 10
0
 public ProductSearchResultFormatter(ProductViewModelFactory productViewModelFactory)
 {
     ProductViewModelFactory = productViewModelFactory;
 }
 public SetProductCatalogMetadata(CatalogItemContext catalogItemContext, CategoryViewModelFactory categoryViewModelFactory, ProductViewModelFactory productViewModelFactory)
 {
     CatalogItemContext       = catalogItemContext;
     CategoryViewModelFactory = categoryViewModelFactory;
     ProductViewModelFactory  = productViewModelFactory;
 }
Ejemplo n.º 12
0
 public virtual Task <ProductViewModel> GetProductViewModelAsync(GetProductParam param)
 {
     return(ProductViewModelFactory.GetProductViewModel(param));
 }
        public async Task <IActionResult> Edit(long id)
        {
            Product p = await context.Products.FirstOrDefaultAsync(p => p.ProductId == id);

            return(View("ProductEditor", ProductViewModelFactory.Edit(p, _categories, _suppliers)));
        }
Ejemplo n.º 14
0
 public ProductsController(ProductViewModelFactory viewModelFactory, IProductRepository productRepository)
 {
     _viewModelFactory  = viewModelFactory;
     _productRepository = productRepository;
 }