private void GetPowerPeakSummary(SportSummaryDto sportSummary) { PeaksDtoRepository peaks = new PeaksDtoRepository(_context); peaks.UserId = UserId; PeaksDto peakDetails = peaks.ExtractPeaks(PeakStreamType.Power, Start, End); sportSummary.Peak1 = ExtractPeak(peakDetails, 5); sportSummary.Peak2 = ExtractPeak(peakDetails, 60); sportSummary.Peak3 = ExtractPeak(peakDetails, 1200); sportSummary.Peak4 = ExtractPeak(peakDetails, 3600); }
private KeyValuePair <string, string> ExtractPeak(PeaksDto peaks, int duration) { foreach (var p in peaks.DurationPeaks) { if (p == null) { continue; } if (p.Duration == duration) { return(new KeyValuePair <string, string>(DisplayLabel.ShortStreamDurationForDisplay(duration), string.Format("{0}{1}", p.Peak.ToString(), DisplayLabel.PeakStreamTypeUnits(PeakStreamType.Power)))); } } return(new KeyValuePair <string, string>(DisplayLabel.ShortStreamDurationForDisplay(duration), "-")); }
public PeaksDto ExtractPeaks(PeakStreamType type, /*IQueryable<ActivityPeaks> peaks,*/ DateTime start, DateTime end) { if (string.IsNullOrEmpty(UserId)) { throw new ArgumentException("UserId invalid"); } var peaks = _context.ActivityPeak .Where(p => p.Activity.Athlete.UserId == UserId && p.StreamType == type) .Include(p => p.Activity); PeaksDto ap = new PeaksDto(); ap.PeakType = type; // DateTime.MinValue = all activities so need to set days to int.maxValue so that the client can identify it as all days/activities. if (start == DateTime.MinValue) { ap.Days = int.MaxValue; } else { ap.Days = Convert.ToInt32(end.Subtract(start).TotalDays); } ap.DurationPeaks.Add(peaks.Where(p => p.Activity.Start >= start && p.Activity.Start <= end) .OrderByDescending(p => p.Peak5) .Select(p => new PeaksDetailDto() { Duration = 5, Peak = p.Peak5, ActivityId = p.ActivityId, Description = p.Activity.Name }) .FirstOrDefault()); ap.DurationPeaks.Add(peaks.Where(p => p.Activity.Start >= start && p.Activity.Start <= end) .OrderByDescending(p => p.Peak60) .Select(p => new PeaksDetailDto() { Duration = 60, Peak = p.Peak60, ActivityId = p.ActivityId, Description = p.Activity.Name }) .FirstOrDefault()); ap.DurationPeaks.Add(peaks.Where(p => p.Activity.Start >= start && p.Activity.Start <= end) .OrderByDescending(p => p.Peak300) .Select(p => new PeaksDetailDto() { Duration = 300, Peak = p.Peak300, ActivityId = p.ActivityId, Description = p.Activity.Name }) .FirstOrDefault()); ap.DurationPeaks.Add(peaks.Where(p => p.Activity.Start >= start && p.Activity.Start <= end) .OrderByDescending(p => p.Peak1200) .Select(p => new PeaksDetailDto() { Duration = 1200, Peak = p.Peak1200, ActivityId = p.ActivityId, Description = p.Activity.Name }) .FirstOrDefault()); ap.DurationPeaks.Add(peaks.Where(p => p.Activity.Start >= start && p.Activity.Start <= end) .OrderByDescending(p => p.Peak3600) .Select(p => new PeaksDetailDto() { Duration = 3600, Peak = p.Peak3600, ActivityId = p.ActivityId, Description = p.Activity.Name }) .FirstOrDefault()); return(ap); }