protected virtual async Task <Dictionary <Guid, TrackingInfoViewModel> > GetShipmentsTrackingInfoViewModels(
            OrderQueryResult orderQueryResult,
            GetCustomerOrdersParam param)
        {
            var shipmentsTrackingInfos = new Dictionary <Guid, TrackingInfoViewModel>();

            var getOrderTasks = orderQueryResult.Results.Select(order => OrderRepository.GetOrderAsync(new GetCustomerOrderParam
            {
                OrderNumber = order.OrderNumber,
                Scope       = param.Scope
            }));

            var orders = await Task.WhenAll(getOrderTasks).ConfigureAwait(false);

            foreach (var order in orders)
            {
                foreach (var shipment in order.Cart.Shipments)
                {
                    var shippingTrackingProvider = ShippingTrackingProviderFactory.ResolveProvider(shipment.FulfillmentMethod.Name);
                    var trackingInfoVm           = shippingTrackingProvider.GetTrackingInfoViewModel(shipment, param.CultureInfo);
                    shipmentsTrackingInfos.Add(shipment.Id, trackingInfoVm);
                }
            }

            return(shipmentsTrackingInfos);
        }
        private GetCustomerOrdersParam BuildGetCustomerOrdersParam()
        {
            var param = new GetCustomerOrdersParam
            {
                Scope       = GetRandom.String(32),
                CustomerId  = Guid.NewGuid(),
                CultureInfo = new CultureInfo("en-US"),
                OrderTense  = OrderTense.CurrentOrders,
                Page        = 1
            };

            return(param);
        }
Exemplo n.º 3
0
        public virtual FindOrdersRequest Create(GetCustomerOrdersParam param)
        {
            if (param == null)
            {
                throw new ArgumentNullException("param");
            }
            if (param.CultureInfo == null)
            {
                throw new ArgumentException("param.CultureInfo");
            }
            if (param.CustomerId == Guid.Empty)
            {
                throw new ArgumentException("param.CustomerId");
            }
            if (string.IsNullOrWhiteSpace(param.Scope))
            {
                throw new ArgumentException("param.Scope");
            }

            var request = new FindOrdersRequest
            {
                CustomerId  = param.CustomerId,
                CultureName = param.CultureInfo.Name,
                ScopeId     = param.Scope,
                Query       = new Query
                {
                    StartingIndex = (param.Page - 1) * OrderHistoryConfiguration.MaxItemsPerPage,
                    MaximumItems  = OrderHistoryConfiguration.MaxItemsPerPage,
                    Sortings      = new List <QuerySorting>
                    {
                        new QuerySorting
                        {
                            Direction    = SortDirection.Descending,
                            PropertyName = "Created"
                        }
                    }
                },
            };

            request.Query.Filter = new FilterGroup
            {
                Filters = new List <Filter>
                {
                    BuildOrderStatusFilter(param.OrderTense)
                }
            };

            return(request);
        }
Exemplo n.º 4
0
        protected virtual Dictionary <Guid, TrackingInfoViewModel> GetShipmentsTrackingInfoViewModels(
            List <Overture.ServiceModel.Orders.Order> orders,
            GetCustomerOrdersParam param)
        {
            var shipmentsTrackingInfos = new Dictionary <Guid, TrackingInfoViewModel>();

            foreach (var order in orders)
            {
                foreach (var shipment in order.Cart.Shipments)
                {
                    var shippingTrackingProvider = ShippingTrackingProviderFactory.ResolveProvider(shipment.FulfillmentMethod.Name);
                    var trackingInfoVm           = shippingTrackingProvider.GetTrackingInfoViewModel(shipment, param.CultureInfo);
                    shipmentsTrackingInfos.Add(shipment.Id, trackingInfoVm);
                }
            }

            return(shipmentsTrackingInfos);
        }
Exemplo n.º 5
0
        public void WHEN_OrderTense_equal_PastOrders_SHOULD_return_right_request()
        {
            //Arrange
            var factory = new FindOrdersRequestFactory();

            //Act
            var param = new GetCustomerOrdersParam
            {
                CustomerId  = Guid.NewGuid(),
                CultureInfo = new CultureInfo("en-US"),
                Scope       = GetRandom.String(32),
                Page        = 2,
                OrderTense  = OrderTense.PastOrders
            };
            var request = factory.Create(param);

            //Assert
            ValidateRequest(request, param, 10, false);
        }
