Inheritance: ILocalizable
Exemple #1
0
 public ProductModel(Product product)
     : this()
 {
     Id = product.Id;
     Name = product.Name;
     IsPublished = product.IsPublished;
     ProductTypeId = product.ProductType.Id;
 }
Exemple #2
0
 public ProductRowModel(Product product)
     : this()
 {
     this.Id = product.Id;
     this.Name = product.Name;
     this.IsPublished = product.IsPublished;
     this.ProductTypeId = product.ProductTypeId;
 }
Exemple #3
0
        public bool Publish(Product product)
        {
            if (product.IsPublished)
            {
                return false;
            }

            product.IsPublished = true;

            _database.SaveChanges();

            Event.Raise(new ProductPublished(product), _instance);

            return true;
        }
        public ShoppingCartItem AddItem(ShoppingCart cart, Product product, ProductPrice productPrice, int quantity)
        {
            Require.NotNull(cart, "cart");
            Require.NotNull(product, "product");
            Require.NotNull(productPrice, "productPrice");
            Require.That(quantity > 0, "quantity", "Quantity should be greater than zero.");

            var item = cart.Items.FirstOrDefault(i => i.ProductPrice.Id == productPrice.Id);
            if (item == null)
            {
                item = new ShoppingCartItem(productPrice, quantity, cart);
                AddItem(cart, item);
            }
            else
            {
                ChangeItemQuantity(cart, item, item.Quantity + quantity);
            }

            return item;
        }
        private void UpdateProduct(Product product, ProductEditorModel model)
        {
            product.Name = model.Name;
            product.Brand = model.Brand == null ? null : _brandService.Find(model.Brand.Id);

            product.Categories.Clear();
            foreach (var category in model.Categories)
            {
                product.Categories.Add(_categoryService.Find(category.Id));
            }

            product.SetCustomFields(model.CustomFields);
            product.SetImages(model.Images);

            foreach (var variant in product.Variants.ToList())
            {
                if (!model.Variants.Any(v => v.Id == variant.Id))
                {
                    product.Variants.Remove(variant);
                }
            }

            foreach (var variantModel in model.Variants)
            {
                ProductVariant variant;

                if (variantModel.Id > 0)
                {
                    variant = product.Variants.FirstOrDefault(v => v.Id == variantModel.Id);
                }
                else
                {
                    variant = new ProductVariant();
                    product.Variants.Add(variant);
                }

                variant.Sku = variantModel.Sku;
                variant.Price = variantModel.Price;
                variant.SetVariantFields(variantModel.VariantFields);
            }
        }
Exemple #6
0
 public void Delete(Product model)
 {
     var product = _database.Repository<Product>().Find(model.Id);
     _database.Repository<Product>().Delete(product);
     Event.Raise(new ProductDeleted(product), _instance);
 }
Exemple #7
0
 public void Create(Product product)
 {
     SyncPriceRange(product);
     _database.Repository<Product>().Insert(product);
     Event.Raise(new ProductCreated(product), _instance);
 }
