public IActionResult Results(string season, string round)
        {
            //TODO ADD MAPPING TO ALL THOSE NEW DRIVER, CONSTRUCTOR... CLASSES
            RaceResultsViewModel raceResultsViewModel = new RaceResultsViewModel();
            RootObject           rootObject           = _mapper.Map <F1Api.Models.RaceInfoModels.RootObject>(AccessData.LoadResultsSpecificRace(season, round));

            raceResultsViewModel.RootObject = rootObject;
            return(View(raceResultsViewModel));
        }
        public ActionResult ElectionMonitoringRaceResults(string regioncode)
        {
            var results = new List <Models.AggregatedRaceResult>();
            var title   = "National results of Presidential Elections";

            //TODO: Rework
            //This reall y should try to get for a particualr region
            //if region is unknown it should return for whoel country
            if ((string.IsNullOrEmpty(regioncode)) || regioncode == "NGA")
            {
                //get
                results = raceResultsService.GetAggregatedRaceResults(1, "").ToList();
                title   = "National results of Presidential Elections";
            }
            else
            {
                results = raceResultsService.GetAggregatedRaceResults(1, regioncode).ToList();

                title = regioncode + " state results of Presidential Elections";
            }

            if (results.Count < 1)
            {
                title = "No results found";
            }

            string[][] data = new string[results.Count][];


            for (int i = 0; i < results.Count; i++)
            {
                var result = results[i];
                var name   = result.PartyAcronym + " ("
                             + result.FirstName.Substring(0, 1) + "."
                             + result.LastName + ")";
                name    = result.PartyAcronym;
                data[i] = new string[] { name, result.TotalVotes.ToString() };
            }

            var returnValue = new RaceResultsViewModel
            {
                Title   = title,
                PieData = data
            };

            return(Json(returnValue, JsonRequestBehavior.AllowGet));
        }
        public ActionResult EnterResults(RaceResultsViewModel viewModel)
        {
            bool created = false;

            viewModel.SubmittedOn = DateTime.Now;
            Mapper.CreateMap <ViewModels.RaceResultsViewModel, Models.RaceResult>();
            var raceResult = Mapper.Map <ViewModels.RaceResultsViewModel, Models.RaceResult>(viewModel);

            raceResult.ApprovedBy = null;
            raceResult.ApprovedOn = null;
            raceResult.ModifiedBy = null;
            raceResult.ModifiedOn = null;
            var raceResultID = raceResultsService.CreateRaceResult(raceResult);

            if (raceResultID > 0)
            {
                created = true;
            }
            return(Json(new { Created = created }, JsonRequestBehavior.AllowGet));
        }
        public ActionResult RaceResults(RaceResultsViewModel viewModel)
        {
            try
            {
                var regionalResults = new List <RegionResultViewModel>();
                var overallResults  = new RegionResultViewModel();

                //get all results for the given race
                var allRegionsResults = raceResultsService.GetAggregatedRaceResults(viewModel.RaceID, null).ToList();
                var regions           = raceResultsService.GetRegions().Where(r => r.TopLevel == true).ToList(); //get all toplevel regions
                Mapper.CreateMap <Models.AggregatedRaceResult, ViewModels.AggregatedRaceResultViewModel>();
                //get result per region
                foreach (var region in regions)
                {
                    var regionresult = new RegionResultViewModel();
                    regionresult.Region = new RegionViewModel {
                        RegionID = region.RegionID, RegionCode = region.RegionCode, Name = region.Name
                    };
                    regionresult.Results = Mapper.Map <List <Models.AggregatedRaceResult>, List <ViewModels.AggregatedRaceResultViewModel> >
                                               (allRegionsResults.Where(rr => rr.RegionCode.ToLower() == region.RegionCode.ToLower()).ToList());
                    regionresult.Winner = regionresult.Results.OrderByDescending(rr => rr.TotalVotes).FirstOrDefault();
                    regionalResults.Add(regionresult);
                }

                // overall results
                // aggregate for all regions
                var aggResults = allRegionsResults.GroupBy(r => r.PartyAcronym)
                                 .Select(r =>
                {
                    AggregatedRaceResult aggregatedRaceResult = r.FirstOrDefault();
                    return(new
                    {
                        PartyAcronym = r.Key
                        , aggregatedRaceResult.RegionID
                        , aggregatedRaceResult.RegionCode
                        , aggregatedRaceResult.RegionName
                        , aggregatedRaceResult.RaceID,
                        CandidateID = aggregatedRaceResult.CandidateId, aggregatedRaceResult.FirstName, aggregatedRaceResult.LastName, aggregatedRaceResult.MiddleName, aggregatedRaceResult.PartyName, aggregatedRaceResult.PartyColor,
                        TotalVotes = r.Sum(p => p.TotalVotes),
                    });
                }).ToList();

                overallResults.Results = new List <AggregatedRaceResultViewModel>();
                foreach (var aggResult in aggResults)
                {
                    overallResults.Results.Add(new AggregatedRaceResultViewModel
                    {
                        PartyAcronym = aggResult.PartyAcronym,
                        RegionID     = aggResult.RegionID,
                        RegionCode   = aggResult.RegionCode,
                        RegionName   = aggResult.RegionName,
                        RaceID       = aggResult.RaceID,
                        CandidateID  = aggResult.CandidateID,
                        TotalVotes   = aggResult.TotalVotes.Value,
                        FirstName    = aggResult.FirstName,
                        LastName     = aggResult.LastName,
                        MiddleName   = aggResult.MiddleName,
                        PartyName    = aggResult.PartyName,
                        PartyColor   = aggResult.PartyColor,
                    });
                }

                var allResults = new RaceResultsViewModel
                {
                    RegionalResults       = regionalResults,
                    SelectedRegionResults = string.IsNullOrEmpty(viewModel.RegionCode)
                                            ? overallResults
                                            : regionalResults.FirstOrDefault(rr => rr.Region.RegionCode == viewModel.RegionCode)
                };


                return(Json(allResults, JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                return(Json(new { Message = ex.Message, StackTrace = ex.StackTrace, InnerException = ex.InnerException.Message }));
            }
        }
 public RaceResultsView()
 {
     InitializeComponent();
     DataContext = new RaceResultsViewModel();
 }