Пример #1
0
        private ProductActionViewModel GetProductActionViewModelFromForm(FormCollection formCollection)
        {
            var model = new ProductActionViewModel
            {
                ProductID  = !string.IsNullOrEmpty(formCollection["ProductID"]) ? int.Parse(formCollection["ProductID"]) : 0,
                CategoryID = int.Parse(formCollection["CategoryID"]),
                Price      = decimal.Parse(formCollection["Price"]),

                Discount = !string.IsNullOrEmpty(formCollection["Discount"]) ? decimal.Parse(formCollection["Discount"]) : 0,
                Cost     = !string.IsNullOrEmpty(formCollection["Cost"]) ? decimal.Parse(formCollection["Cost"]) : 0,
                SKU      = formCollection["SKU"],
                Tags     = formCollection["Tags"],
                Barcode  = formCollection["Barcode"],
                Supplier = formCollection["Supplier"],

                isFeatured       = formCollection["isFeatured"].Contains("true"),
                ProductPictures  = formCollection["ProductPictures"],
                ThumbnailPicture = !string.IsNullOrEmpty(formCollection["ThumbnailPicture"]) ? int.Parse(formCollection["ThumbnailPicture"]) : 0,

                ProductRecordID = !string.IsNullOrEmpty(formCollection["ProductRecordID"]) ? int.Parse(formCollection["ProductRecordID"]) : 0,
                Name            = formCollection["Name"],
                Summary         = formCollection["Summary"],
                Description     = formCollection["Description"],

                ProductSpecifications = new List <ProductSpecification>()
            };

            foreach (string key in formCollection)
            {
                if (key.Contains("specification"))
                {
                    var value = formCollection[key];

                    if (!string.IsNullOrEmpty(value))
                    {
                        var specificationTitle = value.GetSubstringText("", "~");
                        var specificationValue = value.GetSubstringText("~", "");

                        if (!string.IsNullOrEmpty(specificationTitle) && !string.IsNullOrEmpty(specificationValue))
                        {
                            model.ProductSpecifications.Add(new ProductSpecification()
                            {
                                Title = specificationTitle, Value = specificationValue
                            });
                        }
                    }
                }
            }

            return(model);
        }
