public IssueFinancialControlViewModel(Issue issue, IssueFinancialControl view)
        {
            mView = view;
            mIssue = issue;
            CompositionInitializer.SatisfyImports(this);

            mTimer.Interval = TimeSpan.FromMilliseconds(500);
            mTimer.Tick += RefreshFinancualTableTable;

            CmsWebServiceClient cmsWebServiceClient = new CmsWebServiceClient(Utils.WcfBinding, Utils.WcfEndPoint);
            IssueFinancials = new List<IssueFinancialTableViewModel>();

            AddButtonCommand = new DelegateCommand<object>(AddButtonHandler, CanExecuteAddButtonHandler);
            DeleteButtonCommand = new DelegateCommand<object>(DeleteButtonHandler, CanExecuteDeleteButtonHandler);
            ShowHideBudgetCommand = new DelegateCommand<object>(ShowHideBudgetHandler, x=> true);
            ShowHideBaselineCommand = new DelegateCommand<object>(ShowHideBaselineHandler, x => true);

            IsBusy = true;
            cmsWebServiceClient.GetIssueFinancialVarianceCodesCompleted += (s1, e1) =>
            {
                IssueFinancialVarianceCodes = e1.Result;
                RaisePropertyChanged("IssueFinancialVarianceCodes");

                cmsWebServiceClient.GetIssueFinancialsCompleted += (s, e) =>
                {
                     mIssue.IssueFinancials = e.Result;

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

                             foreach (var issueFinancial in mIssue.IssueFinancials)
                             {
                                 var financialTableItem = new IssueFinancialTableViewModel(issueFinancial, IssueFinancialVarianceCodes, view,
                                     CanUserModifyFinancialData(), mIssueSetting);
                                 mIssueFinancials.Add(financialTableItem);
                             }
                             mIssueFinancials = mIssueFinancials.OrderBy(x => x.Date).ToList();
                             RaisePropertyChanged("IssueFinancials");

                             mDictionary = Utils.BuildDictionaryForCollection(mIssue.IssueFinancials.Select(x => x.Id).ToList());
                             mIssue.ModifiedObjects.FinancialsModified = true;
                             RaisePropertyChanged("TotalForecast");

                             ShowHideBaselineOnLoad();
                             IsBusy = false;
                         });
                     });

                };
                cmsWebServiceClient.GetIssueFinancialsAsync(mIssue.Id);

            };
            cmsWebServiceClient.GetIssueFinancialVarianceCodesAsync();
        }
 public IssueFinancialTableViewModel(IssueFinancial financial, List<IssueFinancialVarianceCode> issueFinancialVarianceCodes,
     IssueFinancialControl view, bool userCanModify, IssueSetting issueSetting)
 {
     mView = view;
     mFinancial = financial;
     mUserCanModify = userCanModify;
     IssueFinancialVarianceCodes = issueFinancialVarianceCodes;
     mIssueSetting = issueSetting;
     ActualVsBaselineVarianceCommand = new DelegateCommand<object>(ActualvsBaselineButtonHandler, CanExecuteOkButtonHandler);
     ActualVsForecastVarianceCommand = new DelegateCommand<object>(ActualvsForecastButtonHandler, CanExecuteOkButtonHandler);
     OpenPurchaseOrderCommand = new DelegateCommand<object>(OpenPurchaseOrderCommandHandler, CanExecuteOpenPurchaseOrderCommandHandler);
 }
示例#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);
            //---------------------------------------------------------------
        }