Ejemplo n.º 1
0
 public CartController(ApplicationDbContext db)
 {
     _db = db;
     SuperCartViewModel = new SuperCartViewModel()
     {
         CartVM1 = new List <CartViewModel>(),
         Codes   = new List <Code>()
     };
 }
Ejemplo n.º 2
0
 public CartController(ApplicationDbContext db)
 {
     _db = db;
     SuperCartViewModel = new SuperCartViewModel()
     {
         CartVM1         = new List <CartViewModel>(),
         CartVM2         = new List <CartViewModel>(),
         AccountDiscount = false,
         GameDiscount    = false
     };
 }
Ejemplo n.º 3
0
        public async Task <IActionResult> Index(int?id)
        {
            List <CartViewModel> lstCart = HttpContext.Session.Get <List <CartViewModel> >("ShoppingCartSession");

            if (lstCart == null)
            {
                lstCart = new List <CartViewModel>();
            }
            if (id.HasValue)
            {
                bool alreadyInCart = false;
                var  game          = await _db.Games.Where(u => u.ID == id).FirstOrDefaultAsync();

                foreach (var item in lstCart)
                {
                    if (item.Game.ID == id)
                    {
                        if (item.Amount < item.Game.AvailableCode)
                        {
                            item.Amount++;
                        }
                        alreadyInCart = true;
                        break;
                    }
                }
                if (alreadyInCart == false)
                {
                    lstCart.Add(new CartViewModel()
                    {
                        Game   = game,
                        Amount = 1,
                    });
                }
            }
            HttpContext.Session.Set("ShoppingCartSession", lstCart);
            List <CartViewModel> cartViewModels = new List <CartViewModel>();

            foreach (var product in lstCart)
            {
                var studio = await _db.Studios.Where(u => u.ID == product.Game.StudioID).FirstOrDefaultAsync();

                product.Studio = studio;
                cartViewModels.Add(product);
            }
            SuperCartViewModel cartViewModel = new SuperCartViewModel()
            {
                CartVM1 = cartViewModels,
            };

            return(View(cartViewModel));
        }
Ejemplo n.º 4
0
        public async Task <IActionResult> RemoveFromCartInCart(int id, string type = null)
        {
            List <CartViewModel> lstCart = HttpContext.Session.Get <List <CartViewModel> >("ShoppingCartSession");

            if (lstCart == null)
            {
                lstCart = new List <CartViewModel>();
            }
            if (type == "Code")
            {
                foreach (var item in lstCart)
                {
                    if (item.Game.ID == id)
                    {
                        lstCart.Remove(item);
                        break;
                    }
                }
            }
            HttpContext.Session.Set("ShoppingCartSession", lstCart);
            List <CartViewModel> cartViewModels = new List <CartViewModel>();

            foreach (var product in lstCart)
            {
                var studio = await _db.Studios.Where(u => u.ID == product.Game.StudioID).FirstOrDefaultAsync();

                product.Studio = studio;
                cartViewModels.Add(product);
            }
            SuperCartViewModel cartViewModel = new SuperCartViewModel()
            {
                CartVM1 = cartViewModels,
            };

            return(View(nameof(Index), cartViewModel));
        }
Ejemplo n.º 5
0
        public async Task <IActionResult> Checkout(string Discount = null)
        {
            List <CartViewModel> lstCart         = HttpContext.Session.Get <List <CartViewModel> >("ShoppingCartSession");
            List <CartViewModel> lstCart2        = HttpContext.Session.Get <List <CartViewModel> >("ShoppingCartSession2");
            List <CartViewModel> cartViewModels  = new List <CartViewModel>();
            List <CartViewModel> cartViewModels1 = new List <CartViewModel>();

            foreach (var product in lstCart)
            {
                var studio = await _db.Studios.Where(u => u.ID == product.Game.StudioID).FirstOrDefaultAsync();

                product.Studio = studio;
                cartViewModels.Add(product);
            }
            foreach (var product in lstCart2)
            {
                var studio = await _db.Studios.Where(u => u.ID == product.Game.StudioID).FirstOrDefaultAsync();

                product.Studio = studio;
                cartViewModels1.Add(product);
            }
            SuperCartViewModel cartViewModel = new SuperCartViewModel()
            {
                CartVM1 = cartViewModels,
                CartVM2 = cartViewModels1
            };
            var user = await _db.ApplicationUsers.Where(u => u.Email == User.Identity.Name).FirstOrDefaultAsync();

            var sum1 = lstCart.Sum(u => u.Amount * u.Game.Price);
            var sum2 = lstCart.Sum(u => u.Amount * (u.Game.Price * 0.1));

            if (user.Balance >= (sum1 + sum2))
            {
                Order order = new Order()
                {
                    ApplicationUserID = user.Id,
                    Total             = sum1,
                    PurchasedDate     = DateTime.Now,
                };
                _db.Add(order);
                _db.SaveChanges();
                foreach (var product in lstCart)
                {
                    var code = await _db.Codes.Where(u => u.GameID == product.Game.ID && u.Available == true).FirstOrDefaultAsync();

                    code.Available = false;
                    var game = await _db.Games.Where(u => u.ID == product.Game.ID).FirstOrDefaultAsync();

                    game.AvailableCode -= 1;
                    OrderDetail orderDetail = new OrderDetail()
                    {
                        OrderID = order.ID,
                        CodeID  = code.ID
                    };
                    _db.Add(orderDetail);
                    _db.SaveChanges();
                }
                RentalHistory rentalHistory = new RentalHistory()
                {
                    ApplicationUserID = user.Id,
                    Total             = sum2
                };
                _db.Add(rentalHistory);
                _db.SaveChanges();
                foreach (var product in lstCart2)
                {
                    var gameAccount = await _db.GameAccounts.Where(u => u.GameID == product.Game.ID && u.Available == true).FirstOrDefaultAsync();

                    gameAccount.Available = false;
                    var game = await _db.Games.Where(u => u.ID == product.Game.ID).FirstOrDefaultAsync();

                    game.AvailableAccount -= 1;
                    RentalDetail rentalDetail = new RentalDetail()
                    {
                        RentalHistoryID = rentalHistory.ID,
                        GameAccountID   = gameAccount.ID,
                        StartDate       = DateTime.Now,
                        EndDate         = DateTime.Now.AddHours(product.Amount),
                        OnGoing         = true
                    };
                    _db.Add(rentalDetail);
                    _db.SaveChanges();
                }
                user.Balance -= (sum1 + sum2);
                await _db.SaveChangesAsync();
            }
            cartViewModel.Total = sum1 + sum2;
            return(View(cartViewModel));
        }