Exemplo n.º 1
0
        private int CalculateByDay(DailyProgressSummary summary, Goals goals)
        {
            if (summary == null)
            {
                return(0);
            }

            var crystals = 0;

            var fields = summary.GetType()
                         .GetProperties()
                         .Where(field => !field.Name.Contains("Id"))
                         .Select(field => new KeyValuePair <string, int>(field.Name, (int)field.GetValue(summary)))
                         .ToList();

            fields.AddRange(
                goals.GetType().GetProperties()
                .Where(field => field.Name.Contains("Reward") && !field.Name.Contains("Weekly"))
                .Select(field => new KeyValuePair <string, int>(field.Name, (int)field.GetValue(goals))));

            var dict = InitEmptyDict(fields);

            MapToDictionary(fields, dict);

            foreach (var key in dict)
            {
                var act    = key.Value.Item1;
                var goal   = key.Value.Item2;
                var reward = key.Value.Item3;

                crystals += CalculateCrystals(act, goal, reward);
            }

            return(crystals);
        }
        private void InitAllProgressBars(Grid outerGrid, DateTime date, int index)
        {
            //for each goal, check if it's defined and get its value + show visible
            int i = 0;
            DailyProgressSummary sum = _IProgressFetcher.GetDaily(date);
            Goals goals = _IGoalsHandler.GetGoals();
            Grid  grid  = new Grid();

            grid.SetValue(Grid.RowProperty, index);
            outerGrid.RowDefinitions.Add(new RowDefinition());
            outerGrid.Children.Add(grid);

            AddTitle(grid, "Daily Progress:", date);
            i++;
            if (sum.StepsTakenGoal > 0)             // if Steps is set
            {
                ShowProgressBar(grid, "Steps:", sum.StepsTaken, sum.StepsTakenGoal, (index != 0) ? 0 : goals.StepsTakenReward, i);
                i++;
            }
            if (sum.CaloriesBurnedGoal > 0)             // if Calories is set
            {
                ShowProgressBar(grid, "Caloriers Burned:", sum.CaloriesBurned, sum.CaloriesBurnedGoal, (index != 0)? 0 : goals.CaloriesBurnedReward, i);
                i++;
            }
            if (sum.SleepMinutesGoal > 0)             // if Sleep is set
            {
                ShowProgressBar(grid, "Minutes Slept:", sum.SleepMinutes, sum.SleepMinutesGoal, (index != 0) ? 0 : goals.SleepMinutesReward, i);
                i++;
            }
            grid.RowDefinitions.Add(new RowDefinition());
            TextBlock LineBreak = new TextBlock {
                Text = "\n"
            };

            LineBreak.SetValue(Grid.RowProperty, i);
            grid.Children.Add(LineBreak);
            i++;
            AddSummary(grid, sum, i);
            i++;
            if (index == 0)
            {
                grid.RowDefinitions.Add(new RowDefinition());
                HistoryButton = new Button
                {
                    Content             = "View 7 days history",
                    HorizontalAlignment = HorizontalAlignment.Center,
                    VerticalAlignment   = VerticalAlignment.Center,
                    Background          = ButtonColorBrush,
                    Foreground          = ButtonTextColorBrush,
                    Visibility          = Visibility.Visible,
                };
                HistoryButton.SetValue(Grid.RowProperty, i);
                HistoryButton.Click += new RoutedEventHandler(HistoryButtonClick);
                grid.Children.Add(HistoryButton);
            }
        }
        public void AddSummary(Grid outerGrid, DailyProgressSummary sum, int index)
        {
            outerGrid.RowDefinitions.Add(new RowDefinition());
            Grid grid = new Grid();

            InitGrid(grid, 0, 2);
            AddTextBlockToGrid(grid, "Floors climed", sum.FloorsClimbed.ToString(), 0);
            AddTextBlockToGrid(grid, "Active minutes", sum.ActiveMinutes.ToString(), 1);
            AddTextBlockToGrid(grid, "Total distance", Math.Round((double)sum.TotalDistance / 100000, 2).ToString() + " KM", 2);
            grid.SetValue(Grid.RowProperty, index);
            outerGrid.Children.Add(grid);
        }