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