public async Task Checkout(Basket basket)
        {
            var checkout = checkoutService.Checkout(basket);

            cache.Set(checkout.OrderId, Context.ConnectionId);
            await Clients.Caller.SendAsync("OnCheckoutDone", checkout);
        }
예제 #2
0
        public void ShouldApplyDiscountsOnCheckout()
        {
            // Given
            var shoppingBasket = new ShoppingBasket
            {
                Products = new List <Product>
                {
                    new Bread
                    {
                        ProductType = ProductType.BREAD
                    },
                    new Butter
                    {
                        ProductType = ProductType.BUTTER
                    },
                    new Milk
                    {
                        ProductType = ProductType.MILK
                    }
                },
                Total = 0.0
            };

            _mockDiscountService.Setup(d => d.ApplyDiscounts(It.IsAny <ShoppingBasket>()));

            // When
            _checkoutService.Checkout(shoppingBasket);

            // Then
            _mockDiscountService.Verify(d => d.ApplyDiscounts(It.IsAny <ShoppingBasket>()), Times.Once);
        }
예제 #3
0
        public IActionResult Checkout([FromBody] OrderDto order)
        {
            // Currently just use UserName for simplicity
            order.CustomerId = User.FindFirst(ClaimTypes.Name).Value;
            var result = _mapper.Map <CheckoutDto>(_checkoutService.Checkout(order));

            return(Json(result));
        }
예제 #4
0
        public void RunScenario()
        {
            foreach (var item in Items)
            {
                _checkoutService.Scan(item);
            }

            var total = _checkoutService.Checkout();

            Assert.AreEqual(2.4m, total);
        }
예제 #5
0
        public ActionResult <CartDto> ProceedToCheckOut(CartDto cart)
        {
            var defaultCartItems = _cartService.GetCartItems();
            var cartDto          = new CartDto
            {
                CartId    = Guid.NewGuid().ToString(),
                CartItems = cart.CartItems != null && cart.CartItems.Count() > 0 && cart.CartItems.FirstOrDefault().Quantity > 0 ? cart.CartItems : defaultCartItems
            };
            var result = _checkoutService.Checkout(cartDto);

            return(result);
        }
        public void Checkout()
        {
            // take payment and authorise
            CheckoutPaymentDetail checkoutDetail = new CheckoutPaymentDetail();
            checkoutDetail.CardNumber = View.CardNumber;
            checkoutDetail.CustomerName = View.CustomerName;

            _checkoutService.Checkout(checkoutDetail);

            // redirect to confirmation page
            Navigation.GoTo(ViewPages.Confirmation);
        }
예제 #7
0
        public ActionResult Checkout(OrderViewModel orderViewModel)
        {
            var cart      = Session[ConstantCommon.Cart];
            var cartItems = (List <ShoppingCartItem>)cart;

            if (cartItems.Count == 0)
            {
                ModelState.AddModelError("", "Giỏ hàng của bạn hiện trống không ah ^_^, chọn mua vài cuốn nhé!");
            }

            if (ModelState.IsValid)
            {
                List <OrderDetail> orderDetails = new List <OrderDetail>();

                foreach (var item in cartItems)
                {
                    var orderDetail = new OrderDetail()
                    {
                        Book      = item.Book,
                        BookId    = item.BookId,
                        Quantity  = item.Quantity,
                        UnitPrice = item.Book.Price,
                    };
                    orderDetails.Add(orderDetail);
                }
                var order = new Order()
                {
                    ShipName    = orderViewModel.ShipName,
                    ShipAddress = orderViewModel.ShipAddress,
                    ShipCity    = orderViewModel.ShipCity,
                    PhoneNumber = orderViewModel.PhoneNumber
                };

                _checkoutService.Checkout(order, orderDetails);

                cartItems.Clear();

                return(RedirectToAction("CheckoutComplete"));
            }

            return(View(orderViewModel));
        }
예제 #8
0
        public async Task <IActionResult> Post([FromBody] CheckoutRequest request)
        {
            if (request == null ||
                request.PostalCode == null)
            {
                return(BadRequest());
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            var checkoutResult = await _checkoutService.Checkout(request.PostalCode);

            var response = new CheckoutResponse()
            {
                PreTax = checkoutResult.PreTax, PostTax = checkoutResult.PostTax
            };

            return(new OkObjectResult(response));
        }
        public async Task <CheckoutDto> Checkout([FromQuery] string userId)
        {
            try
            {
                var checkout = await _checkoutService.Checkout(userId);

                return(new CheckoutDto()
                {
                    Date = checkout.Date,
                    TotalPrice = checkout.TotalPrice,
                    Products = checkout.Products.Select(product => new CheckoutItem()
                    {
                        ProductId = product.Product.Id,
                        ProductName = product.Product.Name,
                        Price = product.Price,
                        Quantity = product.Quantity
                    }).ToList()
                });
            }
            catch (Exception error)
            {
                throw error;
            }
        }
예제 #10
0
 public IActionResult OnPost()
 {
     checkoutService.Checkout(Cart, Person);
     return(RedirectToPage("PostCheckout"));
 }
예제 #11
0
 public ActionResult <Checkout> Checkout(Basket basket)
 {
     return(checkoutService.Checkout(basket));
 }