Пример #2
0
        public ActionResult Action(int?ID)
        {
            ProductActionViewModel model = new ProductActionViewModel();

            if (User.Identity.IsAuthenticated)
            {
                var user = UserManager.FindById(User.Identity.GetUserId());
            }

            if (ID.HasValue)
            {
                var product = ProductsService.Instance.GetProductByID(ID.Value);

                if (product == null)
                {
                    return(HttpNotFound());
                }

                model.PageTitle       = "Edit Product";
                model.PageDescription = string.Format("Edit Product {0}.", product.Name);

                model.ID                    = product.ID;
                model.CategoryID            = product.CategoryID;
                model.Name                  = product.Name;
                model.ArName                = product.ArName;
                model.Summary               = product.Summary;
                model.ArSummary             = product.ArSummary;
                model.Description           = product.Description;
                model.ArDescription         = product.ArDescription;
                model.Price                 = product.Price;
                model.Cost                  = product.Cost;
                model.isFeatured            = product.isFeatured;
                model.isOutOfStock          = product.isOutOfStock;
                model.ProductPicturesList   = product.ProductPictures;
                model.ThumbnailPicture      = product.ThumbnailPictureID;
                model.ProductSpecifications = product.ProductSpecifications;
                model.SupplierID            = product.SupplierID;
                model.ProductCosts          = product.ProductCosts;
                model.UserId                = product.UserId;
            }
            else
            {
                model.PageTitle       = "Create Product";
                model.PageDescription = "Create New Product.";
            }

            model.Categories = CategoriesService.Instance.GetAllCategories();
            model.Suppliers  = SuppliersService.Instance.GetAllSuppliers();

            return(View(model));
        }
        public async Task <IActionResult> Create(IFormCollection form)
        {
            if (ModelState.IsValid)
            {
                ProductActionViewModel myModel = GetProductActionViewModelFromForm(form);
                Product product = new Product()
                {
                    Name       = myModel.Name,
                    CategoryID = myModel.CategoryID,
                    Price      = myModel.Price,
                    Discount   = myModel.Discount,
                    SKU        = myModel.SKU,
                    Barcode    = myModel.Barcode,
                    Tags       = myModel.Tags,
                    Supplier   = myModel.Supplier,
                    isFeatured = myModel.isFeatured,
                    ModifiedOn = DateTime.Now
                };
                if (!string.IsNullOrEmpty(myModel.ProductPictures))
                {
                    var pictureIDs = myModel.ProductPictures
                                     .Split(',')
                                     .Select(ID => int.Parse(ID)).ToList();
                    if (pictureIDs.Count > 0)
                    {
                        product.ProductPictures = new List <ProductPicture>();
                        product.ProductPictures.AddRange(pictureIDs
                                                         .Select(x => new ProductPicture()
                        {
                            ProductID = product.ID, PictureID = x
                        }).ToList());
                        product.ThumbnailPictureID = myModel.ThumbnailPicture != 0 ? myModel.ThumbnailPicture : pictureIDs.First();
                    }
                }

                _context.Products.Add(product);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            //ViewData["CategoryID"] = new SelectList(_context.Categories, "ID", "Name", product.CategoryID);
            return(View());
        }
Пример #4
0
        public ActionResult Action(int?ID)
        {
            ProductActionViewModel model = new ProductActionViewModel();

            if (ID.HasValue)
            {
                var product = ProductsService.Instance.GetProductByID(ID.Value);

                if (product == null)
                {
                    return(HttpNotFound());
                }

                var currentLanguageRecord = product.ProductRecords.FirstOrDefault(x => x.LanguageID == AppDataHelper.CurrentLanguage.ID);

                currentLanguageRecord = currentLanguageRecord ?? new ProductRecord();

                model.ProductID           = product.ID;
                model.CategoryID          = product.CategoryID;
                model.Price               = product.Price;
                model.Discount            = product.Discount;
                model.Cost                = product.Cost;
                model.isFeatured          = product.isFeatured;
                model.ProductPicturesList = product.ProductPictures;
                model.ThumbnailPicture    = product.ThumbnailPictureID;
                model.SKU      = product.SKU;
                model.Barcode  = product.Barcode;
                model.Tags     = product.Tags;
                model.Supplier = product.Supplier;

                model.ProductRecordID       = currentLanguageRecord.ID;
                model.Name                  = currentLanguageRecord.Name;
                model.Summary               = currentLanguageRecord.Summary;
                model.Description           = currentLanguageRecord.Description;
                model.ProductSpecifications = currentLanguageRecord.ProductSpecifications;
            }

            model.Categories = CategoriesService.Instance.GetCategories();

            return(View(model));
        }
        private ProductActionViewModel GetProductActionViewModelFromForm(IFormCollection formCollection)
        {
            var model = new ProductActionViewModel
            {
                CategoryID       = int.Parse(formCollection["CategoryID"]),
                Price            = decimal.Parse(formCollection["Price"]),
                Discount         = !string.IsNullOrEmpty(formCollection["Discount"]) ? decimal.Parse(formCollection["Discount"]) : 0,
                SKU              = formCollection["SKU"],
                Tags             = formCollection["Tags"],
                Barcode          = formCollection["Barcode"],
                Supplier         = formCollection["Supplier"],
                StockQuantity    = !string.IsNullOrEmpty(formCollection["StockQuantity"]) ? int.Parse(formCollection["StockQuantity"]) : 0,
                isFeatured       = formCollection["isFeatured"].Contains("true"),
                ProductPictures  = formCollection["ProductPictures"],
                ThumbnailPicture = !string.IsNullOrEmpty(formCollection["ThumbnailPicture"]) ? int.Parse(formCollection["ThumbnailPicture"]) : 0,
                Name             = formCollection["Name"],
                Description      = formCollection["Description"],
            };

            return(model);
        }
Пример #6
0
        public JsonResult Action(FormCollection formCollection)
        {
            JsonResult json = new JsonResult();

            try
            {
                ProductActionViewModel model = GetProductActionViewModelFromForm(formCollection);

                if (model.ProductID > 0)
                {
                    var product = ProductsService.Instance.GetProductByID(model.ProductID);

                    if (product == null)
                    {
                        throw new Exception("Dashboard.Products.Action.Validation.ProductNotFound".LocalizedString());
                    }

                    product.ID         = model.ProductID;
                    product.CategoryID = model.CategoryID;
                    product.Price      = model.Price;

                    product.Discount   = model.Discount;
                    product.Cost       = model.Cost;
                    product.SKU        = model.SKU;
                    product.Barcode    = model.Barcode;
                    product.Tags       = model.Tags;
                    product.Supplier   = model.Supplier;
                    product.isFeatured = model.isFeatured;
                    product.ModifiedOn = DateTime.Now;

                    if (!string.IsNullOrEmpty(model.ProductPictures))
                    {
                        var pictureIDs = model.ProductPictures
                                         .Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
                                         .Select(ID => int.Parse(ID)).ToList();

                        if (pictureIDs.Count > 0)
                        {
                            var newPictures = new List <ProductPicture>();

                            newPictures.AddRange(pictureIDs.Select(x => new ProductPicture()
                            {
                                ProductID = product.ID, PictureID = x
                            }).ToList());

                            if (!ProductsService.Instance.UpdateProductPictures(product.ID, newPictures))
                            {
                                throw new Exception("Dashboard.Products.Action.Validation.UnableToUpdateProductPictures".LocalizedString());
                            }

                            product.ThumbnailPictureID = model.ThumbnailPicture != 0 ? model.ThumbnailPicture : pictureIDs.First();
                        }
                    }

                    if (!ProductsService.Instance.UpdateProduct(product))
                    {
                        throw new Exception("Dashboard.Products.Action.Validation.UnableToUpdateProduct".LocalizedString());
                    }

                    var currentLanguageRecord = product.ProductRecords.FirstOrDefault(x => x.LanguageID == AppDataHelper.CurrentLanguage.ID);

                    var isNewRecord = false;

                    if (currentLanguageRecord == null)
                    {
                        currentLanguageRecord = new ProductRecord();
                        isNewRecord           = true;
                    }

                    currentLanguageRecord.ProductID   = product.ID;
                    currentLanguageRecord.LanguageID  = AppDataHelper.CurrentLanguage.ID;
                    currentLanguageRecord.Name        = model.Name;
                    currentLanguageRecord.Summary     = model.Summary;
                    currentLanguageRecord.Description = model.Description;

                    currentLanguageRecord.ModifiedOn = DateTime.Now;

                    if (model.ProductSpecifications != null && model.ProductSpecifications.Count > 0)
                    {
                        var newProductSpecification = new List <ProductSpecification>();

                        newProductSpecification.AddRange(model.ProductSpecifications.Select(x => new ProductSpecification()
                        {
                            ProductRecordID = currentLanguageRecord.ID, Title = x.Title, Value = x.Value
                        }));

                        if (isNewRecord)
                        {
                            currentLanguageRecord.ProductSpecifications = newProductSpecification;
                        }
                        else
                        {
                            ProductsService.Instance.UpdateProductSpecifications(product.ID, newProductSpecification);
                        }
                    }

                    var result = false;
                    if (isNewRecord)
                    {
                        result = ProductsService.Instance.SaveProductRecord(currentLanguageRecord);
                    }
                    else
                    {
                        result = ProductsService.Instance.UpdateProductRecord(currentLanguageRecord);
                    }

                    if (!result)
                    {
                        throw new Exception("Dashboard.Products.Action.Validation.UnableToUpdateProductRecord".LocalizedString());
                    }
                }
                else
                {
                    Product product = new Product
                    {
                        CategoryID = model.CategoryID,
                        Price      = model.Price,

                        Discount = model.Discount,
                        Cost     = model.Cost,
                        SKU      = model.SKU,
                        Barcode  = model.Barcode,
                        Tags     = model.Tags,
                        Supplier = model.Supplier,


                        isFeatured = model.isFeatured,
                        ModifiedOn = DateTime.Now
                    };

                    if (!string.IsNullOrEmpty(model.ProductPictures))
                    {
                        var pictureIDs = model.ProductPictures
                                         .Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
                                         .Select(ID => int.Parse(ID)).ToList();

                        if (pictureIDs.Count > 0)
                        {
                            product.ProductPictures = new List <ProductPicture>();
                            product.ProductPictures.AddRange(pictureIDs.Select(x => new ProductPicture()
                            {
                                ProductID = product.ID, PictureID = x
                            }).ToList());

                            product.ThumbnailPictureID = model.ThumbnailPicture != 0 ? model.ThumbnailPicture : pictureIDs.First();
                        }
                    }

                    if (!ProductsService.Instance.SaveProduct(product))
                    {
                        throw new Exception("Dashboard.Products.Action.Validation.UnableToCreateProduct".LocalizedString());
                    }

                    var currentLanguageRecord = new ProductRecord
                    {
                        ProductID   = product.ID,
                        LanguageID  = AppDataHelper.CurrentLanguage.ID,
                        Name        = model.Name,
                        Summary     = model.Summary,
                        Description = model.Description,

                        ModifiedOn = DateTime.Now
                    };

                    if (model.ProductSpecifications != null)
                    {
                        currentLanguageRecord.ProductSpecifications = new List <ProductSpecification>();
                        currentLanguageRecord.ProductSpecifications.AddRange(model.ProductSpecifications.Select(x => new ProductSpecification()
                        {
                            ProductRecordID = product.ID, Title = x.Title, Value = x.Value
                        }));
                    }

                    var result = ProductsService.Instance.SaveProductRecord(currentLanguageRecord);

                    if (!result)
                    {
                        throw new Exception("Dashboard.Products.Action.Validation.UnableToCreateProductRecord".LocalizedString());
                    }
                }

                json.Data = new { Success = true };
            }
            catch (Exception ex)
            {
                json.Data = new { Success = false, Message = ex.Message };
            }

            return(json);
        }
Пример #7
0
        private ProductActionViewModel GetProductActionViewModelFromForm(FormCollection formCollection)
        {
            var model = new ProductActionViewModel();

            model.ID               = !string.IsNullOrEmpty(formCollection["ID"]) ? int.Parse(formCollection["ID"]) : 0;
            model.CategoryID       = int.Parse(formCollection["CategoryID"]);
            model.Name             = formCollection["Name"];
            model.ArName           = formCollection["ArName"];
            model.Summary          = formCollection["Summary"];
            model.ArSummary        = formCollection["ArSummary"];
            model.Description      = formCollection["Description"];
            model.ArDescription    = formCollection["ArDescription"];
            model.Price            = decimal.Parse(formCollection["Price"]);
            model.Cost             = decimal.Parse(formCollection["Cost"]);
            model.isFeatured       = formCollection["isFeatured"].Contains("true");
            model.isOutOfStock     = formCollection["isOutOfStock"].Contains("true");
            model.ProductPictures  = formCollection["ProductPictures"];
            model.ThumbnailPicture = !string.IsNullOrEmpty(formCollection["ThumbnailPicture"]) ? int.Parse(formCollection["ThumbnailPicture"]) : 0;
            model.SupplierID       = int.Parse(formCollection["SupplierID"]);

            model.ProductSpecifications = new List <ProductSpecification>();
            model.ProductCosts          = new List <ProductCost>();

            foreach (string key in formCollection)
            {
                if (key.Contains("specification"))
                {
                    var value = formCollection[key];

                    if (!string.IsNullOrEmpty(value))
                    {
                        var specificationTitle = value.GetSubstringText("", "~");
                        var specificationValue = value.GetSubstringText("~", "");

                        if (!string.IsNullOrEmpty(specificationTitle) && !string.IsNullOrEmpty(specificationValue))
                        {
                            model.ProductSpecifications.Add(new ProductSpecification()
                            {
                                Title = specificationTitle, Value = specificationValue
                            });
                        }
                    }
                }
            }

            foreach (string key in formCollection)
            {
                if (key.Contains("cost"))
                {
                    var value = formCollection[key];

                    if (!string.IsNullOrEmpty(value))
                    {
                        var costTitle = value.GetSubstringText("", "~");
                        var costValue = value.GetSubstringText("~", "");

                        if (!string.IsNullOrEmpty(costTitle) && !string.IsNullOrEmpty(costValue))
                        {
                            model.ProductCosts.Add(new ProductCost()
                            {
                                Title = costTitle, Value = costValue
                            });
                        }
                    }
                }
            }

            return(model);
        }
Пример #8
0
        public ActionResult Action(FormCollection formCollection)
        {
            ProductActionViewModel model = GetProductActionViewModelFromForm(formCollection);

            var user = UserManager.FindById(User.Identity.GetUserId());


            if (model.ID > 0)
            {
                var product = ProductsService.Instance.GetProductByID(model.ID);

                if (product == null)
                {
                    return(HttpNotFound());
                }

                product.ID            = model.ID;
                product.Name          = model.Name;
                product.ArName        = model.ArName;
                product.CategoryID    = model.CategoryID;
                product.ArSummary     = model.ArSummary;
                product.Summary       = model.Summary;
                product.Description   = model.Description;
                product.ArDescription = model.ArDescription;
                product.Price         = model.Price;
                product.isFeatured    = model.isFeatured;
                product.isOutOfStock  = model.isOutOfStock;
                product.ModifiedOn    = DateTime.Now;
                product.Cost          = model.Cost;
                product.SupplierID    = model.SupplierID;
                product.UserId        = user.Id;


                if (model.ProductSpecifications != null)
                {
                    product.ProductSpecifications.Clear();
                    product.ProductSpecifications.AddRange(model.ProductSpecifications.Select(x => new ProductSpecification()
                    {
                        ProductID = product.ID, Title = x.Title, Value = x.Value
                    }));
                }

                if (model.ProductCosts != null)
                {
                    product.ProductCosts.Clear();
                    product.ProductCosts.AddRange(model.ProductCosts.Select(x => new ProductCost()
                    {
                        ProductID = product.ID, Title = x.Title, Value = x.Value
                    }));
                }

                if (!string.IsNullOrEmpty(model.ProductPictures))
                {
                    var pictureIDs = model.ProductPictures
                                     .Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
                                     .Select(ID => int.Parse(ID)).ToList();

                    if (pictureIDs.Count > 0)
                    {
                        product.ProductPictures.Clear();
                        product.ProductPictures.AddRange(pictureIDs.Select(x => new ProductPicture()
                        {
                            ProductID = product.ID, PictureID = x
                        }).ToList());

                        product.ThumbnailPictureID = model.ThumbnailPicture != 0 ? model.ThumbnailPicture : pictureIDs.First();
                    }
                }

                ProductsService.Instance.UpdateProduct(product);
            }
            else
            {
                Product product = new Product();

                product.ID            = model.ID;
                product.Name          = model.Name;
                product.ArName        = model.ArName;
                product.CategoryID    = model.CategoryID;
                product.Summary       = model.Summary;
                product.ArSummary     = model.ArSummary;
                product.Description   = model.Description;
                product.ArDescription = model.ArDescription;
                product.Price         = model.Price;
                product.isFeatured    = model.isFeatured;
                product.isOutOfStock  = model.isOutOfStock;
                product.ModifiedOn    = DateTime.Now;
                product.Cost          = model.Cost;
                product.SupplierID    = model.SupplierID;
                product.UserId        = user.Id;

                if (model.ProductSpecifications != null)
                {
                    product.ProductSpecifications = new List <ProductSpecification>();
                    product.ProductSpecifications.AddRange(model.ProductSpecifications.Select(x => new ProductSpecification()
                    {
                        ProductID = product.ID, Title = x.Title, Value = x.Value
                    }));
                }

                if (model.ProductCosts != null)
                {
                    product.ProductCosts = new List <ProductCost>();
                    product.ProductCosts.AddRange(model.ProductCosts.Select(x => new ProductCost()
                    {
                        ProductID = product.ID, Title = x.Title, Value = x.Value
                    }));
                }

                if (!string.IsNullOrEmpty(model.ProductPictures))
                {
                    var pictureIDs = model.ProductPictures
                                     .Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
                                     .Select(ID => int.Parse(ID)).ToList();

                    if (pictureIDs.Count > 0)
                    {
                        product.ProductPictures = new List <ProductPicture>();
                        product.ProductPictures.AddRange(pictureIDs.Select(x => new ProductPicture()
                        {
                            ProductID = product.ID, PictureID = x
                        }).ToList());

                        product.ThumbnailPictureID = model.ThumbnailPicture != 0 ? model.ThumbnailPicture : pictureIDs.First();
                    }
                }

                ProductsService.Instance.SaveProduct(product);
            }

            return(RedirectToAction("Index"));
        }