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)); }
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")); }
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()); }
//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(); } }