private void LinkIssueButtonHandler(object parameter)
        {
            AddRelatedIssueDialog dialog = new AddRelatedIssueDialog();
            dialog.Show();
            dialog.Closed +=
                (s1, e1) =>
                {
                    if (dialog.DialogResult.HasValue && dialog.DialogResult.Value)
                    {
                        List<Issue> toAdd = dialog.SelectedIssues.ToList();

                        foreach (var issue in toAdd)
                        {
                            var existing = (from x in mMobilePlant.IssueRelatedMobilePlants
                                            where x.IssueId == issue.Id
                                                  && x.MobilePlantId == mMobilePlant.Id
                                            select x).FirstOrDefault();

                            if (existing == null)
                            {
                                IssueRelatedMobilePlant ird = new IssueRelatedMobilePlant
                                {
                                    IssueId = issue.Id,
                                    Issue = issue,
                                    MobilePlantId = mMobilePlant.Id,
                                    MobilePlant = mMobilePlant
                                };

                                mMobilePlant.IssueRelatedMobilePlants.Add(ird);

                            }
                        }

                        if (toAdd.Any())
                        {
                            LoadData();

                            Utils.OnCollectionChanged(EventAggregator, mMobilePlant, "MobilePlantRelatedIssuesViewModel", true);

                            OnCollectionChanged();
                        }
                    }
                };
        }
        private void AddRelatedIssueHandler(object parameter)
        {
            AddIssueDialog aid = new AddIssueDialog();

            aid.Closed += (s1, e1) =>
            {
                //Hadle dialog closed
                if (aid.DialogResult.HasValue && aid.DialogResult.Value)
                {
                    Issue newIssue = aid.Issue;

                    IssueRelatedMobilePlant IssueRelatedMobilePlant = (from x in mMobilePlant.IssueRelatedMobilePlants
                                                                     where x.IssueId == newIssue.Id
                                                                           && x.MobilePlantId == mMobilePlant.Id
                                                                     select x).FirstOrDefault();
                    if (IssueRelatedMobilePlant == null)
                    {
                        IssueRelatedMobilePlant ird = new IssueRelatedMobilePlant
                        {
                            IssueId = newIssue.Id,
                            Issue = newIssue,
                            MobilePlantId = mMobilePlant.Id,
                            MobilePlant = mMobilePlant
                        };

                        mMobilePlant.IssueRelatedMobilePlants.Add(ird);

                        LoadData();

                        Utils.OnCollectionChanged(EventAggregator, mMobilePlant, "MobilePlantRelatedIssuesViewModel", true);

                        OnCollectionChanged();
                    }

                }
            };

            aid.Show();
        }
        private void SaveIssueRelatedMobilePlants(Issue issue, Issue originalIssue, CmsEntities cee)
        {
            log.Verbose("SaveIssueRelatedMobilePlants()");
            //Delete IssueRelatedMobilePlantEquipment
            cee.DeleteWhere<IssueRelatedMobilePlant>(cee, x => x.IssueId == issue.Id);

            cee.Configuration.AutoDetectChangesEnabled = false;

            //Save SaveIssueRelatedMobilePlantEquipments
            foreach (IssueRelatedMobilePlant mobilePlant in issue.IssueRelatedMobilePlants.ToList())
            {
                var newMobilePlantEquipment = new IssueRelatedMobilePlant
                {
                    IssueId = issue.Id,
                    MobilePlantId = mobilePlant.MobilePlantId,
                    Notes = mobilePlant.Notes
                };

                if (mobilePlant.Implemented && mobilePlant.ImplementedById.HasValue)
                {
                    newMobilePlantEquipment.Implemented = true;
                    newMobilePlantEquipment.ImplementedById = mobilePlant.ImplementedById;
                    newMobilePlantEquipment.ImplementedDate = mobilePlant.ImplementedDate;
                }

                if (mobilePlant.Tested && mobilePlant.TestedById.HasValue)
                {
                    newMobilePlantEquipment.Tested = true;
                    newMobilePlantEquipment.TestedById = mobilePlant.ImplementedById;
                    newMobilePlantEquipment.TestedDate = mobilePlant.ImplementedDate;
                }

                originalIssue.IssueRelatedMobilePlants.Add(newMobilePlantEquipment);
            }
            cee.Configuration.AutoDetectChangesEnabled = true;
        }
        private void SaveMobilePlantRelatedIssues(MobilePlant mobilePlant, CmsEntities cee)
        {
            //Delete original
            List<IssueRelatedMobilePlant> originals =
                (from x in cee.IssueRelatedMobilePlants where x.MobilePlantId == mobilePlant.Id select x).ToList();
            originals.ForEach(x => cee.IssueRelatedMobilePlants.Remove(x));

            foreach (IssueRelatedMobilePlant relatedMobilePlant in mobilePlant.IssueRelatedMobilePlants)
            {
                IssueRelatedMobilePlant newObject = new IssueRelatedMobilePlant
                                                            {
                                                                MobilePlantId = mobilePlant.Id,
                                                                IssueId = relatedMobilePlant.IssueId,
                                                                Notes = relatedMobilePlant.Notes,
                                                                TestedById = relatedMobilePlant.TestedById,
                                                                TestedDate = relatedMobilePlant.TestedDate,
                                                                ImplementedById = relatedMobilePlant.ImplementedById,
                                                                ImplementedDate = relatedMobilePlant.ImplementedDate
                                                            };

                cee.IssueRelatedMobilePlants.Add(newObject);
            }
        }
        private void AddButtonHandler(object parameter)
        {
            AddIssueDialog aid = new AddIssueDialog();

            aid.Closed += (s1, e1) =>
                              {
                                  //Hadle dialog closed
                                  if (aid.DialogResult.HasValue && aid.DialogResult.Value)
                                  {
                                      Issue newIssue = aid.Issue;

                                      IssueRelatedMobilePlant issueRelated = (from x in mMobilePlant.IssueRelatedMobilePlants
                                                                              where x.IssueId == newIssue.Id
                                                                                    && x.MobilePlantId == mMobilePlant.Id
                                                                              select x).FirstOrDefault();
                                      if (issueRelated == null)
                                      {
                                          IssueRelatedMobilePlant ird = new IssueRelatedMobilePlant
                                                                            {
                                                                                IssueId = newIssue.Id,
                                                                                Issue = newIssue,
                                                                                MobilePlantId = mMobilePlant.Id,
                                                                                MobilePlant = mMobilePlant
                                                                            };

                                          mMobilePlant.IssueRelatedMobilePlants.Add(ird);
                                          MobilePlantIssues.Add(ird);

                                          RaisePropertyChanged("MobilePlantIssues");
                                          Utils.OnCollectionChanged(EventAggregator, mMobilePlant, "MobilePlantIssuesViewModel", true);

                                          OnCollectionChanged();
                                      }

                                      //open created issue in a new tab
                                      EventAggregator.GetEvent<PrismEvents.OpenTabPrismEvent>().Publish(newIssue);
                                  }
                              };

            aid.Show();
        }