Beispiel #1
0
        public static ChartExerciseRecord PopulateChartExerciseRecord(ExerciseRecord exerciseRecord, IEnumerable <int> monthsInSetsData, IEnumerable <int> weeksInSetsData, DateTime startDate, DateTime endDate)
        {
            ChartExerciseRecord chartExerciseRecord = new ChartExerciseRecord();

            chartExerciseRecord.Id        = exerciseRecord.Id;
            chartExerciseRecord.Record    = (float)exerciseRecord.Record;
            chartExerciseRecord.StartDate = exerciseRecord.StartDate;
            chartExerciseRecord.EndDate   = exerciseRecord.EndDate;
            chartExerciseRecord.Date      = exerciseRecord.Date;

            return(chartExerciseRecord);
        }
Beispiel #2
0
        public static ChartExercise PopulateChartExercise(Exercise exercise, IEnumerable <int> monthsInSetsData, IEnumerable <int> weeksInSetsData, DateTime startDate, DateTime endDate)
        {
            ChartExercise chartExercise = new ChartExercise();

            chartExercise.Id     = exercise.Id;
            chartExercise.Name   = exercise.Name;
            chartExercise.Target = (float)exercise.Target;
            //#######################################################################
            // Start Building the exercise month statistics (NOTICE: that the calculation is intended to calculate by aggregating all activities by month regardless of the year the month belongs to)
            //#######################################################################
            chartExercise.ChartMonthsData = new List <ChartExerciseMonthData>();

            foreach (var month in monthsInSetsData)
            {
                chartExercise.ChartMonthsData.Add(new ChartExerciseMonthData
                {
                    ActivityCount      = exercise.ExerciseRecords.Where(m => m.Date.Month == month).Count(),
                    StartDate          = DateTime.Now.StartOfMonth(month),
                    EndDate            = DateTime.Now.EndOfMonth(month),
                    MonthRecordAverage = new Func <double>(() => {
                        double averageRecord          = 0;
                        var exerciseRecordByDateRange = exercise.ExerciseRecords.Where(m => m.Date.Month == month);
                        if (exerciseRecordByDateRange.Count() > 0)
                        {
                            averageRecord = exerciseRecordByDateRange.Average(a => a.Record);
                        }

                        return(averageRecord);
                    })(),
                    MonthNumber = month
                });
            }
            //chartExercise.ChartMonthsData.OrderBy(o => o.MonthNumber);
            //#######################################################################

            //#######################################################################
            // Start Building the exercise weeks statistics (NOTICE: that the calculation is intended to calculate by aggregating all activities by week regardless of the year the week belongs to)
            //#######################################################################
            chartExercise.ChartWeeksData = new List <ChartExerciseWeekData>();
            foreach (var week in weeksInSetsData)
            {
                var er = exercise.ExerciseRecords.FirstOrDefault(m => m.Date.WeekOfDate() == week);

                chartExercise.ChartWeeksData.Add(new ChartExerciseWeekData
                {
                    ActivityCount     = exercise.ExerciseRecords.Where(m => m.Date.WeekOfDate() == week).Count(),
                    StartDate         = DateTimeExtensions.StartOfWeekNumber(er != null ? er.Date.Year : DateTime.Now.Year, week),
                    EndDate           = DateTimeExtensions.EndOfWeekNumber(er != null ? er.Date.Year : DateTime.Now.Year, week),
                    WeekRecordAverage = new Func <double>(() => {
                        double averageRecord          = 0;
                        var exerciseRecordByDateRange = exercise.ExerciseRecords.Where(m => m.Date.WeekOfDate() == week);
                        if (exerciseRecordByDateRange.Count() > 0)
                        {
                            averageRecord = exerciseRecordByDateRange.Average(a => a.Record);
                        }

                        return(averageRecord);
                    })(),
                    WeekNumber = week
                });
            }
            //chartExercise.ChartWeeksData.OrderBy(o => o.WeekNumber);
            chartExercise.TotalActivityCount = chartExercise.ChartMonthsData.Sum(ac => ac.ActivityCount);
            chartExercise.TotalRecordAverage = new Func <double>(() => {
                double averageRecord          = 0;
                var exerciseRecordByDateRange = exercise.ExerciseRecords.Where(m => m.Date >= startDate && m.Date <= endDate);
                if (exerciseRecordByDateRange.Count() > 0)
                {
                    averageRecord = exerciseRecordByDateRange.Average(a => a.Record);
                }

                return(averageRecord);
            })();
            //#######################################################################
            // Start creating chart data for excercises
            //#######################################################################
            chartExercise.ChartExerciseRecords = new List <ChartExerciseRecord>();
            foreach (var exerciseRecord in exercise.ExerciseRecords.Where(m => m.Date >= startDate && m.Date <= endDate))
            {
                ChartExerciseRecord chartExerciseRecord = ChartsHelper.PopulateChartExerciseRecord(exerciseRecord, monthsInSetsData, weeksInSetsData, startDate, endDate);
                chartExercise.ChartExerciseRecords.Add(chartExerciseRecord);
            }
            //chartExercise.ChartExerciseRecords.OrderBy(o => o.Date);
            //#######################################################################
            return(chartExercise);
        }