コード例 #1
0
        private void CheckMilestoneAsync()
        {
            var localMessage = "";

            var included   = Milestones.Where(m => UserMilestones.Any(u => u.MilestoneID == m.ID));
            var milestones = Milestones.Except(included).OrderByDescending(m => m.TargetValue);

            foreach (var milestone in milestones)
            {
                if ((StartWeight - CurrentWeightValue) >= milestone.TargetValue)
                {
                    AchievedMilestone = milestone;
                    CurrentTitle      = string.Format(AchievedMilestone.MilestoneTitle,
                                                      (StartWeight - CurrentWeightValue),
                                                      App.Configuration.AppConfig.DefaultWeightVolume);
                    localMessage = string.Format(milestone.AchievedMessage, (StartWeight - CurrentWeightValue),
                                                 App.Configuration.AppConfig.DefaultWeightVolume);
                    CurrentSubTitle = string.Format(AchievedMilestone.MilestoneSubTitle,
                                                    (StartWeight - CurrentWeightValue),
                                                    App.Configuration.AppConfig.DefaultWeightVolume);
                    IsCurrentSubTitle = !string.IsNullOrEmpty(CurrentSubTitle);
                    GoalAchieved      = true;
                    break;
                }
            }

            if (!string.IsNullOrEmpty(localMessage))
            {
                SetActivityResource(showMessage: true, message: localMessage, modalWindow: true);
            }
        }
コード例 #2
0
        private async Task CurrentWeightChanged()
        {
            if (await Validate())
            {
                AchievedMilestone = null;
                var included   = Milestones.Where(m => UserMilestones.Any(u => u.MilestoneID == m.ID));
                var milestones = Milestones.Except(included).OrderByDescending(m => m.TargetPercentValue);
                ActionType = ActionType.Submit;

                if ((StartWeight - CurrentWeightValue) >= WeightLossGoal)
                {
                    CurrentTitle = TextResources.GoalAchieved;
                    SetActivityResource(true, false, true, false, string.Empty,
                                        TextResources.MessageGoalAchievedWishes, string.Empty);
                    GoalAchieved = true;
                    return;
                }
                else
                {
                    foreach (var milestone in milestones)
                    {
                        if ((StartWeight - CurrentWeightValue) >=
                            ((WeightLossGoal * milestone.TargetPercentValue) / 100))
                        {
                            AchievedMilestone = milestone;
                            CurrentTitle      = milestone.MilestoneTitle;
                            SetActivityResource(true, false, true, false, string.Empty,
                                                string.Format(milestone.AchievedMessage, (StartWeight - CurrentWeightValue),
                                                              App.Configuration.AppConfig.DefaultWeightVolume),
                                                string.Empty);
                            BadgeAchievedImage = DependencyService.Get <IMessage>()
                                                 .GetResource(milestone.AchievementGiftImage);

                            CurrentTitle      = AchievedMilestone.MilestoneTitle;
                            CurrentSubTitle   = AchievedMilestone.MilestoneSubTitle;
                            IsCurrentSubTitle =
                                CurrentSubTitle != null && CurrentSubTitle.Trim().Length > 0;

                            GoalAchieved = true;
                            return;
                        }
                    }
                }

                if (!GoalAchieved)
                {
                    ActionType = ActionType.Submit;
                    await SaveTrackerAsync();
                }
            }
        }
コード例 #3
0
        public IssueMilestonesViewModel(
            Func <Task <IReadOnlyList <Milestone> > > loadMilestones,
            Func <Task <Milestone> > currentMilestone,
            Func <Milestone, Task> updateIssue
            )
        {
            DismissCommand = ReactiveCommand.Create();

            var milestones = new ReactiveList <Milestone>();

            Milestones = milestones.CreateDerivedCollection(x =>
            {
                var vm = new IssueMilestoneItemViewModel(x);
                if (_selectedMilestone != null)
                {
                    vm.IsSelected = x.Number == _selectedMilestone.Number;
                }
                vm.GoToCommand
                .Select(_ => vm.IsSelected ? x : null)
                .Subscribe(milestone =>
                {
                    foreach (var a in Milestones.Where(y => y != vm))
                    {
                        a.IsSelected = false;
                    }
                    updateIssue(milestone).ToBackground();
                    DismissCommand.ExecuteIfCan();
                });
                return(vm);
            });

            LoadCommand = ReactiveCommand.CreateAsyncTask(async _ =>
            {
                _selectedMilestone = (await currentMilestone());
                milestones.Reset(await loadMilestones());
            });
        }
コード例 #4
0
 private IList <GithubMilestone> InnerGetCurrentMilestones()
 {
     return(Milestones.Where(x => (x.Number >= 17 && x.State.ToLower() == "closed") || x.Title.ToLower() == "vnext").OrderByDescending(x => x.Created_At).ToList());
 }