Click here to Skip to main content
15,884,092 members
Articles / Web Development / ASP.NET

Programmatically Playing With SSRS Subscriptions

Rate me:
Please Sign up or sign in to vote.
3.63/5 (7 votes)
29 Apr 2009CPOL3 min read 146.7K   2.8K   26  
This article demonstrates how can you dynamically handle SQL Server Reporting Services Subscriptions without using the SSRS interface at all.
using System;
using System.Collections;
using System.Configuration;
using System.Data;

using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;

using EditSubscription.ReportService;
using System.Xml;
using System.IO;
using System.Text;

namespace EditSubscription
{
    public partial class SubsModifier : System.Web.UI.UserControl
    {
        #region "CLASS LEVEL VARIABLE DECLARATIONS"

        ReportingService2006 rs = null;

        StringBuilder xmlHour = null;
        StringBuilder xmlDay = null;
        StringBuilder xmlWeek = null;
        StringBuilder xmlMonth = null;
        StringBuilder xmlOnce = null;
        
        string desc = string.Empty;
        string eventType = string.Empty;
        string matchData = string.Empty;
        
        ParameterValue[] values;
        ExtensionSettings extSettings = null;

        #endregion
        
        #region "$$$$$ALL SYSTEMS GENERATED EVENTS$$$$$"

        #region "$$$$$Page_Init EVENT$$$$$"

        protected void Page_Init(object sender, EventArgs e)
        {
            ArrayList arrParList = null;
            Label lblPar = null;
            TextBox tbPar = null;

            try
            {
                if (IsPostBack && Session["ParList"] != null)
                {
                    arrParList = (ArrayList)Session["ParList"];

                    for (int i = 0; i < arrParList.Count; i++)
                    {
                        lblPar = new Label();
                        //Page.Controls.Add(lblPar);
                        pSubsPar.Controls.Add(lblPar);
                        lblPar.ID = "lbl" + arrParList[i];
                        lblPar.EnableViewState = true;


                        tbPar = new TextBox();
                        //Page.Controls.Add(tbPar);
                        pSubsPar.Controls.Add(tbPar);
                        tbPar.ID = "tb" + arrParList[i];
                        tbPar.EnableViewState = true;

                    }
                }
            }
            catch
            {
                Response.Write("<script language='javascript'>alert('There is an error while loading the page. Please try again after sometime.');</script>");                
                return;
            }
            finally
            {
                arrParList = null;
                tbPar = null;
                lblPar = null;
            }
        }

        #endregion

        #region "$$$$$Page_Load EVENT$$$$$"

        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                if (!IsPostBack)
                {
                    lblError.Text = "";

                    rbl_duration_list.SelectedIndex = 0;
                    rbl_duration_list_SelectedIndexChanged(rbl_duration_list, EventArgs.Empty);


                    #region "Preparing Scheduling XML Strings"

                    xmlHour = new StringBuilder();
                    xmlDay = new StringBuilder();
                    xmlWeek = new StringBuilder();
                    xmlMonth = new StringBuilder();
                    xmlOnce = new StringBuilder();

                    xmlHour.Append("<?xml version='1.0' encoding='utf-16'?><ScheduleDefinition xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema'><StartDateTime xmlns='http://schemas.microsoft.com/sqlserver/2006/03/15/reporting/reportingservices'>");
                    xmlDay.Append("<?xml version='1.0' encoding='utf-16'?><ScheduleDefinition xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema'><StartDateTime xmlns='http://schemas.microsoft.com/sqlserver/2006/03/15/reporting/reportingservices'>");
                    xmlWeek.Append("<?xml version='1.0' encoding='utf-16'?><ScheduleDefinition xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema'><StartDateTime xmlns='http://schemas.microsoft.com/sqlserver/2006/03/15/reporting/reportingservices'>");
                    xmlMonth.Append("<?xml version='1.0' encoding='utf-16'?><ScheduleDefinition xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema'><StartDateTime xmlns='http://schemas.microsoft.com/sqlserver/2006/03/15/reporting/reportingservices'>");
                    xmlOnce.Append("<?xml version='1.0' encoding='utf-16'?><ScheduleDefinition xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema'><StartDateTime xmlns='http://schemas.microsoft.com/sqlserver/2006/03/15/reporting/reportingservices'>");

                    #endregion

                    #region "Binding JavaScript Attributes"

                    txt_hour_days.Attributes.Add("onkeypress", "javascript:return DisableUserToTypeNonNumericValue();");
                    txt_hour_days.Attributes.Add("onchange", "javascript:return DisableUserToTypeNonNumericValue();");

                    txt_hour_hrs.Attributes.Add("onkeypress", "javascript:return DisableUserToTypeNonNumericValue();");
                    txt_hour_hrs.Attributes.Add("onchange", "javascript:return DisableUserToTypeNonNumericValue();");

                    txt_hour_mins.Attributes.Add("onkeypress", "javascript:return DisableUserToTypeNonNumericValue();");
                    txt_hour_mins.Attributes.Add("onchange", "javascript:return DisableUserToTypeNonNumericValue();");

                    txt_week.Attributes.Add("onkeypress", "javascript:return DisableUserToTypeNonNumericValue();");
                    txt_week.Attributes.Add("onchange", "javascript:return DisableUserToTypeNonNumericValue();");
                                        
                    #endregion 
                }