Exemplo n.º 6
0
        private void ValidateRequest(FindOrdersRequest request, GetCustomerOrdersParam param,
                                     int expectedStartingIndex, bool expectedNot)
        {
            request.Should().NotBeNull();
            request.CustomerId.ShouldBeEquivalentTo(param.CustomerId);
            request.CultureName.ShouldBeEquivalentTo(param.CultureInfo.Name);
            request.ScopeId.ShouldBeEquivalentTo(param.Scope);
            request.Query.Should().NotBeNull();

            var query = request.Query;

            query.StartingIndex.ShouldBeEquivalentTo(expectedStartingIndex);
            query.MaximumItems.ShouldBeEquivalentTo(OrderHistoryConfiguration.MaxItemsPerPage);
            query.Filter.Should().NotBeNull();
            query.Filter.Filters.Should().NotBeNull();
            var filter = query.Filter.Filters.FirstOrDefault();

            filter.Should().NotBeNull();
            filter.Member.ShouldBeEquivalentTo("OrderStatus");
            filter.Operator.ShouldBeEquivalentTo(Operator.In);
            filter.Not.ShouldBeEquivalentTo(expectedNot);
        }
Exemplo n.º 7
0
        /// <summary>
        /// Gets the customer orders asynchronous.
        /// </summary>
        /// <param name="param">The get customer orders parameter.</param>
        /// <returns></returns>
        public virtual async Task <OrderQueryResult> GetCustomerOrdersAsync(GetCustomerOrdersParam param)
        {
            if (param == null)
            {
                throw new ArgumentNullException(nameof(param));
            }
            if (param.CultureInfo == null)
            {
                throw new ArgumentException(GetMessageOfNull(nameof(param.CultureInfo)), nameof(param));
            }
            if (param.CustomerId == null)
            {
                throw new ArgumentException(GetMessageOfNull(nameof(param.CustomerId)), nameof(param));
            }
            if (string.IsNullOrWhiteSpace(param.Scope))
            {
                throw new ArgumentException(GetMessageOfNullWhiteSpace(nameof(param.Scope)), nameof(param));
            }

            var request = FindOrdersRequestFactory.Create(param);
            var result  = await OvertureClient.SendAsync(request).ConfigureAwait(false);

            return(result?.TotalCount > 0 ? result : null);
        }
        /// <summary>
        /// Gets the OrderHistory ViewModel, containing a list of Orders.
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        public virtual async Task <OrderHistoryViewModel> GetOrderHistoryViewModelAsync(GetCustomerOrdersParam param)
        {
            if (param == null)
            {
                throw new ArgumentNullException("param");
            }
            if (param.CultureInfo == null)
            {
                throw new ArgumentException("param.CultureInfo");
            }
            if (param.CustomerId == null)
            {
                throw new ArgumentException("param.CustomerId");
            }
            if (string.IsNullOrWhiteSpace(param.Scope))
            {
                throw new ArgumentException("param.Scope");
            }

            var orderDetailBaseUrl = OrderUrlProvider.GetOrderDetailsBaseUrl(param.CultureInfo);

            var orderStatuses = await LookupService.GetLookupDisplayNamesAsync(new GetLookupDisplayNamesParam
            {
                CultureInfo = param.CultureInfo,
                LookupType  = LookupType.Order,
                LookupName  = "OrderStatus",
            }).ConfigureAwait(false);

            var orderQueryResult = await OrderRepository.GetCustomerOrdersAsync(param).ConfigureAwait(false);

            var shipmentsTrackingInfos = new Dictionary <Guid, TrackingInfoViewModel>();

            if (orderQueryResult != null && orderQueryResult.Results != null && param.OrderTense == OrderTense.CurrentOrders)
            {
                shipmentsTrackingInfos = await GetShipmentsTrackingInfoViewModels(orderQueryResult, param).ConfigureAwait(false);
            }

            var getOrderHistoryViewModelParam = new GetOrderHistoryViewModelParam
            {
                CultureInfo            = param.CultureInfo,
                OrderResult            = orderQueryResult,
                OrderStatuses          = orderStatuses,
                Page                   = param.Page,
                OrderDetailBaseUrl     = orderDetailBaseUrl,
                ShipmentsTrackingInfos = shipmentsTrackingInfos
            };

            var viewModel = OrderHistoryViewModelFactory.CreateViewModel(getOrderHistoryViewModelParam);

            return(viewModel);
        }
