public IssueKpiControlViewModel(Issue issue, IssueKpiControl view)
        {
            mView = view;
            mIssue = issue;
            CompositionInitializer.SatisfyImports(this);
            mTimer.Interval = TimeSpan.FromMilliseconds(500);
            mTimer.Tick += RefreshKpiTable;

            CmsWebServiceClient cmsWebServiceClient = new CmsWebServiceClient(Utils.WcfBinding, Utils.WcfEndPoint);
            IssueKpis = new List<IssueKpiTableViewModel>();

            AddButtonCommand = new DelegateCommand<object>(AddButtonHandler, CanExecuteAddButtonHandler);
            RemoveButtonCommand = new DelegateCommand<object>(RemoveButtonHandler, CanExecuteRemoveButtonHandler);
            ShowHideBaselineCommand = new DelegateCommand<object>(ShowHideBaselineHandler, x => true);

            IsBusy = true;

            cmsWebServiceClient.GetIssueKpiVarianceCodesCompleted += (s1, e1) =>
            {
                IssueKpiVarianceCodes = e1.Result;
                RaisePropertyChanged("IssueKpiVarianceCodes");

                cmsWebServiceClient.GetIssueKpisCompleted += (s, e) =>
                {
                     mIssue.IssueKpis = e.Result;

                     DatabaseLoader.GetIssueSettings().ContinueWith(getIssueFinancialSettingsTask =>
                     {
                        CMS.UiFactory.StartNew(() =>
                         {
                             mIssueSetting = getIssueFinancialSettingsTask.Result;

                             foreach (var issueKpi in mIssue.IssueKpis)
                             {
                                 var financialTableItem = new IssueKpiTableViewModel(issueKpi, IssueKpiVarianceCodes, view,
                                     CanUserModifyActuals(), mIssueSetting);
                                 mIssueKpis.Add(financialTableItem);
                             }
                             mIssueKpis = mIssueKpis.OrderBy(x => x.Date).ToList();
                             RaisePropertyChanged("IssueKpis");

                             //mDictionary = Utils.BuildDictionaryForCollection(mIssue.IssueFinancials.Select(x => x.Id).ToList());
                             mIssue.ModifiedObjects.KpisModified = true;

                             if (view.ViewModelLoaded != null)
                             {
                                 view.ViewModelLoaded();
                             }
                             IsBusy = false;
                         });
                     });

                };
                cmsWebServiceClient.GetIssueKpisAsync(mIssue.Id);

            };
            cmsWebServiceClient.GetIssueKpiVarianceCodesAsync();
        }
 public IssueKpiTableViewModel(IssueKpi kpi, List<IssueKpiVarianceCode> issueKpiVarianceCodes,
     IssueKpiControl view, bool canUserModifyActuals, IssueSetting issueSetting)
 {
     mView = view;
     mKpi = kpi;
     mCanUserModifyActuals = canUserModifyActuals;
     IssueKpiVarianceCodes = issueKpiVarianceCodes;
     mIssueSetting = issueSetting;
     ValueGenerationVarianceCommand = new DelegateCommand<object>(ValueGenerationVarianceButtonHandler, CanExecuteOkButtonHandler);
     KpiVarianceCommand = new DelegateCommand<object>(KpiVarienceButtonHandler, CanExecuteOkButtonHandler);
 }
