private void EditJob()

in Scheduler/Forms/MainForm.cs [330:469]


        private void EditJob()
        {
            try
            {
                var jobName = jobsDataGridView.SelectedRows[0].Cells["JobName"].Value.ToString();
                var jobGroup = jobsDataGridView.SelectedRows[0].Cells["JobGroup"].Value.ToString();
                var jobKey = new JobKey(jobName, jobGroup);

                var scheduler = Scheduler.Instance.GetScheduler();
                if (scheduler == null)
                {
                    MessageBox.Show(Resources.No_active_scheduler, Resources.Missing_scheduler);
                    return;
                }

                var jobDetail = scheduler.GetJobDetail(jobKey).Result;
                var jobTrigger = scheduler.GetTriggersOfJob(jobKey).Result.First();
                switch (jobDetail.JobType.FullName)
                {
                    case SettingsConstants.DownloadJob:
                        {
                            using DownloadJobV3 downloadForm = new DownloadJobV3
                            {
                                JobDetail = jobDetail,
                                Trigger = jobTrigger
                            };

                            downloadForm.ShowDialog();

                            if (downloadForm.Cancelled && downloadForm.JobDetail == null && downloadForm.Trigger == null) return;

                            scheduler.ScheduleJob(downloadForm.JobDetail, new HashSet<ITrigger> { downloadForm.Trigger }, true);

                            RefreshGrid();
                        }
                        break;

                    case SettingsConstants.ExportJob:
                        {
                            using ExportJobV3 exportForm = new ExportJobV3
                            {
                                JobDetail = jobDetail,
                                Trigger = jobTrigger
                            };

                            exportForm.ShowDialog();

                            if (exportForm.Cancelled && exportForm.JobDetail == null && exportForm.Trigger == null) return;

                            scheduler.ScheduleJob(exportForm.JobDetail, new HashSet<ITrigger> { exportForm.Trigger }, true);

                            RefreshGrid();
                        }
                        break;

                    case SettingsConstants.UploadJob:
                        //find related processing job
                        var processingJobName = jobDetail.Key.Name + "-Processing monitor";
                        var processingJobKey = new JobKey(processingJobName, jobDetail.Key.Group);
                        var processingJobDetail = scheduler.GetJobDetail(processingJobKey).Result;
                        ITrigger processingJobTrigger = null;

                        if (processingJobDetail != null)
                        {
                            processingJobTrigger = scheduler.GetTriggersOfJob(processingJobKey).Result.First();
                        }
                        {
                            using UploadJobV3 uploadForm = new UploadJobV3
                            {
                                UploadJobDetail = jobDetail,
                                UploadTrigger = jobTrigger
                            };
                            if ((processingJobDetail != null) && (processingJobTrigger != null))
                            {
                                uploadForm.ProcessingJobDetail = processingJobDetail;
                                uploadForm.ProcessingTrigger = processingJobTrigger;
                            }

                            uploadForm.ShowDialog();

                            if (uploadForm.Cancelled && uploadForm.UploadJobDetail == null && uploadForm.UploadTrigger == null) return;

                            scheduler.ScheduleJob(uploadForm.UploadJobDetail, new HashSet<ITrigger> { uploadForm.UploadTrigger }, true);

                            if ((uploadForm.ProcessingJobDetail != null) && (uploadForm.ProcessingTrigger != null))
                            {
                                scheduler.ScheduleJob(uploadForm.ProcessingJobDetail, new HashSet<ITrigger> { uploadForm.ProcessingTrigger }, true);
                            }

                            RefreshGrid();
                        }
                        break;

                    case SettingsConstants.ImportJob:
                        //find related execution job
                        var executionJobName = jobDetail.Key.Name + "-Execution monitor";
                        var executionJobKey = new JobKey(executionJobName, jobDetail.Key.Group);
                        var executionJobDetail = scheduler.GetJobDetail(executionJobKey).Result;
                        ITrigger executionJobTrigger = null;

                        if (executionJobDetail != null)
                        {
                            executionJobTrigger = scheduler.GetTriggersOfJob(executionJobKey).Result.First();
                        }
                        {
                            using ImportJobV3 importForm = new ImportJobV3
                            {
                                ImportJobDetail = jobDetail,
                                ImportTrigger = jobTrigger
                            };

                            if ((executionJobDetail != null) && (executionJobTrigger != null))
                            {
                                importForm.ExecutionJobDetail = executionJobDetail;
                                importForm.ExecutionTrigger = executionJobTrigger;
                            }
                            importForm.ShowDialog();

                            if (importForm.Cancelled && importForm.ImportJobDetail == null && importForm.ImportTrigger == null) return;
                            
                            scheduler.ScheduleJob(importForm.ImportJobDetail, new HashSet<ITrigger> { importForm.ImportTrigger }, true);

                            if (importForm.ExecutionJobDetail != null && importForm.ExecutionTrigger != null)
                            {
                                scheduler.ScheduleJob(importForm.ExecutionJobDetail, new HashSet<ITrigger> { importForm.ExecutionTrigger }, true);
                            }
                            RefreshGrid();
                        }
                        break;

                    default:
                        MessageBox.Show(Resources.This_type_of_job_is_not_supported_for_direct_editing);
                        return;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, Resources.Unexpected_error);
            }
        }