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); }
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()); }
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); }
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); }
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); }
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")); }