HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/TDijk1/erp-apps.eu/wwwroot/App_Code/Pux/Kentico/Ecommerce/PuxShippingOptionInfo.cs
using CMS.Ecommerce;
using CMS.SiteProvider;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Pux.Kentico.Ecommerce
{
    public class PuxShippingOptionInfoWrapper
    {
        protected ShippingOptionInfo ShippingOptionInfo { get; set; }

        #region "ShippingOptionInfo properties"

        public int ShippingOptionCarrierID
        {
            get
            {
                return ShippingOptionInfo.ShippingOptionCarrierID;
            }
        }

        public string ShippingOptionCarrierServiceName
        {
            get
            {
                return ShippingOptionInfo.ShippingOptionCarrierServiceName;
            }
        }

        public string ShippingOptionDescription
        {
            get
            {
                return ShippingOptionInfo.ShippingOptionDescription;
            }
        }

        public string ShippingOptionDisplayName
        {
            get
            {
                return ShippingOptionInfo.ShippingOptionDisplayName;
            }
        }

        public bool ShippingOptionEnabled
        {
            get
            {
                return ShippingOptionInfo.ShippingOptionEnabled;
            }
        }

        public Guid ShippingOptionGUID
        {
            get
            {
                return ShippingOptionInfo.ShippingOptionGUID;
            }
        }

        public double ShippingOptionCharge
        {
            get
            {
                return ShippingOptionInfo.ShippingOptionCharge;
            }
        }

        public int ShippingOptionID
        {
            get
            {
                return ShippingOptionInfo.ShippingOptionID;
            }
        }


        public DateTime ShippingOptionLastModified
        {
            get
            {
                return ShippingOptionInfo.ShippingOptionLastModified;
            }
        }

        public string ShippingOptionName
        {
            get
            {
                return ShippingOptionInfo.ShippingOptionName;
            }
        }

        public string ShippingOptionServiceDisplayName
        {
            get
            {
                return ShippingOptionInfo.ShippingOptionServiceDisplayName;
            }
        }

        public int ShippingOptionSiteID
        {
            get
            {
                return ShippingOptionInfo.ShippingOptionSiteID;
            }
        }

        public virtual Guid ShippingOptionThumbnailGUID
        {
            get
            {
                return ShippingOptionInfo.ShippingOptionThumbnailGUID;
            }
        }

        #endregion

        #region "Custom pux properties"

        public string ShippingOptionVisibility
        {
            get
            {
                return ShippingOptionInfo.GetStringValue("ShippingOptionVisibility", "");
            }
            set
            {
                ShippingOptionInfo.SetValue("ShippingOptionVisibility", value);
            }
        }

        public string ShippingOptionCssClass
        {
            get
            {
                return ShippingOptionInfo.GetStringValue("ShippingOptionCssClass", "");
            }
            set
            {
                ShippingOptionInfo.SetValue("ShippingOptionCssClass", value);
            }
        }

        public int ShippingOptionOrder
        {
            get
            {
                return ShippingOptionInfo.GetIntegerValue("ShippingOptionOrder", -1);
            }
            set
            {
                ShippingOptionInfo.SetValue("ShippingOptionOrder", value);
            }
        }

        public string ShippingOptionCustomControl
        {
            get
            {
                return ShippingOptionInfo.GetStringValue("ShippingOptionCustomControl", "");
            }
            set
            {
                ShippingOptionInfo.SetValue("ShippingOptionCustomControl", value);
            }
        }

        public string ShippingOptionExternalID
        {
            get
            {
                return ShippingOptionInfo.GetStringValue("ShippingOptionExternalID", "");
            }
            set
            {
                ShippingOptionInfo.SetValue("ShippingOptionExternalID", value);
            }
        }

        #endregion

        #region "Pux calculated properties"

        private double _shippingPrice = -1;
        /// <summary>
        /// Calculate price for this shipping option based on current content of the shopping cart
        /// </summary>
        public double ShippingPrice
        {
            get
            {
                double result = _shippingPrice;

                if (result < 0)
                {
                    var shoppingCart = ECommerceContext.CurrentShoppingCart;
                    if (shoppingCart != null)
                    {
                        // Store original shipping option ID 
                        int origShippingOptionId = shoppingCart.ShoppingCartShippingOptionID;

                        // Calculate hypothetical shipping cost for shipping option from supplied list item
                        shoppingCart.ShoppingCartShippingOptionID = ShippingOptionID;

                        // Get site name
                        SiteInfo si = SiteInfoProvider.GetSiteInfo(shoppingCart.ShoppingCartSiteID);
                        if (si != null)
                        {
                            // Get shipping cost for currently processed shipping option
                            result = shoppingCart.TotalShipping;
                        }

                        // Restore original shipping option ID
                        shoppingCart.ShoppingCartShippingOptionID = origShippingOptionId;
                    }
                }

                _shippingPrice = result;

                return _shippingPrice;
            }
        }

        #endregion

        public PuxShippingOptionInfoWrapper(ShippingOptionInfo shippingOptionInfo)
        {
            ShippingOptionInfo = shippingOptionInfo;
        }

        public void ReloadData()
        {
            _shippingPrice = -1;
        }
    }
}