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

using CMS.Base;
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_ReportValue_Edit : CMSReportingModalPage
{
    #region "Constants"

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

    #endregion


    #region "Variables"

    protected ReportValueInfo mReportValueInfo = null;
    protected int mValueId;
    protected ReportInfo mReportInfo = null;

    #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;

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

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

        tabControlElem.UsePostback = true;

        RegisterResizeAndRollbackScript("divFooter", divScrolable.ClientID);

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

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

        if (mReportInfo != null) //must be valid reportid parameter
        {
            ucSelectString.DefaultConnectionString = mReportInfo.ReportConnectionString;

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

            if (PersistentEditedObject == null)
            {
                int id = QueryHelper.GetInteger("objectid", 0);
                if (id > 0)
                {
                    PersistentEditedObject = ReportValueInfoProvider.GetReportValueInfo(id);
                    mReportValueInfo = PersistentEditedObject as ReportValueInfo;
                }
            }
            else
            {
                mReportValueInfo = PersistentEditedObject as ReportValueInfo;
            }

            if (mReportValueInfo != null)
            {
                PageTitle.TitleText = GetString("Reporting_ReportValue_Edit.TitleText");
                mValueId = mReportValueInfo.ValueID;

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

                    versionList.Object = mReportValueInfo;
                    versionList.IsLiveSite = false;
                }
            }
            else //new item
            {
                PageTitle.TitleText = GetString("Reporting_ReportValue_Edit.NewItemTitleText");
                chkSubscription.Checked = true;

                if (!RequestHelper.IsPostBack())
                {
                    ucSelectString.Value = String.Empty;
                }
            }

            if (!RequestHelper.IsPostBack())
            {
                LoadData();
            }
        }
        else
        {
            ShowError(GetString("Reporting_ReportValue_Edit.InvalidReportId"));
        }

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

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

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


    /// <summary>
    /// PreRender event handler.
    /// </summary>
    protected override void OnPreRender(EventArgs e)
    {
        var tabIndex = tabControlElem.SelectedTab < 0 ? 0 : tabControlElem.SelectedTab;
        switch (tabIndex)
        {
            // Edit
            case 0:
                divScrolable.CssClass = "ScrollableContent";
                pnlPreview.Visible = false;
                pnlVersions.Visible = false;
                divPanelHolder.Visible = true;
                break;

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

            // Versions
            case 2:
                divPanelHolder.Visible = false;
                pnlPreview.Visible = false;
                if (mReportValueInfo != null)
                {
                    pnlVersions.Visible = true;
                }
                break;
        }    

        base.OnPreRender(e);
    }


    /// <summary>
    /// Load data from db.
    /// </summary>
    protected void LoadData()
    {
        if (mReportValueInfo != null)
        {
            txtDisplayName.Text = mReportValueInfo.ValueDisplayName;
            txtCodeName.Text = mReportValueInfo.ValueName;
            txtQuery.Text = mReportValueInfo.ValueQuery;
            chkIsProcedure.Checked = mReportValueInfo.ValueQueryIsStoredProcedure;
            txtFormatString.Text = mReportValueInfo.ValueFormatString;
            chkSubscription.Checked = ValidationHelper.GetBoolean(mReportValueInfo.ValueSettings["SubscriptionEnabled"], true);
            ucSelectString.Value = mReportValueInfo.ValueConnectionString;
        }
    }


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

            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();
            ReportValueInfo codeNameCheck = ReportValueInfoProvider.GetReportValueInfo(fullName);

            if ((errorMessage == "") && (codeNameCheck != null) && (codeNameCheck.ValueID != mValueId))
            {
                errorMessage = GetString("Reporting_ReportValue_Edit.ErrorCodeNameExist");
            }
        }

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

        if ((errorMessage == ""))
        {
            //new Value
            if (mReportValueInfo == null)
            {
                mReportValueInfo = new ReportValueInfo();
            }

            mReportValueInfo.ValueDisplayName = txtDisplayName.Text.Trim();
            mReportValueInfo.ValueName = txtCodeName.Text.Trim();

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

            mReportValueInfo.ValueQueryIsStoredProcedure = chkIsProcedure.Checked;
            mReportValueInfo.ValueFormatString = txtFormatString.Text.Trim();
            mReportValueInfo.ValueReportID = mReportInfo.ReportID;
            mReportValueInfo.ValueSettings["SubscriptionEnabled"] = chkSubscription.Checked.ToString();
            mReportValueInfo.ValueConnectionString = ValidationHelper.GetString(ucSelectString.Value, String.Empty);

            if (saveToDatabase)
            {
                ReportValueInfoProvider.SetReportValueInfo(mReportValueInfo);
            }
        }
        else
        {
            ShowError(errorMessage);
            return false;
        }
        return true;
    }


    /// <summary>
    /// Show preview.
    /// </summary>
    private void ShowPreview()
    {
        if (mReportInfo != null)
        {
            pnlPreview.Visible = true;
            divPanelHolder.Visible = false;
            pnlVersions.Visible = false;

            FormInfo fi = new FormInfo(mReportInfo.ReportParameters);
            DataRow defaultValues = fi.GetDataRow(false);

            fi.LoadDefaultValues(defaultValues, true);
            
            //reportGraph.ContextParameters 
            ctrlReportValue.ReportParameters = defaultValues;

            ctrlReportValue.Visible = true;
            ctrlReportValue.ValueInfo = mReportValueInfo;

            ctrlReportValue.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)
        {
            mReportValueInfo = gi.MainObject as ReportValueInfo;
        }
        LoadData();
    }


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