示例#1
0
        public PipelineExecutionResult Execute(IPipelineArgs <RemoveShipmentRequest, RemoveShipmentResult> subject)
        {
            if (subject.Request.Properties.ContainsKey("FromUCommerce"))
            {
                if (!(bool)subject.Request.Properties["FromUCommerce"])
                {
                    return(PipelineExecutionResult.Success);
                }
            }

            var cart = MappingLibrary.MapPurchaseOrderToCart(subject.Request.PurchaseOrder);

            var cartService  = new CartServiceProvider();
            var shippingList = new List <ShippingInfo>
            {
                new ShippingInfo()
                {
                    ExternalId       = subject.Request.Shipment.ShipmentId.ToString(),
                    PartyID          = subject.Request.Shipment.ShipmentAddress.OrderAddressId.ToString(),
                    ShippingMethodID = subject.Request.Shipment.ShippingMethod.ShippingMethodId.ToString()
                }
            };
            var request = new RemoveShippingInfoRequest(cart, shippingList);

            request.Properties["FromUCommerce"] = true;

            var result = cartService.RemoveShippingInfo(request);

            return(PipelineExecutionResult.Success);
        }
        public PipelineExecutionResult Execute(IPipelineArgs <AddToBasketRequest, AddToBasketResponse> subject)
        {
            if (subject.Request.Properties.ContainsKey("FromUCommerce"))
            {
                if (!(bool)subject.Request.Properties["FromUCommerce"])
                {
                    return(PipelineExecutionResult.Success);
                }
            }

            //var cart = MappingLibrary.MapPurchaseOrderToCart(subject.Request.PurchaseOrder);

            var    contactFactory = new ContactFactory();
            string userId         = contactFactory.GetContact();

            var cartServiceProvider = new CartServiceProvider();
            var createCartRequest   = new CreateOrResumeCartRequest(Context.GetSiteName(), userId);

            //should it do anything???
            var cart = cartServiceProvider.CreateOrResumeCart(createCartRequest).Cart;

            var cartLine = MappingLibrary.MapOrderLineToCartLine(subject.Response.OrderLine);

            var request = new AddCartLinesRequest(cart, new Collection <CartLine> {
                cartLine
            });

            request.Properties["FromUCommerce"] = true;

            var serviceProvider = new CartServiceProvider();

            serviceProvider.AddCartLines(request);

            return(PipelineExecutionResult.Success);
        }
示例#3
0
        public override void Process(ServicePipelineArgs args)
        {
            UpdateCartLinesRequest request;
            CartResult             result;

            CheckParametersAndSetupRequestAndResult(args, out request, out result);

            using (new DisposableThreadLifestyleScope())
            {
                if (IsFromUcommerce(request))
                {
                    return;
                }

                if (!result.Success)
                {
                    return;
                }

                var basket = _basketService.GetBasketByCartExternalId(request.Cart.ExternalId);

                var existingOrderLines = basket.PurchaseOrder.OrderLines;

                var query = from updatedOrderLine in request.Lines
                            join originalOrderLine in existingOrderLines
                            on updatedOrderLine.ExternalCartLineId equals originalOrderLine.OrderLineId.ToString()
                            select new { updatedOrderLine, originalOrderLine };

                foreach (var line in query.ToList())
                {
                    var updatedOrderLine = MappingLibrary.MapCartLineToOrderLine(line.updatedOrderLine);
                    UpdateOrderLine(updatedOrderLine, line.originalOrderLine);
                }
            }
        }
        public override void Process(ServicePipelineArgs args)
        {
            CartLinesRequest request;
            CartResult       result;

            CheckParametersAndSetupRequestAndResult(args, out request, out result);

            using (new DisposableThreadLifestyleScope())
            {
                Basket basket = _basketService.GetBasketByCartExternalId(request.Cart.ExternalId);

                if (IsFromUcommerce(request))
                {
                    result.Cart = MappingLibrary.MapPurchaseOrderToCart(basket.PurchaseOrder);
                    return;
                }


                if (!result.Success)
                {
                    return;
                }

                var basketPipeline = ObjectFactory.Instance.Resolve <IPipeline <PurchaseOrder> >("Basket");
                basketPipeline.Execute(basket.PurchaseOrder);

                result.Cart = MappingLibrary.MapPurchaseOrderToCart(basket.PurchaseOrder);

                if (string.IsNullOrEmpty(result.Cart.ShopName))
                {
                    result.Cart.ShopName = Context.GetSiteName();
                }
            }
        }
