private void SetUserMilestones(BreatheEasyEntities db) { if (this.UserMilestones == null) { UserMilestones = new List <UserMilestone>(); } UserMilestones.Clear(); if (Plan.Duration > 0) { for (int days = 0; days <= Plan.Duration; days++) { var milestoneDate = StartDate.AddDays(days); int target = CigsPerDay * (Plan.Duration - days) / Plan.Duration; var milestone = new UserMilestone() { Date = milestoneDate, Target = target, }; UserMilestones.Add(milestone); } } else { UserMilestones.Add(new UserMilestone { Date = DateTime.Today, Target = 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); } }
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 int CigsNotSmoked() { int result = UserMilestones.Where(s => s.Date <= DateTime.Now) .Sum(p => CigsPerDay - p.Target); var quitDate = UserMilestones.OrderBy(s => s.Date).First(s => s.Target == 0).Date; if (quitDate < DateTime.Now) { result += (DateTime.Now - quitDate).Days; } return(result); }
private void CheckMilestonePercentageAsync() { var includedPercent = MilestonePercentage.Where(m => UserMilestones.Any(u => u.MilestonePercentageId == m.ID && m.IsPercent)); var milestonePercents = MilestonePercentage.Except(includedPercent) .OrderByDescending(m => m.TargetPercentValue); foreach (var milestonePercent in milestonePercents) { if ((StartWeight - CurrentWeightValue) >= ((WeightLossGoal * milestonePercent.TargetPercentValue) / 100)) { AchievedMilestonePercentage = milestonePercent; BadgeAchievedImage = DependencyService.Get <IMessage>() .GetResource(milestonePercent.AchievementGiftImage); } } }
public decimal GetMoneySaved() { decimal result = UserMilestones.Where(s => s.Date <= DateTime.Now) .Sum(p => CigsPerDay - p.Target); var quitDate = UserMilestones.OrderBy(s => s.Date).First(s => s.Target == 0).Date; if (quitDate < DateTime.Now) { result += (DateTime.Now - quitDate).Days; } result *= PricePerPack; return(Decimal.Round(result, 2)); ; }