コード例 #1
0
        public ActionResult Apply(int basketId)
        {
            var selectedBasket = _basketService.GetBasketById(basketId);

            if (selectedBasket.HasError)
            {
                return(Redirect("/Basket"));
            }


            var mappedBasket = new Data.Services.UserSession.Basket
            {
                Total = selectedBasket.Basket.Total,
                Items = selectedBasket.Basket.Orders.ConvertAll(orderDetails => new BasketItem
                {
                    Pizza         = orderDetails.Order.Pizza,
                    Size          = orderDetails.Order.Size,
                    ExtraToppings = orderDetails.Toppings.ConvertAll(x => x.Topping),
                    Total         = orderDetails.Total
                })
            };

            _userSessionService.ClearBasketForUser(Session["UserId"].ToString());
            _userSessionService.SetBasketForUser(Session["UserId"].ToString(), mappedBasket);

            return(Redirect("/Basket"));
        }
コード例 #2
0
        public IHttpActionResult Apply(int orderId)
        {
            if (Request.Headers.Authorization == null)
            {
                return(Unauthorized());
            }

            var selectedBasket = _basketService.GetBasketById(orderId);

            if (selectedBasket.HasError)
            {
                return(Ok(selectedBasket));
            }


            var mappedBasket = new Data.Services.UserSession.Basket
            {
                Total = selectedBasket.Basket.Total,
                Items = selectedBasket.Basket.Orders.ConvertAll(orderDetails => new BasketItem
                {
                    Pizza         = orderDetails.Order.Pizza,
                    Size          = orderDetails.Order.Size,
                    ExtraToppings = orderDetails.Toppings.ConvertAll(x => x.Topping),
                    Total         = orderDetails.Total
                })
            };

            _userSessionService.ClearBasketForUser(Encoding.UTF8.GetString(Convert.FromBase64String(Request.Headers.Authorization.Parameter)));
            _userSessionService.SetBasketForUser(Encoding.UTF8.GetString(Convert.FromBase64String(Request.Headers.Authorization.Parameter)), mappedBasket);

            return(Ok());
        }
コード例 #3
0
        public BasketCheckoutResponse Checkout(DeliveryType delivery, string voucher, string userId, OrderStatus orderStatus)
        {
            var response = new BasketCheckoutResponse();

            if (!_userSessionService.IsLoggedIn(userId))
            {
                response.AddError(new Error
                {
                    Code        = ErrorCodes.UserNotLoggedIn,
                    UserMessage = "You have to be logged in to complete your order"
                });
                return(response);
            }

            if (delivery == DeliveryType.Unknown)
            {
                response.AddError(new Error
                {
                    Code        = ErrorCodes.DeliveryTypeUnknown,
                    UserMessage = "Delivery type not specified."
                });
                return(response);
            }

            if (orderStatus == OrderStatus.Unknown)
            {
                response.AddError(new Error
                {
                    Code        = ErrorCodes.OrderStatusUnkown,
                    UserMessage = "Order status not specified."
                });
                return(response);
            }

            var userBasket = _userSessionService.GetBasketForUser(userId);

            if (!voucher.IsEmpty())
            {
                var verifyVoucherResponse = _voucherService.Verify(userBasket, new List <DeliveryType> {
                    delivery
                }, voucher);

                if (!verifyVoucherResponse.HasError)
                {
                    userBasket.Total = verifyVoucherResponse.Total;
                }
            }

            var orderRequest = new SaveOrderRequest
            {
                UserId       = _userSessionService.GetUserByUserToken(userId),
                DeliveryType = delivery.ToString(),
                Voucher      = voucher,
                GrandTotal   = userBasket.Total.InPence,
                Status       = orderStatus.ToString(),
                Orders       = userBasket.Items.ConvertAll(x => new Order
                {
                    PizzaId         = x.Pizza.Id,
                    SizeId          = x.Size.Id,
                    ExtraToppingIds = x.ExtraToppings.ConvertAll(y => y.Id),
                    SubTotal        = x.Total.InPence
                })
            };
            var saveOrderResponse = _orderRepository.SaveOrder(orderRequest);

            if (saveOrderResponse.HasError)
            {
                response.AddError(saveOrderResponse.Error);
            }

            _userSessionService.ClearBasketForUser(userId);

            return(response);
        }