示例#5
0
        private Product GetProduct(CartProduct uCommerceCartProduct)
        {
            var getProductPipeline = ObjectFactory.Instance.Resolve <IPipeline <IPipelineArgs <GetProductRequest, GetProductResponse> > >("GetProduct");

            //Map cartProduct to uCommerceV2.Product
            Product product = MappingLibrary.MapCartProductToProduct(uCommerceCartProduct);

            var getProductPipelineArgs = new GetProductPipelineArgs(
                new GetProductRequest(new ProductIdentifier(product.Sku, product.VariantSku)),
                new GetProductResponse());

            if (getProductPipeline.Execute(getProductPipelineArgs) == PipelineExecutionResult.Error)
            {
                throw new ArgumentException(string.Format("No product with id {0} was found", getProductPipelineArgs.Request.ProductIdentifier.Sku));
            }

            return(getProductPipelineArgs.Response.Product);
        }
示例#6
0
        public override void Process(ServicePipelineArgs args)
        {
            RemoveCartLinesRequest request;
            CartResult             result;

            CheckParametersAndSetupRequestAndResult(args, out request, out result);

            using (new DisposableThreadLifestyleScope())
            {
                Basket basket = _basketService.GetBasketByCartExternalId(request.Cart.ExternalId);

                if (IsFromUcommerce(request))
                {
                    using (new DisposableThreadLifestyleScope())
                    {
                        result.Cart = MappingLibrary.MapPurchaseOrderToCart(basket.PurchaseOrder);
                        return;
                    }
                }

                var updateLineItemPipeline = ObjectFactory.Instance.Resolve <IPipeline <IPipelineArgs <UpdateLineItemRequest, UpdateLineItemResponse> > >("UpdateLineItem");

                foreach (var cartLine in request.Lines)
                {
                    var updateLineItemRequest = new UpdateLineItemRequest
                    {
                        OrderLine = basket.PurchaseOrder.OrderLines.FirstOrDefault(x => x.OrderLineId == int.Parse(cartLine.ExternalCartLineId)),
                        Quantity  = 0,
                    };
                    updateLineItemRequest.Properties.Add("FromUCommerce", false);

                    var updateLineItemResponse = new UpdateLineItemResponse();
                    updateLineItemPipeline.Execute(new UpdateLineItemPipelineArgs(updateLineItemRequest, updateLineItemResponse));
                }

                var basketPipeline = ObjectFactory.Instance.Resolve <IPipeline <PurchaseOrder> >("Basket");
                basketPipeline.Execute(basket.PurchaseOrder);

                result.Cart = MappingLibrary.MapPurchaseOrderToCart(basket.PurchaseOrder);
            }
        }
示例#7
0
        public override void Process(ServicePipelineArgs args)
        {
            SubmitVisitorOrderRequest request;
            SubmitVisitorOrderResult  result;

            using (new DisposableThreadLifestyleScope())
            {
                CheckParametersAndSetupRequestAndResult(args, out request, out result);

                // Check if this call originates from the uCommerce "Checkout" pipeline.
                var ucommerceOrder = request.Properties["UCommerceOrder"] as PurchaseOrder;
                if (ucommerceOrder == null)
                {
                    // The call originates from Commerce Connect.
                    // It is very important, that this run of the SubmitVisitorOrder pipeline
                    // does nothing, except call the Checkout pipeline.
                    var basketPurchaseOrder = _basketService.GetBasketByCartExternalId(request.Cart.ExternalId);
                    if (basketPurchaseOrder == null)
                    {
                        result.Success = false;
                        return;
                    }

                    // First call the Checkout pipeline.
                    ExecuteCheckoutPipeline(basketPurchaseOrder.PurchaseOrder);

                    // Make sure nothing else in the pipeline is run.
                    result.Success = false;
                    result.Order   = null;
                }
                else
                {
                    // Set the order, and signal, that the rest of the pipeline should be run.
                    result.Order   = MappingLibrary.MapPurchaseOrderToOrder(ucommerceOrder);
                    result.Success = true;
                }
            }
        }
        public PipelineExecutionResult Execute(IPipelineArgs <UpdateLineItemRequest, UpdateLineItemResponse> subject)
        {
            if (subject.Request.Properties.ContainsKey("FromUCommerce"))
            {
                if (!(bool)subject.Request.Properties["FromUCommerce"])
                {
                    return(PipelineExecutionResult.Success);
                }
            }

            if (subject.Request.Quantity == 0)
            {
                var cart                = MappingLibrary.MapPurchaseOrderToCart(subject.Request.OrderLine.PurchaseOrder);
                var cartLine            = MappingLibrary.MapOrderLineToCartLine(subject.Request.OrderLine);
                var cartServiceProvider = new CartServiceProvider();

                var request = new RemoveCartLinesRequest(cart, new Collection <CartLine> {
                    cartLine
                });
                request.Properties["FromUCommerce"] = true;
                cartServiceProvider.RemoveCartLines(request);
            }
            return(PipelineExecutionResult.Success);
        }