Example #1
0
        public override void Process(ServicePipelineArgs args)
        {
            // validate args
            Assert.ArgumentNotNull(args, "args");
            Assert.ArgumentNotNull(args.Request, "args.Request");
            Assert.ArgumentNotNull(args.Request.RequestContext, "args.Request.RequestContext");
            Assert.ArgumentNotNull(args.Result, "args.Result");
            GetShippingOptionsRequest request = args.Request as GetShippingOptionsRequest;
            GetShippingOptionsResult  result  = args.Result as GetShippingOptionsResult;

            Assert.IsNotNull(request, "The parameter args.Request was not of the expected type.  Expected {0}.  Actual {1}.", typeof(GetShippingOptionsRequest).Name, args.Request.GetType().Name);
            Assert.IsNotNull(result, "The parameter args.Result was not of the expected type.  Expected {0}.  Actual {1}.", typeof(GetShippingOptionsResult).Name, args.Result.GetType().Name);

            try
            {
                Assert.ArgumentNotNull(request.Cart, "request.Cart");
                Assert.IsTrue(request.Cart.Lines.Count > 0, "request.Cart.Lines");
                string cartId = request.Cart.ExternalId;
                List <CartFulfillment> cartFulfillments = Proxy.Execute(this.GetContainer(request.Cart.ShopName, request.Cart.UserId, request.Cart.CustomerId, "", args.Request.CurrencyCode, new DateTime?()).GetCartWithFulfillmentOptions(cartId).Expand("FulfillmentOptions")).ToList();
                DataServiceCollection <FulfillmentOption> fulfillmentOptions = cartFulfillments.FirstOrDefault(k => k.TargetId == cartId)?.FulfillmentOptions;
                if (fulfillmentOptions == null || !fulfillmentOptions.Any())
                {
                    result.Success = false;
                    return;
                }
                List <ShippingOption>     shippingOptions        = fulfillmentOptions.Select(this.TranslateShippingOption).ToList();
                List <LineShippingOption> lineShippingOptionList = new List <LineShippingOption>();

                foreach (CartLine cartLine in request.Cart.Lines)
                {
                    CartLine line = cartLine;
                    DataServiceCollection <FulfillmentOption> lineFulfillmentOptions = cartFulfillments.FirstOrDefault(k => k.TargetId == line.ExternalCartLineId)?.FulfillmentOptions;
                    if (!lineFulfillmentOptions.Any())
                    {
                        result.Success = false;
                        return;
                    }
                    List <ShippingOption> lineShippingOptions = lineFulfillmentOptions.Select(this.TranslateShippingOption).ToList();
                    LineShippingOption    lineShippingOption  = this.EntityFactory.Create <LineShippingOption>("LineShippingOption");
                    lineShippingOption.LineId          = line.ExternalCartLineId;
                    lineShippingOption.ShippingOptions = lineShippingOptions;
                    lineShippingOptionList.Add(lineShippingOption);
                }

                result.ShippingOptions         = shippingOptions.AsReadOnly();
                result.LineShippingPreferences = lineShippingOptionList.AsReadOnly();
            }
            catch (ArgumentException ex)
            {
                result.Success = false;
                result.SystemMessages.Add(new SystemMessage(ex.Message));
            }
            base.Process(args);
        }
Example #2
0
        private static string FormatOrders(DataServiceCollection <Order> orders)
        {
            if (orders == null || !orders.Any())
            {
                return(string.Empty);
            }

            StringBuilder sb = new StringBuilder("[");

            foreach (var order in orders)
            {
                sb.Append("{").Append(order.OrderId).Append(",").Append(order.OrderName).Append("}");
            }
            sb.Append("]");

            return(sb.ToString());
        }