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/CMSModules/Reporting/Tools/ReportTable_Edit.aspx.cs
using System;
using System.Data;
using System.Web.UI.WebControls;

using CMS.Controls.Configuration;
using CMS.DataEngine;
using CMS.ExtendedControls;
using CMS.FormEngine;
using CMS.Helpers;
using CMS.Membership;
using CMS.Reporting;
using CMS.Synchronization;
using CMS.UIControls;

public partial class CMSModules_Reporting_Tools_ReportTable_Edit : CMSReportingModalPage
{
    #region "Constants"

    /// <summary>
    /// Short link to help page.
    /// </summary>
    private const string HELP_TOPIC_LINK = "reports_creating";

    #endregion


    #region "Variables"

    protected ReportTableInfo mReportTableInfo = null;
    protected int mTableId;
    protected ReportInfo mReportInfo = null;

    private const string DEFAULT_SKIN_ID = "ReportGridAnalytics";

    #endregion


    #region "Properties"

    /// <summary>
    /// Messages placeholder
    /// </summary>
    public override MessagesPlaceHolder MessagesPlaceHolder
    {
        get
        {
            return plcMess;
        }
    }

    #endregion


    protected void Page_Load(object sender, EventArgs e)
    {
        ucSelectString.Scope = ReportInfo.OBJECT_TYPE;
        ConnectionStringRow.Visible = MembershipContext.AuthenticatedUser.IsAuthorizedPerResource("cms.reporting", "SetConnectionString");
        txtQuery.FullScreenParentElementID = pnlWebPartForm_Properties.ClientID;

        // Test permission for query
        txtQuery.Enabled = MembershipContext.AuthenticatedUser.IsAuthorizedPerResource("CMS.Reporting", "EditSQLQueries");

        versionList.OnAfterRollback += versionList_onAfterRollback;

        PageTitle.HelpTopicName = HELP_TOPIC_LINK;

        // Register common resize and refresh scripts
        RegisterResizeAndRollbackScript("divFooter", divScrolable.ClientID);

        tabControlElem.TabItems.Add(new UITabItem
        {
            Text = GetString("general.general")
        });

        tabControlElem.TabItems.Add(new UITabItem
        {
            Text = GetString("general.preview")
        });

        tabControlElem.UsePostback = true;

        rfvCodeName.ErrorMessage = GetString("general.requirescodename");
        rfvDisplayName.ErrorMessage = GetString("general.requiresdisplayname");

        Save += (s, ea) =>
        {
            if (SetData(true))
            {
                ltlScript.Text += ScriptHelper.GetScript("window.RefreshContent();CloseDialog();");
            }
        };

        int reportId = QueryHelper.GetInteger("reportid", 0);
        bool preview = QueryHelper.GetBoolean("preview", false);
        if (reportId > 0)
        {
            mReportInfo = ReportInfoProvider.GetReportInfo(reportId);
        }

        // If preview by URL -> select preview tab
        bool isPreview = QueryHelper.GetBoolean("preview", false);
        if (isPreview && !RequestHelper.IsPostBack())
        {
            tabControlElem.SelectedTab = 1;
        }

        if (PersistentEditedObject == null)
        {
            if (mReportInfo != null) // Must be valid reportid parameter
            {
                int id = QueryHelper.GetInteger("objectid", 0);

                // Try to load tableName from hidden field (adding new graph & preview)
                if (id == 0)
                {
                    id = ValidationHelper.GetInteger(txtNewTableHidden.Value, 0);
                }

                if (id > 0)
                {
                    PersistentEditedObject = ReportTableInfoProvider.GetReportTableInfo(id);
                    mReportTableInfo = PersistentEditedObject as ReportTableInfo;
                }
            }
        }
        else
        {
            mReportTableInfo = PersistentEditedObject as ReportTableInfo;
        }

        if (mReportInfo != null)
        {
            ucSelectString.DefaultConnectionString = mReportInfo.ReportConnectionString;

            // Control text initializations
            if (mReportTableInfo != null)
            {
                PageTitle.TitleText = GetString("Reporting_ReportTable_Edit.TitleText");
                mTableId = mReportTableInfo.TableID;

                if (ObjectVersionManager.DisplayVersionsTab(mReportTableInfo))
                {
                    tabControlElem.TabItems.Add(new UITabItem
                    {
                        Text = GetString("objectversioning.tabtitle")
                    });

                    versionList.Object = mReportTableInfo;
                    versionList.IsLiveSite = false;
                }
            }
            else // New item
            {
                PageTitle.TitleText = GetString("Reporting_ReportTable_Edit.NewItemTitleText");
                if (!RequestHelper.IsPostBack())
                {
                    ucSelectString.Value = String.Empty;
                    txtPageSize.Text = "15";
                    txtQueryNoRecordText.Text = GetString("attachmentswebpart.nodatafound");
                    chkExportEnable.Checked = true;
                    chkSubscription.Checked = true;
                }
            }

            if (!RequestHelper.IsPostBack())
            {
                ControlsHelper.FillListControlWithEnum<PagerButtons>(drpPageMode, "PagerButtons");
                // Preselect page numbers paging
                drpPageMode.SelectedValue = ((int)PagerButtons.Numeric).ToString();

                LoadData();
            }
        }

        if ((preview) && (!RequestHelper.IsPostBack()))
        {
            tabControlElem.SelectedTab = 1;
            ShowPreview();
        }

        // In case of preview paging without saving table
        if (RequestHelper.IsPostBack() && tabControlElem.SelectedTab == 1)
        {
            // Reload default parameters
            FormInfo fi = new FormInfo(mReportInfo.ReportParameters);

            // Get datarow with required columns
            ctrlReportTable.ReportParameters = fi.GetDataRow(false);
            fi.LoadDefaultValues(ctrlReportTable.ReportParameters, true);

            // Collect data and put them in table info
            SetData();
            ctrlReportTable.TableInfo = mReportTableInfo;
        }

        CurrentMaster.PanelContent.RemoveCssClass("dialog-content");
    }


