public JsonResult SetShippingMethods(SetShippingMethodsInputModel inputModel)
        {
            try
            {
                Assert.ArgumentNotNull(inputModel, "inputModel");

                var validationResult = new BaseJsonResult();
                this.ValidateModel(validationResult);
                if (validationResult.HasErrors)
                {
                    return(Json(validationResult, JsonRequestBehavior.AllowGet));
                }

                var response = this.CartManager.SetShippingMethods(CurrentStorefront, CurrentVisitorContext, inputModel);
                var result   = new CSCartBaseJsonResult(response.ServiceProviderResult);
                if (!response.ServiceProviderResult.Success || response.Result == null)
                {
                    return(Json(result, JsonRequestBehavior.AllowGet));
                }

                result.Initialize(response.Result);

                return(Json(result, JsonRequestBehavior.AllowGet));
            }
            catch (Exception e)
            {
                CommerceLog.Current.Error("SetShippingMethods", this, e);
                return(Json(new BaseJsonResult("SetShippingMethods", e), JsonRequestBehavior.AllowGet));
            }
        }
Esempio n. 2
0
        public JsonResult SetShippingMethods(SetShippingMethodsInputModel inputModel)
        {
            try
            {
                Assert.ArgumentNotNull(inputModel, nameof(inputModel));

                var validationResult = this.CreateJsonResult();
                if (validationResult.HasErrors)
                {
                    return(Json(validationResult, JsonRequestBehavior.AllowGet));
                }

                var response = CartManager.SetShippingMethods(CommerceUserContext.Current.UserId, inputModel);
                var result   = new CartApiModel(response.ServiceProviderResult);
                if (!response.ServiceProviderResult.Success || response.Result == null)
                {
                    return(Json(result, JsonRequestBehavior.AllowGet));
                }

                result.Initialize(response.Result);

                return(Json(result, JsonRequestBehavior.AllowGet));
            }
            catch (Exception e)
            {
                return(Json(new ErrorApiModel("SetShippingMethods", e), JsonRequestBehavior.AllowGet));
            }
        }
Esempio n. 3
0
        public CSCartBaseJsonResult SetShippingMethods(SetShippingMethodsInputModel inputModel)
        {
            var response = this._cartManager.SetShippingMethods(CurrentStorefront, CurrentVisitorContext, inputModel);
            var result   = new CSCartBaseJsonResult(response.ServiceProviderResult);

            if (response.ServiceProviderResult.Success && response.Result != null)
            {
                result.Initialize(response.Result, _productResolver);
            }

            return(result);
        }
        private void SetShippingMethods(CheckoutViewModel model)
        {
            var inputModel = new SetShippingMethodsInputModel();

            var shipItemsLines = model.Cart.Lines.Where(l =>
                                                        model.LineShippingOptions[l.ExternalCartLineId].Name == "Ship items");

            PartyInputModelItem address = GetPartyInputModelItem();

            if (address != null)
            {
                inputModel.ShippingAddresses.Add(address);
            }
            else
            {
                return;
            }

            inputModel.OrderShippingPreferenceType = "1";

            var    shipItemsMethod  = new ShippingMethodInputModelItem();
            string shippingOptionID = GetShippingOptionID(model);

            shipItemsMethod.ShippingMethodID       = shippingOptionID;
            shipItemsMethod.ShippingMethodName     = model.ShippingOptions[shippingOptionID];
            shipItemsMethod.ShippingPreferenceType = "1";
            shipItemsMethod.PartyId = "0";
            shipItemsMethod.LineIDs = shipItemsLines.Select(l => l.ExternalCartLineId).ToList();
            inputModel.ShippingMethods.Add(shipItemsMethod);

            try
            {
                var response = CartManager.SetShippingMethods(CommerceUserContext.Current.UserId, inputModel);
                if (!response.ServiceProviderResult.Success || response.Result == null)
                {
                    throw new Exception("Error setting shipping methods: " +
                                        string.Join(",", response.ServiceProviderResult.SystemMessages.Select(sm => sm.Message)));
                }
                model.Cart = response.Result;
            }
            catch (Exception e)
            {
                throw;
            }
        }
        public JsonResult SetShippingMethods(SetShippingMethodsInputModel inputModel)
        {
            try
            {
                Assert.ArgumentNotNull(inputModel, "inputModel");

                var validationResult = new BaseJsonResult();
                this.ValidateModel(validationResult);
                if (validationResult.HasErrors)
                {
                    return(Json(validationResult, JsonRequestBehavior.AllowGet));
                }

                var response = this.CartManager.SetShippingMethods(CurrentStorefront, CurrentVisitorContext, inputModel);
                var result   = new AXCartBaseJsonResult(response.ServiceProviderResult);
                if (!response.ServiceProviderResult.Success || response.Result == null)
                {
                    return(Json(result, JsonRequestBehavior.AllowGet));
                }

                // QUERYING FOR THE CART AGAIN BECAUSE THE SHIPPING COST AND TAX TOTAL ARE NOT BEING UPDATED
                // ON THE RETURNED CART OF THE SETSHIPPINGMETHOD REQUEST
                var cartResponse = this.CartManager.GetCurrentCart(CurrentStorefront, CurrentVisitorContext, true);
                result.SetErrors(cartResponse.ServiceProviderResult);
                if (cartResponse.ServiceProviderResult.Success && response.Result != null)
                {
                    result.Initialize(cartResponse.Result);
                }

                return(Json(result, JsonRequestBehavior.AllowGet));
            }
            catch (Exception e)
            {
                CommerceLog.Current.Error("SetShippingMethods", this, e);
                return(Json(new BaseJsonResult("SetShippingMethods", e), JsonRequestBehavior.AllowGet));
            }
        }
        public JsonResult SetShippingMethods(SetShippingMethodsInputModel inputModel)
        {
            try
            {
                Assert.ArgumentNotNull(inputModel, "inputModel");

                var validationResult = new BaseJsonResult();
                this.ValidateModel(validationResult);

                if (validationResult.HasErrors)
                {
                    return(Json(validationResult, JsonRequestBehavior.AllowGet));
                }

                var result = _checkoutRepository.SetShippingMethods(inputModel);

                return(Json(result, JsonRequestBehavior.AllowGet));
            }
            catch (Exception e)
            {
                _logger.LogError("SetShippingMethods", this, e);
                return(Json(new BaseJsonResult("SetShippingMethods", e), JsonRequestBehavior.AllowGet));
            }
        }
