コード例 #1
0
        public async Task <ActionResult> Edit(int id, [Bind("OrderId,CreditCardId, MailingAddressId, ShippingAddressId")] WizardsOrder order)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(order);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!OrderExists(order.OrderId))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }

            ViewData["CreditCards"]       = new SelectList(_context.CreditCard.Where(c => c.UserId == UserHelper.GetSessionUserId(this)), "CreditCardId", "CreditCardNumber");
            ViewData["MailingAddresses"]  = new SelectList(_context.Address.Include(a => a.AddressType).Where(a => a.AddressTypeId == 1), "AddressId", "Street1");
            ViewData["ShippingAddresses"] = new SelectList(_context.Address.Include(a => a.AddressType).Where(a => a.AddressTypeId == 2), "AddressId", "Street1");

            return(View(order));
        }
コード例 #2
0
        public async void TestEdit_InvalidOrder_ShouldFail(string value)
        {
            // Arrange
            OrdersController controller = new OrdersController(_context);
            int userId = int.Parse(value);

            try
            {
                // Act
                WizardsOrder replayOrder = await _context.WizardsOrder
                                           .FirstOrDefaultAsync(o => o.UserId == userId);

                replayOrder.OrderStatusId = 9;

                var result = await controller.Edit(replayOrder.OrderId, replayOrder);

                // Assert
                Assert.IsType <ViewResult>(result);
                ViewResult viewResult = (ViewResult)result;
                Assert.NotNull(viewResult.ViewData.ModelState);
                Assert.NotEmpty(viewResult.ViewData.ModelState.Keys);

                foreach (string item in viewResult.ViewData.ModelState.Keys)
                {
                    Assert.Equal("", item);
                }
            }
            catch (Exception ex)
            {
                Assert.Equal("System.NullReferenceException", ex.GetType().ToString());
            }
        }
コード例 #3
0
        public async Task <ActionResult> Create([Bind("OrderId, UserId, CreditCardId, MailingAddressId, ShippingAddressId, OrderStatusId, Total")] WizardsOrder order)
        {
            var sessionUserId = UserHelper.GetSessionUserId(this);

            if (ModelState.IsValid)
            {
                var cart = CartHelper.getCartFromSession(this);
                order.UserId        = (int)sessionUserId;
                order.OrderStatusId = 1; //Default is processing
                order.Total         = calculateTotal(cart);
                _context.Add(order);
                await _context.SaveChangesAsync();

                foreach (var item in cart)
                {
                    // Update order details
                    OrderDetail od = new OrderDetail()
                    {
                        OrderId = order.OrderId, GameId = item.Game.GameId, Quantity = item.Quantity, IsDigital = item.IsDigital
                    };
                    _context.Add(od);

                    // Update game quantity
                    if (!item.IsDigital)
                    {
                        var game = _context.Game.Find(item.Game.GameId);
                        game.GameQty = (short)(game.GameQty - item.Quantity);
                        _context.Update(game);
                    }
                }

                await _context.SaveChangesAsync();

                CartHelper.clearCart(this);
                return(RedirectToAction("Index"));
            }

            var cardList = _context.CreditCard.Where(c => c.UserId == sessionUserId);
            await cardList.ForEachAsync(c => c.CreditCardNumber = Base64Helper.decode(c.CreditCardNumber));

            ViewData["UserId"]            = sessionUserId;
            ViewData["CreditCardId"]      = new SelectList(cardList, "CreditCardId", "CreditCardNumber");
            ViewData["MailingAddressId"]  = new SelectList(_context.Address.Include(a => a.AddressType).Where(a => a.AddressTypeId == 1 && a.UserId == sessionUserId), "AddressId", "Street1");
            ViewData["ShippingAddressId"] = new SelectList(_context.Address.Include(a => a.AddressType).Where(a => a.AddressTypeId == 2 && a.UserId == sessionUserId), "AddressId", "Street1");
            ViewData["OrderStatusId"]     = 1; // Default to Processing
            ViewData["Total"]             = calculateTotal(CartHelper.getCartFromSession(this));

            return(View(order));
        }
コード例 #4
0
        private void InitializeOrder()
        {
            try
            {
                _context.Entry(order).State = EntityState.Detached;
            }
            catch (Exception)
            {
                // TODO: nothing...
            }

            order = new WizardsOrder()
            {
                OrderId           = 1,
                UserId            = 26,
                Total             = 117m,
                CreditCardId      = 18,
                MailingAddressId  = 20,
                ShippingAddressId = 21,
                OrderStatusId     = 1
            };
        }