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 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); }