private void AddShippingOptionsToResult(CheckoutDataBaseJsonResult result, CommerceCart cart)
        {
            var response             = this.ShippingManager.GetShippingPreferences(cart);
            var orderShippingOptions = new List <ShippingOption>();
            var lineShippingOptions  = new List <LineShippingOption>();

            if (response.ServiceProviderResult.Success && response.Result != null)
            {
                orderShippingOptions = response.ServiceProviderResult.ShippingOptions.ToList();
                lineShippingOptions  = response.ServiceProviderResult.LineShippingPreferences.ToList();
            }

            result.OrderShippingOptions = orderShippingOptions;
            result.LineShippingOptions  = lineShippingOptions;
            if (result.LineShippingOptions != null && result.LineShippingOptions.Any())
            {
                foreach (var line in result.Cart.Lines)
                {
                    var lineShippingOption = result.LineShippingOptions.FirstOrDefault(l => l.LineId.Equals(line.ExternalCartLineId, StringComparison.OrdinalIgnoreCase));
                    if (lineShippingOption != null)
                    {
                        line.ShippingOptions = lineShippingOption.ShippingOptions;
                    }
                }
            }

            result.SetErrors(response.ServiceProviderResult);
        }
        private void GetUserInfo(CheckoutDataBaseJsonResult result)
        {
            var isUserAuthenticated = Sitecore.Context.User.IsAuthenticated;

            result.IsUserAuthenticated = isUserAuthenticated;
            result.UserEmail           = isUserAuthenticated && !Context.User.Profile.IsAdministrator ? this.AccountManager.ResolveCommerceUser().Result.Email : string.Empty;
            if (!isUserAuthenticated)
            {
                return;
            }

            var addresses = new List <CommerceParty>();
            var response  = this.AccountManager.GetCurrentCustomerParties(this.CurrentStorefront, this.CurrentVisitorContext);

            if (response.ServiceProviderResult.Success && response.Result != null)
            {
                addresses = response.Result.ToList();
            }

            var addressesResult = new AddressListItemJsonResult();

            addressesResult.Initialize(addresses, null);
            result.UserAddresses = addressesResult;
            result.SetErrors(response.ServiceProviderResult);
        }
        private void AddShippingMethodsToResult(CheckoutDataBaseJsonResult result, CommerceCart cart)
        {
            var shippingRequest = new GetShippingMethodsInputModel {
                ShippingPreferenceType = ShippingOptionType.None.Name
            };
            var response = this.ShippingManager.GetShippingMethods(this.CurrentStorefront, this.CurrentVisitorContext, shippingRequest);

            if (response.ServiceProviderResult.Success && response.Result != null)
            {
                foreach (var sm in response.Result)
                {
                    var isEmailMethod       = sm.GetPropertyValue("IsEmailShippingMethod") != null && (bool)sm.GetPropertyValue("IsEmailShippingMethod");
                    var isShipToStoreMethod = sm.GetPropertyValue("IsShipToStoreShippingMethod") != null && (bool)sm.GetPropertyValue("IsShipToStoreShippingMethod");

                    if (isEmailMethod)
                    {
                        result.EmailDeliveryMethod = sm;
                    }

                    if (isShipToStoreMethod)
                    {
                        result.ShipToStoreDeliveryMethod = sm;
                    }
                }

                return;
            }

            result.EmailDeliveryMethod       = new ShippingMethod();
            result.ShipToStoreDeliveryMethod = new ShippingMethod();
            result.SetErrors(response.ServiceProviderResult);
        }
        public JsonResult GetCheckoutData()
        {
            try
            {
                var result   = new CheckoutDataBaseJsonResult();
                var response = this.CartManager.GetCurrentCart(CurrentStorefront, CurrentVisitorContext, true);
                if (response.ServiceProviderResult.Success && response.Result != null)
                {
                    var cart = (CommerceCart)response.ServiceProviderResult.Cart;
                    if (cart.Lines != null && cart.Lines.Any())
                    {
                        result.Cart = new CSCartBaseJsonResult(response.ServiceProviderResult);
                        result.Cart.Initialize(response.ServiceProviderResult.Cart);

                        result.ShippingMethods       = new List <ShippingMethod>();
                        result.CartLoyaltyCardNumber = cart.LoyaltyCardID;

                        result.CurrencyCode = StorefrontManager.GetCustomerCurrency();

                        this.AddShippingOptionsToResult(result, cart);
                        if (result.Success)
                        {
                            this.AddShippingMethodsToResult(result);
                            if (result.Success)
                            {
                                this.GetAvailableCountries(result);
                                if (result.Success)
                                {
                                    this.GetPaymentOptions(result);
                                    if (result.Success)
                                    {
                                        this.GetPaymentMethods(result);
                                        if (result.Success)
                                        {
                                            this.GetPaymentClientToken(result);
                                            if (result.Success)
                                            {
                                                this.GetUserInfo(result);
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }

                result.SetErrors(response.ServiceProviderResult);
                return(Json(result, JsonRequestBehavior.AllowGet));
            }
            catch (Exception e)
            {
                CommerceLog.Current.Error("GetCheckoutData", this, e);
                return(Json(new BaseJsonResult("GetCheckoutData", e), JsonRequestBehavior.AllowGet));
            }
        }
        private void GetPaymentClientToken(CheckoutDataBaseJsonResult result)
        {
            var response = this.PaymentManager.GetPaymentClientToken();

            if (response.ServiceProviderResult.Success)
            {
                result.PaymentClientToken = response.ServiceProviderResult.ClientToken;
            }

            result.SetErrors(response.ServiceProviderResult);
        }
        private void GetAvailableCountries(CheckoutDataBaseJsonResult result)
        {
            var response  = this.OrderManager.GetAvailableCountries();
            var countries = new Dictionary <string, string>();

            if (response.ServiceProviderResult.Success && response.Result != null)
            {
                countries = response.Result;
            }

            result.Countries = countries;
            result.SetErrors(response.ServiceProviderResult);
        }
        private void GetPaymentMethods(CheckoutDataBaseJsonResult result)
        {
            var response       = this.PaymentManager.GetPaymentMethods(this.CurrentStorefront, this.CurrentVisitorContext, new PaymentOption());
            var paymentMethods = new List <PaymentMethod>();

            if (response.ServiceProviderResult.Success && response.Result != null)
            {
                paymentMethods = response.Result.ToList();
            }

            result.PaymentMethods = paymentMethods;
            result.SetErrors(response.ServiceProviderResult);
        }
        private void GetPaymentOptions(CheckoutDataBaseJsonResult result)
        {
            var response       = this.PaymentManager.GetPaymentOptions(this.CurrentStorefront, this.CurrentVisitorContext);
            var paymentOptions = new List <PaymentOption>();

            if (response.ServiceProviderResult.Success && response.Result != null)
            {
                paymentOptions = response.Result.ToList();
                paymentOptions.ForEach(x => x.Name = StorefrontManager.GetPaymentName(x.Name));
            }

            result.PaymentOptions = paymentOptions;
            result.SetErrors(response.ServiceProviderResult);
        }
Exemplo n.º 9
0
        public CheckoutDataBaseJsonResult GetCheckoutData(User user)
        {
            var result   = new CheckoutDataBaseJsonResult();
            var response = this._cartManager.GetCurrentCart(CurrentStorefront, CurrentVisitorContext, true);

            if (response.ServiceProviderResult.Success && response.Result != null)
            {
                var cart = (CommerceCart)response.ServiceProviderResult.Cart;

                if (cart.Lines != null && cart.Lines.Any())
                {
                    result.Cart = new CSCartBaseJsonResult(response.ServiceProviderResult);
                    result.Cart.Initialize(response.ServiceProviderResult.Cart, _productResolver);
                    result.ShippingMethods       = new List <ShippingMethod>();
                    result.CartLoyaltyCardNumber = cart.LoyaltyCardID;
                    result.CurrencyCode          = StorefrontManager.GetCustomerCurrency();
                    this.AddShippingOptionsToResult(result, cart);

                    if (result.Success)
                    {
                        this.AddShippingMethodsToResult(result);

                        if (result.Success)
                        {
                            this.GetAvailableCountries(result);

                            if (result.Success)
                            {
                                this.GetPaymentOptions(result);

                                if (result.Success)
                                {
                                    this.GetPaymentMethods(result);

                                    if (result.Success)
                                    {
                                        this.GetUserInfo(result, user);
                                    }
                                }
                            }
                        }
                    }
                }
            }

            result.SetErrors(response.ServiceProviderResult);

            return(result);
        }
Exemplo n.º 10
0
        private void GetPaymentMethods(CheckoutDataBaseJsonResult result)
        {
            List <PaymentMethod> paymentMethodList = new List <PaymentMethod>();

            var response = this._paymentManager.GetPaymentMethods(this.CurrentStorefront, this.CurrentVisitorContext, new PaymentOption {
                PaymentOptionType = PaymentOptionType.PayCard
            });

            if (response.ServiceProviderResult.Success)
            {
                paymentMethodList.AddRange(response.Result);
            }

            result.SetErrors(response.ServiceProviderResult);
            result.PaymentMethods = paymentMethodList;
        }
        private void AddShippingOptionsToResult(CheckoutDataBaseJsonResult result, CommerceCart cart)
        {
            var response             = this.ShippingManager.GetShippingPreferences(cart);
            var orderShippingOptions = new List <ShippingOption>();
            var lineShippingOptions  = new List <LineShippingOption>();

            if (response.ServiceProviderResult.Success && response.Result != null)
            {
                orderShippingOptions = response.ServiceProviderResult.ShippingOptions.ToList();
                lineShippingOptions  = response.ServiceProviderResult.LineShippingPreferences.ToList();
            }

            result.InitializeShippingOptions(orderShippingOptions);
            result.InitializeLineItemShippingOptions(lineShippingOptions);

            result.SetErrors(response.ServiceProviderResult);
        }
Exemplo n.º 12
0
        private void AddShippingMethodsToResult(CheckoutDataBaseJsonResult result)
        {
            var response = this.ShippingManager.GetShippingMethods(this.CurrentStorefront, this.CurrentVisitorContext, new ShippingOption {
                ShippingOptionType = ShippingOptionType.ElectronicDelivery
            });

            if (response.ServiceProviderResult.Success && response.Result.Count > 0)
            {
                result.EmailDeliveryMethod = response.Result.ElementAt(0);

                return;
            }

            result.EmailDeliveryMethod       = new ShippingMethod();
            result.ShipToStoreDeliveryMethod = new ShippingMethod();
            result.SetErrors(response.ServiceProviderResult);
        }
        private void AddShippingMethodsToResult(CheckoutDataBaseJsonResult result)
        {
            var shippingMethodJsonResult = CommerceTypeLoader.CreateInstance <ShippingMethodBaseJsonResult>();

            var response = this.ShippingManager.GetShippingMethods(this.CurrentStorefront, this.CurrentVisitorContext, new ShippingOption {
                ShippingOptionType = ShippingOptionType.ElectronicDelivery
            });

            if (response.ServiceProviderResult.Success && response.Result.Count > 0)
            {
                shippingMethodJsonResult.Initialize(response.Result.ElementAt(0));
                result.EmailDeliveryMethod = shippingMethodJsonResult;
                return;
            }

            var shippingToStoreJsonResult = CommerceTypeLoader.CreateInstance <ShippingMethodBaseJsonResult>();

            result.EmailDeliveryMethod       = shippingMethodJsonResult;
            result.ShipToStoreDeliveryMethod = shippingToStoreJsonResult;
            result.SetErrors(response.ServiceProviderResult);
        }