Пример #1
0
        public BasketSaveResponse Save(string userId, OrderStatus orderStatus)
        {
            var response = new BasketSaveResponse();

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

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

            var userBasket = _userSessionService.GetBasketForUser(userId);

            var orderRequest = new SaveOrderRequest
            {
                DeliveryType = DeliveryType.Unknown.ToString(),
                Voucher      = "",
                UserId       = _userSessionService.GetUserByUserToken(userId),
                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);
            }

            return(response);
        }
Пример #2
0
        public void SetUp()
        {
            _orderRepository = new Mock <IOrderRepository>();
            _orderRepository.Setup(x => x.SaveOrder(It.IsAny <SaveOrderRequest>())).Returns(() => new SaveOrderResponse());

            _userSessionService = new Mock <IUserSessionService>();
            _userSessionService.Setup(x => x.IsLoggedIn(It.IsAny <string>())).Returns(() => true);
            _userSessionService.Setup(x => x.GetBasketForUser(It.IsAny <string>())).Returns(() => new Data.Services.UserSession.Basket
            {
                Items = new List <BasketItem>
                {
                    new BasketItem
                    {
                        Pizza = new PizzaRecord {
                            Id = 2
                        },
                        Size = new SizeRecord {
                            Id = 3
                        },
                        ExtraToppings = new List <ToppingRecord> {
                            new ToppingRecord {
                                Id = 4
                            }
                        },
                        Total = Money.From(1200)
                    }
                },
                Total = Money.From(1200)
            });
            _userSessionService.Setup(x => x.GetUserByUserToken(It.IsAny <string>())).Returns(() => 1);

            _voucherService = new Mock <IVoucherService>();
            _voucherService.Setup(x => x.Verify(It.IsAny <Data.Services.UserSession.Basket>(), It.IsAny <List <DeliveryType> >(),
                                                It.IsAny <string>())).Returns(() => new VerifyVoucherResponse
            {
                Total = Money.From(1100)
            });

            var subject = new BasketService(_orderRepository.Object, _userSessionService.Object, _voucherService.Object);

            _result = subject.Save("USER_TOKEN", OrderStatus.Partial);
        }