Exemple #8
0
 private void SyncPriceRange(Product product)
 {
     if (product.Variants.Count == 0)
     {
         product.LowestPrice = product.HighestPrice = 0;
     }
     else
     {
         product.LowestPrice = product.Variants.Min(v => v.Price);
         product.HighestPrice = product.Variants.Max(v => v.Price);
     }
 }
 public ProductCustomFieldValue(Product product, int fieldId, string value)
 {
     Product = product;
     CustomFieldId = fieldId;
     FieldValue = value;
 }
        public ActionResult Save(Product obj)
        {
            try
            {
                Product product = null;

                if (obj.Id > 0)
                {
                    product = _productService.GetById(obj.Id);
                }
                else
                {
                    product = new Product(obj.Name, _productTypeService.GetById(obj.ProductTypeId));
                }

                // Update basic info
                product.Name = obj.Name;

                if (obj.BrandId != null)
                {
                    product.Brand = _brandService.GetById(obj.BrandId.Value);
                }
                else
                {
                    product.Brand = null;
                }

                product.UpdateCustomFieldValues(obj.CustomFieldValues);
                product.UpdateImages(obj.Images);
                product.UpdateCategories(obj.Categories);

                if (product.Id == 0)
                {
                    _productService.Create(product);
                }
                else
                {
                    _db.SaveChanges();
                    product.NotifyUpdated();
                }

                // Update product prices
                foreach (var price in product.PriceList.ToList())
                {
                    if (!obj.PriceList.Any(p => p.Id == price.Id))
                    {
                        _productService.RemovePrice(product, price.Id);
                    }
                }

                foreach (var priceModel in obj.PriceList)
                {
                    var price = product.FindPrice(priceModel.Id);
                    if (price == null)
                    {
                        price = product.CreatePrice(priceModel.Name, priceModel.Sku);
                        price.UpdateFrom(priceModel);
                        _productService.AddPrice(product, price);
                    }
                    else
                    {
                        price.UpdateFrom(priceModel);
                        _db.SaveChanges();
                        price.NotifyUpdated();
                    }

                    if (priceModel.IsPublished)
                    {
                        _productService.PublishPrice(product, price.Id);
                    }
                    else
                    {
                        _productService.UnpublishPrice(product, price.Id);
                    }
                }

                if (obj.IsPublished)
                {
                    _productService.Publish(product);
                }
                else
                {
                    _productService.Unpublish(product);
                }

                return this.JsonNet(new { status = 0, message = "product succssfully saved." });
            }
            catch (Exception ex)
            {
                return this.JsonNet(new { status = 1, message = ex.Message });
            }
        }
 public ProductUnpublished(Product product)
 {
     ProductId = product.Id;
 }
Exemple #12
0
        private void PrepareProductEditing(ProductType productType, Product product)
        {
            if (product != null)
            {
                ViewBag.Product = product;
                ViewBag.ToolbarCommands = TopbarCommands.GetCommands(ControllerContext, product, CurrentInstance);
            }

            ViewBag.ProductType = productType;
            ViewBag.DefaultVariantModel = CreateDefaultVariantModel(productType);
            ViewBag.ImageTypes = _settingService.Get<GlobalSettings>().Image.Types;

            var settings = _settingService.Get<GlobalSettings>();
            if (settings != null && !String.IsNullOrEmpty(settings.Currency))
            {
                ViewBag.CurrencySymbol = CurrencyInfo.GetCurrencyInfoByISOSymbol(settings.Currency).Symbol;
            }

            this.LoadTabPlugins();
        }
Exemple #13
0
 public ProductVariant(Product product)
     : this()
 {
     Product = product;
 }
Exemple #14
0
        private Product DoSave(ProductEditorModel model)
        {
            Product product = null;

            if (model.Id == 0)
            {
                product = new Product
                {
                    ProductType = _productTypeService.Find(model.ProductTypeId)
                };
                UpdateProduct(product, model);
                _productService.Create(product);
            }
            else
            {
                product = _productService.Find(model.Id);
                UpdateProduct(product, model);
                _productService.Update(product);
            }

            if (model.IsPublished)
            {
                _productService.Publish(product);
            }
            else
            {
                _productService.Unpublish(product);
            }

            return product;
        }
Exemple #15
0
        public ActionResult Get(int? id = null, int? productTypeId = null)
        {
            Product product = null;
            if (id.HasValue)
            {
                product = _productService.Find(id.Value);
            }
            if (product == null)
            {
                product = new Product
                {
                    ProductType = _productTypeService.Find(productTypeId.Value)
                };
            }

            var model = Mapper.Map<Product, ProductEditorModel>(product);

            return JsonNet(model).UsingClientConvention();
        }
Exemple #16
0
 public ProductDeleted(Product product)
 {
     ProductId = product.Id;
     ProductName = product.Name;
 }
Exemple #17
0
 public ProductCreated(Product product)
 {
     ProductId = product.Id;
 }
 public ProductEditorModel(Product product)
     : this()
 {
 }
 public override bool CanExecute(Kooboo.Commerce.Products.Product product, CommerceInstance instance)
 {
     return(!product.IsPublished);
 }
 public ProductPriceDeleted(Product product, ProductPrice price)
 {
     ProductId = product.Id;
     ProductPriceId = price.Id;
 }
 public abstract bool CanExecute(Product product, CommerceInstance instance);
