Esempio n. 1
0
        public IHttpActionResult AddToBasket([FromBody] AddToBasketRequest request)
        {
            if (request.PizzaId == 0 || request.SizeId == 0 || request.User == null)
            {
                return(BadRequest());
            }

            var basketItem = new BasketData
            {
                PizzaId         = request.PizzaId,
                SizeId          = request.SizeId,
                ExtraToppingIds = request.ToppingIds
            };

            _userSessionService.AddItemToBasket(request.User.Token, basketItem);
            return(Ok(_userSessionService.GetBasketForUser(request.User.Token)));
        }
Esempio n. 2
0
        public ActionResult Index()
        {
            if (Session["UserId"] == null)
            {
                Session["UserId"] = _userSessionService.NewUser();
            }

            if (_userSessionService.IsLoggedIn(Session["UserId"].ToString()))
            {
                return(Redirect("/"));
            }

            var response = new RegisterControllerIndexData
            {
                Basket   = _userSessionService.GetBasketForUser(Session["UserId"].ToString()),
                Total    = _userSessionService.GetBasketTotalForUser(Session["UserId"].ToString()),
                LoggedIn = _userSessionService.IsLoggedIn(Session["UserId"].ToString())
            };

            return(View(response));
        }
        public ActionResult Index()
        {
            if (Session["UserId"] == null)
            {
                Session["UserId"] = _userSessionService.NewUser();
            }

            var response = new BasketControllerIndexData
            {
                Basket   = _userSessionService.GetBasketForUser(Session["UserId"].ToString()),
                Voucher  = _userSessionService.GetVoucherForUser(Session["UserId"].ToString()),
                Total    = _userSessionService.GetBasketTotalForUser(Session["UserId"].ToString()),
                LoggedIn = _userSessionService.IsLoggedIn(Session["UserId"].ToString())
            };

            return(View(response));
        }
Esempio n. 4
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);
        }