public void ShouldAddPartiesToCartById()
        {
            var cartId = Guid.NewGuid();

            var request = new AddPartiesRequest(
                new Cart
            {
                ExternalId = cartId.ToString(),
                Name       = "Vasya"
            },
                new List <Party>
            {
                new Party
                {
                    Address1  = "my address 1",
                    Address2  = "my address 2",
                    FirstName = "Koly",
                    LastName  = "Ivanov"
                },
                new Party()
            });
            var result = new AddPartiesResult();
            var args   = new ServicePipelineArgs(request, result);

            _client.AddAddresses(Arg.Any <CustomerAddressModel[]>(), Arg.Any <Guid>())
            .Returns(new Response()
            {
                Success = true,
                Message = "Success"
            });

            _processor.Process(args);

            result.Success.Should().BeTrue();
        }
        public void ShouldCallServiceWithCorrectArgs()
        {
            var cartId = Guid.NewGuid();

            var request = new AddPartiesRequest(
                new Cart {
                ExternalId = cartId.ToString(), BuyerCustomerParty = new CartParty()
                {
                    ExternalId = "1"
                }
            },                                                                                                // only one party to add
                new List <Party> {
                new Party(), new Party()
            }
                );

            var result = new AddPartiesResult();
            var args   = new ServicePipelineArgs(request, result);

            _client.AddAddresses(Arg.Any <CustomerAddressModel[]>(), Arg.Any <Guid>()).Returns(new Response()
            {
                Success = true,
                Message = "Success"
            });

            _processor.Process(args);

            // asserts
            // result.Success.Should().Be(true);
            // _client.Received().AddAddressesByExternalCustomerId(Arg.Is<CustomerAddressModel[]>(x => x.Length > 0), Arg.Is(cartId));
            _client.Received().AddAddresses(Arg.Any <CustomerAddressModel[]>(), Arg.Any <Guid>());
        }
        public PipelineExecutionResult Execute(IPipelineArgs <AddAddressRequest, AddAddressResult> subject)
        {
            if (subject.Request.Properties.ContainsKey("FromUCommerce"))
            {
                if (!(bool)subject.Request.Properties["FromUCommerce"])
                {
                    return(PipelineExecutionResult.Success);
                }
            }

            var cartServiceProvider = new CartServiceProvider();
            var cart = _mappingLibraryInternal.MapPurchaseOrderToCart(subject.Request.PurchaseOrder);

            var party     = _orderAddressMapper.Map(subject.Response.OrderAddress);
            var partyList = new List <Party> {
                party
            };

            if (subject.Request.ExistingOrderAddress == null)
            {
                var addPartiesRequest = new AddPartiesRequest(cart, partyList);
                addPartiesRequest.Properties["FromUCommerce"] = true;
                var addPartiesResult = cartServiceProvider.AddParties(addPartiesRequest);

                return(PipelineExecutionResult.Success);
            }

            var updatePartiesRequest = new UpdatePartiesRequest(cart, partyList);

            updatePartiesRequest.Properties["FromUCommerce"] = true;
            var updatePartiesResult = cartServiceProvider.UpdateParties(updatePartiesRequest);

            return(PipelineExecutionResult.Success);
        }
Exemple #4
0
        private void EditBillingInformation(AddressSaveViewModel.Address billingAddress)
        {
            var cartServiceProvider = new CartServiceProvider();
            var cart  = GetCart();
            var party = new Party()
            {
                Address1      = billingAddress.Line1,
                Address2      = billingAddress.Line2,
                City          = billingAddress.City,
                Company       = billingAddress.CompanyName,
                Country       = _countries.Select().First(x => x.CountryId == billingAddress.CountryId).Name,
                Email         = billingAddress.EmailAddress,
                FirstName     = billingAddress.FirstName,
                LastName      = billingAddress.LastName,
                PartyId       = "Billing",
                PhoneNumber   = billingAddress.PhoneNumber,
                State         = billingAddress.State,
                ZipPostalCode = billingAddress.PostalCode
            };
            var partyList = new List <Party> {
                party
            };

            if (cart.Parties.Any(x => x.PartyId == party.PartyId))
            {
                var updatePartiesRequest = new UpdatePartiesRequest(cart, partyList);
                var updatePartiesResult  = cartServiceProvider.UpdateParties(updatePartiesRequest);

                return;
            }

            var addPartiesRequest = new AddPartiesRequest(cart, partyList);
            var addPartiesResult  = cartServiceProvider.AddParties(addPartiesRequest);
        }
