// GET: api/ChartSet/5 public ChartDataContainer Get(long id, DateTime startDate, DateTime endDate) { ChartDataContainer chartDataContainer = new ChartDataContainer(); chartDataContainer.ChartSets = new List <ChartSet>(); ChartSet chartSet = null; ExerciseRecordsController exerciseRecordsController = new ExerciseRecordsController(); var exerciseRecordsData = exerciseRecordsController.GetExerciseRecords().Where(er => er.Date >= startDate && er.Date <= endDate && er.Exercise.Set.UserId.ToLower().CompareTo(this.user.Id.ToLower()) == 0 && er.Exercise.SetId == id); var setsData = exerciseRecordsData.DistinctBy(o => o.Exercise.SetId).Select(o => o.Exercise.Set); // We do these steps to narrow down the calculations to actual existing data based on submitted dates var monthsInSetsData = exerciseRecordsData.DistinctBy(o => o.Exercise.SetId).DistinctBy(m => m.Date.Month).Select(ms => ms.Date.Month); var weeksInSetsData = exerciseRecordsData.DistinctBy(o => o.Exercise.SetId).DistinctBy(m => m.Date.WeekOfDate()).Select(ms => ms.Date.WeekOfDate()); //####################################################################### // Start Building the chart data by going through each found set //####################################################################### foreach (var set in setsData) { chartSet = ChartsHelper.PopulateChartSet(set, monthsInSetsData, weeksInSetsData, startDate, endDate); } chartDataContainer.ChartSets.Add(chartSet); //####################################################################### return(chartDataContainer); }
// GET: api/ChartSet public ChartDataContainer Get(DateTime startDate, DateTime endDate) { ChartDataContainer chartDataContainer = new ChartDataContainer(); chartDataContainer.ChartSets = new List <ChartSet>(); ExerciseRecordsController exerciseRecordsController = new ExerciseRecordsController(); var exerciseRecordsData = exerciseRecordsController.GetExerciseRecords().Where(er => er.Date >= startDate && er.Date <= endDate); var setsData = exerciseRecordsData.DistinctBy(o => o.Exercise.SetId).Select(o => o.Exercise.Set); // We do these steps to narrow down the calculations to actual existing data based on submitted dates var monthsInSetsData = exerciseRecordsData.DistinctBy(m => m.Date.Month).Select(ms => ms.Date.Month).OrderBy(o => o); var weeksInSetsData = exerciseRecordsData.DistinctBy(m => m.Date.WeekOfDate()).Select(ms => ms.Date.WeekOfDate()).OrderBy(o => o); chartDataContainer.MonthsInSets = new Dictionary <int, String>(); foreach (var month in monthsInSetsData) { chartDataContainer.MonthsInSets.Add(month, new DateTime(DateTime.Now.Year, month, 1).ToString("MMMM", CultureInfo.InvariantCulture)); } chartDataContainer.WeeksInSets = new Dictionary <int, String>(); foreach (var week in weeksInSetsData) { chartDataContainer.WeeksInSets.Add(week, week.ToString()); } //####################################################################### // Start Building the chart data by going through each found set //####################################################################### foreach (var set in setsData) { ChartSet chartSet = ChartsHelper.PopulateChartSet(set, monthsInSetsData, weeksInSetsData, startDate, endDate); // Final step is to add the loaded set data that is to be returned to the client chartDataContainer.ChartSets.Add(chartSet); } //####################################################################### return(chartDataContainer); }