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); } }
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(); } } }
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()); }); }
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()); }