public void PlayGame(string group, string correlationId) { var teamsInGroup = _teamsRepository.FetchTeamsByGroup(group).Where(x => x.Games < 3).ToList(); var gamesInGroup = _teamsRepository.FetchGamesByGroup(group).ToList(); if (teamsInGroup.Count == 0) { return; } var index = _rnd.Next(teamsInGroup.Count); var team1Goals = _rnd.Next(MaxGoalsInGame); var team2Goals = _rnd.Next(MaxGoalsInGame); var team1Name = teamsInGroup[index].Name; teamsInGroup.RemoveAt(index); var team2Name = DrawOpponent(team1Name, teamsInGroup, gamesInGroup); var team1Players = _teamsRepository.FetchPlayers(team1Name.Replace(" ", "")).ToList(); var team2Players = _teamsRepository.FetchPlayers(team2Name.Replace(" ", "")).ToList(); var team1Scorers = DrawScorers(team1Players, team1Goals).ToList(); var team2Scorers = DrawScorers(team2Players, team2Goals).ToList(); _telemetryService.Log($"New result generated {team1Name}:{team2Name} {team1Goals}:{team2Goals}", correlationId); var gameMessageModel = new GameMessageModel { Group = group, Team1Name = team1Name, Team2Name = team2Name, DateOfGame = DateTime.Now, Team1Goals = team1Goals, Team2Goals = team2Goals, Team1Scorers = team1Scorers, Team2Scorers = team2Scorers, CorrelationId = correlationId }; _topicService.SendMessage(gameMessageModel); }
public ActionResult PlayGame(string group) { _telemetryService.Log($"Playing game in group {group}", CorrelationId); _teamsService.PlayGame(group, CorrelationId); return(RedirectToAction("Index")); }