    /// <summary>
    /// Reload data for table in prerender because of paging
    /// </summary>
    /// <param name="e">Event arguments</param>
    protected override void OnPreRender(EventArgs e)
    {
        divScrolable.CssClass = "";

        var tabIndex = tabControlElem.SelectedTab < 0 ? 0 : tabControlElem.SelectedTab;
        switch (tabIndex)
        {
            // Versions
            case 2:
                divPanelHolder.Visible = false;
                pnlPreview.Visible = false;
                if (mReportTableInfo != null)
                {
                    pnlVersions.Visible = true;
                }
                break;

            // Preview
            case 1:
                // Create table preview
                if (SetData())
                {
                    ShowPreview();
                }
                else
                {
                    tabControlElem.SelectedTab = 0;
                    divScrolable.CssClass = "ScrollableContent";
                }
                break;

            // Edit
            case 0:
                divScrolable.CssClass = "ScrollableContent";
                pnlPreview.Visible = false;
                pnlVersions.Visible = false;
                divPanelHolder.Visible = true;
                break;
        }

        base.OnPreRender(e);
    }


    /// <summary>
    /// Loads data from mReportTableInfo
    /// </summary>
    protected void LoadData()
    {
        if (mReportTableInfo != null)
        {
            txtDisplayName.Text = mReportTableInfo.TableDisplayName;
            txtCodeName.Text = mReportTableInfo.TableName;
            txtQuery.Text = mReportTableInfo.TableQuery;
            chkIsProcedure.Checked = mReportTableInfo.TableQueryIsStoredProcedure;
            txtSkinID.Text = ValidationHelper.GetString(mReportTableInfo.TableSettings["skinid"], DEFAULT_SKIN_ID);
            txtPageSize.Text = ValidationHelper.GetInteger(mReportTableInfo.TableSettings["pagesize"], 10).ToString();
            chkEnablePaging.Checked = ValidationHelper.GetBoolean(mReportTableInfo.TableSettings["enablepaging"], false);
            drpPageMode.SelectedValue = ValidationHelper.GetString(mReportTableInfo.TableSettings["pagemode"], "");
            txtQueryNoRecordText.Text = ValidationHelper.GetString(mReportTableInfo.TableSettings["QueryNoRecordText"], String.Empty);
            chkExportEnable.Checked = ValidationHelper.GetBoolean(mReportTableInfo.TableSettings["ExportEnabled"], false);
            chkSubscription.Checked = ValidationHelper.GetBoolean(mReportTableInfo.TableSettings["SubscriptionEnabled"], false);
            ucSelectString.Value = mReportTableInfo.TableConnectionString;
        }
        else
        {
            // Load default data
            txtSkinID.Text = DEFAULT_SKIN_ID;
        }

    }