Esempio n. 7
0
        public ManagerResponse <AddShippingInfoResult, CommerceCart> SetShippingMethods(string userId, SetShippingMethodsInputModel inputModel)
        {
            Assert.ArgumentNotNull(inputModel, nameof(inputModel));

            var result = new AddShippingInfoResult {
                Success = false
            };
            var response = GetCart(userId, true);

            if (!response.ServiceProviderResult.Success || response.Result == null)
            {
                return(new ManagerResponse <AddShippingInfoResult, CommerceCart>(result, response.Result));
            }

            var cart = (CommerceCart)response.ServiceProviderResult.Cart;

            if (inputModel.ShippingAddresses != null && inputModel.ShippingAddresses.Any())
            {
                var cartParties = cart.Parties.ToList();
                cartParties.AddRange(inputModel.ShippingAddresses.Select(item => item.ToParty()).ToList());
                cart.Parties = cartParties.AsReadOnly();
            }

            var internalShippingList = inputModel.ShippingMethods.Select(item => item.ToShippingInfo()).ToList();
            var orderPreferenceType  = InputModelExtension.GetShippingOptionType(inputModel.OrderShippingPreferenceType);

            if (orderPreferenceType != ShippingOptionType.DeliverItemsIndividually)
            {
                foreach (var shipping in internalShippingList)
                {
                    shipping.LineIDs = (from CommerceCartLine lineItem in cart.Lines select lineItem.ExternalCartLineId).ToList().AsReadOnly();
                }
            }

            CartCacheHelper.InvalidateCartCache(userId);

            result = AddShippingInfoToCart(cart, orderPreferenceType, internalShippingList);
            if (result.Success && result.Cart != null)
            {
                CartCacheHelper.AddCartToCache(result.Cart as CommerceCart);
            }

            return(new ManagerResponse <AddShippingInfoResult, CommerceCart>(result, result.Cart as CommerceCart));
        }
