示例#1
0
        protected TriStats GetRaceStats(string raceId)
        {
            var aggr = _DBContext.RacesAggregates.Include("Race").
                       Where(r => r.RaceId.Equals(raceId, StringComparison.CurrentCultureIgnoreCase) && r.Segment.Equals("all")).SingleOrDefault();

            TriStats stats = new TriStats();

            stats.Race = aggr.Race;

            //median
            stats.Swim.Median   = aggr.SwimMedian;
            stats.Bike.Median   = aggr.BikeMedian;
            stats.Run.Median    = aggr.RunMedian;
            stats.Finish.Median = aggr.FinishMedian;


            //stats.DivRank.Median = a;
            //stats.GenderRank.Median = Math.Floor(calc.IntMedian("GenderRank"));
            //stats.OverallRank.Median = Math.Floor(calc.IntMedian("OverallRank"));
            //stats.Points.Median = Math.Floor(calc.IntMedian("Points"));


            //min
            stats.Swim.Min   = aggr.SwimFastest;
            stats.Bike.Min   = aggr.BikeFastest;
            stats.Run.Min    = aggr.RunFastest;
            stats.Finish.Min = aggr.FinishFastest;



            //max
            stats.Swim.Max   = aggr.SwimFastest;
            stats.Bike.Max   = aggr.BikeFastest;
            stats.Run.Max    = aggr.RunFastest;
            stats.Finish.Max = aggr.FinishFastest;



            //standard deviation
            stats.Swim.StandDev   = aggr.SwimStdDev;
            stats.Bike.StandDev   = aggr.BikeStdDev;
            stats.Run.StandDev    = aggr.RunStdDev;
            stats.Finish.StandDev = aggr.FinishStdDev;


            stats.DNFCount = aggr.DNFCount;

            return(stats);
        }
示例#2
0
        protected TriStats GetRaceDivisionStats(string raceId, int agegroup, int gender)
        {
            var aggr = _DBContext.AgeGroupAggregates.Include("Race").
                       Where(r => r.RaceId == raceId &&
                             r.AgeGroupId == agegroup &&
                             r.GenderId == gender).SingleOrDefault();

            TriStats stats = new TriStats();

            stats.Race = aggr.Race;

            //median
            stats.Swim.Median   = aggr.SwimMedian;
            stats.Bike.Median   = aggr.BikeMedian;
            stats.Run.Median    = aggr.RunMedian;
            stats.Finish.Median = aggr.FinishMedian;

            //min
            stats.Swim.Min   = aggr.SwimFastest;
            stats.Bike.Min   = aggr.BikeFastest;
            stats.Run.Min    = aggr.RunFastest;
            stats.Finish.Min = aggr.FinishFastest;


            //max
            stats.Swim.Max   = aggr.SwimFastest;
            stats.Bike.Max   = aggr.BikeFastest;
            stats.Run.Max    = aggr.RunFastest;
            stats.Finish.Max = aggr.FinishFastest;



            //standard deviation
            stats.Swim.StandDev   = aggr.SwimStdDev;
            stats.Bike.StandDev   = aggr.BikeStdDev;
            stats.Run.StandDev    = aggr.RunStdDev;
            stats.Finish.StandDev = aggr.FinishStdDev;


            stats.DNFCount = aggr.DNFCount;

            return(stats);
        }
