protected override ActionResult DisplayResultsView(RaceFilterViewModel filter)
        {
            var viewModel = new TriStatsViewModel();

            viewModel.Filter = filter;

            List <Triathlete> allAthletes = GetAllAthletesForRaces(filter);


            var selectedAgeGroupIds = AgeGroup.Expand(filter.SelectedAgeGroupIds);
            var selectedGenderIds   = Gender.Expand(filter.SelectedGenderIds);
            var athletes            = new List <Triathlete>();

            foreach (string raceId in filter.SelectedRaceIds)
            {
                var athletesPerRace = allAthletes.Where(
                    a => a.RequestContext.RaceId.Equals(raceId, System.StringComparison.CurrentCultureIgnoreCase) &&
                    selectedAgeGroupIds.Contains(a.RequestContext.AgeGroupId) &&
                    selectedGenderIds.Contains(a.RequestContext.GenderId)
                    ).ToList();
                // new BasicDurationFilter() { } //bypass the user's duration filter so we can get all athletes, including DNFs


                athletes.AddRange(athletesPerRace);
                viewModel.Stats.Add(
                    GetStats(athletesPerRace, filter.AvailableRaces.Single(r => r.RaceId == raceId)));
            }
            viewModel.Triathletes = athletes;
            return(View("Compare", viewModel));
        }
        public ActionResult Compare()
        {
            var viewmodel = new TriStatsViewModel();

            viewmodel.Filter = new RaceFilterViewModel();
            return(View(viewmodel));
        }
Ejemplo n.º 3
0
        /// <summary>
        /// DisplayReview() - In this version the group of athletes are given to us. We just need to calulate the stats and return the view
        /// </summary>
        /// <param name="athletes"></param>
        /// <param name="filter"></param>
        /// <returns></returns>
        protected override ActionResult DisplayResultsView(List <Triathlete> athletes, RaceFilterViewModel filter)
        {
            var viewModel = new TriStatsViewModel();

            viewModel.Filter = filter;

            foreach (var raceId in filter.SelectedRaceIds)
            {
                var subset = athletes.Where(a => a.Race.RaceId == raceId).ToList();
                var stats  = GetStats(subset, filter.
                                      AvailableRaces.Single(r => r.RaceId == raceId)); //calculate the stats based on each race
                viewModel.Stats.Add(stats);
            }

            return(View("~/Views/TriStats/Details.cshtml", viewModel));
        }
Ejemplo n.º 4
0
        /// <summary>
        /// DisplayResultsView() - In this version we must iterate through each race, get the athletes, and calculate their stats
        /// </summary>
        /// <param name="page"></param>
        /// <param name="raceIds"></param>
        /// <param name="agegroupIds"></param>
        /// <param name="genderIds"></param>
        /// <returns></returns>
        protected override ActionResult DisplayResultsView(RaceFilterViewModel filter)
        {
            var viewModel = new TriStatsViewModel();

            viewModel.Filter = filter;

            List <Triathlete> allAthletes = GetAllAthletesForRaces(filter);
            var selectedAgeGroupIds       = AgeGroup.Expand(filter.SelectedAgeGroupIds);
            var selectedGenderIds         = Gender.Expand(filter.SelectedGenderIds);


            foreach (string raceId in filter.SelectedRaceIds) //get stats for each race in order to compare them rather than to combine their stats
            {
                var athletes = GetFilteredAthletes(raceId, allAthletes, filter);
                var stats    = GetStats(athletes, _DBContext.Races.Include("Conditions").Single(r => r.RaceId.Equals(raceId, StringComparison.CurrentCultureIgnoreCase)));
                viewModel.Stats.Add(stats);
            }

            return(View("~/Views/TriStats/Details.cshtml", viewModel));
        }
Ejemplo n.º 5
0
        public ActionResult DisplayResultsViewFromSource() //for admin purposes
        {
            var ctx = TempData["requestContext"] as RequestContext;

            var viewModel = new TriStatsViewModel();

            viewModel.Filter = new RaceFilterViewModel();
            viewModel.Filter.SelectedRaceIds = new List <string>()
            {
                ctx.RaceId
            };
            viewModel.Filter.SelectedAgeGroupIds = new List <int>()
            {
                ctx.AgeGroupId
            };
            viewModel.Filter.SelectedGenderIds = new List <int>()
            {
                ctx.GenderId
            };


            var athletes = _RaceService.GetAthletesFromSource(
                new BasicRaceCriteria
            {
                SelectedRaceIds     = viewModel.Filter.SelectedRaceIds,
                SelectedAgeGroupIds = viewModel.Filter.SelectedAgeGroupIds,
                SelectedGenderIds   = viewModel.Filter.SelectedGenderIds
            }

                );
            var stats = GetStats(athletes, _DBContext.Races.Include("Conditions").Single(r => r.RaceId == ctx.RaceId));

            viewModel.Stats.Add(stats);


            return(View("~/Views/TriStats/Details.cshtml", viewModel));
        }