Exemplo n.º 9
0
        protected virtual async Task <List <Overture.ServiceModel.Orders.Order> > GetOrders(OrderQueryResult orderQueryResult,
                                                                                            GetCustomerOrdersParam param)
        {
            var getOrderTasks = orderQueryResult.Results.Select(order => OrderRepository.GetOrderAsync(new GetCustomerOrderParam
            {
                OrderNumber = order.OrderNumber,
                Scope       = param.Scope
            }));

            var orders = await Task.WhenAll(getOrderTasks).ConfigureAwait(false);

            return(orders.ToList());
        }
Exemplo n.º 10
0
        /// <summary>
        /// Gets the OrderHistory ViewModel, containing a list of Orders.
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        public virtual async Task <OrderHistoryViewModel> GetOrderHistoryViewModelAsync(GetCustomerOrdersParam param)
        {
            if (param == null)
            {
                throw new ArgumentNullException(nameof(param));
            }
            if (param.CultureInfo == null)
            {
                throw new ArgumentException(GetMessageOfNull(nameof(param.CultureInfo)), nameof(param));
            }
            if (param.CustomerId == null)
            {
                throw new ArgumentException(GetMessageOfNull(nameof(param.CustomerId)), nameof(param));
            }
            if (string.IsNullOrWhiteSpace(param.Scope))
            {
                throw new ArgumentException(GetMessageOfNullWhiteSpace(nameof(param.Scope)), nameof(param));
            }

            var orderQueryResult = await OrderRepository.GetCustomerOrdersAsync(param).ConfigureAwait(false);

            if (orderQueryResult == null)
            {
                return(null);
            }

            var orderDetailBaseUrl = OrderUrlProvider.GetOrderDetailsBaseUrl(param.CultureInfo);
            var orderStatuses      = await LookupService.GetLookupDisplayNamesAsync(new GetLookupDisplayNamesParam
            {
                CultureInfo = param.CultureInfo,
                LookupType  = LookupType.Order,
                LookupName  = "OrderStatus",
            }).ConfigureAwait(false);


            var shipmentsTrackingInfos = new Dictionary <Guid, TrackingInfoViewModel>();
            var ordersDetails          = new List <Overture.ServiceModel.Orders.Order>();
            var orderCartDrafts        = new List <CartSummary>();
            var orderEditingInfos      = new Dictionary <Guid, bool>();
            var orderCancellationInfos = new Dictionary <Guid, CancellationStatus>();

            if (orderQueryResult.Results != null && param.OrderTense == OrderTense.CurrentOrders)
            {
                ordersDetails = await GetOrders(orderQueryResult, param).ConfigureAwait(false);

                orderCartDrafts = await GetOrderCartDrafts(param.Scope, param.CustomerId, param.CultureInfo).ConfigureAwait(false);

                orderEditingInfos = await GetOrderEditingInfos(ordersDetails).ConfigureAwait(false);

                orderCancellationInfos = await GetCancellationStatus(ordersDetails).ConfigureAwait(false);

                shipmentsTrackingInfos = GetShipmentsTrackingInfoViewModels(ordersDetails, param);
            }

            Guid.TryParse(EditingOrderProvider.GetCurrentEditingCartName(), out Guid currentlyEditingOrder);
            var getOrderHistoryViewModelParam = new GetOrderHistoryViewModelParam
            {
                CultureInfo                  = param.CultureInfo,
                OrderResult                  = orderQueryResult,
                OrderCartDrafts              = orderCartDrafts,
                OrderStatuses                = orderStatuses,
                Page                         = param.Page,
                OrderDetailBaseUrl           = orderDetailBaseUrl,
                ShipmentsTrackingInfos       = shipmentsTrackingInfos,
                OrderEditingInfos            = orderEditingInfos,
                Orders                       = ordersDetails,
                OrderCancellationStatusInfos = orderCancellationInfos,
                CurrentlyEditedOrderId       = currentlyEditingOrder
            };

            var viewModel = OrderHistoryViewModelFactory.CreateViewModel(getOrderHistoryViewModelParam);

            return(viewModel);
        }