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), "-"));
        }
Beispiel #3
0
        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);
        }