public ActionResult Create([Bind(Include = "Product, FoodSourceId, StoresIds")] CreateProductsViewModel viewModel) { var foodSource = db.FoodSources.Find(viewModel.FoodSourceId); viewModel.Product.FoodSource = foodSource; // So the validation won't fail as it was null before we set it. ModelState.Remove("Product.FoodSource"); if (!ModelState.IsValid) { return(RedirectToAction("Index", "Error", new { message = "Data wasn't valid, please try again" })); } // Add the selected Stores viewModel.Product.Stores = new List <Store>(); foreach (var storeId in viewModel.StoresIds) { var storeToAdd = db.Stores.Find(storeId); viewModel.Product.Stores.Add(storeToAdd); } db.Products.Add(viewModel.Product); db.SaveChanges(); return(RedirectToAction("Index")); }
public static void AddProducts(CreateProductsViewModel model) { var shop = Data.FirstOrDefault(o => o.Id == model.ShopId); model.Products.ForEach(o => { var newProduct = new Product() { Name = o.Name, Price = o.Price, Id = 1 + Data.Max(s => { int maxId = s.Products.Max(x => x.Id); return(maxId); }) }; shop.Products.Add(newProduct); }); }
public ActionResult Edit([Bind(Include = "Product, FoodSourceId, StoresIds")] CreateProductsViewModel viewModel) { var curUser = (User)HttpContext.Session["user"]; if (curUser != null) { return(RedirectToAction("Index", "Error")); } if (!curUser.IsAdmin) { return(RedirectToAction("Index", "Error", new { message = "Missing Permissions" })); } // So the validation wont fail as it was null before we set it. ModelState.Remove("Product.FoodSource"); if (!ModelState.IsValid) { return(View(viewModel)); } Product product = db.Products.Where(r => r.Id == viewModel.Product.Id).Include(r => r.FoodSource).Include(r => r.Stores).FirstOrDefault(); product.Name = viewModel.Product.Name; product.ProductWeightInKilo = viewModel.Product.ProductWeightInKilo; var foodSource = db.FoodSources.Find(viewModel.FoodSourceId); product.FoodSource = foodSource; product.Stores = new List <Store>(); foreach (var storeToAdd in from storeId in viewModel.StoresIds let storeToAdd = db.Stores.Find(storeId) select storeToAdd) { product.Stores.Add(storeToAdd); } db.Entry(product).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); }
// GET: Products/Edit/5 public ActionResult Edit(int?id) { var curUser = (User)HttpContext.Session["user"]; if (curUser == null) { return(RedirectToAction("Index", "Error")); } if (!curUser.IsAdmin) { return(RedirectToAction("Index", "Error", new { message = "Missing permissions" })); } if (id == null) { return(RedirectToAction("Index", "Error")); } Product product = db.Products.Where(r => r.Id == id).Include(r => r.FoodSource).Include(r => r.Stores).FirstOrDefault(); if (product == null) { return(HttpNotFound()); } ViewBag.StoresList = new MultiSelectList(db.Stores.Select(i => new { Id = i.Id, Store = i.City + ", " + i.StreetAddress }), "Id", "Store"); ViewBag.FoodSourceList = new SelectList(db.FoodSources.Select(i => new { Id = i.Id, Name = i.Name }), "Id", "Name"); CreateProductsViewModel viewModel = new CreateProductsViewModel { Product = product }; viewModel.StoresIds.AddRange(from store in product.Stores select store.Id); viewModel.FoodSourceId = product.FoodSource.Id; return(View(viewModel)); }
public void Post(CreateProductsViewModel model) { DataRepository.AddProducts(model); }