Ejemplo n.º 1
0
        public IActionResult Index()
        {
            GameCart cart = null;

            if (User.Identity.IsAuthenticated)
            {
                var currentUser = _userManager.GetUserAsync(User).Result;
                cart = _context.GameCarts.Include(x => x.GameCartProducts).ThenInclude(x => x.Game).Single(x => x.ApplicationUserID == currentUser.Id);
            }
            else if (Request.Cookies.ContainsKey("cart_id"))
            {
                int existingCartID = int.Parse(Request.Cookies["cart_id"]);
                cart = _context.GameCarts.Include(x => x.GameCartProducts).ThenInclude(x => x.Game).FirstOrDefault(x => x.ID == existingCartID);
            }
            else
            {
                cart = new GameCart();
            }

            return(View(cart));
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> Remove(int id, int quantity)
        {
            GameCart cart = null;

            if (User.Identity.IsAuthenticated)
            {
                var currentUser = await _userManager.GetUserAsync(User);

                cart = await _context.GameCarts.Include(x => x.GameCartProducts).FirstOrDefaultAsync(x => x.ApplicationUserID == currentUser.Id);
            }
            else
            {
                if (Request.Cookies.ContainsKey("cart_id"))
                {
                    int existingCartID = int.Parse(Request.Cookies["cart_id"]);
                    cart = await _context.GameCarts.Include(x => x.GameCartProducts).FirstOrDefaultAsync(x => x.ID == existingCartID);

                    cart.DateLastModified = DateTime.Now;
                }
            }
            GameCartProduct product = cart.GameCartProducts.FirstOrDefault(x => x.GameID == id);

            _context.Remove(product);

            product.Quantity        -= quantity;
            product.DateLastModified = DateTime.Now;

            await _context.SaveChangesAsync();

            if (!User.Identity.IsAuthenticated)
            {
                //At the end of this page, always set the cookie.  This might just overwrite the old cookie!
                Response.Cookies.Append("cart_id", cart.ID.ToString(), new CookieOptions
                {
                    Expires = DateTime.Now.AddYears(1)
                });
            }

            return(RedirectToAction("Index", "Cart"));
        }
Ejemplo n.º 3
0
        public async Task <IActionResult> Index(CheckoutModel model, string nonce)
        {
            if (ModelState.IsValid)
            {
                GameOrder order = new GameOrder
                {
                    City             = model.City,
                    State            = model.State,
                    Email            = model.Email,
                    StreetAddress    = model.StreetAddress,
                    ZipCode          = model.ZipCode,
                    DateCreated      = DateTime.Now,
                    DateLastModified = DateTime.Now
                };
                GameCart cart = null;
                if (User.Identity.IsAuthenticated)
                {
                    var currentUser = _userManager.GetUserAsync(User).Result;
                    cart = _context.GameCarts.Include(x => x.GameCartProducts).ThenInclude(x => x.Game).Single(x => x.ApplicationUserID == currentUser.Id);
                }
                else if (Request.Cookies.ContainsKey("cart_id"))
                {
                    int existingCartID = int.Parse(Request.Cookies["cart_id"]);
                    cart = _context.GameCarts.Include(x => x.GameCartProducts).ThenInclude(x => x.Game).FirstOrDefault(x => x.ID == existingCartID);
                }
                foreach (var cartItem in cart.GameCartProducts)
                {
                    order.GameOrderProducts.Add(new GameOrderProduct
                    {
                        DateCreated        = DateTime.Now,
                        DateLastModified   = DateTime.Now,
                        Quantity           = cartItem.Quantity ?? 1,
                        ProductID          = cartItem.GameID,
                        ProductDescription = cartItem.Game.Description,
                        ProductName        = cartItem.Game.Name,
                        ProductPrice       = cartItem.Game.Price ?? 0
                    });
                }

                _context.GameCartProducts.RemoveRange(cart.GameCartProducts);
                _context.GameCarts.Remove(cart);

                if (Request.Cookies.ContainsKey("cart_id"))
                {
                    Response.Cookies.Delete("cart_id");
                }

                _context.GameOrders.Add(order);
                _context.SaveChanges();

                await _braintreeGateway.Transaction.SaleAsync(new TransactionRequest
                {
                    Amount     = (decimal)order.GameOrderProducts.Sum(x => x.Quantity *x.ProductPrice), //You can also do 1m here
                    CreditCard = new TransactionCreditCardRequest
                    {
                        CardholderName  = "Test Cardholder",
                        CVV             = "123",
                        ExpirationMonth = DateTime.Now.AddMonths(1).ToString("MM"),
                        ExpirationYear  = DateTime.Now.AddMonths(1).ToString("yyyy"),
                        Number          = "4111111111111111"
                    }
                });

                var result = await _braintreeGateway.Transaction.SaleAsync(new TransactionRequest
                {
                    Amount             = (decimal)order.GameOrderProducts.Sum(x => x.Quantity *x.ProductPrice), //You can also do 1m here
                    PaymentMethodNonce = nonce
                });

                await _emailSender.SendEmailAsync(model.Email, "Your order " + order.ID, "Thanks for ordering!  You bought : " + String.Join(",", order.GameOrderProducts.Select(x => x.ProductName)));

                //TODO: Save this information to the database so we can ship the order
                return(RedirectToAction("Index", "Receipt", new { id = order.ID }));
            }
            //TODO: we have an error!  Redisplay the form!
            return(View());
        }
Ejemplo n.º 4
0
        //Main interpreter loop
        public void Execute()
        {
            while (gpu.drawing)
            {
            }

            instr = GameCart.Read8(registers.PC);
            var opcode = OpcodeTable.Table[instr];

            registers.Immediate8  = GameCart.Read8(registers.PC + 1);
            registers.Immediate16 = GameCart.Read16(registers.PC + 1);

            //debug output
            if (debugOut)
            {
                StringBuilder sb     = new StringBuilder();
                string        disasm = opcode.Disassembly;
                if (disasm.Contains("X4"))
                {
                    disasm = String.Format(disasm, registers.Immediate16);
                }
                else if (disasm.Contains("X2"))
                {
                    disasm = String.Format(disasm, registers.Immediate8);
                }
                if (disasm.Contains("X2"))
                {
                    disasm = String.Format(disasm, registers.A);
                }
                sb.Clear();
                sb.Append("PC: $");
                sb.Append(registers.PC.ToString("X4"));
                sb.Append(" Disasm: ");
                sb.Append(disasm);
                sb.Append(" Opcode: ");
                sb.Append(instr.ToString("X2"));
                sb.Append("\n");
                File.AppendAllText(@"log.txt", sb.ToString());
            }

            if (opcode.Disassembly.Contains("UNIMP"))
            {
                string disasm = opcode.Disassembly;
                if (disasm.Contains("X4"))
                {
                    disasm = String.Format(disasm, registers.Immediate16);
                }
                else if (disasm.Contains("X2"))
                {
                    disasm = String.Format(disasm, registers.Immediate8);
                }
                //debugOut = true;
                Console.WriteLine("Unimplemented opcode: {0:X2}", instr);
                Console.WriteLine("PC: ${0:X4} Disasm: {1} Opcode: {2:X2}", registers.PC, disasm, instr);
                //Console.ReadLine();
            }

            registers.PC += opcode.Length;
            registers.M   = opcode.M;
            registers.T   = opcode.T;

            opcode.Execute(ref registers, GameCart.RAM);

            registers.TotalM += registers.M;
            registers.TotalT += registers.T;

            //gpu.SetCPUExecutionState(false);
            if (gpu.GetYCounter() == 154 && registers.Interrupts)
            {
                VblankInterrupt();
            }
        }