示例#3
0
        /// <summary>
        /// Get Stats for athletes associated with single race
        /// </summary>
        /// <param name="athletes"></param>
        /// <param name="race"></param>
        /// <returns></returns>
        protected TriStats GetStats(List <Triathlete> athletes, Race race)
        {
            TriStats stats = new TriStats(athletes, race);

            TriStatsCalculator calc = new TriStatsCalculator(athletes);

            //median
            stats.Swim.Median   = calc.TimeSpanMedian("Swim");
            stats.Bike.Median   = calc.TimeSpanMedian("Bike");
            stats.Run.Median    = calc.TimeSpanMedian("Run");
            stats.Finish.Median = calc.TimeSpanMedian("Finish");


            stats.DivRank.Median     = Math.Floor(calc.IntMedian("DivRank"));
            stats.GenderRank.Median  = Math.Floor(calc.IntMedian("GenderRank"));
            stats.OverallRank.Median = Math.Floor(calc.IntMedian("OverallRank"));
            stats.Points.Median      = Math.Floor(calc.IntMedian("Points"));

            //avg
            stats.Swim.Average   = calc.TimeSpanAverage("Swim");
            stats.Bike.Average   = calc.TimeSpanAverage("Bike");
            stats.Run.Average    = calc.TimeSpanAverage("Run");
            stats.Finish.Average = calc.TimeSpanAverage("Finish");


            stats.DivRank.Average     = Math.Floor(calc.IntAverage("DivRank"));
            stats.GenderRank.Average  = Math.Floor(calc.IntAverage("GenderRank"));
            stats.OverallRank.Average = Math.Floor(calc.IntAverage("OverallRank"));
            stats.Points.Average      = Math.Floor(calc.IntAverage("Points"));

            //min
            stats.Swim.Min   = calc.TimeSpanMin("Swim");
            stats.Bike.Min   = calc.TimeSpanMin("Bike");
            stats.Run.Min    = calc.TimeSpanMin("Run");
            stats.Finish.Min = calc.TimeSpanMin("Finish");


            stats.DivRank.Min     = calc.IntMin("DivRank");
            stats.GenderRank.Min  = calc.IntMin("GenderRank");
            stats.OverallRank.Min = calc.IntMin("OverallRank");
            stats.Points.Min      = calc.IntMin("Points");

            //max
            stats.Swim.Max   = calc.TimeSpanMax("Swim");
            stats.Bike.Max   = calc.TimeSpanMax("Bike");
            stats.Run.Max    = calc.TimeSpanMax("Run");
            stats.Finish.Max = calc.TimeSpanMax("Finish");


            stats.DivRank.Max     = calc.IntMax("DivRank");
            stats.GenderRank.Max  = calc.IntMax("GenderRank");
            stats.OverallRank.Max = calc.IntMax("OverallRank");
            stats.Points.Max      = calc.IntMax("Points");


            //standard deviation
            stats.Swim.StandDev   = calc.TimeSpanStandardDeviation("Swim");
            stats.Bike.StandDev   = calc.TimeSpanStandardDeviation("Bike");
            stats.Run.StandDev    = calc.TimeSpanStandardDeviation("Run");
            stats.Finish.StandDev = calc.TimeSpanStandardDeviation("Finish");


            var swimSplit = TriStatsCalculator.Split(athletes, "Swim");

            stats.Swim.FastestHalf = TriStatsCalculator.Split(swimSplit.Item1, "Swim");
            stats.Swim.SlowestHalf = TriStatsCalculator.Split(swimSplit.Item2, "Swim");

            var bikeSplit = TriStatsCalculator.Split(athletes, "Bike");

            stats.Bike.FastestHalf = TriStatsCalculator.Split(bikeSplit.Item1, "Bike");
            stats.Bike.SlowestHalf = TriStatsCalculator.Split(bikeSplit.Item2, "Bike");

            var runSplit = TriStatsCalculator.Split(athletes, "Run");

            stats.Run.FastestHalf = TriStatsCalculator.Split(runSplit.Item1, "Run");
            stats.Run.SlowestHalf = TriStatsCalculator.Split(runSplit.Item2, "Run");

            var finishSplit = TriStatsCalculator.Split(athletes, "Finish");

            stats.Finish.FastestHalf = TriStatsCalculator.Split(finishSplit.Item1, "Finish");
            stats.Finish.SlowestHalf = TriStatsCalculator.Split(finishSplit.Item2, "Finish");



            stats.Swim.Data   = athletes.OrderBy(a => a.Swim).Select(a => a.Swim.ToString("hh\\:mm\\:ss")).ToArray();
            stats.Bike.Data   = athletes.OrderBy(a => a.Bike).Select(a => a.Bike.ToString("hh\\:mm\\:ss")).ToArray();
            stats.Run.Data    = athletes.OrderBy(a => a.Run).Select(a => a.Run.ToString("hh\\:mm\\:ss")).ToArray();
            stats.Finish.Data = athletes.OrderBy(a => a.Finish).Select(a => a.Finish.ToString("hh\\:mm\\:ss")).ToArray();

            stats.DNFCount = calc.NumberDNFs();

            return(stats);
        }