public ActionResult GetWinners(int eventId, string adminToken) { try { var managementService = new ManagementService(eventId, adminToken); var scores = managementService.GetEventScores(); var completeList = new List<Models.Azure.EventScoreItem>(); foreach (var personScore in scores) { for (int i = 0; i < personScore.Score; i++) { completeList.Add(personScore); } } var winningNumbers = new List<int>(); var totalEntries = completeList.Count(); Random rnd = new Random(); var selectCount = totalEntries > 30 ? 30 : totalEntries; for (int i = 0; i < selectCount; i++) { var number = rnd.Next(0, totalEntries - 1); if (!winningNumbers.Contains(number)) winningNumbers.Add(rnd.Next(0, totalEntries -1)); } var winningPeople = new List<Models.Azure.EventScoreItem>(); foreach (var winningNumber in winningNumbers) { if (!winningPeople.Contains(completeList[winningNumber])) winningPeople.Add(completeList[winningNumber]); } var data = new { totalEntries = totalEntries, winningNumbers = winningNumbers, winners = winningPeople }; return new JsonNetResult(data); } catch (Exception) { throw new Exception("Error"); } }
public ActionResult GetEventScores(int eventId, string adminToken) { try { var managementService = new ManagementService(eventId, adminToken); var scores = managementService.GetEventScores(); var returnScores = scores.OrderByDescending(x => x.Score).Select(x => new { score = x.Score, name = x.UserName, token = x.RowKey }); return new JsonNetResult(returnScores); } catch (Exception) { throw new Exception("Error"); } }