Esempio n. 1
0
        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);
                }
            }
        }
Esempio n. 2
0
        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"));
        }
Esempio n. 3
0
        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"));
        }