Exemple #22
0
        public static ProductModel Create(Product product, CultureInfo culture, CategoryTree categoryCache)
        {
            var doc = new ProductModel
            {
                Id = product.Id,
                Name = product.GetText("Name", culture) ?? product.Name
            };

            // Brand
            if (product.Brand != null)
            {
                doc.Brand = product.Brand.GetText("Name", culture) ?? product.Brand.Name;
                doc.BrandId = product.Brand.Id;
            }

            // Categories
            var categoryNames = new HashSet<string>();
            var categoryIds = new HashSet<int>();

            foreach (var category in product.Categories)
            {
                foreach (var each in categoryCache.Find(category.Id).PathFromRoot())
                {
                    var name = Localizer.GetText(new EntityKey(typeof(Category), each.Id), "Name", culture);
                    if (String.IsNullOrEmpty(name))
                    {
                        name = each.Name;
                    }

                    categoryNames.Add(name);
                    categoryIds.Add(each.Id);
                }
            }

            doc.Categories = categoryNames.ToList();
            doc.CategoryIds = categoryIds.ToList();

            // Prices
            foreach (var variant in product.Variants)
            {
                doc.Prices.Add(variant.Price);
            }

            doc.LowestPrice = product.LowestPrice;
            doc.HighestPrice = product.HighestPrice;

            // Variant fields
            var controls = FormControls.Controls().ToList();

            foreach (var variant in product.Variants)
            {
                foreach (var fieldDef in product.ProductType.VariantFieldDefinitions)
                {
                    var variantField = variant.VariantFields.FirstOrDefault(f => f.FieldName == fieldDef.Name);
                    if (variantField != null)
                    {
                        string fieldValue = null;
                        var control = controls.Find(c => c.Name == fieldDef.ControlType);
                        if (control.IsSelectionList)
                        {
                            var item = fieldDef.SelectionItems.FirstOrDefault(i => i.Value == variantField.FieldValue);
                            if (item != null)
                            {
                                fieldValue = product.ProductType.GetText("VariantFieldDefinitions[" + fieldDef.Name + "].SelectionItems[" + item.Value + "]", culture) ?? item.Text;
                            }
                        }
                        else if (control.IsValuesPredefined)
                        {
                            fieldValue = product.ProductType.GetText("VariantFieldDefinitions[" + fieldDef.Name + "].DefaultValue", culture) ?? fieldDef.DefaultValue;
                        }
                        else
                        {
                            fieldValue = variant.GetText("VariantFields[" + fieldDef.Name + "]", culture) ?? variantField.FieldValue;
                        }

                        if (!String.IsNullOrEmpty(fieldValue))
                        {
                            if (doc.VariantFieldValues.ContainsKey(fieldDef.Name))
                            {
                                doc.VariantFieldValues[fieldDef.Name].Add(fieldValue);
                            }
                            else
                            {
                                doc.VariantFieldValues.Add(fieldDef.Name, new HashSet<string> { fieldValue });
                            }
                        }
                    }
                }
            }

            // Search text
            var searchText = new StringBuilder();
            searchText.Append(doc.Name);
            searchText.Append(" ").Append(doc.Brand);
            searchText.Append(" ").Append(String.Join(" ", doc.Categories));

            foreach (var each in doc.VariantFieldValues)
            {
                searchText.Append(" ").Append(String.Join(" ", each.Value));
            }

            doc.SearchText = searchText.ToString();

            return doc;
        }
Exemple #23
0
 public ProductUpdated(Product product)
 {
     ProductId = product.Id;
 }
 public ActionResult Get(int? id = null, int? productTypeId = null)
 {
     Product product = null;
     if (id.HasValue)
     {
         product = _productService.GetById(id.Value);
     }
     if (product == null)
     {
         product = new Product();
         product.ProductTypeId = productTypeId.Value;
         product.Name = "New Product";
     }
     return JsonNet(product);
 }