    /// <summary>
    /// Saves data.
    /// </summary>
    /// <param name="saveToDatabase">If true, data are saved into database</param>
    protected bool SetData(bool saveToDatabase = false)
    {
        string errorMessage = String.Empty;
        // Check 'Modify' permission
        if (!MembershipContext.AuthenticatedUser.IsAuthorizedPerResource("cms.reporting", "Modify"))
        {
            RedirectToAccessDenied("cms.reporting", "Modify");
        }

        if (saveToDatabase)
        {
            errorMessage = new Validator()
                .NotEmpty(txtDisplayName.Text, rfvDisplayName.ErrorMessage)
                .NotEmpty(txtCodeName.Text, rfvCodeName.ErrorMessage)
                .NotEmpty(txtQuery.Text, GetString("Reporting_ReportGraph_Edit.ErrorQuery")).Result;

            if ((errorMessage == "") && (!ValidationHelper.IsIdentifier(txtCodeName.Text.Trim())))
            {
                errorMessage = GetString("general.erroridentifierformat");
            }

            string fullName = mReportInfo.ReportName + "." + txtCodeName.Text.Trim();
            ReportTableInfo codeNameCheck = ReportTableInfoProvider.GetReportTableInfo(fullName);

            if ((errorMessage == "") && (codeNameCheck != null) && (codeNameCheck.TableID != mTableId))
            {
                errorMessage = GetString("Reporting_ReportTable_Edit.ErrorCodeNameExist");
            }
        }

        // Test query in all cases
        if (errorMessage == String.Empty)
        {
            errorMessage = new Validator().NotEmpty(txtQuery.Text, GetString("Reporting_ReportGraph_Edit.ErrorQuery")).Result;
        }

        if ((errorMessage == "") && (txtPageSize.Text.Trim() != String.Empty) && (!ValidationHelper.IsInteger(txtPageSize.Text) || !ValidationHelper.IsPositiveNumber(txtPageSize.Text)))
        {
            errorMessage = GetString("Reporting_ReportTable_Edit.errorinvalidpagesize");
        }

        if ((errorMessage == ""))
        {
            // New table
            if (mReportTableInfo == null)
            {
                mReportTableInfo = new ReportTableInfo();
            }

            mReportTableInfo.TableDisplayName = txtDisplayName.Text.Trim();
            mReportTableInfo.TableName = txtCodeName.Text.Trim();

            if (MembershipContext.AuthenticatedUser.IsAuthorizedPerResource("CMS.Reporting", "EditSQLQueries"))
            {
                mReportTableInfo.TableQuery = txtQuery.Text.Trim();
            }

            mReportTableInfo.TableQueryIsStoredProcedure = chkIsProcedure.Checked;
            mReportTableInfo.TableReportID = mReportInfo.ReportID;

            mReportTableInfo.TableSettings["SkinID"] = txtSkinID.Text.Trim();
            mReportTableInfo.TableSettings["enablepaging"] = chkEnablePaging.Checked.ToString();
            mReportTableInfo.TableSettings["pagesize"] = txtPageSize.Text;
            mReportTableInfo.TableSettings["pagemode"] = drpPageMode.SelectedValue;
            mReportTableInfo.TableSettings["QueryNoRecordText"] = txtQueryNoRecordText.Text;
            mReportTableInfo.TableSettings["ExportEnabled"] = chkExportEnable.Checked.ToString();
            mReportTableInfo.TableSettings["SubscriptionEnabled"] = chkSubscription.Checked.ToString();
            mReportTableInfo.TableConnectionString = ValidationHelper.GetString(ucSelectString.Value, String.Empty);

            if (saveToDatabase)
            {
                ReportTableInfoProvider.SetReportTableInfo(mReportTableInfo);
            }
        }
        else
        {
            ShowError(errorMessage);
            return false;
        }

        return true;
    }


    /// <summary>
    /// Show preview
    /// </summary>
    private void ShowPreview()
    {
        divPanelHolder.Visible = false;
        pnlVersions.Visible = false;

        if (mReportInfo != null)
        {
            pnlPreview.Visible = true;

            FormInfo fi = new FormInfo(mReportInfo.ReportParameters);
            // Get datarow with required columns
            DataRow defaultValues = fi.GetDataRow(false);

            fi.LoadDefaultValues(defaultValues, true);

            // ReportGraph.ContextParameters 
            ctrlReportTable.ReportParameters = defaultValues;

            // Prepare fully qualified graph name = with reportname
            if (mReportTableInfo != null)
            {
                string fullReportGraphName = mReportInfo.ReportName + "." + mReportTableInfo.TableName;
                ctrlReportTable.Parameter = fullReportGraphName;
            }
            ctrlReportTable.TableInfo = mReportTableInfo;


            ctrlReportTable.ReloadData(true);
        }
    }


    /// <summary>
    /// Get info from PersistentEditedObject and reload data
    /// </summary>
    private void ReloadDataAfrterRollback()
    {
        // Load rollbacked info
        GeneralizedInfo gi = PersistentEditedObject as GeneralizedInfo;
        if (gi != null)
        {
            mReportTableInfo = gi.MainObject as ReportTableInfo;
        }
        LoadData();
    }


    protected void versionList_onAfterRollback(object sender, EventArgs e)
    {
        ReloadDataAfrterRollback();
    }
}