public bool AddGearToCart(GearDetail model) { DoesCartExist(); using (var ctx = new ApplicationDbContext()) { var cartUpdateEntity = ctx.Carts.Include(e => e.GearInCart).Single(e => e.UserId == _userId); var gearEntity = ctx.Gear.Find(model.GearId); int?gearIdToAddTo = 0; foreach (var gear in cartUpdateEntity.GearInCart) { if (gear.GearId == model.GearId) { gearIdToAddTo = gear.GearId; } } if (gearIdToAddTo == 0) { var gearInCart = new IndividualGear() { AmountOfGearInCart = model.NumberOfGearInCart, NameOfGear = model.Name, Price = model.Price, GearId = model.GearId, CartId = cartUpdateEntity.CartId, UserId = _userId }; cartUpdateEntity.GearInCart.Add(gearInCart); ctx.GearInCarts.Add(gearInCart); gearEntity.NumAvailable -= model.NumberOfGearInCart; return(ctx.SaveChanges() >= 1); } else { var gear = ctx.Gear.Find(model.GearId); var gearAlreadyInCart = ctx.GearInCarts.Single(e => e.GearId == model.GearId && e.UserId == _userId); gear.NumAvailable -= model.NumberOfGearInCart; gearAlreadyInCart.AmountOfGearInCart += model.NumberOfGearInCart; return(ctx.SaveChanges() >= 1); } } }
public ActionResult AddGearToCart() { GearDetail modelToAddToCart = (GearDetail)TempData["GearToAddToCart"]; var service = CreateCartService(); if (service.AddGearToCart(modelToAddToCart)) { TempData["SaveResult"] = "Successfully added to your cart!"; return(RedirectToAction("Index")); } TempData["SaveResult"] = "Was not able to add to your cart"; return(RedirectToAction("Index", "Category")); }
public ActionResult Details(int id, GearDetail model) { if (!ModelState.IsValid) { return(View(model)); } if (id != model.GearId) { ModelState.AddModelError("", "IDs do not match"); return(View(model)); } if (model.NumberOfGearInCart <= 0 || model.NumberOfGearInCart > model.NumAvailable) { ModelState.AddModelError("", "You cannot purchase that many"); return(View(model)); } TempData["GearToAddToCart"] = model; return(RedirectToAction("AddGearToCart", "Cart")); }