示例#1
0
        public ManagerResponse <CustomerResult, bool> RemoveParties(CommerceCustomer user, List <CommerceParty> parties)
        {
            Assert.ArgumentNotNull(user, nameof(user));
            Assert.ArgumentNotNull(parties, nameof(parties));

            var request = new RemovePartiesRequest(user, parties.Cast <Party>().ToList());
            var result  = CustomerServiceProvider.RemoveParties(request);

            result.WriteToSitecoreLog();
            return(new ManagerResponse <CustomerResult, bool>(result, result.Success));
        }
示例#2
0
        public ManagerResponse <CustomerResult, IEnumerable <Party> > RemoveParties(
            CommerceCustomer customer,
            IEnumerable <Party> parties)
        {
            Assert.ArgumentNotNull(customer, nameof(customer));
            Assert.ArgumentNotNull(parties, nameof(parties));

            var removePartiesRequest = new RemovePartiesRequest(customer, parties.ToList());

            var removePartiesResult = this.customerServiceProvider.RemoveParties(removePartiesRequest);

            return(new ManagerResponse <CustomerResult, IEnumerable <Party> >(removePartiesResult, null));
        }
示例#3
0
        /// <summary>
        /// Removes the parties.
        /// </summary>
        /// <param name="storefront">The storefront.</param>
        /// <param name="user">The user.</param>
        /// <param name="parties">The parties.</param>
        /// <returns>The manager result where the success flag is returned as the Result.</returns>
        public virtual ManagerResponse <CustomerResult, bool> RemoveParties([NotNull] CommerceStorefront storefront, [NotNull] CommerceCustomer user, List <CommerceParty> parties)
        {
            Assert.ArgumentNotNull(storefront, "storefront");
            Assert.ArgumentNotNull(user, "user");
            Assert.ArgumentNotNull(parties, "parties");

            var request = new RemovePartiesRequest(user, parties.Cast <Party>().ToList());
            var result  = this.CustomerServiceProvider.RemoveParties(request);

            if (!result.Success)
            {
                Helpers.LogSystemMessages(result.SystemMessages, result);
            }

            return(new ManagerResponse <CustomerResult, bool>(result, result.Success));
        }
        public void ShouldHandleInvalidCustomerId()
        {
            var request = new RemovePartiesRequest(
                new CommerceCustomer {
                ExternalId = "1234"
            },
                new List <Party>(0)
                );
            var result = new CustomerPartiesResult();
            var args   = new ServicePipelineArgs(request, result);

            _processor.Process(args);

            result.Success.Should().Be(false);
            result.SystemMessages.Should().HaveCount(x => x > 0);
        }
        /// <summary>
        /// Removes party info from a cart
        /// </summary>
        /// <param name="storefront">The Storefront Context</param>
        /// <param name="visitorContext">The Visitor Context</param>
        /// <param name="cart">the cart</param>
        /// <param name="party">the party info</param>
        /// <returns>the updated cart</returns>
        protected virtual CartResult RemovePartyFromCart([NotNull] CommerceStorefront storefront, [NotNull] VisitorContext visitorContext, [NotNull] CommerceCart cart, [NotNull] CommerceParty party)
        {
            Assert.ArgumentNotNull(cart, "cart");
            Assert.ArgumentNotNull(party, "party");

            var request = new RemovePartiesRequest(cart, new List <Party> {
                party
            });
            var result = this.CartServiceProvider.RemoveParties(request);

            if (!result.Success)
            {
                Helpers.LogSystemMessages(result.SystemMessages, result);
            }

            return(result);
        }
        public void ShouldCallServiceWithCorrectArgs()
        {
            var customerId = Guid.NewGuid();

            var request = new RemovePartiesRequest(
                new CommerceCustomer {
                ExternalId = customerId.ToString()
            },
                new List <Party> {
                new Party(), new Party()
            }
                );
            var result = new CustomerPartiesResult();
            var args   = new ServicePipelineArgs(request, result);

            _processor.Process(args);

            _client.Received().RemoveAddresses(Arg.Is(customerId), Arg.Any <string[]>());
        }
示例#7
0
        public void ShouldNotRemovePartyFromCart()
        {
            cart = new Cart
            {
                ExternalId = visitorId.ToString(),
                Lines      = new ReadOnlyCollectionAdapter <CartLine> {
                    new CartLine()
                },
                AccountingCustomerParty = new CartParty()
                {
                    PartyID = "1", ExternalId = "1"
                },
                BuyerCustomerParty = new CartParty()
                {
                    PartyID = "1", ExternalId = "1"
                }
            };

            partiesList = new List <Party>();


            request = new RemovePartiesRequest(cart, partiesList);
            result  = new RemovePartiesResult();
            args    = new ServicePipelineArgs(request, result);

            var addressesToRemove = new[] { new CustomerAddressModel()
                                            {
                                                AddressType = AddressTypeModel.Billing
                                            } };
            var responseModel = new Response()
            {
                Message = "Success", Success = true
            };

            client.RemoveAddresses(addressesToRemove, visitorId).Returns(responseModel);

            // act
            processor.Process(args);

            // assert
            result.Success.Should().BeTrue();
        }
