/// <summary>
        /// The prompt.
        /// </summary>
        /// <param name="existetPlans">The existet plans.</param>
        /// <returns>
        /// The <see cref="string" />.
        /// </returns>
        public static SonarActionPlan Prompt(List<SonarActionPlan> existetPlans)
        {
            var inst = new PromptUserForNewPlan(existetPlans);
            inst.ShowDialog();

            if ((bool)inst.DialogResult)
            {
                var plan = new SonarActionPlan();
                plan.Name = inst.nameOfPlan.Text;
                plan.Description = inst.descriptionPlan.Text;
                if (inst.datePicker.SelectedDate.HasValue)
                {
                    plan.DeadLine = inst.datePicker.SelectedDate.Value;
                }

                return plan;
            }

            return null;
        }
        /// <summary>
        /// Attaches to existent plan.
        /// </summary>
        /// <param name="plan">The plan.</param>
        private void AttachToExistentPlan(SonarActionPlan plan)
        {
            using (var bw = new BackgroundWorker { WorkerReportsProgress = false })
            {
                bw.RunWorkerCompleted += delegate { Application.Current.Dispatcher.Invoke(delegate { this.manager.EndedWorking(); }); };

                bw.DoWork += delegate
                {
                    this.manager.StartedWorking("Attach to plan");

                    var replies = this.rest.PlanIssues(this.config, this.model.SelectedItems, plan.Key.ToString());
                    foreach (var itemreply in replies)
                    {
                        this.manager.ReportMessage(new Message { Data = "Plan Operation Result: " + itemreply.Key + " : " + itemreply.Value });
                    }

                    this.model.RefreshView();
                };

                bw.RunWorkerAsync();
            }
        }
        /// <summary>
        /// Associates to new plan.
        /// </summary>
        /// <param name="availablePlans">The available plans.</param>
        /// <param name="newPlan">The new plan.</param>
        private void AssociateToNewPlan(System.Collections.Generic.List<SonarActionPlan> availablePlans, SonarActionPlan newPlan)
        {
            using (var bw = new BackgroundWorker { WorkerReportsProgress = false })
            {
                bw.RunWorkerCompleted += delegate { Application.Current.Dispatcher.Invoke(delegate { this.manager.EndedWorking(); }); };

                bw.DoWork += delegate
                {
                    this.manager.StartedWorking("Associate With New Plan");

                    try
                    {
                        var plan = this.rest.CreateNewPlan(this.config, this.associatedProject.Key, newPlan);
                        var replies = this.rest.PlanIssues(this.config, this.model.SelectedItems, plan.Key.ToString());
                        foreach (var itemreply in replies)
                        {
                            this.manager.ReportMessage(new Message { Data = "Plan Operation Result: " + itemreply.Key + " : " + itemreply.Value });
                        }

                        this.model.RefreshView();
                    }
                    catch (Exception ex)
                    {
                        this.manager.ReportMessage(new Message { Data = "Plan Operation Failed" + ex.Message });
                        this.manager.ReportException(ex);
                    }
                };

                bw.RunWorkerAsync();
            }
        }