public ManagerResponse <GetVisitorOrdersResult, OrderHeader[]> GetVisitorOrders(
            string customerId,
            string shopName,
            DateTime?fromDate,
            DateTime?untilDate,
            int page,
            int count)
        {
            var getVisitorOrdersRequest          = new GetVisitorOrdersRequest(customerId, shopName);
            GetVisitorOrdersResult visitorOrders = this.orderServiceProvider.GetVisitorOrders(getVisitorOrdersRequest);

            if (visitorOrders.OrderHeaders == null)
            {
                return(new ManagerResponse <GetVisitorOrdersResult, OrderHeader[]>(visitorOrders, new OrderHeader[0]));
            }

            IEnumerable <OrderHeader> query = visitorOrders.OrderHeaders;

            if (fromDate != null)
            {
                query = query.Where(x => x.OrderDate >= fromDate);
            }

            if (untilDate != null)
            {
                query = query.Where(oh => oh.OrderDate <= untilDate);
            }

            OrderHeader[] array = query
                                  .Skip(page * count)
                                  .Take(count)
                                  .ToArray();

            return(new ManagerResponse <GetVisitorOrdersResult, OrderHeader[]>(visitorOrders, array));
        }
        private bool TryResolveSubmittedOrder(CartBase cart, out ManagerResponse <SubmitVisitorOrderResult, Order> managerResponse)
        {
            var getVisitorOrdersRequest = new GetVisitorOrdersRequest(cart.CustomerId, cart.ShopName);
            GetVisitorOrdersResult getVisitorOrdersResult = this.orderServiceProvider.GetVisitorOrders(getVisitorOrdersRequest);

            if (getVisitorOrdersResult.Success)
            {
                // Getting the latest order
                OrderHeader orderHeader = getVisitorOrdersResult.OrderHeaders.OrderByDescending(x => x.OrderDate).FirstOrDefault();
                if (orderHeader != null)
                {
                    var getVisitorOrderRequest = new GetVisitorOrderRequest(orderHeader.OrderID, orderHeader.CustomerId, orderHeader.ShopName);

                    GetVisitorOrderResult getVisitorOrderResult =
                        this.orderServiceProvider.GetVisitorOrder(getVisitorOrderRequest);

                    if (getVisitorOrderResult.Order != null)
                    {
                        managerResponse = new ManagerResponse <SubmitVisitorOrderResult, Order>(
                            new SubmitVisitorOrderResult {
                            Order = getVisitorOrderResult.Order, Success = true
                        },
                            getVisitorOrderResult.Order);

                        return(true);
                    }
                }
            }

            managerResponse = null;
            return(false);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="GetOrdersTest"/> class.
        /// </summary>
        public GetOrdersTest()
        {
            this.orderId      = 1;
            this.customerId   = 1;
            this.customerGuid = Guid.NewGuid();
            this.request      = new GetVisitorOrdersRequest(this.customerGuid.ToString(), "NopShop");
            this.result       = new GetVisitorOrdersResult();
            this.args         = new ServicePipelineArgs(this.request, this.result);

            this.client = Substitute.For <IOrdersServiceChannel>();

            var clientFactory = Substitute.For <ServiceClientFactory>();

            clientFactory.CreateClient <IOrdersServiceChannel>(Arg.Any <string>(), Arg.Any <string>()).Returns(this.client);

            this.processor = new GetOrders {
                ClientFactory = clientFactory
            };
        }