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/RMourik/bassol.nl/CMS/CMSModules/Ecommerce/FormControls/PaymentSelector.ascx.cs
using System;

using CMS.DataEngine;
using CMS.Ecommerce;
using CMS.Helpers;
using CMS.UIControls;

public partial class CMSModules_Ecommerce_FormControls_PaymentSelector : SiteSeparatedObjectSelector
{
    #region "Variables"

    private int mShippingOptionId;
    private ShippingOptionInfo mShippingOption;

    #endregion


    #region "Properties"

    /// <summary>
    ///  If true, selected value is PaymentName, if false, selected value is PaymentOptionID.
    /// </summary>
    public override bool UseNameForSelection
    {
        get
        {
            return ValidationHelper.GetBoolean(GetValue("UsePaymentNameForSelection"), base.UseNameForSelection);
        }
        set
        {
            SetValue("UsePaymentNameForSelection", value);
            base.UseNameForSelection = value;
        }
    }


    /// <summary>
    /// Gets a column name for shipping option ID column.
    /// </summary>
    public string ShippingOptionIDColumnName
    {
        get
        {
            return GetValue("ShippingOptionIDColumnName", String.Empty);
        }
        set
        {
            SetValue("ShippingOptionIDColumnName", value);
        }
    }


    /// <summary>
    /// Shipping option ID.
    /// </summary>
    public int ShippingOptionID
    {
        get
        {
            if ((mShippingOptionId == 0) && (mShippingOption != null))
            {
                mShippingOptionId = ShippingOption.ShippingOptionID;
            }

            return mShippingOptionId;
        }
        set
        {
            mShippingOptionId = value;

            mShippingOption = null;
            SiteID = -1;
        }
    }


    /// <summary>
    /// Shipping option info object.
    /// </summary>
    public ShippingOptionInfo ShippingOption
    {
        get
        {
            if ((mShippingOption == null) && (mShippingOptionId != 0))
            {
                mShippingOption = ShippingOptionInfoProvider.GetShippingOptionInfo(ShippingOptionID);
            }

            return mShippingOption;
        }
        set
        {
            mShippingOption = value;

            mShippingOptionId = 0;
            SiteID = -1;
        }
    }


    /// <summary>
    /// Allows to access selector object.
    /// </summary>
    public override UniSelector UniSelector
    {
        get
        {
            return uniSelector;
        }
    }


    /// <summary>
    /// Allows to display payment methods only for specified site id. Use 0 for global methods. Default value is current site id.
    /// </summary>
    public override int SiteID
    {
        get
        {
            // If shipping option given use its site id
            if ((ShippingOption != null) && (base.SiteID != ShippingOption.ShippingOptionSiteID))
            {
                base.SiteID = ShippingOption.ShippingOptionSiteID;
            }

            return base.SiteID;
        }
        set
        {
            base.SiteID = value;
        }
    }


    /// <summary>
    /// Indicates if only payment options that are allowed to be used without shipping are displayed.
    /// </summary>
    public bool DisplayOnlyAllowedIfNoShipping
    {
        get;
        set;
    }

    #endregion


    #region "Life cycle"

    /// <summary>
    /// Sets up ShippingOptionIDColumnName property if shipping option id column name is configured.
    /// </summary>
    /// <param name="e"></param>
    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);

        if (!String.IsNullOrEmpty(ShippingOptionIDColumnName))
        {
            var shippingID = (Form != null) ? ValidationHelper.GetInteger(Form.Data.GetValue(ShippingOptionIDColumnName), 0) : 0;
            DisplayOnlyAllowedIfNoShipping = (shippingID == 0);
            ShippingOptionID = shippingID;
        }
    }
    
    #endregion


    #region "Methods"

    /// <summary>
    /// Convert given payment option name to its ID for specified site.
    /// </summary>
    /// <param name="name">Name of the payment option to be converted.</param>
    /// <param name="siteName">Name of the site of the payment option.</param>
    protected override int GetID(string name, string siteName)
    {
        var payment = PaymentOptionInfoProvider.GetPaymentOptionInfo(name, siteName);

        return (payment != null) ? payment.PaymentOptionID : 0;
    }


    /// <summary>
    /// Appends where condition filtering only payments marked with PaymentOptionAllowIfNoShipping flag when requested.
    /// </summary>
    /// <param name="where">Original where condition.</param>
    protected override string AppendExclusiveWhere(string where)
    {
        // Filter payment methods usable with shipping option if specified using ShippingOptionID/ShippingOption properties
        if (ShippingOptionID > 0)
        {
            where = SqlHelper.AddWhereCondition(where, "PaymentOptionID IN (SELECT PaymentOptionID FROM COM_PaymentShipping WHERE ShippingOptionID = " + ShippingOptionID + ")");
        }

        // Filter out only payment options that are allowed to be used without shipping
        if (DisplayOnlyAllowedIfNoShipping)
        {
            where = SqlHelper.AddWhereCondition(where, "PaymentOptionAllowIfNoShipping = 1");
        }

        return base.AppendExclusiveWhere(where);
    }

    #endregion
}