                rs = new ReportingService2006();
                rs.Url = "http://localhost/_vti_bin/ReportServer/ReportService2006.asmx";
                rs.Credentials = System.Net.CredentialCache.DefaultCredentials;
            }
            catch
            {
                Response.Write("<script language='javascript'>alert('There is an error while loading the page. Please try again after sometime.');</script>");                
                return;
            }
            finally
            {
                rs = null;
            }
        }

        #endregion

        #region "$$$$$rbl_duration_list_SelectedIndexChanged EVENT$$$$$"

        protected void rbl_duration_list_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                if (rbl_duration_list.SelectedIndex == 0)
                {
                    pnl_hour.Visible = true;
                    pnl_day.Visible = false;
                    pnl_month.Visible = false;
                    pnl_once.Visible = false;
                    pnl_week.Visible = false;
                }
                else if (rbl_duration_list.SelectedIndex == 1)
                {

                    pnl_hour.Visible = false;
                    pnl_day.Visible = true;
                    pnl_month.Visible = false;
                    pnl_once.Visible = false;
                    pnl_week.Visible = false;

                    rbl_day_option_2.SelectedIndex = 0;
                    rbl_day_option_2_SelectedIndexChanged(rbl_day_option_2, EventArgs.Empty);
                }
                else if (rbl_duration_list.SelectedIndex == 2)
                {

                    pnl_hour.Visible = false;
                    pnl_day.Visible = false;
                    pnl_month.Visible = false;
                    pnl_once.Visible = false;
                    pnl_week.Visible = true;
                }
                else if (rbl_duration_list.SelectedIndex == 3)
                {

                    pnl_hour.Visible = false;
                    pnl_day.Visible = false;
                    pnl_month.Visible = true;
                    pnl_once.Visible = false;
                    pnl_week.Visible = false;
                }
                else if (rbl_duration_list.SelectedIndex == 4)
                {
                    pnl_hour.Visible = false;
                    pnl_day.Visible = false;
                    pnl_month.Visible = false;
                    pnl_once.Visible = true;
                    pnl_week.Visible = false;
                }
            }
            catch
            {
                Response.Write("<script language='javascript'>alert('There is an error while processing the request. Please try again after sometime.');</script>");
                return;
            }
        }

        #endregion

        #region "$$$$$rbl_day_option_1_SelectedIndexChanged EVENT$$$$$"

        protected void rbl_day_option_1_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                rbl_day_option_2.SelectedIndex = -1;

                cbl_day_option_sun.Enabled = true;
                cbl_day_option_mon.Enabled = true;
                cbl_day_option_tue.Enabled = true;
                cbl_day_option_wed.Enabled = true;
                cbl_day_option_thu.Enabled = true;
                cbl_day_option_fri.Enabled = true;
                cbl_day_option_sat.Enabled = true;

                txt_hour_days.Enabled = false;
            }
            catch
            {
                Response.Write("<script language='javascript'>alert('There is an error while processing the request. Please try again after sometime.');</script>");
                return;
            }            
        }

        #endregion

        #region "$$$$$rbl_day_option_2_SelectedIndexChanged EVENT$$$$$"

        protected void rbl_day_option_2_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                rbl_day_option_1.SelectedIndex = -1;

                txt_hour_days.Enabled = true;

                cbl_day_option_sun.Enabled = false;
                cbl_day_option_mon.Enabled = false;
                cbl_day_option_tue.Enabled = false;
                cbl_day_option_wed.Enabled = false;
                cbl_day_option_thu.Enabled = false;
                cbl_day_option_fri.Enabled = false;
                cbl_day_option_sat.Enabled = false;
            }
            catch
            {
                Response.Write("<script language='javascript'>alert('There is an error while processing the request. Please try again after sometime.');</script>");
                return;
            }            
        }

        #endregion

        #region "$$$$$BtGetSubs_Click EVENT$$$$$$"

        protected void BtGetSubs_Click(object sender, EventArgs e)
        {                
            ActiveState active = null;
           
            ParameterValueOrFieldReference[] extensionParams = null;

            ArrayList arrParList = null;

            XmlDocument xmlDoc = null;
            XmlNode parentNode = null;
            XmlNode childNode = null;
            XmlNode subChildNode = null;

            Label lblPar = null;
            TextBox tbPar = null;

            try
            {
                string status = string.Empty;
                string strUserID = string.Empty; ;
                bool fMultiPar = false;

                arrParList = new ArrayList();

                rs = new ReportingService2006();

                lblError.Text = "";

                ClearExistingData();

                Session["SubscriptionID"] = tbEnterSubsID.Text.Trim();

                rs.Credentials = System.Net.CredentialCache.DefaultCredentials;

                strUserID = rs.GetSubscriptionProperties(tbEnterSubsID.Text.Trim(), out extSettings, out desc, out active, out status, out eventType, out matchData, out values);

                if (strUserID != null)
                {
                    extensionParams = extSettings.ParameterValues;

                    if (extensionParams != null)
                    {
                        foreach (ParameterValueOrFieldReference
                            extensionParam in extensionParams)
                        {
                            if (((ParameterValue)extensionParam).Name.Equals("TO"))
                            {
                                tbTO.Text = ((ParameterValue)extensionParam).Value;
                            }
                            if (((ParameterValue)extensionParam).Name.Equals("CC"))
                            {
                                tbCC.Text = ((ParameterValue)extensionParam).Value;
                            }
                            if (((ParameterValue)extensionParam).Name.Equals("BCC"))
                            {
                                tbBCC.Text = ((ParameterValue)extensionParam).Value;
                            }
                            if (((ParameterValue)extensionParam).Name.Equals("ReplyTo"))
                            {
                                tbReplyTo.Text = ((ParameterValue)extensionParam).Value;
                            }
                            if (((ParameterValue)extensionParam).Name.Equals("Subject"))
                            {
                                tbSub.Text = ((ParameterValue)extensionParam).Value;
                            }
                            if (((ParameterValue)extensionParam).Name.Equals("Comment"))
                            {
                                tbComment.Text = ((ParameterValue)extensionParam).Value;
                            }
                            if (((ParameterValue)extensionParam).Name.Equals("Priority"))
                            {
                                tbPriority.Text = ((ParameterValue)extensionParam).Value;
                            }
                        }                        

                        string startDateTime = string.Empty;
                        string EndDate = string.Empty;
                        string DaysInterval = string.Empty;
                        string WeeksInterval = string.Empty;
                        string Days = string.Empty;
                        string startTime = string.Empty;

                        int startTimePart = 0;
                        decimal hrs = 0;
                        int mins = 0;

                        xmlDoc = new XmlDocument();
                        xmlDoc.LoadXml(matchData);


                        parentNode = xmlDoc.DocumentElement;


                        string dd = string.Empty;
                        string mm = string.Empty;
                        string yy = string.Empty;

                        for (int iCntr = 0; iCntr < parentNode.ChildNodes.Count; iCntr++)
                        {
                            if (parentNode.ChildNodes[0].Name == "StartDateTime")
                            {
                                startDateTime = parentNode.ChildNodes[0].InnerText;
                                startTime = parentNode.ChildNodes[0].InnerText.Substring(parentNode.ChildNodes[0].InnerText.IndexOf("T") + 1);                                

                                yy = parentNode.ChildNodes[0].InnerText.Substring(0, parentNode.ChildNodes[0].InnerText.IndexOf("T")).Substring(0, 4);
                                mm = parentNode.ChildNodes[0].InnerText.Substring(0, parentNode.ChildNodes[0].InnerText.IndexOf("T")).Substring(5, 2);
                                dd = parentNode.ChildNodes[0].InnerText.Substring(0, parentNode.ChildNodes[0].InnerText.IndexOf("T")).Substring(8, 2);

                                txt_start_date.Text = mm + "/" + dd + "/" + yy;
                                txt_start_time.Text = startTime.Substring(0, 5);                               
                                
                            }

                            if (parentNode.ChildNodes.Count > 1)
                            {
                                if (parentNode.ChildNodes[1].Name == "EndDate")
                                {
                                    dd = string.Empty;
                                    mm = string.Empty;
                                    yy = string.Empty;

                                    yy = parentNode.ChildNodes[1].InnerText.Substring(0, 4);
                                    mm = parentNode.ChildNodes[1].InnerText.Substring(5, 2);
                                    dd = parentNode.ChildNodes[1].InnerText.Substring(8, 2);

                                    EndDate = mm + "/" + dd + "/" + yy;

                                    if (parentNode.ChildNodes[1].InnerText != string.Empty)
                                    {
                                        chk_end_date.Checked = true;
                                        txt_end_date.Text = EndDate;
                                    }
                                    else
                                    {
                                        chk_end_date.Checked = false;
                                    }
                                }
                                else
                                {
                                    chk_end_date.Checked = false;
                                    txt_end_date.Text = string.Empty;
                                }
                            }
                            else
                            {
                                chk_end_date.Checked = false;
                                txt_end_date.Text = string.Empty;
                            }

                            startTimePart = int.Parse(txt_start_time.Text.Substring(0, 2));
                            string startMinutePart = txt_start_time.Text.Substring(3, 2);

                            if (startTimePart >= 12)
                            {
                                rbl_start_time.SelectedIndex = 1;

                                if ((startTimePart - 12).ToString().Length == 1)
                                {
                                    txt_start_time.Text = "0" + (startTimePart - 12).ToString() + ":" + startMinutePart;
                                }
                                else
                                {
                                    txt_start_time.Text = (startTimePart - 12).ToString() + ":" + startMinutePart;
                                }
                            }
                            else
                            {
                                rbl_start_time.SelectedIndex = 0;
                            }                            

                            for (int iCounter = 0; iCounter < parentNode.ChildNodes.Count; iCounter++)
                            {
                                #region "For Months"

                                if (parentNode.ChildNodes[iCounter].Name.Contains("MonthlyRecurrence"))
                                {
                                    childNode = parentNode.ChildNodes[iCounter];

                                    for (int iCtr = 0; iCtr < childNode.ChildNodes.Count; iCtr++)
                                    {
                                        txt_cal_dt.Text = childNode.ChildNodes[0].InnerText;

                                        string chk_Month = childNode.ChildNodes[1].InnerText.Replace("true", "t").Replace("false", "f");

                                        if (chk_Month.Substring(0, 1) == "t")
                                        {
                                            chk_mnth_jan.Checked = true;
                                        }
                                        else
                                        {
                                            chk_mnth_jan.Checked = false;
                                        }
                                        if (chk_Month.Substring(1, 1) == "t")
                                        {
                                            chk_mnth_feb.Checked = true;
                                        }
                                        else
                                        {
                                            chk_mnth_feb.Checked = false;
                                        }
                                        if (chk_Month.Substring(2, 1) == "t")
                                        {
                                            chk_mnth_mar.Checked = true;
                                        }
                                        else
                                        {
                                            chk_mnth_mar.Checked = false;
                                        }
                                        if (chk_Month.Substring(3, 1) == "t")
                                        {
                                            chk_mnth_apr.Checked = true;
                                        }
                                        else
                                        {
                                            chk_mnth_apr.Checked = false;
                                        }
                                        if (chk_Month.Substring(4, 1) == "t")
                                        {
                                            chk_mnth_may.Checked = true;
                                        }
                                        else
                                        {
                                            chk_mnth_may.Checked = false;
                                        }
                                        if (chk_Month.Substring(5, 1) == "t")
                                        {
                                            chk_mnth_jun.Checked = true;
                                        }
                                        else
                                        {
                                            chk_mnth_jun.Checked = false;
                                        }
                                        if (chk_Month.Substring(6, 1) == "t")
                                        {
                                            chk_mnth_jul.Checked = true;
                                        }
                                        else
                                        {
                                            chk_mnth_jul.Checked = false;
                                        }
                                        if (chk_Month.Substring(7, 1) == "t")
                                        {
                                            chk_mnth_aug.Checked = true;
                                        }
                                        else
                                        {
                                            chk_mnth_aug.Checked = false;
                                        }
                                        if (chk_Month.Substring(8, 1) == "t")
                                        {
                                            chk_mnth_sep.Checked = true;
                                        }
                                        else
                                        {
                                            chk_mnth_sep.Checked = false;
                                        }
                                        if (chk_Month.Substring(9, 1) == "t")
                                        {
                                            chk_mnth_oct.Checked = true;
                                        }
                                        else
                                        {
                                            chk_mnth_oct.Checked = false;
                                        }
                                        if (chk_Month.Substring(10, 1) == "t")
                                        {
                                            chk_mnth_nov.Checked = true;
                                        }
                                        else
                                        {
                                            chk_mnth_nov.Checked = false;
                                        }
                                        if (chk_Month.Substring(11, 1) == "t")
                                        {
                                            chk_mnth_dec.Checked = true;
                                        }
                                        else
                                        {
                                            chk_mnth_dec.Checked = false;
                                        }

                                        rbl_duration_list.SelectedIndex = 3;
                                        rbl_duration_list_SelectedIndexChanged(rbl_duration_list, EventArgs.Empty);
                                    }
                                }

                                #endregion

                                #region "For Week"

                                else if (parentNode.ChildNodes[iCounter].Name.Contains("WeeklyRecurrence"))
                                {
                                    childNode = parentNode.ChildNodes[iCounter];

                                    for (int iCtr = 0; iCtr < childNode.ChildNodes.Count; iCtr++)
                                    {
                                        txt_week.Text = childNode.ChildNodes[0].InnerText;

                                        subChildNode = childNode.ChildNodes[1];

                                        for (int iCr = 0; iCr < subChildNode.ChildNodes.Count; iCr++)
                                        {
                                            if (subChildNode.ChildNodes[iCr].Name == "Sunday")
                                            {
                                                if (subChildNode.ChildNodes[iCr].InnerText == "true")
                                                {
                                                    cbl_week_option_3_sun.Checked = true;
                                                }
                                            }
                                            if (subChildNode.ChildNodes[iCr].Name == "Monday")
                                            {
                                                if (subChildNode.ChildNodes[iCr].InnerText == "true")
                                                {
                                                    cbl_week_option_3_mon.Checked = true;
                                                }
                                            }
                                            if (subChildNode.ChildNodes[iCr].Name == "Tuesday")
                                            {
                                                if (subChildNode.ChildNodes[iCr].InnerText == "true")
                                                {
                                                    cbl_week_option_3_tue.Checked = true;
                                                }
                                            }
                                            if (subChildNode.ChildNodes[iCr].Name == "Wednesday")
                                            {
                                                if (subChildNode.ChildNodes[iCr].InnerText == "true")
                                                {
                                                    cbl_week_option_3_wed.Checked = true;
                                                }
                                            }
                                            if (subChildNode.ChildNodes[iCr].Name == "Thursday")
                                            {
                                                if (subChildNode.ChildNodes[iCr].InnerText == "true")
                                                {
                                                    cbl_week_option_3_thu.Checked = true;
                                                }
                                            }
                                            if (subChildNode.ChildNodes[iCr].Name == "Friday")
                                            {
                                                if (subChildNode.ChildNodes[iCr].InnerText == "true")
                                                {
                                                    cbl_week_option_3_fri.Checked = true;
                                                }
                                            }
                                            if (subChildNode.ChildNodes[iCr].Name == "Saturday")
                                            {
                                                if (subChildNode.ChildNodes[iCr].InnerText == "true")
                                                {
                                                    cbl_week_option_3_sat.Checked = true;
                                                }
                                            }
                                        }

                                        rbl_duration_list.SelectedIndex = 2;
                                        rbl_duration_list_SelectedIndexChanged(rbl_duration_list, EventArgs.Empty);
                                    }
                                }

                                #endregion

                                #region "For Daily"

                                else if (parentNode.ChildNodes[iCounter].Name.Contains("DailyRecurrence"))
                                {
                                    childNode = parentNode.ChildNodes[iCounter];

                                    for (int iCr = 0; iCr < childNode.ChildNodes.Count; iCr++)
                                    {
                                        if (childNode.ChildNodes[iCr].Name == "DaysInterval")
                                        {
                                            txt_hour_days.Text = childNode.ChildNodes[iCr].InnerText;
                                        }
                                    }

                                    rbl_duration_list.SelectedIndex = 1;
                                    rbl_duration_list_SelectedIndexChanged(rbl_duration_list, EventArgs.Empty);
                                }

                                #endregion

                                #region "For Hours"

                                else if (parentNode.ChildNodes[iCounter].Name.Contains("MinuteRecurrence"))
                                {
                                    childNode = parentNode.ChildNodes[iCounter];

                                    for (int iCr = 0; iCr < childNode.ChildNodes.Count; iCr++)
                                    {
                                        if (childNode.ChildNodes[iCr].Name == "MinutesInterval")
                                        {
                                            hrs = decimal.Truncate(decimal.Parse(childNode.ChildNodes[iCr].InnerText) / 60);
                                            mins = int.Parse(childNode.ChildNodes[iCr].InnerText) - (60 * (int.Parse(hrs.ToString())));

                                            txt_hour_hrs.Text = hrs.ToString();
                                            if (txt_hour_hrs.Text.Trim().Length > 2)
                                            {
                                                txt_hour_hrs.Text = txt_hour_hrs.Text.Substring(0, 2);
                                            }
                                            txt_hour_mins.Text = mins.ToString();
                                        }
                                    }

                                    rbl_duration_list.SelectedIndex = 0;
                                    rbl_duration_list_SelectedIndexChanged(rbl_duration_list, EventArgs.Empty);
                                }

                                #endregion

                                #region "For Once"

                                else
                                {

                                    rbl_duration_list.SelectedIndex = 4;
                                    rbl_duration_list_SelectedIndexChanged(rbl_duration_list, EventArgs.Empty);
                                }

                                #endregion
                            }                      
                        }
                    }
                   
                    tbDesc.Text = desc;
                    
                    if (values != null)
                    {
                        foreach (ParameterValue pv in values)
                        {
                            fMultiPar = false;
                            if (pSubsPar.Controls.Count > 1)
                            {
                                foreach (System.Web.UI.Control cntrl in pSubsPar.Controls)
                                {
                                    if (cntrl.ID == "tb" + pv.Name)
                                    {
                                        ((TextBox)cntrl).Text = ((TextBox)cntrl).Text + "," + pv.Value;
                                        fMultiPar = true;
                                        break;
                                    }
                                }
                            }
                            if (!fMultiPar)
                            {
                                lblPar = new Label();
                                pSubsPar.Controls.Add(lblPar);
                                lblPar.Text = pv.Name + ": ";
                                lblPar.ID = "lbl" + pv.Name;
                                lblPar.EnableViewState = true;

                                tbPar = new TextBox();
                                pSubsPar.Controls.Add(tbPar);
                                tbPar.Text = pv.Value;
                                tbPar.ID = "tb" + pv.Name;
                                tbPar.EnableViewState = true;

                                arrParList.Add(pv.Name);
                            }
                                                    
                        }
                        Session["ParList"] = arrParList;
                    }
                }
                else
                {
                    lblError.Text = "Please enter a valid Subscription ID.";
                }
            }
            catch
            {
                Response.Write("<script language='javascript'>alert('There is an error while getting the Subscription Details. Please enter a valid Subscription ID.');</script>");
                return;                
            }
            finally
            {
                active = null;

                extensionParams = null;

                arrParList = null;

                xmlDoc = null;
                parentNode = null;
                childNode = null;
                subChildNode = null;

                lblPar = null;
                tbPar = null;
            }
        }

        #endregion

        #region "$$$$$chk_end_date_CheckedChanged EVENT$$$$$"

        protected void chk_end_date_CheckedChanged(object sender, EventArgs e)
        {
            if (chk_end_date.Checked == false)
            {
                txt_end_date.Text = string.Empty;
                txt_end_date.Enabled = false;
            }
            else
            {
                txt_end_date.Enabled = true;
            }
        }

        #endregion

        #region "$$$$$BtUpdSubs_Click EVENT$$$$$"
        
        protected void BtUpdSubs_Click(object sender, EventArgs e)
        {
            ActiveState active = null;
            ParameterValueOrFieldReference[] extensionParams = null;

            try
            {
                #region "Validations before Submit"
             
                if (tbTO.Text.Trim().Length == 0)
                {
                    Response.Write("<script language='javascript'>alert('Please specify To Email ID.');</script>");
                    return;
                }

                if (txt_hour_hrs.Text.Trim() != string.Empty && rbl_duration_list.SelectedIndex == 0)
                {
                    if (int.Parse(txt_hour_hrs.Text) > 11)
                    {
                        Response.Write("<script language='javascript'>alert('Hour should be between 0-11.');</script>");
                        return;
                    }
                }

                if (txt_hour_mins.Text.Trim() != string.Empty && rbl_duration_list.SelectedIndex == 0)
                {
                    if (int.Parse(txt_hour_mins.Text) > 59)
                    {
                        Response.Write("<script language='javascript'>alert('Minute should be between 0-59.');</script>");
                        return;
                    }
                }

                if (txt_start_time.Text.Trim().Length == 0 && txt_start_time.Text.Trim().Length < 5)
                {
                    Response.Write("<script language='javascript'>alert('Time must be entered as hh:mm.');</script>");
                    return;
                }

                if (int.Parse(txt_start_time.Text.Substring(0, 2)) > 11)
                {
                    Response.Write("<script language='javascript'>alert('Start Time Hour should be between 0-11.');</script>");
                    return;
                }

                if (int.Parse(txt_start_time.Text.Substring(3, 2)) > 59)
                {
                    Response.Write("<script language='javascript'>alert('Start Time Minute should be between 0-59.');</script>");
                    return;
                }                

                if (txt_start_date.Text.ToString().Length == 0)
                {
                    Response.Write("<script language='javascript'>alert('Please enter a valid Start Date.');</script>");
                    return;
                }

                if (chk_end_date.Checked)
                {
                    if (txt_end_date.Text.ToString().Length == 0)
                    {
                        Response.Write("<script language='javascript'>alert('Please enter a valid End Date.');</script>");
                        return;
                    }
                }

                char[] seperatorChar = new char[] { ':' };
                string[] hourValues = txt_start_time.Text.Split(seperatorChar);

                if (hourValues[0].Length < 2)
                {
                    Response.Write("<script language='javascript'>alert('Start Time must be entered as hh:mm.');</script>");
                    return;
                }
                if (hourValues[1].Length < 2)
                {
                    Response.Write("<script language='javascript'>alert('Start Time must be entered as hh:mm.');</script>");
                    return;
                }

                #region "CONDITIONAL VALIDATIONS"

                if (rbl_duration_list.SelectedIndex == 0)
                {
                    if (txt_hour_hrs.Text.Trim().Length == 0)
                    {
                        Response.Write("<script language='javascript'>alert('Please enter at-least 0 for the hour.');</script>");
                        return;
                    }

                    if (txt_hour_mins.Text.Trim().Length == 0)
                    {
                        Response.Write("<script language='javascript'>alert('Please enter at-least 0 for the minute.');</script>");
                        return;
                    }

                    if ((txt_hour_hrs.Text.Trim() == "00")||(txt_hour_hrs.Text.Trim() == "0"))                    
                    {
                        if ((txt_hour_mins.Text.Trim() == "00") || (txt_hour_mins.Text.Trim() == "0"))
                        {
                            Response.Write("<script language='javascript'>alert('Please enter an amount of time greater than 0 minutes.');</script>");
                            return;
                        }
                    }                    
                }
                else if (rbl_duration_list.SelectedIndex == 1)
                {
                                     
                }
                else if (rbl_duration_list.SelectedIndex == 2)
                {
                    if (txt_week.Text.Trim().Length == 0
                        || txt_week.Text.Trim() == "0")
                    {
                        Response.Write("<script language='javascript'>alert('The number of weeks must be greater than 0.');</script>");
                        return;
                    }   
                }
                else if (rbl_duration_list.SelectedIndex == 3)
                {

                }
                else if (rbl_duration_list.SelectedIndex == 4)
                {

                }

                #endregion 

                #endregion

                xmlHour = new StringBuilder();
                xmlDay = new StringBuilder();
                xmlWeek = new StringBuilder();
                xmlMonth = new StringBuilder();
                xmlOnce = new StringBuilder();

                extSettings = new ExtensionSettings();
                active = new ActiveState();

                ParameterValue[] values;

                rs = new ReportingService2006();
                rs.Credentials = System.Net.CredentialCache.DefaultCredentials;

                string mm = txt_start_date.Text.ToString().Substring(0, 2);
                string dd = txt_start_date.Text.ToString().Substring(3, 2);
                string yy = txt_start_date.Text.ToString().Substring(6);

                dd = dd.Replace("/", string.Empty);
                mm = mm.Replace("/", string.Empty);

                dd = dd.Trim();
                mm = mm.Trim();

                if (dd.Length == 1)
                {
                    dd = "0" + dd;
                }

                if (mm.Length == 1)
                {
                    mm = "0" + mm;
                }

                string startTime = txt_start_time.Text.Substring(0, 2);

                startTime = startTime.Replace(":", string.Empty);
                startTime = startTime.Trim();

                if (startTime.Length == 1)
                {
                    startTime = "0" + startTime;
                }

                int startTimeNum = int.Parse(startTime);

                if (rbl_start_time.SelectedIndex == 1)
                {
                    startTime = (startTimeNum + 12).ToString();
                }               

                #region "DYNAMICALLY GENERATING XML STRING FOR HOUR"

                if (rbl_duration_list.SelectedIndex == 0)
                {
                    if (txt_hour_hrs.Text.Trim().Length == 0)
                    {
                        if (txt_hour_mins.Text.Trim().Length == 0)
                        {
                            Response.Write("<script language='javascript'>alert('Please enter hours and minutes.');</script>");
                            return;
                        }
                    }

                    xmlHour.Append("<?xml version='1.0' encoding='utf-16'?><ScheduleDefinition xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema'><StartDateTime xmlns='http://schemas.microsoft.com/sqlserver/2006/03/15/reporting/reportingservices'>");
                    xmlHour.Append(yy + "-" + mm + "-" + dd + "T" + startTime + txt_start_time.Text.Substring(2, 3)+ ":00");
                    xmlHour.Append("</StartDateTime>");

                    if (txt_end_date.Text.ToString() != string.Empty && chk_end_date.Checked)
                    {
                        mm = txt_end_date.Text.ToString().Substring(0, 2);
                        dd = txt_end_date.Text.ToString().Substring(3, 2);
                        yy = txt_end_date.Text.ToString().Substring(6);

                        dd = dd.Replace("/", string.Empty);
                        mm = mm.Replace("/", string.Empty);

                        dd = dd.Trim();
                        mm = mm.Trim();

                        if (dd.Length == 1)
                        {
                            dd = "0" + dd;
                        }

                        if (mm.Length == 1)
                        {
                            mm = "0" + mm;
                        }
                        xmlHour.Append("<EndDate xmlns='http://schemas.microsoft.com/sqlserver/2006/03/15/reporting/reportingservices'>");
                        xmlHour.Append(yy + "-" + mm + "-" + dd);
                        xmlHour.Append("</EndDate>");
                    }

                    int totalMins = int.Parse(txt_hour_hrs.Text.Trim()) * 60 + int.Parse(txt_hour_mins.Text.Trim());

                    xmlHour.Append("<MinuteRecurrence xmlns='http://schemas.microsoft.com/sqlserver/2006/03/15/reporting/reportingservices'><MinutesInterval>" + totalMins.ToString() + "</MinutesInterval></MinuteRecurrence></ScheduleDefinition>");
                }

                #endregion

                #region "DYNAMICALLY GENERATING XML STRING FOR DAY"

                if (rbl_duration_list.SelectedIndex == 1)
                {
                    if (rbl_day_option_1.SelectedIndex == 0)
                    {
                        if (cbl_day_option_sun.Checked != true
                            && cbl_day_option_mon.Checked != true
                            && cbl_day_option_tue.Checked != true
                            && cbl_day_option_wed.Checked != true
                            && cbl_day_option_thu.Checked != true
                            && cbl_day_option_fri.Checked != true
                            && cbl_day_option_sat.Checked != true)
                        {
                            Response.Write("<script language='javascript'>alert('You must select at least one day.');</script>");
                            return;
                        }
                    }

                    if (rbl_day_option_2.SelectedIndex == 0)
                    {
                        if (txt_hour_days.Text.Trim().Length == 0)
                        {
                            Response.Write("<script language='javascript'>alert('The number of days must be greater than 1.');</script>");
                            return;
                        }
                    }

                    xmlDay.Append("<?xml version='1.0' encoding='utf-16'?><ScheduleDefinition xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema'><StartDateTime xmlns='http://schemas.microsoft.com/sqlserver/2006/03/15/reporting/reportingservices'>");

                    xmlDay.Append(yy + "-" + mm + "-" + dd + "T" + startTime + txt_start_time.Text.Substring(2, 3) + ":00");
                    xmlDay.Append("</StartDateTime>");

                    if (txt_end_date.Text.ToString() != string.Empty && chk_end_date.Checked)
                    {
                        mm = txt_end_date.Text.ToString().Substring(0, 2);
                        dd = txt_end_date.Text.ToString().Substring(3, 2);
                        yy = txt_end_date.Text.ToString().Substring(6);

                        dd = dd.Replace("/", string.Empty);
                        mm = mm.Replace("/", string.Empty);

                        dd = dd.Trim();
                        mm = mm.Trim();

                        if (dd.Length == 1)
                        {
                            dd = "0" + dd;
                        }

                        if (mm.Length == 1)
                        {
                            mm = "0" + mm;
                        }
                        xmlDay.Append("<EndDate xmlns='http://schemas.microsoft.com/sqlserver/2006/03/15/reporting/reportingservices'>");
                        xmlDay.Append(yy + "-" + mm + "-" + dd);
                        xmlDay.Append("</EndDate>");
                    }

                    if (rbl_day_option_2.SelectedIndex == 0)
                    {
                        xmlDay.Append("<DailyRecurrence xmlns='http://schemas.microsoft.com/sqlserver/2006/03/15/reporting/reportingservices'><DaysInterval>");
                        xmlDay.Append(txt_hour_days.Text.Trim() + "</DaysInterval></DailyRecurrence></ScheduleDefinition>");
                    }

                    if (rbl_day_option_1.SelectedIndex == 0)
                    {
                        xmlDay.Append("<WeeklyRecurrence xmlns='http://schemas.microsoft.com/sqlserver/2006/03/15/reporting/reportingservices'><WeeksInterval>1</WeeksInterval><DaysOfWeek>");

                        if (cbl_day_option_sun.Checked)
                        {
                            xmlDay.Append("<Sunday>true</Sunday>");
                        }
                        else
                        {
                            xmlDay.Append("<Sunday>false</Sunday>");
                        }
                        if (cbl_day_option_mon.Checked)
                        {
                            xmlDay.Append("<Monday>true</Monday>");
                        }
                        else
                        {
                            xmlDay.Append("<Monday>false</Monday>");
                        }
                        if (cbl_day_option_tue.Checked)
                        {
                            xmlDay.Append("<Tuesday>true</Tuesday>");
                        }
                        else
                        {
                            xmlDay.Append("<Tuesday>false</Tuesday>");
                        }
                        if (cbl_day_option_wed.Checked)
                        {
                            xmlDay.Append("<Wednesday>true</Wednesday>");
                        }
                        else
                        {
                            xmlDay.Append("<Wednesday>false</Wednesday>");
                        }
                        if (cbl_day_option_thu.Checked)
                        {
                            xmlDay.Append("<Thursday>true</Thursday>");
                        }
                        else
                        {
                            xmlDay.Append("<Thursday>false</Thursday>");
                        }
                        if (cbl_day_option_fri.Checked)
                        {
                            xmlDay.Append("<Friday>true</Friday>");
                        }
                        else
                        {
                            xmlDay.Append("<Friday>false</Friday>");
                        }
                        if (cbl_day_option_sat.Checked)
                        {
                            xmlDay.Append("<Saturday>true</Saturday>");
                        }
                        else
                        {
                            xmlDay.Append("<Saturday>false</Saturday>");
                        }

                        xmlDay.Append("</DaysOfWeek></WeeklyRecurrence></ScheduleDefinition>");
                    }
                }

                #endregion

                #region "DYNAMICALLY GENERATING XML STRING FOR WEEK"

                if (rbl_duration_list.SelectedIndex == 2)
                {
                    if (txt_week.Text.Trim().Length == 0)
                    {
                        Response.Write("<script language='javascript'>alert('The number of weeks must be greater than 0.');</script>");
                        return;
                    }

                    if (cbl_week_option_3_sun.Checked != true
                        && cbl_week_option_3_mon.Checked != true
                        && cbl_week_option_3_tue.Checked != true
                        && cbl_week_option_3_wed.Checked != true
                        && cbl_week_option_3_thu.Checked != true
                        && cbl_week_option_3_fri.Checked != true
                        && cbl_week_option_3_sat.Checked != true)
                    {
                        Response.Write("<script language='javascript'>alert('You must select at least one day.');</script>");
                        return;
                    }

                    xmlWeek.Append("<?xml version='1.0' encoding='utf-16'?><ScheduleDefinition xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema'><StartDateTime xmlns='http://schemas.microsoft.com/sqlserver/2006/03/15/reporting/reportingservices'>");

                    xmlWeek.Append(yy + "-" + mm + "-" + dd + "T" + startTime + txt_start_time.Text.Substring(2, 3) + ":00");
                    xmlWeek.Append("</StartDateTime>");

                    if (txt_end_date.Text.ToString() != string.Empty && chk_end_date.Checked)
                    {
                        mm = txt_end_date.Text.ToString().Substring(0, 2);
                        dd = txt_end_date.Text.ToString().Substring(3, 2);
                        yy = txt_end_date.Text.ToString().Substring(6);

                        dd = dd.Replace("/", string.Empty);
                        mm = mm.Replace("/", string.Empty);

                        dd = dd.Trim();
                        mm = mm.Trim();

                        if (dd.Length == 1)
                        {
                            dd = "0" + dd;
                        }

                        if (mm.Length == 1)
                        {
                            mm = "0" + mm;
                        }
                        xmlWeek.Append("<EndDate xmlns='http://schemas.microsoft.com/sqlserver/2006/03/15/reporting/reportingservices'>");
                        xmlWeek.Append(yy + "-" + mm + "-" + dd);
                        xmlWeek.Append("</EndDate>");
                    }

                    xmlWeek.Append("<WeeklyRecurrence xmlns='http://schemas.microsoft.com/sqlserver/2006/03/15/reporting/reportingservices'><WeeksInterval>");
                    xmlWeek.Append(txt_week.Text.Trim() + "</WeeksInterval><DaysOfWeek>");

                    if (cbl_week_option_3_sun.Checked)
                    {
                        xmlWeek.Append("<Sunday>true</Sunday>");
                    }
                    else
                    {
                        xmlWeek.Append("<Sunday>false</Sunday>");
                    }
                    if (cbl_week_option_3_mon.Checked)
                    {
                        xmlWeek.Append("<Monday>true</Monday>");
                    }
                    else
                    {
                        xmlWeek.Append("<Monday>false</Monday>");
                    }
                    if (cbl_week_option_3_tue.Checked)
                    {
                        xmlWeek.Append("<Tuesday>true</Tuesday>");
                    }
                    else
                    {
                        xmlWeek.Append("<Tuesday>false</Tuesday>");
                    }
                    if (cbl_week_option_3_wed.Checked)
                    {
                        xmlWeek.Append("<Wednesday>true</Wednesday>");
                    }
                    else
                    {
                        xmlWeek.Append("<Wednesday>false</Wednesday>");
                    }
                    if (cbl_week_option_3_thu.Checked)
                    {
                        xmlWeek.Append("<Thursday>true</Thursday>");
                    }
                    else
                    {
                        xmlWeek.Append("<Thursday>false</Thursday>");
                    }
                    if (cbl_week_option_3_fri.Checked)
                    {
                        xmlWeek.Append("<Friday>true</Friday>");
                    }
                    else
                    {
                        xmlWeek.Append("<Friday>false</Friday>");
                    }
                    if (cbl_week_option_3_sat.Checked)
                    {
                        xmlWeek.Append("<Saturday>true</Saturday>");
                    }
                    else
                    {
                        xmlWeek.Append("<Saturday>false</Saturday>");
                    }

                    xmlWeek.Append("</DaysOfWeek></WeeklyRecurrence></ScheduleDefinition>");
                }

                #endregion

                #region "DYNAMICALLY GENERATING XML STRING FOR MONTH"

                if (rbl_duration_list.SelectedIndex == 3)
                {
                    if (chk_mnth_jan.Checked != true
                        && chk_mnth_feb.Checked != true
                        && chk_mnth_mar.Checked != true
                        && chk_mnth_apr.Checked != true
                        && chk_mnth_may.Checked != true
                        && chk_mnth_jun.Checked != true
                        && chk_mnth_jul.Checked != true
                        && chk_mnth_aug.Checked != true
                        && chk_mnth_sep.Checked != true
                        && chk_mnth_oct.Checked != true
                        && chk_mnth_nov.Checked != true
                        && chk_mnth_dec.Checked != true)
                    {
                        Response.Write("<script language='javascript'>alert('You must select at least one month.');</script>");
                        return;
                    }

                    if (txt_cal_dt.Text.Trim().Length == 0)
                    {
                        Response.Write("<script language='javascript'>alert('Calendar days must be entered in a format similar to : 1-3,10,15-19.');</script>");
                        return;
                    }
                    xmlMonth.Append("<?xml version='1.0' encoding='utf-16'?><ScheduleDefinition xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema'><StartDateTime xmlns='http://schemas.microsoft.com/sqlserver/2006/03/15/reporting/reportingservices'>");

                    xmlMonth.Append(yy + "-" + mm + "-" + dd + "T" + startTime + txt_start_time.Text.Substring(2, 3) + ":00");
                    xmlMonth.Append("</StartDateTime>");

                    if (txt_end_date.Text.ToString() != string.Empty && chk_end_date.Checked)
                    {
                        mm = txt_end_date.Text.ToString().Substring(0, 2);
                        dd = txt_end_date.Text.ToString().Substring(3, 2);
                        yy = txt_end_date.Text.ToString().Substring(6);

                        dd = dd.Replace("/", string.Empty);
                        mm = mm.Replace("/", string.Empty);

                        dd = dd.Trim();
                        mm = mm.Trim();

                        if (dd.Length == 1)
                        {
                            dd = "0" + dd;
                        }

                        if (mm.Length == 1)
                        {
                            mm = "0" + mm;
                        }
                        xmlMonth.Append("<EndDate xmlns='http://schemas.microsoft.com/sqlserver/2006/03/15/reporting/reportingservices'>");
                        xmlMonth.Append(yy + "-" + mm + "-" + dd);
                        xmlMonth.Append("</EndDate>");
                    }

                    xmlMonth.Append("<MonthlyRecurrence xmlns='http://schemas.microsoft.com/sqlserver/2006/03/15/reporting/reportingservices'>");
                    xmlMonth.Append("<Days>" + txt_cal_dt.Text.Trim() + "</Days>");
                    xmlMonth.Append("<MonthsOfYear>");

                    if (chk_mnth_jan.Checked)
                    {
                        xmlMonth.Append("<January>true</January>");
                    }
                    else
                    {
                        xmlMonth.Append("<January>false</January>");
                    }
                    if (chk_mnth_feb.Checked)
                    {
                        xmlMonth.Append("<February>true</February>");
                    }
                    else
                    {
                        xmlMonth.Append("<February>false</February>");
                    }
                    if (chk_mnth_mar.Checked)
                    {
                        xmlMonth.Append("<March>true</March>");
                    }
                    else
                    {
                        xmlMonth.Append("<March>false</March>");
                    }
                    if (chk_mnth_apr.Checked)
                    {
                        xmlMonth.Append("<April>true</April>");
                    }
                    else
                    {
                        xmlMonth.Append("<April>false</April>");
                    }
                    if (chk_mnth_may.Checked)
                    {
                        xmlMonth.Append("<May>true</May>");
                    }
                    else
                    {
                        xmlMonth.Append("<May>false</May>");
                    }
                    if (chk_mnth_jun.Checked)
                    {
                        xmlMonth.Append("<June>true</June>");
                    }
                    else
                    {
                        xmlMonth.Append("<June>false</June>");
                    }
                    if (chk_mnth_jul.Checked)
                    {
                        xmlMonth.Append("<July>true</July>");
                    }
                    else
                    {
                        xmlMonth.Append("<July>false</July>");
                    }
                    if (chk_mnth_aug.Checked)
                    {
                        xmlMonth.Append("<August>true</August>");
                    }
                    else
                    {
                        xmlMonth.Append("<August>false</August>");
                    }
                    if (chk_mnth_sep.Checked)
                    {
                        xmlMonth.Append("<September>true</September>");
                    }
                    else
                    {
                        xmlMonth.Append("<September>false</September>");
                    }
                    if (chk_mnth_oct.Checked)
                    {
                        xmlMonth.Append("<October>true</October>");
                    }
                    else
                    {
                        xmlMonth.Append("<October>false</October>");
                    }
                    if (chk_mnth_nov.Checked)
                    {
                        xmlMonth.Append("<November>true</November>");
                    }
                    else
                    {
                        xmlMonth.Append("<November>false</November>");
                    }
                    if (chk_mnth_dec.Checked)
                    {
                        xmlMonth.Append("<December>true</December>");
                    }
                    else
                    {
                        xmlMonth.Append("<December>false</December>");
                    }

                    xmlMonth.Append("</MonthsOfYear></MonthlyRecurrence></ScheduleDefinition>");
                }

                #endregion

                #region "DYNAMICALLY GENERATING XML STRING FOR ONCE"

                if (rbl_duration_list.SelectedIndex == 4)
                {
                    xmlOnce.Append("<?xml version='1.0' encoding='utf-16'?><ScheduleDefinition xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema'><StartDateTime xmlns='http://schemas.microsoft.com/sqlserver/2006/03/15/reporting/reportingservices'>");
                    xmlOnce.Append(yy + "-" + mm + "-" + dd + "T" + startTime + txt_start_time.Text.Substring(2, 3) + ":00");
                    xmlOnce.Append("</StartDateTime>");

                    if (txt_end_date.Text.ToString() != string.Empty && chk_end_date.Checked)
                    {
                        mm = txt_end_date.Text.ToString().Substring(0, 2);
                        dd = txt_end_date.Text.ToString().Substring(3, 2);
                        yy = txt_end_date.Text.ToString().Substring(6);

                        dd = dd.Replace("/", string.Empty);
                        mm = mm.Replace("/", string.Empty);

                        dd = dd.Trim();
                        mm = mm.Trim();

                        if (dd.Length == 1)
                        {
                            dd = "0" + dd;
                        }

                        if (mm.Length == 1)
                        {
                            mm = "0" + mm;
                        }
                        xmlOnce.Append("<EndDate xmlns='http://schemas.microsoft.com/sqlserver/2006/03/15/reporting/reportingservices'>");
                        xmlOnce.Append(yy + "-" + mm + "-" + dd);
                        xmlOnce.Append("</EndDate>");
                    }

                    xmlOnce.Append("</ScheduleDefinition>");
                }

                #endregion

                string status = string.Empty;
                string strUserID = string.Empty;

                lblError.Text = string.Empty;

                int nParCount = 0;

                strUserID = rs.GetSubscriptionProperties((String)Session["SubscriptionID"], out extSettings, out desc, out active, out status, out eventType, out matchData, out values);
                
                if (strUserID != null)
                {
                    extensionParams = extSettings.ParameterValues;

                    if (extensionParams != null)
                    {
                        foreach (ParameterValueOrFieldReference
                            extensionParam in extensionParams)
                        {
                            if (((ParameterValue)extensionParam).Name.Equals("TO"))
                            {
                                ((ParameterValue)extensionParam).Value = tbTO.Text;
                            }
                            if (((ParameterValue)extensionParam).Name.Equals("CC"))
                            {
                                ((ParameterValue)extensionParam).Value = tbCC.Text;
                            }
                            if (((ParameterValue)extensionParam).Name.Equals("BCC"))
                            {
                                ((ParameterValue)extensionParam).Value = tbBCC.Text;
                            }
                            if (((ParameterValue)extensionParam).Name.Equals("ReplyTo"))
                            {
                                ((ParameterValue)extensionParam).Value = tbReplyTo.Text;
                            }
                            if (((ParameterValue)extensionParam).Name.Equals("Subject"))
                            {
                                ((ParameterValue)extensionParam).Value = tbSub.Text;
                            }
                            if (((ParameterValue)extensionParam).Name.Equals("Comment"))
                            {
                                ((ParameterValue)extensionParam).Value = tbComment.Text;
                            }
                            if (((ParameterValue)extensionParam).Name.Equals("Priority"))
                            {
                                ((ParameterValue)extensionParam).Value = tbPriority.Text;
                            }
                        }
                    }

                    desc = tbDesc.Text.Trim();

                    nParCount = 0;
                    foreach (System.Web.UI.Control cntrl in pSubsPar.Controls)
                    {
                        if (cntrl.ID.StartsWith("tb"))
                        {
                            string strName = cntrl.ID.Substring(2);
                            foreach (String strValue in (((TextBox)cntrl).Text.Split(',')))
                            {
                                nParCount = nParCount + 1;
                            }
                        }
                    }

                    values = new ParameterValue[nParCount];
                    nParCount = 0;
                    foreach (System.Web.UI.Control cntrl in pSubsPar.Controls)
                    {
                        if (cntrl.ID.StartsWith("tb"))
                        {
                            string strName = cntrl.ID.Substring(2);
                            foreach (String strValue in (((TextBox)cntrl).Text.Split(',')))
                            {
                                values[nParCount] = new ParameterValue();
                                values[nParCount].Name = strName;
                                values[nParCount].Value = strValue;
                                nParCount = nParCount + 1;
                            }
                        }
                    }

                    //Updating Subscription Details for Hour
                    if (rbl_duration_list.SelectedIndex == 0)
                    {
                        rs.SetSubscriptionProperties((String)Session["SubscriptionID"], extSettings, desc, eventType, xmlHour.ToString(), values);
                        ClearExistingData();
                        ClearSubsID();
                    }
                    
                    //Updating Subscription Details for Day
                    else if (rbl_duration_list.SelectedIndex == 1)
                    {
                        rs.SetSubscriptionProperties((String)Session["SubscriptionID"], extSettings, desc, eventType, xmlDay.ToString(), values);
                        ClearExistingData();
                        ClearSubsID();
                    }

                    //Updating Subscription Details for Week
                    else if (rbl_duration_list.SelectedIndex == 2)
                    {
                        rs.SetSubscriptionProperties((String)Session["SubscriptionID"], extSettings, desc, eventType, xmlWeek.ToString(), values);
                        ClearExistingData();
                        ClearSubsID();
                    }

                    //Updating Subscription Details for Month
                    else if (rbl_duration_list.SelectedIndex == 3)
                    {
                        rs.SetSubscriptionProperties((String)Session["SubscriptionID"], extSettings, desc, eventType, xmlMonth.ToString(), values);
                        ClearExistingData();
                        ClearSubsID();
                    }

                    //Updating Subscription Details for Once
                    else if (rbl_duration_list.SelectedIndex == 4)
                    {
                        rs.SetSubscriptionProperties((String)Session["SubscriptionID"], extSettings, desc, eventType, xmlOnce.ToString(), values);
                        ClearExistingData();
                        ClearSubsID();
                    }

                    rbl_duration_list.SelectedIndex = 0;
                    rbl_duration_list_SelectedIndexChanged(rbl_duration_list, EventArgs.Empty);

                    Response.Write("<script language='javascript'>alert('Subscription Details is successfully changed.');</script>");

                }
                else
                {
                    lblError.Text = "Please enter a valid subscription id.";
                }                
            }
            catch (Exception pEx)
            {
                if (pEx.ToString().Contains("Microsoft.ReportingServices.Diagnostics.Utilities.ReportServerStorageException"))
                {
                    Response.Write("<script language='javascript'>alert('Subscription Details is successfully changed.');</script>");
                    ClearExistingData();
                    ClearSubsID();
                    return;
                }
                else
                {
                    Response.Write("<script language='javascript'>alert('Subscription Details cannot be changed. Please check the Subscription Details or visit this page after sometime.');</script>");
                    return;
                }
            }            
            finally
            {
                xmlHour = null;
                xmlDay = null;
                xmlWeek = null;
                xmlMonth = null;
                xmlOnce = null;

                rs = null;
                active = null;
                extensionParams = null;
            }
        }

        #endregion     

        #region "$$$$$ALL USER DEFINED METHODS$$$$$"

        #region "$$$$$ClearExistingData METHOD$$$$$"

        protected void ClearExistingData()
        {
            try
            {
                Session["ParList"] = null;
                Session["SubscriptionID"] = null;
                tbBCC.Text = "";
                tbCC.Text = "";
                tbComment.Text = "";
                tbPriority.Text = "";
                tbReplyTo.Text = "";
                tbSub.Text = "";
                tbTO.Text = "";
                tbDesc.Text = "";

                while (pSubsPar.Controls.Count != 0)
                {
                    pSubsPar.Controls.RemoveAt(0);
                }

                rbl_duration_list.SelectedIndex = 0;
                txt_hour_hrs.Text = string.Empty;
                txt_hour_mins.Text = string.Empty;
                rbl_day_option_1.SelectedIndex = -1;

                cbl_day_option_sun.Checked = false;
                cbl_day_option_mon.Checked = false;
                cbl_day_option_tue.Checked = false;
                cbl_day_option_wed.Checked = false;
                cbl_day_option_thu.Checked = false;
                cbl_day_option_fri.Checked = false;
                cbl_day_option_sat.Checked = false;

                chk_mnth_jan.Checked = false;
                chk_mnth_feb.Checked = false;
                chk_mnth_mar.Checked = false;
                chk_mnth_apr.Checked = false;
                chk_mnth_may.Checked = false;
                chk_mnth_jun.Checked = false;
                chk_mnth_jul.Checked = false;
                chk_mnth_aug.Checked = false;
                chk_mnth_sep.Checked = false;
                chk_mnth_oct.Checked = false;
                chk_mnth_nov.Checked = false;
                chk_mnth_dec.Checked = false;

                txt_cal_dt.Text = string.Empty;
                txt_start_time.Text = string.Empty;
                txt_start_date.Text = string.Empty;
                txt_end_date.Text = string.Empty;
            }
            catch
            {
                Response.Write("<script language='javascript'>alert('There is an error while processing the request. Please try again after sometime.');</script>");
                return;
            }            
        }

        #endregion

        #region "$$$$$ClearSubsID METHOD$$$$$"

        protected void ClearSubsID()
        {
            try
            {
                tbEnterSubsID.Text = "";
            }
            catch
            {
                Response.Write("<script language='javascript'>alert('There is an error while processing the request. Please try again after sometime.');</script>");
                return;
            }            
        }

        #endregion

        #endregion

        #endregion

    }
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer (Senior)
United Kingdom United Kingdom
A SharePoint Kid playing in Kolkata, India.

Working with one of the leading software company and currently working with SharePoint technologies.

Enjoys Cricket, National & World Music.

Favourite band include Linkin Park, Beatles, Oasis, Match Box 20, Noori, Nirvana, Nickelback etc.

Comments and Discussions