Exemple #5
0
        public ManagerResponse <AddPartiesResult, IEnumerable <Party> > AddParties(
            CommerceCustomer customer,
            IEnumerable <Party> parties)
        {
            Assert.ArgumentNotNull(customer, nameof(customer));
            Assert.ArgumentNotNull(parties, nameof(parties));

            var addPartiesRequest = new AddPartiesRequest(customer, parties.ToList());

            var addPartiesResult = this.customerServiceProvider.AddParties(addPartiesRequest);

            return(new ManagerResponse <AddPartiesResult, IEnumerable <Party> >(addPartiesResult, addPartiesRequest.Parties));
        }
Exemple #6
0
        /// <summary>
        /// Adds 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 <AddPartiesResult, bool> AddParties([NotNull] CommerceStorefront storefront, [NotNull] CommerceCustomer user, List <CommerceParty> parties)
        {
            Assert.ArgumentNotNull(storefront, "storefront");
            Assert.ArgumentNotNull(user, "user");
            Assert.ArgumentNotNull(parties, "parties");

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

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

            return(new ManagerResponse <AddPartiesResult, bool>(result, result.Success));
        }
Exemple #7
0
        public void ShouldHandleInvalidCustomerId()
        {
            var request = new AddPartiesRequest(
                new CommerceCustomer {
                ExternalId = "1234"
            },
                new List <Party>(0)
                );
            var result = new AddPartiesResult();
            var args   = new ServicePipelineArgs(request, result);

            _processor.Process(args);

            result.Success.Should().Be(false);
            result.SystemMessages.Should().HaveCount(x => x > 0);
        }
        /// <summary>
        /// Adds a party to 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 AddPartyToCart([NotNull] CommerceStorefront storefront, [NotNull] VisitorContext visitorContext, [NotNull] CommerceCart cart, [NotNull] CommerceParty party)
        {
            Assert.ArgumentNotNull(cart, "cart");
            Assert.ArgumentNotNull(party, "party");

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

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

            return(result);
        }
Exemple #9
0
        public ManagerResponse <AddPartiesResult, bool> AddParties(string userName, List <IParty> parties)
        {
            Assert.ArgumentNotNull(userName, nameof(userName));
            Assert.ArgumentNotNull(parties, nameof(parties));

            var getUserResponse = GetUser(userName);

            if (getUserResponse.Result == null)
            {
                throw new ArgumentException("User not found, invalid userName", nameof(userName));
            }
            var customer = new CommerceCustomer {
                ExternalId = getUserResponse.Result.ExternalId
            };
            var request = new AddPartiesRequest(customer, parties.Select(a => a.ToCommerceParty()).ToList());
            var result  = CustomerServiceProvider.AddParties(request);

            result.WriteToSitecoreLog();

            return(new ManagerResponse <AddPartiesResult, bool>(result, result.Success));
        }
Exemple #10
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");

            AddPartiesRequest request = (AddPartiesRequest)args.Request;
            AddPartiesResult  result  = (AddPartiesResult)args.Result;

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

            Assert.IsNotNull(cartContext, "cartContext");

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

            if (cartContext.Basket != null)
            {
                foreach (Party party in request.Parties)
                {
                    Party newParty;

                    if (party == null)
                    {
                        continue;
                    }

                    newParty = this.ProcessParty(party, cartContext);

                    partiesAdded.Add(newParty);
                }
            }

            result.Parties = partiesAdded;

            // 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;
        }
