/// <summary>
        /// Responds to the users request to Save
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnSave_Click(object sender, EventArgs e)
        {
            var             oController = new ScheduledSqlJobsController();
            JobScheduleInfo oInfo;

            if (hfJobId.Value.Equals("-1"))
            {
                oInfo = new JobScheduleInfo();
                oInfo.JobScheduleId = -1;
                oInfo.NextJobRun    = System.DateTime.Now.AddMinutes(2);
                oInfo.LastJobRun    = System.DateTime.Now;
            }
            else
            {
                //Load the values
                oInfo = oController.GetJobScheduleItemById(int.Parse(hfJobId.Value));
            }

            //Load the rest
            oInfo.JobFrequencyType  = ddlJobFrequency.SelectedValue;
            oInfo.JobFrequencyValue = int.Parse(txtJobFrequency.Text);
            oInfo.JobScript         = lblJobScriptDisplay.Text;
            oInfo.JobTitle          = ddlJobType.Text;
            oInfo.JobTypeId         = int.Parse(ddlJobType.SelectedValue);

            //Save it
            oController.SaveJobScheduleItem(oInfo);

            //Update
            BindJobsGrid();

            //Cancel
            btnCancel_Click(sender, e);
        }
        protected void btnDelete_Click(object sender, EventArgs e)
        {
            var oCOntroller = new ScheduledSqlJobsController();

            oCOntroller.DeleteJobType(this.JobId);
            BindJobs();
            btnCancel_Click(sender, e);
        }
        private void BindJobs()
        {
            var oController = new ScheduledSqlJobsController();
            var oJobs       = oController.GetEditableJobTypes();

            if (oJobs == null)
            {
                oJobs = new List <JobTypeInfo>();
            }
            dgrExistingJobs.DataSource = oJobs;
            dgrExistingJobs.DataBind();
        }
        /// <summary>
        /// This method is used to bind the jobs to the grid
        /// </summary>
        private void BindJobsGrid()
        {
            var oController = new ScheduledSqlJobsController();
            var oJobs       = oController.GetJobSchedule();

            if (oJobs == null)
            {
                oJobs = new List <JobScheduleInfo>();
            }

            dgrJobs.DataSource = oJobs;
            dgrJobs.DataBind();
        }
 /// <summary>
 /// This method will update the job type information
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 protected void ddlJobType_SelectedIndexChanged(object sender, EventArgs e)
 {
     if (ddlJobType.SelectedIndex >= 0)
     {
         var oController = new ScheduledSqlJobsController();
         var oType       = oController.GetJobTypeById(int.Parse(ddlJobType.SelectedValue));
         lblJobDescriptionDisplay.Text = oType.JobDescription;
         lblJobScriptDisplay.Text      = oType.CannedProcedure;
     }
     else
     {
         lblJobDescriptionDisplay.Text = "";
         lblJobScriptDisplay.Text      = "";
     }
 }
        protected void btnSave_Click(object sender, EventArgs e)
        {
            var oController = new ScheduledSqlJobsController();
            var oInfo       = new JobTypeInfo
            {
                CannedProcedure = txtCannedProcedure.Text,
                IsCannedJob     = false,
                JobDescription  = txtJobDescription.Text,
                JobTitle        = txtJobTitle.Text,
                JobTypeId       = this.JobId
            };

            oController.SaveJobType(oInfo);
            BindJobs();
            btnCancel_Click(sender, e);
        }
 protected void dgrExistingJobs_ItemCommand(object source, DataGridCommandEventArgs e)
 {
     if (e.CommandName.Equals("Edit"))
     {
         var jobTypeId   = int.Parse(e.Item.Cells[0].Text);
         var oController = new ScheduledSqlJobsController();
         var oInfo       = oController.GetJobTypeById(jobTypeId);
         JobId                   = oInfo.JobTypeId;
         txtJobTitle.Text        = oInfo.JobTitle;
         txtJobDescription.Text  = oInfo.JobDescription;
         txtCannedProcedure.Text = oInfo.CannedProcedure;
         btnDelete.Visible       = true;
         pnlView.Visible         = false;
         pnlEdit.Visible         = true;
     }
 }
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                ScheduleInstaller.ModuleConfiguration = ModuleConfiguration;

                if (!IsPostBack)
                {
                    if (UserInfo.IsSuperUser)
                    {
                        //Show proper panel
                        pnlViewJobs.Visible = true;

                        //Bind lookup items
                        var oController = new ScheduledSqlJobsController();
                        var oTypes      = oController.GetJobTypes();
                        ddlJobType.DataSource     = oTypes;
                        ddlJobType.DataTextField  = "JobTitle";
                        ddlJobType.DataValueField = "JobTypeId";
                        ddlJobType.DataBind();

                        //Localize grid
                        Localization.LocalizeDataGrid(ref dgrJobs, this.LocalResourceFile);
                        Localization.LocalizeDataGrid(ref dgrHistory, this.LocalResourceFile);

                        //Fill the grid
                        BindJobsGrid();

                        //Ensure first type is loaded
                        ddlJobType_SelectedIndexChanged(sender, e);
                    }
                    else
                    {
                        //Show host only warning
                        pnlHostOnly.Visible       = true;
                        ScheduleInstaller.Visible = false;
                    }
                }
            }
            catch (Exception ex)
            {
                Exceptions.ProcessModuleLoadException(this, ex);
            }
        }
        /// <summary>
        /// This method handles edit and delete
        /// </summary>
        /// <param name="source"></param>
        /// <param name="e"></param>
        protected void dgrJobs_ItemCommand(object source, DataGridCommandEventArgs e)
        {
            var oController = new ScheduledSqlJobsController();
            var jobId       = int.Parse(e.Item.Cells[0].Text);

            //Take action
            if (e.CommandName.Equals("Edit"))
            {
                //Set id
                hfJobId.Value = jobId.ToString();

                //Get items to load
                var oInfo = oController.GetJobScheduleItemById(jobId);
                ddlJobType.SelectedValue = oInfo.JobTypeId.ToString();
                ddlJobType_SelectedIndexChanged(this, EventArgs.Empty);
                txtJobFrequency.Text          = oInfo.JobFrequencyValue.ToString();
                ddlJobFrequency.SelectedValue = oInfo.JobFrequencyType;

                //Swap views
                pnlViewJobs.Visible    = false;
                pnlAddEditJobs.Visible = true;
            }
            else if (e.CommandName.Equals("Delete"))
            {
                //Delete
                oController.DeleteJobScheduleItem(jobId);

                //Rebind
                BindJobsGrid();
            }
            else if (e.CommandName.Equals("History"))
            {
                var oHistory = oController.GetJobScheduleHistory(jobId);
                if (oHistory == null)
                {
                    oHistory = new List <JobScheduleHistoryInfo>();
                }
                dgrHistory.DataSource = oHistory;
                dgrHistory.DataBind();

                pnlViewJobs.Visible   = false;
                pnlJobHistory.Visible = true;
            }
            else if (e.CommandName.Equals("Run"))
            {
                //Manually run job
                var oJob      = oController.GetJobScheduleItemById(jobId);
                var oJobInfo  = oController.GetJobTypeById(oJob.JobTypeId);
                var result    = "";
                var isSuccess = true;
                try
                {
                    int rows = oController.ExecuteJob(oJob.JobScript, oJobInfo.IsCannedJob);
                    result = "Success<br />" + rows.ToString() + " rows afected";
                }
                catch (Exception ex)
                {
                    isSuccess = false;
                    result    = "Error: " + ex.Message;
                }

                //Update the entry and insert history
                oController.InsertJobScheduleHistory(oJob.JobScheduleId, DateTime.Now, isSuccess, result);

                DotNetNuke.UI.Skins.Skin.AddModuleMessage(this, Localization.GetString("RunSuccess", this.LocalResourceFile), DotNetNuke.UI.Skins.Controls.ModuleMessage.ModuleMessageType.GreenSuccess);
            }
        }