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); }
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(); } } }
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); }
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); } }
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); }