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/Newsletters/FormControls/VariantFilter.ascx.cs
using System;
using System.Collections.Generic;
using System.Web.UI.WebControls;

using CMS.Helpers;
using CMS.FormControls;
using CMS.Newsletters;

public partial class CMSModules_Newsletters_FormControls_VariantFilter : FormEngineUserControl
{
    // ID of the main A/B test issue issue
    private int mainIssueID = 0;

    // ID of the winner variant issue
    private int winnerIssueID = -1;

    // Indicates if (all) option will be available
    private bool allowSelectAll = true;


    #region "Properties"

    /// <summary>
    /// Gets or sets issue ID of or to variant selector. Used for A/B test issues.
    /// </summary>
    public override object Value
    {
        get
        {
            if (drpVariants.Items.Count == 0)
            {
                return 0;
            }

            return ValidationHelper.GetInteger(drpVariants.SelectedValue, 0);
        }
        set
        {
            mainIssueID = (int)value;

            // Init selector values
            InitVariantSelector(mainIssueID);
        }
    }


    /// <summary>
    /// Gets ID of the winner variant issue.
    /// </summary>
    private int WinnerIssueID
    {
        get
        {
            if (winnerIssueID < 0)
            {
                ABTestInfo test = ABTestInfoProvider.GetABTestInfoForIssue(mainIssueID);
                if (test != null)
                {
                    winnerIssueID = test.TestWinnerIssueID;
                }
            }

            return winnerIssueID;
        }
        set
        {
            winnerIssueID = value;
        }
    }


    /// <summary>
    /// Indicates if (all) option will be available. Default value is True.
    /// </summary>
    public bool AllowSelectAll
    {
        get
        {
            return allowSelectAll;
        }
        set
        {
            allowSelectAll = value;
        }
    }

    #endregion


    #region "Methods"

    /// <summary>
    /// Initializes selector with variants of the main issue that is specified by its ID.
    /// </summary>
    /// <param name="issueId">Issue ID</param>
    protected void InitVariantSelector(int issueId)
    {
        if (drpVariants.Items.Count == 0)
        {
            if (AllowSelectAll)
            {
                // Add (all) option
                drpVariants.Items.Add(new ListItem(GetString("general.selectall"), "-1"));
            }

            // Get A/B test variants
            List<IssueABVariantItem> variants = IssueHelper.GetIssueVariants(issueId, null);
            if (variants != null && variants.Count > 0)
            {
                // Initialize selector
                foreach (IssueABVariantItem variant in variants)
                {
                    if (variant.IsWinner)
                    {
                        WinnerIssueID = variant.IssueID;
                        drpVariants.Items.Add(new ListItem(variant.IssueVariantName + " " + GetString("newsletterabtest.winner"), mainIssueID.ToString()));
                    }
                    else
                    {
                        drpVariants.Items.Add(new ListItem(variant.IssueVariantName, variant.IssueID.ToString()));
                    }
                }
            }

            if (!RequestHelper.IsPostBack() && drpVariants.Items.FindByValue(issueId.ToString()) != null)
            {
                // Preselect main issue
                drpVariants.SelectedValue = issueId.ToString();
            }
        }
    }


    public override string GetWhereCondition()
    {
        string issueIds = string.Empty;

        // Get selected value
        int selectedIssue = ValidationHelper.GetInteger(drpVariants.SelectedValue, 0);
        if (selectedIssue < 0)
        {
            // Get IDs of all involved issues (main and variant issues)
            foreach (ListItem item in drpVariants.Items)
            {
                if (ValidationHelper.GetInteger(item.Value, 0) > 0)
                {
                    issueIds += item.Value + ",";
                }
            }
            issueIds += WinnerIssueID;
        }
        else if (selectedIssue == mainIssueID)
        {
            // Get IDs of main issue and winner variant
            issueIds = (WinnerIssueID > 0) ? string.Format("{0},{1}", mainIssueID, WinnerIssueID) : mainIssueID.ToString();
        }

        if (string.IsNullOrEmpty(issueIds))
        {
            return string.Empty;
        }

        if (String.IsNullOrEmpty(WhereConditionFormat))
        {
            WhereConditionFormat = "[{0}] {2} {1}";
        }

        return string.Format(WhereConditionFormat, "IssueID", "(" + issueIds + ")", "IN");
    }

    #endregion
}