public override void Process(ServicePipelineArgs args)
        {
            AddLinesToWishListRequest request;
            AddLinesToWishListResult  result;


            ValidateArguments <AddLinesToWishListRequest, Commerce.Services.WishLists.AddLinesToWishListResult>(args, out request, out result);
            try
            {
                Assert.IsNotNull((object)request.WishList, "request.WishList");
                Assert.IsNotNullOrEmpty(request.WishList.UserId, "request.WishList.UserId");
                Assert.IsNotNull((object)request.Lines, "request.Lines");

                List <WishListLine> list = request.Lines.ToList <WishListLine>();
                list.RemoveAll((Predicate <WishListLine>)(l =>
                {
                    if (l != null)
                    {
                        return(l.Product == null);
                    }
                    return(true);
                }));
                request.Lines = (IEnumerable <WishListLine>)list;
                foreach (WishListLine line in request.Lines)
                {
                    string lineItemId = line.Product?.ProductId;
                    if (!string.IsNullOrEmpty(lineItemId))
                    {
                        var command = this.AddWishListLine(request.WishList.UserId, request.WishList.ShopName, request.WishList.ExternalId, lineItemId, line.Quantity, request.WishList.CustomerId, args.Request.CurrencyCode);
                        result.HandleCommandMessages(command);
                        if (!result.Success)
                        {
                            break;
                        }
                    }
                }
                Sitecore.Commerce.Plugin.Carts.Cart cart = this.GetWishList(request.WishList.UserId, request.WishList.ShopName, request.WishList.ExternalId, "", args.Request.CurrencyCode);
                if (cart != null)
                {
                    result.WishList   = TranslateCartToWishListEntity(cart, (ServiceProviderResult)result);
                    result.AddedLines = new System.Collections.ObjectModel.ReadOnlyCollection <WishListLine>(SetListLines(result.WishList));
                }
            }
            catch (ArgumentException ex)
            {
                result.Success = false;
                result.SystemMessages.Add(CreateSystemMessage((Exception)ex));
            }
            catch (AggregateException ex)
            {
                result.Success = false;
                result.SystemMessages.Add(CreateSystemMessage((Exception)ex));
            }
            base.Process(args);
        }
        public override void Process(ServicePipelineArgs args)
        {
            Assert.IsNotNull(args, "args");
            Assert.IsNotNull(args.Request, "args.Request");
            Assert.IsNotNull(args.Result, "args.Result");
            Assert.IsTrue(args.Request is AddPaymentInfoRequest, "args.Request is AddPaymentInfoRequest");
            Assert.IsTrue(args.Result is AddPaymentInfoResult, "args.Result is AddPaymentInfoResult");
            var request = (AddPaymentInfoRequest)args.Request;
            var result  = (AddPaymentInfoResult)args.Result;

            Assert.IsNotNull(request.Cart, "request.Cart");
            Assert.IsNotNull(request.Payments, "request.Payments");
            Cart cart = request.Cart;

            Container container = GetContainer(cart.ShopName, cart.UserId, cart.CustomerId, "", args.Request.CurrencyCode, new DateTime?());

            var heidelpayPayments = request.Payments.OfType <HeidelpayPaymentInfo>();

            if (!heidelpayPayments.Any())
            {
                return;
            }

            foreach (var heidelpayPayment in heidelpayPayments)
            {
                CommerceParty entity = cart.Parties.FirstOrDefault(a => a.ExternalId != null && a.ExternalId.Equals(heidelpayPayment.PartyID, StringComparison.OrdinalIgnoreCase)) as CommerceParty;
                Assert.IsNotNull(entity, "Billing address can not be null");

                var heidelpayPaymentComponent = new HeidelpayPaymentComponent
                {
                    Id            = Guid.NewGuid().ToString("N"),
                    PaymentMethod = new EntityReference()
                    {
                        EntityTarget = heidelpayPayment.PaymentMethodID
                    },
                    Amount       = Money.CreateMoney(heidelpayPayment.Amount),
                    BillingParty = TranslateEntityToParty(entity, new Party(), result)
                };

                heidelpayPaymentComponent.BillingParty.ExternalId = entity.ExternalId;

                var command = Proxy.DoCommand(container.AddHeidelpayPayment(cart.ExternalId, heidelpayPaymentComponent));
            }

            Sitecore.Commerce.Plugin.Carts.Cart cart1 = GetCart(cart.UserId, cart.ShopName, cart.ExternalId, cart.CustomerId, args.Request.CurrencyCode);
            if (cart1 != null)
            {
                result.Cart     = TranslateCartToEntity(cart1, result);
                result.Payments = result.Cart.Payment.ToList();
            }

            // Abort the rest of the pipeline. Because the default commerce engine connect processors will fail
            // if there is a payment other than creditcard or giftcard.
            args.AbortPipeline();
        }