Beispiel #3
0
        public void IssueLoaded()
        {
            mIssue = mIssuePanelViewModel.Issue;

            SaveButton.Visibility = Visibility.Visible;

            if (mIssue.Id > 0)
            {
                RemoveButton.Visibility = Visibility.Visible;
                CopyButton.Visibility = Visibility.Visible;
            }

            DataContext = mIssuePanelViewModel;

            if (mIssuePanelViewModel.IssueLoadedAction != null)
                mIssuePanelViewModel.IssueLoadedAction -= IssueLoaded;

            //Load IssueControl
            mIssueControl = new IssueControl(mIssue, this);
            IssueControlContentPresenter.Content = mIssueControl;

            mRiskReviewControl = new RiskReviewControl(mIssue);
            RiskReviewTab.Content = mRiskReviewControl;
            Utils.SetUpChangeEvents(mRiskReviewControl, EventAggregator, mIssue);

            mApprovalsControl = new ApprovalsControl(mIssue);
            ApprovalTab.Content = mApprovalsControl;
            Utils.SetUpChangeEvents(mApprovalsControl, EventAggregator, mIssue);

            mIssueDistributionControl = new IssueDistributionControl(mIssue);
            DistributionTab.Content = mIssueDistributionControl;

            mIssueTrackingControl = new IssueTrackingControl(mIssue);
            TrackingTab.Content = mIssueTrackingControl;

            mIssueSystemReferencesControl = new IssueSystemReferencesControl(mIssue);
            ReferencesTab.Content = mIssueSystemReferencesControl;

            mCloseoutControl = new CloseoutControl(mIssue);
            CloseoutTab.Content = mCloseoutControl;
            Utils.SetUpChangeEvents(mCloseoutControl, EventAggregator, mIssue);

            TestingTab.Content = new IssueTestingControl(mIssuePanelViewModel);
            TrainingTab.Content = new IssueTrainingControl(mIssuePanelViewModel);

            //SCOPE
            ScopeGeneralTab.Content = new IssueScopeGeneralControl(mIssuePanelViewModel); //ImplementationDetails column
            ScopeExclusionsTab.Content = new IssueScopeExclusionsControl(mIssuePanelViewModel); //new column
            ScopeAssumptionsTab.Content = new IssueScopeAssumptionsControl(mIssuePanelViewModel); //new column
            ConstraintsTab.Content = new IssueConstraintsControl(mIssuePanelViewModel); //new column

            Utils.SetUpChangeEvents((UIElement) TestingTab.Content, EventAggregator, mIssue);
            Utils.SetUpChangeEvents((UIElement) TrainingTab.Content, EventAggregator, mIssue);
            Utils.SetUpChangeEvents((UIElement) ScopeGeneralTab.Content, EventAggregator, mIssue);
            Utils.SetUpChangeEvents((UIElement) ScopeExclusionsTab.Content, EventAggregator, mIssue);
            Utils.SetUpChangeEvents((UIElement) ScopeAssumptionsTab.Content, EventAggregator, mIssue);
            Utils.SetUpChangeEvents((UIElement) ConstraintsTab.Content, EventAggregator, mIssue);

            //IssueTrendNotices
            mIssueTrendNoticesControl = new IssueTrendNoticesControl(mIssue);
            mIssueTrendNoticesControl.UpdateTrendNoticeCount += count =>
            {
                mIssue.IssueRelatedItemsCount.TrendNotices = count;
                SetTabHeadersText();
            };
            TrendNoticeTab.Content = mIssueTrendNoticesControl;

            //MechanicalControl
            if (CMS.EffectivePrivileges.AdminTab.CanView || CMS.EffectivePrivileges.MechanicalTab.CanView)
            {
                MechanicalTab.Visibility = Visibility.Visible;
                mIssueRelatedMechanicalControl = new IssueRelatedMechanicalControl(mIssue);
                mIssueRelatedMechanicalControl.CollectionChanged += count =>
                {
                    mIssue.IssueRelatedItemsCount.Mechanicals = count;
                    SetTabHeadersText();
                };
                MechanicalTab.Content = mIssueRelatedMechanicalControl;
            }
            else
            {
                MechanicalTab.Visibility = Visibility.Collapsed;
            }

            //ElectricalControl
            if (CMS.EffectivePrivileges.AdminTab.CanView || CMS.EffectivePrivileges.ElectricalTab.CanView)
            {
                ElectricalTab.Visibility = Visibility.Visible;
                mIssueRelatedElectricalControl = new IssueRelatedElectricalControl(mIssue);
                mIssueRelatedElectricalControl.CollectionChanged += count =>
                {
                    mIssue.IssueRelatedItemsCount.Electricals = count;
                    SetTabHeadersText();
                };
                ElectricalTab.Content = mIssueRelatedElectricalControl;
            }
            else
            {
                ElectricalTab.Visibility = Visibility.Collapsed;
            }

            //InstrumentControl
            if (CMS.EffectivePrivileges.AdminTab.CanView || CMS.EffectivePrivileges.InstrumentTab.CanView)
            {
                InstrumentTab.Visibility = Visibility.Visible;
                mIssueRelatedInstrumentControl = new IssueRelatedInstrumentControl(mIssue);
                mIssueRelatedInstrumentControl.CollectionChanged += count =>
                {
                    mIssue.IssueRelatedItemsCount.Instruments = count;
                    SetTabHeadersText();
                };
                InstrumentTab.Content = mIssueRelatedInstrumentControl;
            }
            else
            {
                InstrumentTab.Visibility = Visibility.Collapsed;
            }

            //DocumentControl
            if (CMS.EffectivePrivileges.AdminTab.CanView || CMS.EffectivePrivileges.DocumentTab.CanView)
            {
                DocumentationTab.Visibility = Visibility.Visible;
                mIssueRelatedDocumentControl = new IssueRelatedDocumentControl(mIssue);
                mIssueRelatedDocumentControl.CollectionChanged += count =>
                {
                    mIssue.IssueRelatedItemsCount.Documents = count;
                    SetTabHeadersText();
                };
                DocumentationTab.Content = mIssueRelatedDocumentControl;
            }
            else
            {
                DocumentationTab.Visibility = Visibility.Collapsed;
            }

            //Control
            if (CMS.EffectivePrivileges.AdminTab.CanView || CMS.EffectivePrivileges.ControlTab.CanView)
            {
                ControlTab.Visibility = Visibility.Visible;
                mIssueRelatedControlControl = new IssueRelatedControlControl(mIssue);
                mIssueRelatedControlControl.CollectionChanged += count =>
                {
                    mIssue.IssueRelatedItemsCount.Controls = count;
                    SetTabHeadersText();
                };
                ControlTab.Content = mIssueRelatedControlControl;

            }
            else
            {
                ControlTab.Visibility = Visibility.Collapsed;
                OverridesTab.Visibility = Visibility.Collapsed;
            }

            //MobilePlantTab
            if (CMS.EffectivePrivileges.AdminTab.CanView || CMS.EffectivePrivileges.MobilePlantTab.CanView)
            {
                MobilePlantTab.Visibility = Visibility.Visible;
                //MobilePlantControl
                mIssueRelatedMobilePlantControl = new IssueRelatedMobilePlantControl(mIssue);
                mIssueRelatedMobilePlantControl.CollectionChanged += count =>
                {
                    mIssue.IssueRelatedItemsCount.Mobiles = count;
                    SetTabHeadersText();
                };
                MobilePlantTab.Content = mIssueRelatedMobilePlantControl;
            }
            else
            {
                MobilePlantTab.Visibility = Visibility.Collapsed;
            }

            //PipesTab
            if (CMS.EffectivePrivileges.AdminTab.CanView || CMS.EffectivePrivileges.PipeTab.CanView)
            {
                PipesTab.Visibility = Visibility.Visible;
                //PipesControl
                mIssueRelatedPipesControl = new IssueRelatedPipesControl(mIssue);
                mIssueRelatedPipesControl.CollectionChanged += count =>
                {
                    mIssue.IssueRelatedItemsCount.Pipes = count;
                    SetTabHeadersText();
                };
                PipesTab.Content = mIssueRelatedPipesControl;
            }
            else
            {
                PipesTab.Visibility = Visibility.Collapsed;
            }

            //the following control need to be loaded as they are control via workflow control (issuetabcontrol manager)

            //OverridesControl
            OverridesTab.Visibility = Visibility.Visible;
            mIssueRelatedOverridesControl = new IssueRelatedOverridesControl(mIssue);
            mIssueRelatedOverridesControl.CollectionChanged += count =>
            {
                mIssue.IssueRelatedItemsCount.Overrides = count;
                SetTabHeadersText();
            };
            OverridesTab.Content = mIssueRelatedOverridesControl;

            //ActionsControl
            mIssueRelatedActionsControl = new IssueRelatedActionsControl(mIssue);
            mIssueRelatedActionsControl.IssuesPanel = this;
            mIssueRelatedActionsControl.CollectionChanged += count =>
            {
                mIssue.IssueRelatedItemsCount.Actions = count;
                SetTabHeadersText();
            };

            ActionsTab.Content = mIssueRelatedActionsControl;

            //MilestonesControl
            mIssueMilestonesControl = new IssueMilestonesControl(mIssue);
            mIssueMilestonesControl.CollectionChanged += count =>
            {
                mIssue.IssueRelatedItemsCount.Milestones = count;
                SetTabHeadersText();
            };
            MilestonesTab.Content = mIssueMilestonesControl;

            //IssueRelatedIssueControl
            mIssueRelatedIssuesControl = new IssueRelatedIssuesControl(mIssue);
            mIssueRelatedIssuesControl.CollectionChanged += count =>
            {
                mIssue.IssueRelatedItemsCount.Issues = count;
                SetTabHeadersText();
            };
            RelatedIssuesTab.Content = mIssueRelatedIssuesControl;

            //ResponseControl
            mIssueResponseControl = new IssueResponseControl(mIssue);
            mIssueResponseControl.ControlLoaded += () => ResponseTab.Content = mIssueResponseControl;

            mIssueFinancialControl = new IssueFinancialControl(mIssue);
            FinancialTab.Content = mIssueFinancialControl;

            mIssueKpiControl = new IssueKpiControl(mIssue);
            KpiTab.Content = mIssueKpiControl;

            //ISSUE ATTACHMENTS (but wait until dist user loaded as we need them!
            mIssueDistributionControl.ViewModel.DistributionUsersLoaded += (users) =>
            {
                mIssuePanelViewModel.RaisePropertyChanged("FinancialTabEnabled");
                //This will switch  the lock or unlock icon
                mIssuePanelViewModel.RaisePropertyChanged("Issue");

                mIssueFilesControl = new IssueFilesControl(mIssue);

                AttachmentsTab.Content = mIssueFilesControl;
                mIssueFilesControl.CollectionChanged += count =>
                {
                    mIssue.IssueRelatedItemsCount.Attachments = count;
                    SetTabHeadersText();
                };
                AttachmentsTab.Content = mIssueFilesControl;
            };

            //IssueLearnings
            mIssueLearningControl = new IssueLearningControl(mIssue);
            mIssueLearningControl.UpdateLearningCount += count =>
            {
                mIssue.IssueRelatedItemsCount.Learnings = count;
                SetTabHeadersText();
            };
            LearningTab.Content = mIssueLearningControl;

            //Apply Tab Control Manager
            var issueTabControlManager = new IssueTabControlManager(this);
            issueTabControlManager.Apply();

            //Tab Counts --------------------------------------------------
            var cmsWebServiceClient = new CmsWebServiceClient(Utils.WcfBinding, Utils.WcfEndPoint);
            cmsWebServiceClient.GetIssueRelatedItemsCountCompleted += (s1, e1) =>
            {
                mIssue.IssueRelatedItemsCount = e1.Result;

                SetHeadersBindings();
                SetTabHeadersText();
            };
            cmsWebServiceClient.GetIssueRelatedItemsCountAsync(mIssue.Id);
            //---------------------------------------------------------------
        }