public ActionResult Create(CreateProductRequest request) { if (!ModelState.IsValid) { return View(); } var product = new Product { CategoryId = request.CategoryId, Description = request.Description, MSRP = request.MSRP, Name = request.Name, Price = request.Price, SKU = request.SKU, Summary = request.Summary, LastUpdated = DateTime.UtcNow, LastUpdatedUserId = GetUserId(this), }; _context.Products.Add(product); _context.SaveChanges(); TempData.SuccessMessage($"Successfully created \"{product.Name}\""); return RedirectToAction(nameof(Index)); }
public ActionResult Add(string sku, int quantity = 1) { var product = _context.Products.FirstOrDefault(x => x.SKU == sku); var cart = GetCart(); var item = cart.Items.FirstOrDefault(x => x.SKU == sku); if (item == null) { item = new ShoppingCartItem { SKU = product?.SKU, Name = product?.Name, MSRP = (product?.MSRP).GetValueOrDefault(), Price = (product?.Price).GetValueOrDefault(), Quantity = quantity, }; cart.Items.Add(item); } else { item.Quantity += quantity; } if (item.Quantity <= 0) { cart.Items.Remove(item); } try { _context.SaveChanges(); } catch (DbEntityValidationException ex) { var errors = ex.EntityValidationErrors.SelectMany(x => x.ValidationErrors); foreach (var error in errors) { ModelState.AddModelError(error.PropertyName, error.ErrorMessage); } } if (!ModelState.IsValid) { return(View()); } TempData["SuccessMessage"] = $"Successfully added {item.Name} to the cart"; return(RedirectToAction("Index", "Cart")); }
public UpdateProductResponse Update(UpdateProductRequest request) { var existing = _context.Products.Find(request.Id); if (existing == null) { return(new UpdateProductResponse { Success = false, Message = $"Couldn't update product #\"{request.Id}\": product not found!", }); } var hasPriceChanged = existing.Price != request.Price; existing.CategoryId = request.CategoryId; existing.Description = request.Description; existing.MSRP = request.MSRP; existing.Name = request.Name; existing.Price = request.Price; existing.SKU = request.SKU; existing.Summary = request.Summary; existing.LastUpdated = DateTime.UtcNow; _context.SaveChanges(); if (hasPriceChanged) { var cartsToUpdate = _context.ShoppingCarts .Include("Items") .Where(cart => cart.Items.Any(x => x.SKU == request.SKU)); foreach (var cart in cartsToUpdate) { foreach (var cartItem in cart.Items.Where(x => x.SKU == request.SKU)) { cartItem.Price = request.Price; } cart.Recalculate(); } } _context.SaveChanges(); return(new UpdateProductResponse { Success = true, Message = $"Successfully updated \"{request.Name}\"", }); }
public ActionResult Create([Bind(Exclude = "Id")] Product product) { if (!ModelState.IsValid) { return(View()); } product.LastUpdated = DateTime.UtcNow; product.LastUpdatedUserId = GetUserId(this); _context.Products.Add(product); _context.SaveChanges(); TempData["SuccessMessage"] = $"Successfully created \"{product.Name}\""; return(RedirectToAction(nameof(Index))); }