Exemple #3
0
        private void TranslateLinePaymentType(Sitecore.Commerce.Plugin.Carts.Cart source, CommerceCart destination)
        {
            var simplePayment = (SimplePaymentComponent)source.Components.FirstOrDefault(c => c is SimplePaymentComponent);

            if (simplePayment != null)
            {
                destination.Payment.Add(new SimplePaymentInfo
                {
                    PaymentMethodID = simplePayment.PaymentMethod.EntityTarget,
                    ExternalId      = simplePayment.Id,
                    Amount          = simplePayment.Amount.Amount
                });
            }
        }
Exemple #4
0
        public override void Process(ServicePipelineArgs args)
        {
            RemoveWishListLinesRequest request;
            RemoveWishListLinesResult  result;

            ValidateArguments <RemoveWishListLinesRequest, RemoveWishListLinesResult>(args, out request, out result);

            try
            {
                Assert.IsNotNull((object)request.WishList, "request.WishList");
                Assert.IsNotNullOrEmpty(request.WishList.UserId, "request.WishList.UserId");
                Assert.IsNotNull((object)request.LineIds, "request.Lines");

                foreach (string lineId in request.LineIds)
                {
                    if (!string.IsNullOrEmpty(lineId))
                    {
                        var command = this.RemoveWishListLine(request.WishList.UserId, request.WishList.ShopName, request.WishList.ExternalId, lineId, request.WishList.CustomerId, args.Request.CurrencyCode);
                        result.HandleCommandMessages(command);
                        if (!result.Success)
                        {
                            break;
                        }
                    }
                }
                Sitecore.Commerce.Plugin.Carts.Cart cart = this.GetWishList(request.WishList.UserId, request.WishList.ShopName, request.WishList.ExternalId, "", args.Request.CurrencyCode);
                if (cart != null)
                {
                    result.WishList     = TranslateCartToWishListEntity(cart, (ServiceProviderResult)result);
                    result.RemovedLines = new System.Collections.ObjectModel.ReadOnlyCollection <WishListLine>(SetListLines(result.WishList));
                }
            }
            catch (ArgumentException ex)
            {
                result.Success = false;
                result.SystemMessages.Add(CreateSystemMessage((Exception)ex));
            }
            catch (AggregateException ex)
            {
                result.Success = false;
                result.SystemMessages.Add(CreateSystemMessage((Exception)ex));
            }
            base.Process(args);
        }
Exemple #5
0
        public override void Process(ServicePipelineArgs args)
        {
            GetWishListRequest request;
            GetWishListResult  result;

            ValidateArguments <GetWishListRequest, GetWishListResult>(args, out request, out result);


            try
            {
                Assert.IsNotNull((object)request.UserId, "request.UserIds");
                Assert.IsNotNull((object)request.Shop, "request.Shop");
                string prefix  = "WishListDefault";
                string message = "wishListId";
                Assert.IsNotNullOrEmpty(prefix, message);
                Assert.IsNotNullOrEmpty(request.UserId, "userId");
                string userId = request.UserId.Replace("{", string.Empty).Replace("}", string.Empty);
                string name   = request.Shop.Name;
                string cartId = prefix + userId + name;
                Sitecore.Commerce.Plugin.Carts.Cart cart = this.GetWishList(userId, request.Shop.Name, cartId, "", args.Request.CurrencyCode);

                if (cart != null)
                {
                    // Translate cart to wishlist
                    result.WishList = TranslateCartToWishListEntity(cart, result);
                }

                else
                {
                    result.Success = false;
                }
            }
            catch (ArgumentException ex)
            {
                result.Success = false;
                result.SystemMessages.Add(CreateSystemMessage((Exception)ex));
            }
            catch (AggregateException ex)
            {
                result.Success = false;
                result.SystemMessages.Add(CreateSystemMessage((Exception)ex));
            }
            base.Process(args);
        }
Exemple #6
0
 protected override void Translate(TranslateCartToEntityRequest request, Sitecore.Commerce.Plugin.Carts.Cart source, CommerceCart destination)
 {
     base.Translate(request, source, destination);
     TranslateLinePaymentType(source, destination);
 }