예제 #1
0
        public IssueMilestonesViewModel(Issue issue)
        {
            CompositionInitializer.SatisfyImports(this);
            mIssue = issue;

            SelectButton = new DelegateCommand<object>(SelectButtonHandler, CanSelect);
            AddButton = new DelegateCommand<object>(AddMilestoneCommandHandler, CanAdd);
            EditButton = new DelegateCommand<object>(EditButtonHandler, CanModify);
            DeleteButton = new DelegateCommand<object>(DeleteMilestoneHandler, CanDelete);

            UpButtonCommand = new DelegateCommand<object>(UpButtonCommandHandler, CanModify);
            DownButtonCommand = new DelegateCommand<object>(DownButtonCommandHandler, CanModify);

            CmsWebServiceClient cmsWebServiceClient = new CmsWebServiceClient(Utils.WcfBinding, Utils.WcfEndPoint);

            cmsWebServiceClient.GetIssueMilestonesCompleted += (s1, e1) =>
                {
                    Milestones = new ObservableCollection<IssueMilestone>(e1.Result);

                    if (Milestones.Any()) MilestoneVarianceThreshold = Milestones[0].MilestoneVarianceThreshold;
                    else
                    {
                        DatabaseLoader.GetIssueSettings().ContinueWith(getIssueFinancialSettingsTask =>
                        {
                            CMS.UiFactory.StartNew(() =>
                            {
                                MilestoneVarianceThreshold = (double)getIssueFinancialSettingsTask.Result.MilestoneVarianceThreshold;
                            });
                        });
                    }

                    //set up change dictionaries for collections.
                    mIssue.ModifiedObjects.MilestonesModified = true;
                    mDictionary = Utils.BuildDictionaryForCollection(mIssue.IssueMilestones.Select(x => x.Id).ToList());

                    mDictionaryDelays = new Dictionary<int, int>();
                    foreach (IssueMilestone milestone in mIssue.IssueMilestones)
                    {
                        milestone.PropertyChanged += (s3, e3) =>
                        {
                            mHasMilestoneChanges = true;
                        };

                        foreach (IssueMilestoneDelay delay in milestone.IssueMilestoneDelays)
                        {
                            delay.PropertyChanged += (s2, e2) =>
                            {
                                mHasMilestoneDelayChanges = true;
                            };
                        }

                        mDictionaryDelays.AddRange(Utils.BuildDictionaryForCollection(milestone.IssueMilestoneDelays.Select(x => x.Id).ToList()));
                    }

                    SetAccumulatedDelayProperties();
                    RaisePropertyChanged("Milestones");

                    if (Loaded != null)
                    {
                        Loaded();
                    }

                };
            cmsWebServiceClient.GetIssueMilestonesAsync(mIssue.Id);
        }
예제 #2
0
        public void Reload()
        {
            CmsWebServiceClient cmsWebServiceClient = new CmsWebServiceClient(Utils.WcfBinding, Utils.WcfEndPoint);

            cmsWebServiceClient.GetIssueMilestonesCompleted += (s1, e1) =>
            {
                Milestones = new ObservableCollection<IssueMilestone>(e1.Result);

                mIssue.ModifiedObjects.MilestonesModified = true;
                mDictionary = Utils.BuildDictionaryForCollection(mIssue.IssueMilestones.Select(x => x.Id).ToList());

                mDictionaryDelays = new Dictionary<int, int>();
                foreach (IssueMilestone milestone in mIssue.IssueMilestones)
                {
                    mDictionaryDelays.AddRange(Utils.BuildDictionaryForCollection(milestone.IssueMilestoneDelays.Select(x => x.Id).ToList()));
                }

                SetAccumulatedDelayProperties();
                RaisePropertyChanged("Milestones");
            };
            cmsWebServiceClient.GetIssueMilestonesAsync(mIssue.Id);
        }