public async Task EditMatchGeneralAttributesCommand_Test() { var matchId = await MatchModule.ExecuteCommandAsync(new CreateMatchCommand( MatchSampleData.Name, MatchSampleData.HomeTeamId, MatchSampleData.AwayTeamId, MatchSampleData.UtcDate, MatchSampleData.Status, MatchSampleData.Score, MatchSampleData.Season, MatchSampleData.ExternalId)); await MatchModule.ExecuteCommandAsync(new EditMatchGeneralAttributesCommand( matchId, EditMatchSampleData.NewName, EditMatchSampleData.NewUtcDate, EditMatchSampleData.NewScore, EditMatchSampleData.NewSeason, EditMatchSampleData.NewStatus)); var match = await MatchModule.ExecuteQueryAsync(new GetMatchByIdQuery(matchId)); Assert.That(match.Name, Is.EqualTo(EditMatchSampleData.NewName)); Assert.That(match.UtcDate, Is.EqualTo(EditMatchSampleData.NewUtcDate)); Assert.That(match.ScoreWinner, Is.EqualTo(EditMatchSampleData.NewScore.Winner)); Assert.That(match.ScoreHomeTeam, Is.EqualTo(EditMatchSampleData.NewScore.HomeTeam)); Assert.That(match.ScoreAwayTeam, Is.EqualTo(EditMatchSampleData.NewScore.AwayTeam)); Assert.That(match.Season, Is.EqualTo(EditMatchSampleData.NewSeason)); Assert.That(match.Status, Is.EqualTo(EditMatchSampleData.NewStatus)); }
public async Task CreateTeamCommand_Test() { var teamId = await MatchModule.ExecuteCommandAsync(new CreateTeamCommand( TeamSampleData.Name, TeamSampleData.Description, TeamSampleData.Logo, TeamSampleData.Manager, TeamSampleData.League, TeamSampleData.Country, TeamSampleData.FormedYear, TeamSampleData.Facebook, TeamSampleData.Instagram, TeamSampleData.Stadium, TeamSampleData.ExternalId)); var team = await MatchModule.ExecuteQueryAsync(new GetTeamQuery(teamId)); Assert.That(team.Name, Is.EqualTo(TeamSampleData.Name)); Assert.That(team.Description, Is.EqualTo(TeamSampleData.Description)); Assert.That(team.Logo, Is.EqualTo(TeamSampleData.Logo)); Assert.That(team.Manager, Is.EqualTo(TeamSampleData.Manager)); Assert.That(team.League, Is.EqualTo(TeamSampleData.League)); Assert.That(team.Country, Is.EqualTo(TeamSampleData.Country)); Assert.That(team.FormedYear, Is.EqualTo(TeamSampleData.FormedYear)); Assert.That(team.Facebook, Is.EqualTo(TeamSampleData.Facebook)); Assert.That(team.Instagram, Is.EqualTo(TeamSampleData.Instagram)); Assert.That(team.StadiumName, Is.EqualTo(TeamSampleData.Stadium.Name)); Assert.That(team.StadiumDescription, Is.EqualTo(TeamSampleData.Stadium.Description)); Assert.That(team.StadiumLocation, Is.EqualTo(TeamSampleData.Stadium.Location)); Assert.That(team.ExternalId, Is.EqualTo(TeamSampleData.ExternalId)); }
public IDictionary <ModuleType, IModule> CreateModules() { Cmcl.Fixtures = CmclFixtures; Cmcl.Places = CmclPlaces; var playersModule = new PlayersModule(Configuration.GameEngine, Players, Teams); // Need to create just a Teams list object. Selecting the Teams Module has to refresh the potentially changed team. foreach (var team in Teams.Values) { team.Players = new List <Player>(Players.Where(p => p.TeamName == team.TeamName)); team.Formation[0] = team.Players[0]; team.Formation[1] = team.Players[1]; } var teamModule = new TeamModule(Teams); var competitionModule = new CompetitionsModule(new[] { Cmcl }); var fixturesModule = new FixturesModule(competitionModule.Competitions); var matchModule = new MatchModule(new [] { Cmcl }); Config.Configuration.GlobalWeek = () => Competition.GlobalWeek(new[] { Cmcl }); return(new Dictionary <ModuleType, IModule> { { ModuleType.Team, teamModule }, { ModuleType.SelectTeam, teamModule }, { ModuleType.Fixtures, fixturesModule }, { ModuleType.Competitions, competitionModule }, { ModuleType.Match, matchModule }, { ModuleType.Players, playersModule } }); }
private async Task CheckQueueMatchCreate1sAsync(IMessageChannel thisChannel, string region) { List <Player> playersInQueue = new List <Player>(10); string query = $"SELECT id, username, tier FROM queue{region}1 ORDER BY tier DESC;"; await Globals.conn.OpenAsync(); try { MySqlCommand cmd = new MySqlCommand(query, Globals.conn); MySqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { Player thisPlayer = new Player { id = reader.GetUInt64(0), username = reader.GetString(1), tier = reader.GetInt16(2) }; playersInQueue.Add(thisPlayer); } } catch (Exception ex) { Console.WriteLine(ex.ToString()); await Globals.conn.CloseAsync(); throw; } await Globals.conn.CloseAsync(); while (playersInQueue.Count > 0) { Player thisPlayer = playersInQueue[0]; playersInQueue.RemoveAt(0); Player checkPlayer; for (int i = 0; i < playersInQueue.Count; i++) { checkPlayer = playersInQueue[i]; if ((thisPlayer.tier & checkPlayer.tier) > 0) { await MatchModule.CreateMatch1Async(thisChannel, thisPlayer, checkPlayer, region); playersInQueue.Remove(checkPlayer); i--; break; } } } }
private async Task CheckQueueMatchCreate2sAsync(IMessageChannel thisChannel, string region) { List <Player> playersInQueue = new List <Player>(20); List <Team> teamsInQueue = new List <Team>(10); string query = $"SELECT id, username, tier, tierTeammate FROM queue{region}2 ORDER BY tier DESC;"; await Globals.conn.OpenAsync(); try { MySqlCommand cmd = new MySqlCommand(query, Globals.conn); MySqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { Player thisPlayer = new Player { id = reader.GetUInt64(0), username = reader.GetString(1), tier = reader.GetInt16(2), tierTeammate = reader.GetInt16(3) }; playersInQueue.Add(thisPlayer); } } catch (Exception ex) { Console.WriteLine(ex.ToString()); await Globals.conn.CloseAsync(); throw; } await Globals.conn.CloseAsync(); while (playersInQueue.Count > 0) { Player thisPlayer = playersInQueue[0]; playersInQueue.RemoveAt(0); List <Player> potentialTeammates = new List <Player>(playersInQueue.Count); foreach (var checkPlayer in playersInQueue) { if ((thisPlayer.tierTeammate & checkPlayer.tierTeammate) > 0) { potentialTeammates.Add(checkPlayer); } } if (potentialTeammates.Count > 0) { Player teammate = potentialTeammates[Globals.rnd.Next(potentialTeammates.Count)]; playersInQueue.Remove(teammate); teamsInQueue.Add(new Team { p1 = thisPlayer, p2 = teammate, tier = thisPlayer.tier & teammate.tier }); } } while (teamsInQueue.Count > 0) { Team thisTeam = teamsInQueue[0]; teamsInQueue.RemoveAt(0); Team checkTeam; for (int i = 0; i < teamsInQueue.Count; i++) { checkTeam = teamsInQueue[i]; if ((thisTeam.tier & checkTeam.tier) > 0) { await MatchModule.CreateMatch2Async(thisChannel, thisTeam, checkTeam, region); teamsInQueue.Remove(checkTeam); i--; break; } } } }