Esempio n. 8
0
        private void SetShippingMethods(CheckoutViewModel model)
        {
            var inputModel = new SetShippingMethodsInputModel();

            var digitalLines = model.Cart.Lines.Where(l =>
                                                      model.LineShippingOptions[l.ExternalCartLineId].Name == "Digital");
            var shipItemsLines = model.Cart.Lines.Where(l =>
                                                        model.LineShippingOptions[l.ExternalCartLineId].Name == "Ship items");

            PartyInputModelItem address = GetPartyInputModelItem();
            string email = Request.Cookies["email"]?.Value;

            if (digitalLines.Any() && shipItemsLines.Any() &&
                address != null && !string.IsNullOrWhiteSpace(email))
            {
                inputModel.OrderShippingPreferenceType = "4";
            }
            else if (digitalLines.Any() && !shipItemsLines.Any() &&
                     !string.IsNullOrWhiteSpace(email))
            {
                inputModel.OrderShippingPreferenceType = "3";
            }
            else if (!digitalLines.Any() && shipItemsLines.Any() &&
                     address != null)
            {
                inputModel.OrderShippingPreferenceType = "1";
            }
            else
            {
                return;
            }

            if (new[] { "4", "1" }.Contains(inputModel.OrderShippingPreferenceType))
            {
                if (address != null)
                {
                    inputModel.ShippingAddresses.Add(address);
                }

                var    shipItemsMethod  = new ShippingMethodInputModelItem();
                string shippingOptionID = GetShippingOptionID(model);
                shipItemsMethod.ShippingMethodID       = CleanGuid(shippingOptionID);
                shipItemsMethod.ShippingMethodName     = model.ShippingOptions[shippingOptionID];
                shipItemsMethod.ShippingPreferenceType = "1";
                shipItemsMethod.PartyId = "0";
                shipItemsMethod.LineIDs = shipItemsLines.Select(l => l.ExternalCartLineId).ToList();
                inputModel.ShippingMethods.Add(shipItemsMethod);
            }

            if (new[] { "4", "3" }.Contains(inputModel.OrderShippingPreferenceType))
            {
                var  emailMethod = new ShippingMethodInputModelItem();
                Item emailItem   = Context.Database.GetItem("/sitecore/Commerce/Commerce Control Panel/Shared Settings/Fulfillment Options/Digital/Email");
                emailMethod.ShippingMethodID               = CleanGuid(emailItem.ID.ToString());
                emailMethod.ShippingMethodName             = "Email";
                emailMethod.ShippingPreferenceType         = "3";
                emailMethod.ElectronicDeliveryEmail        = email;
                emailMethod.ElectronicDeliveryEmailContent = "";
                emailMethod.LineIDs = digitalLines.Select(l => l.ExternalCartLineId).ToList();
                inputModel.ShippingMethods.Add(emailMethod);
            }

            try
            {
                var response = CartManager.SetShippingMethods(CommerceUserContext.Current.UserId, inputModel);
                if (!response.ServiceProviderResult.Success || response.Result == null)
                {
                    throw new Exception("Error setting shipping methods: " +
                                        string.Join(",", response.ServiceProviderResult.SystemMessages.Select(sm => sm.Message)));
                }
                model.Cart = response.Result;
            }
            catch (Exception e)
            {
                throw;
            }
        }
        /// <summary>
        /// Sets the shipping methods.
        /// </summary>
        /// <param name="storefront">The storefront.</param>
        /// <param name="visitorContext">The visitor context.</param>
        /// <param name="inputModel">The input model.</param>
        /// <returns>
        /// The manager response where the modified CommerceCart is returned in the Result.
        /// </returns>
        public virtual ManagerResponse <AddShippingInfoResult, CommerceCart> SetShippingMethods([NotNull] CommerceStorefront storefront, [NotNull] VisitorContext visitorContext, [NotNull] SetShippingMethodsInputModel inputModel)
        {
            Assert.ArgumentNotNull(storefront, "storefront");
            Assert.ArgumentNotNull(visitorContext, "visitorContext");
            Assert.ArgumentNotNull(inputModel, "inputModel");

            var result = new AddShippingInfoResult {
                Success = false
            };
            var response = this.GetCurrentCart(storefront, visitorContext, true);

            if (!response.ServiceProviderResult.Success || response.Result == null)
            {
                return(new ManagerResponse <AddShippingInfoResult, CommerceCart>(result, response.Result));
            }

            var cart = (CommerceCart)response.ServiceProviderResult.Cart;

            if (inputModel.ShippingAddresses != null && inputModel.ShippingAddresses.Any())
            {
                var cartParties = cart.Parties.ToList();
                cartParties.AddRange(inputModel.ShippingAddresses.ToParties());
                cart.Parties = cartParties.AsReadOnly();
            }

            var internalShippingList = inputModel.ShippingMethods.ToShippingInfoList();
            var orderPreferenceType  = InputModelExtension.GetShippingOptionType(inputModel.OrderShippingPreferenceType);

            if (orderPreferenceType != ShippingOptionType.DeliverItemsIndividually)
            {
                foreach (var shipping in internalShippingList)
                {
                    shipping.LineIDs = (from CommerceCartLine lineItem in cart.Lines select lineItem.ExternalCartLineId).ToList().AsReadOnly();
                }
            }

            var cartCache = CommerceTypeLoader.CreateInstance <CartCacheHelper>();

            cartCache.InvalidateCartCache(visitorContext.GetCustomerId());

            result = this.AddShippingInfoToCart(cart, orderPreferenceType, internalShippingList);
            if (result.Success && result.Cart != null)
            {
                cartCache.AddCartToCache(result.Cart as CommerceCart);
            }

            return(new ManagerResponse <AddShippingInfoResult, CommerceCart>(result, result.Cart as CommerceCart));
        }
 public ManagerResponse <AddShippingInfoResult, CommerceCart> SetShippingMethods(CommerceStorefront storefront, IVisitorContext visitorContext, SetShippingMethodsInputModel inputModel)
 {
     return(null);
 }