示例#8
0
        /// <summary>
        /// Processes the specified arguments.
        /// </summary>
        /// <param name="args">The arguments.</param>
        public override void Process(Sitecore.Commerce.Pipelines.ServicePipelineArgs args)
        {
            Assert.ArgumentNotNull(args, "args");
            Assert.ArgumentNotNull(args.Request, "args.request");

            RemovePartiesRequest request = (RemovePartiesRequest)args.Request;
            RemovePartiesResult  result  = (RemovePartiesResult)args.Result;

            var cartContext = CartPipelineContext.Get(request.RequestContext);

            Assert.IsNotNull(cartContext, "cartContext");

            List <Party> partiesRemoved = new List <Party>();

            if (cartContext.Basket != null)
            {
                foreach (Party party in request.Parties)
                {
                    if (party != null)
                    {
                        Assert.ArgumentNotNullOrEmpty(party.ExternalId, "party.ExternalId");

                        OrderAddress orderAddress = cartContext.Basket.Addresses[party.ExternalId];
                        if (orderAddress != null)
                        {
                            cartContext.Basket.Addresses.Remove(orderAddress);

                            partiesRemoved.Add(party);
                        }
                    }
                }
            }

            result.Parties = partiesRemoved;

            // Needed by the RunSaveCart CommerceConnect pipeline.
            var translateCartRequest = new TranslateOrderGroupToEntityRequest(cartContext.UserId, cartContext.ShopName, cartContext.Basket);
            var translateCartResult  = PipelineUtility.RunCommerceConnectPipeline <TranslateOrderGroupToEntityRequest, TranslateOrderGroupToEntityResult>(PipelineNames.TranslateOrderGroupToEntity, translateCartRequest);

            result.Cart = translateCartResult.Cart;
        }
        /// <summary>
        /// Removes party info from a cart
        /// </summary>
        /// <param name="storefront">The Storefront Context</param>
        /// <param name="visitorContext">The Visitor Context</param>
        /// <param name="cart">the cart</param>
        /// <param name="parties">The parties.</param>
        /// <returns>
        /// the updated cart
        /// </returns>
        public virtual ManagerResponse<CartResult, CommerceCart> RemovePartiesFromCart([NotNull] CommerceStorefront storefront, [NotNull] VisitorContext visitorContext, [NotNull] CommerceCart cart, [NotNull] List<Party> parties)
        {
            Assert.ArgumentNotNull(cart, "cart");
            Assert.ArgumentNotNull(parties, "parties");

            var request = new RemovePartiesRequest(cart, parties);
            var result = this.CartServiceProvider.RemoveParties(request);
            if (!result.Success)
            {
                Helpers.LogSystemMessages(result.SystemMessages, result);
            }

            return new ManagerResponse<CartResult, CommerceCart>(result, result.Cart as CommerceCart);
        }
示例#10
0
        /// <summary>
        /// Removes all shipping parties.
        /// </summary>
        /// <param name="storefront">The storefront.</param>
        /// <param name="visitorContext">The visitor context.</param>
        /// <param name="cart">The cart.</param>
        /// <returns>The manager response with a cart in the result.</returns>
        public virtual ManagerResponse<CartResult, CommerceCart> RemoveAllShippingParties([NotNull] CommerceStorefront storefront, [NotNull] VisitorContext visitorContext, [NotNull] CommerceCart cart)
        {
            Assert.ArgumentNotNull(storefront, "storefront");
            Assert.ArgumentNotNull(visitorContext, "visitorContext");
            Assert.ArgumentNotNull(cart, "cart");

            var parties = this.GetPartiesForPrefix(cart, CommerceServerStorefrontConstants.CartConstants.ShippingAddressNamePrefix);
            var request = new RemovePartiesRequest(cart, parties);
            var response = this.CartServiceProvider.RemoveParties(request);

            return new ManagerResponse<CartResult, CommerceCart>(response, response.Cart as CommerceCart);
        }
        /// <summary>
        /// Removes the parties.
        /// </summary>
        /// <param name="storefront">The storefront.</param>
        /// <param name="user">The user.</param>
        /// <param name="parties">The parties.</param>
        /// <returns>The manager result where the success flag is returned as the Result.</returns>
        public virtual ManagerResponse<CustomerResult, bool> RemoveParties([NotNull] CommerceStorefront storefront, [NotNull] CommerceCustomer user, List<CommerceParty> parties)
        {
            Assert.ArgumentNotNull(storefront, "storefront");
            Assert.ArgumentNotNull(user, "user");
            Assert.ArgumentNotNull(parties, "parties");

            var request = new RemovePartiesRequest(user, parties.Cast<Party>().ToList());
            var result = this.CustomerServiceProvider.RemoveParties(request);
            if (!result.Success)
            {
                Helpers.LogSystemMessages(result.SystemMessages, result);
            }

            return new ManagerResponse<CustomerResult, bool>(result, result.Success);
        }
示例#12
0
        /// <summary>
        /// Removes party info from a cart
        /// </summary>
        /// <param name="storefront">The Storefront Context</param>
        /// <param name="visitorContext">The Visitor Context</param>
        /// <param name="cart">the cart</param>
        /// <param name="party">the party info</param>
        /// <returns>the updated cart</returns>
        protected virtual CartResult RemovePartyFromCart([NotNull] CommerceStorefront storefront, [NotNull] VisitorContext visitorContext, [NotNull] CommerceCart cart, [NotNull] CustomCommerceParty party)
        {
            Assert.ArgumentNotNull(cart, "cart");
            Assert.ArgumentNotNull(party, "party");

            var request = new RemovePartiesRequest(cart, new List<Party> { party });
            var result = this.CartServiceProvider.RemoveParties(request);
            if (!result.Success)
            {
                Helpers.LogSystemMessages(result.SystemMessages, result);
            }

            return result;
        }