Exemple #11
0
        public void ShouldCallServiceWithCorrectArgs()
        {
            var customerId = Guid.NewGuid();

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

            _client.AddAddresses(Arg.Any <Guid>(), Arg.Any <AddressModel[]>()).Returns(new ArrayOfAddressModelResponse()
            {
            });
            _processor.Process(args);

            _client.Received().AddAddresses(Arg.Is(customerId), Arg.Is <AddressModel[]>(x => x.Length == request.Parties.Count));
        }
        /// <summary>
        /// Sets the shipping addresses.
        /// </summary>
        /// <param name="storefront">The storefront.</param>
        /// <param name="visitorContext">The visitor context.</param>
        /// <param name="cart">The cart.</param>
        /// <param name="shippingAddresses">The shipping addresses.</param>
        /// <param name="emailPartyList">The email party list.</param>
        /// <returns>
        /// The manager response with a cart in the result.
        /// </returns>
        protected virtual AddPartiesResult SetShippingAddresses(CommerceStorefront storefront, VisitorContext visitorContext, CommerceCart cart, List<PartyInputModelItem> shippingAddresses, List<RefSFModels.EmailParty> emailPartyList)
        {
            var errorResult = new AddPartiesResult { Success = false };

            var removePartiesResponse = this.RemoveAllShippingParties(storefront, visitorContext, cart);
            if (!removePartiesResponse.ServiceProviderResult.Success)
            {
                errorResult.SystemMessages.Add(removePartiesResponse.ServiceProviderResult.SystemMessages[0]);
                return errorResult;
            }

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

            if (shippingAddresses != null && shippingAddresses.Any())
            {
                partyList.AddRange(shippingAddresses.ToNewShippingParties());
            }

            if (emailPartyList != null && emailPartyList.Any())
            {
                partyList.AddRange(emailPartyList.Cast<Party>().ToList());
            }

            AddPartiesRequest addPartiesRequest = new AddPartiesRequest(cart, partyList);
            var addPartiesResponse = this.CartServiceProvider.AddParties(addPartiesRequest);

            return addPartiesResponse;
        }
        /// <summary>
        /// Adds a party to 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>
        public virtual ManagerResponse<CartResult, CommerceCart> AddPartyToCart([NotNull] CommerceStorefront storefront, [NotNull] VisitorContext visitorContext, [NotNull] CommerceCart cart, [NotNull] CommerceParty party)
        {
            Assert.ArgumentNotNull(cart, "cart");
            Assert.ArgumentNotNull(party, "party");

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

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

            return new ManagerResponse<CartResult, CommerceCart>(result, result.Cart as CommerceCart);
        }
        /// <summary>
        /// Adds 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<AddPartiesResult, bool> AddParties([NotNull] CommerceStorefront storefront, [NotNull] CommerceCustomer user, List<Party> parties)
        {
            Assert.ArgumentNotNull(storefront, "storefront");
            Assert.ArgumentNotNull(user, "user");
            Assert.ArgumentNotNull(parties, "parties");

            var request = new AddPartiesRequest(user, parties);
            var result = this.CustomerServiceProvider.AddParties(request);
            if (!result.Success)
            {
                Helpers.LogSystemMessages(result.SystemMessages, result);
            }

            return new ManagerResponse<AddPartiesResult, bool>(result, result.Success);
        }
Exemple #15
0
        public void ShouldAddPartiesToCustomerById()
        {
            var customerId = Guid.NewGuid();

            var request = new AddPartiesRequest(
                new CommerceCustomer
            {
                ExternalId = customerId.ToString(),
                Name       = "Vasya"
            },
                new List <Party>
            {
                new Party
                {
                    Address1  = "my address 1",
                    Address2  = "my address 2",
                    FirstName = "Koly",
                    LastName  = "Ivanov"
                },
                new Party()
            });
            var result = new AddPartiesResult();
            var args   = new ServicePipelineArgs(request, result);

            _client.AddAddresses(Arg.Any <Guid>(), Arg.Any <AddressModel[]>())
            .Returns(new ArrayOfAddressModelResponse()
            {
                Success = true,
                Message = "Success",
                Result  = new[]
                {
                    new AddressModel()
                    {
                        Address1  = "my address 1",
                        Address2  = "my address 2",
                        FirstName = "Koly",
                        LastName  = "Ivanov",
                        City      = "Vinnitsa",
                        Company   = "Sitecore",
                        CountryThreeLetterIsoCode = "USA",
                        CountryTwoLetterIsoCode   = "US",
                        Email         = "*****@*****.**",
                        FaxNumber     = "9999",
                        Id            = "1",
                        PhoneNumber   = "043298765",
                        ZipPostalCode = "21000"
                    },
                    new AddressModel()
                    {
                        Address1  = "test address 1",
                        Address2  = "test address 2",
                        FirstName = "Ivan",
                        LastName  = "Petrovich"
                    }
                }
            });

            _processor.Process(args);

            result.Success.Should().BeTrue();
            result.Parties.Should().HaveCount(2);
        }
        /// <summary>
        /// Adds a party to 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 AddPartyToCart([NotNull] CommerceStorefront storefront, [NotNull] VisitorContext visitorContext, [NotNull] CommerceCart cart, [NotNull] CustomCommerceParty party)
        {
            Assert.ArgumentNotNull(cart, "cart");
            Assert.ArgumentNotNull(party, "party");

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

            return result;
        }