示例#1
0
        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
                });
            }
        }
示例#2
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);
            }
        }
示例#3
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();
                }
            }
        }
示例#4
0
        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);
        }
示例#5
0
        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);
                }
            }
        }
示例#6
0
        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));

            ;
        }