public Result Handle(AddBetterToTournament command) { Tournament tournament = _tournamentRepository.GetTournamentById(command.TournamentId); if (tournament == null) { return(Result.Failure($"Could not add better to tournament. Tournament ({ command.TournamentId }) not found.")); } User user = _userRepository.GetUserById(command.UserId); if (user == null) { return(Result.Failure($"Could not add better to tournament with given user ({ command.UserId }). Tournament ({ command.TournamentId }) not found.")); } Better better = _tournamentRepository.AddBetterToTournament(tournament, user); if (better == null) { return(Result.Failure($"Could not add better to tournament with given user ({ command.UserId }).")); } _tournamentRepository.Save(); return(Result.Success()); }
private void PlaceBetsOnAvailableMatchesInGroup(List <Better> betters, GroupBase group) { Random random = new Random(133742069); int matchCounter = 0; foreach (Domain.Match match in group.Matches) { if (match.GetPlayState() != PlayStateEnum.NotBegun) { continue; } Better better = betters[0]; if (matchCounter % 4 != 0) { better.PlaceMatchBet(match, match.Player1); } for (int betterIndex = 1; betterIndex < betters.Count; ++betterIndex) { Player player = random.Next(2) == 0 ? match.Player1 : match.Player2; better = betters[betterIndex]; better.PlaceMatchBet(match, player); } matchCounter++; } }
public override int GetHashCode() { int hash = 1; if (WeatherId != 0) { hash ^= WeatherId.GetHashCode(); } if (Name.Length != 0) { hash ^= Name.GetHashCode(); } if (VisitingNum != 0) { hash ^= VisitingNum.GetHashCode(); } if (Best != 0) { hash ^= Best.GetHashCode(); } if (Better != 0) { hash ^= Better.GetHashCode(); } if (Same != 0) { hash ^= Same.GetHashCode(); } return(hash); }
private static bool ParametersAreValid(Better better, Match match, Player player) { bool invalidBetterGiven = better == null; if (invalidBetterGiven) { // LOG Error: Cannot create match bet because given better was invalid return(false); } bool invalidMatchGiven = match == null; if (invalidMatchGiven) { // LOG Error: Cannot create match bet because given match was invalid return(false); } bool invalidPlayerGiven = player == null; if (invalidPlayerGiven) { // LOG Error: Cannot create match bet because given player was invalid return(false); } return(true); }
public void GivenBettersPlacesMatchBets(Table table) { foreach (TableRow row in table.Rows) { TestUtilities.ParseBetterMatchBetPlacements(row, out string betterName, out int roundIndex, out int groupIndex, out int matchIndex, out string playerName); RoundBase round = createdRounds[roundIndex]; GroupBase group = createdGroups[groupIndex]; Match match = group.Matches[matchIndex]; bool betterNameIsNotEmpty = betterName.Length > 0; bool playerNameIsNotEmpty = playerName.Length > 0; if (betterNameIsNotEmpty && playerNameIsNotEmpty) { Better better = round.Tournament.GetBetterByName(betterName); Player player = match.FindPlayer(playerName); better.Should().NotBeNull(); player.Should().NotBeNull(); better.PlaceMatchBet(match, player).Should().NotBeNull(); } } }
public TournamentTests() { tournament = Tournament.Create("GSL 2019"); bracketRound = tournament.AddBracketRound() as BracketRound; user = User.Create("Stålberto"); better = tournament.AddBetter(user); }
public static ApplicableFunction FindBest(List <ApplicableFunction> candidates) { if (candidates == null || candidates.Count == 0) { return(null); } if (candidates.Count == 1) { return(candidates[0]); } ApplicableFunction best = null; Better[,] betterMap = new Better[candidates.Count, candidates.Count]; for (int i = 0; i < candidates.Count; i++) { bool isBest = true; for (int j = 0; j < candidates.Count; j++) { if (i == j) { continue; } Better better = betterMap[i, j]; if (better == Better.Undefined) { better = ApplicableFunction.GetBetterCandidate(candidates[i], candidates[j]); betterMap[i, j] = better; betterMap[j, i] = Invert(better); } if (better != Better.Left) { isBest = false; break; } } if (isBest) { if (best == null) { best = candidates[i]; } else { return(null); } } } return(best); }
public void CanGetBetterInTournamentByBetterName() { Better fetchedBetter = tournament.GetBetterByName(better.User.Name); fetchedBetter.Should().NotBeNull(); fetchedBetter.User.Should().NotBeNull(); fetchedBetter.Id.Should().Be(better.Id); fetchedBetter.User.Name.Should().Be(better.User.Name); }
public void CanGetBetterInTournamentByBetterNameNoMatterLetterCasing() { Better fetchedBetter = tournament.GetBetterByName(better.User.Name.ToLower()); fetchedBetter.Should().NotBeNull(); fetchedBetter.User.Should().NotBeNull(); fetchedBetter.Id.Should().Be(better.Id); fetchedBetter.User.Name.Should().Be(better.User.Name); }
public void MatchBetIsRemovedWhenMatchLayoutIsChangedInOneMatch() { Better better = tournament.AddBetter(user); better.PlaceMatchBet(match, match.Player1); PlayerSwitcher.SwitchMatchesOn(match.Player1, match.Player2); better.Bets.Should().BeEmpty(); }
public void CannotPlaceMatchBetOnMatchThatIsOngoing() { Better better = tournament.AddBetter(user); SystemTimeMocker.SetOneSecondAfter(match.StartDateTime); better.PlaceMatchBet(match, match.Player1); better.Bets.Should().BeEmpty(); }
public void CanCreateBetter() { Better better = tournament.AddBetter(user); better.Id.Should().NotBeEmpty(); better.User.Should().NotBeNull(); better.Bets.Should().BeEmpty(); better.TournamentId.Should().Be(tournament.Id); better.Tournament.Should().Be(tournament); }
public bool RemoveBetterFromTournamentById(Tournament tournament, Guid betterId) { Better better = tournament.GetBetterById(betterId); if (better != null) { return(tournament.RemoveBetter(better)); } return(false); }
static Better Invert(Better b) { switch (b) { case Better.Left: return(Better.Right); case Better.Right: return(Better.Left); default: return(b); } }
public MatchBetTests() { user = User.Create("Stålberto"); tournament = Tournament.Create("GSL 2019"); better = tournament.AddBetter(user); round = tournament.AddBracketRound() as BracketRound; tournament.RegisterPlayerReference("Maru"); tournament.RegisterPlayerReference("Stork"); group = round.Groups.First() as BracketGroup; firstMatch = group.Matches.First(); }
public void TournamentDoesNotKeepBettersThatFailedToBeCreated() { Tournament tournament = Tournament.Create("ASUS ROG 2012"); User user = User.Create("Guggelito"); tournament.AddBetter(user); Better better = tournament.AddBetter(user); better.Should().BeNull(); tournament.Betters.Should().HaveCount(1); }
public Better AddBetterToTournament(Tournament tournament, User user) { Better better = tournament.AddBetter(user); if (better != null) { _slaskContext.Attach(better.User); } return(better); }
public bool RemoveBetterFromTournamentByName(Tournament tournament, string betterName) { Better better = tournament.GetBetterByName(betterName); if (better != null) { return(tournament.RemoveBetter(better)); } return(false); }
public static BetterDto ConvertToBetterDto(Better better) { return(new BetterDto() { Id = better.Id, UserId = better.User.Id, Name = better.User.Name, MatchBets = better.Bets.OfType <MatchBet>() .Select(matchBet => ConvertToMatchBetDto(matchBet)) .ToList() }); }
/// <summary> /// Receive a SocketMessage and parse it out to gather the information about a specified player /// </summary> /// <param name="sm"></param> /// <returns></returns> public (String, Embed) ViewPlayer(SocketMessage sm) { Int64 playerId; String playerName; if (sm.MentionedUsers.Count == 1) { playerId = (Int64)sm.MentionedUsers.First().Id; playerName = sm.MentionedUsers.First().Username; } else { playerId = (Int64)sm.Author.Id; playerName = sm.Author.Username; } var player = _bettingGame.Betters.Find(b => b.Id == playerId); if (player == null) { player = new Better { Id = playerId, Name = playerName, Points = 1000, BetsWon = 0, WonBetsList = new Dictionary <int, string>() }; _bettingGame.Betters.Add(player); SerializeData(_bettingGame); } EmbedBuilder eb = new EmbedBuilder(); eb.WithTitle(player.Name); eb.WithColor(Color.Purple); eb.AddField("Points: ", player.Points); eb.AddField("Bets Won: ", player.BetsWon); if (player.WonBetsList.Count > 0) { StringBuilder sb = new StringBuilder(); foreach (var bet in player.WonBetsList) { sb.Append($"{bet.Key} - {bet.Value}\n"); } eb.AddField("List of Bets Won: ", sb); } return("", eb.Build()); }
public void CanPlaceMatchBetOnMatch() { Better better = tournament.AddBetter(user); better.PlaceMatchBet(match, match.Player1); better.Bets.Should().HaveCount(1); better.Bets.First().Should().NotBeNull(); MatchBet matchBet = better.Bets.First() as MatchBet; ValidateMatchBet(matchBet, better, match, match.Player1); }
public void CannotPlaceMatchBetOnMatchThatIsFinished() { Better better = tournament.AddBetter(user); SystemTimeMocker.SetOneSecondAfter(match.StartDateTime); int winningScore = (int)Math.Ceiling(match.BestOf / 2.0); match.Player1.IncreaseScore(winningScore); better.PlaceMatchBet(match, match.Player1); better.Bets.Should().BeEmpty(); }
public void CannotPlaceMatchBetOnWithoutMatch() { Better better = tournament.AddBetter(user); round.SetPlayersPerGroupCount(3); tournament.RegisterPlayerReference("Taeja"); group = round.Groups.First(); Match incompleteMatch = group.Matches.Last(); better.PlaceMatchBet(null, incompleteMatch.Player1); better.Bets.Should().BeEmpty(); }
public void CanOnlyAddUserAsBetterOncePerTournament() { InitializeUsersAndBetters(); using (UserRepository userRepository = CreateuserRepository()) { using (TournamentRepository tournamentRepository = CreateTournamentRepository()) { Tournament tournament = tournamentRepository.GetTournamentByName(tournamentName); Better better = tournamentRepository.AddBetterToTournament(tournament, userRepository.GetUserByName("Stålberto")); better.Should().BeNull(); } } }
void CreateBetterlist(List <string> betters, ISubmittedBets sb, IResults actual) { foreach (var better in betters) { var score = new ScoringSystem(sb.GetSingleBet(better), actual); var bet = new Better() { Name = better, Score = score.GetTotal() }; var achievements = new AchievementSystem(sb.GetSingleBet(better), actual); bet.Achievements = achievements.Achievements; bet.RowClass = "normal"; Betters.Add(bet); } }
public static MiscellaneousBet Create(Better better, Player player) { bool anyParameterIsInvalid = !ParametersAreValid(better, player); if (anyParameterIsInvalid) { return(null); } return(new MiscellaneousBet { BetterId = better.Id, PlayerId = player.Id, }); }
void CreateBetterlist(List <string> betters, ISubmittedBets sb, IResultCollection rc) { foreach (var better in betters) { var score = new ScoringSystem(sb.GetSingleBet(better), rc.Current); var oldscore = new ScoringSystem(sb.GetSingleBet(better), rc.Previous); var bet = new Better() { Name = better, Score = score.GetTotal(), OldScore = oldscore.GetTotal() }; var achievements = new AchievementSystem(sb.GetSingleBet(better), rc.Current); bet.Achievements = achievements.Achievements; bet.RowClass = "normal"; Betters.Add(bet); } }
public void CannotReplaceMatchBetOnMatchThatIsOngoing() { Better better = tournament.AddBetter(user); better.PlaceMatchBet(match, match.Player1); SystemTimeMocker.SetOneSecondAfter(match.StartDateTime); better.PlaceMatchBet(match, match.Player2); better.Bets.Should().HaveCount(1); better.Bets.First().Should().NotBeNull(); MatchBet matchBet = better.Bets.First() as MatchBet; ValidateMatchBet(matchBet, better, match, match.Player1); }
public bool BetterPlacesMatchBetOnMatch(Guid tournamentId, Guid matchId, string betterName, string playerName) { Tournament tournament = GetTournamentById(tournamentId); if (tournament == null) { /* LOG Issue: Could not place match bet; tournament with id '{tournamentId}' does not exist. */ return(false); } Better better = tournament.GetBetterByName(betterName); if (better == null) { /* LOG Issue: Could not place match bet; better with name '{betterName}' does not exist in tournament. */ return(false); } foreach (RoundBase round in tournament.Rounds) { foreach (GroupBase group in round.Groups) { foreach (Match match in group.Matches) { if (match.Id == matchId) { Player player = match.FindPlayer(playerName); if (player == null) { /* LOG Issue: Could not place match bet; sought player is not participating in sought match. */ return(false); } MatchBet matchBet = better.PlaceMatchBet(match, player); return(matchBet != null); } } } } return(false); }
public void MatchBetIsRemovedWhenMatchLayoutIsChangedInTwoMatches() { Better better = tournament.AddBetter(user); round.SetPlayersPerGroupCount(4); tournament.RegisterPlayerReference("Taeja"); tournament.RegisterPlayerReference("Rain"); group = round.Groups.First(); Match firstMatch = group.Matches[0]; Match secondMatch = group.Matches[1]; better.PlaceMatchBet(firstMatch, firstMatch.Player1); better.PlaceMatchBet(secondMatch, secondMatch.Player1); PlayerSwitcher.SwitchMatchesOn(firstMatch.Player1, secondMatch.Player1); better.Bets.Should().BeEmpty(); }
public static ApplicableFunction FindBest(List<ApplicableFunction> candidates) { if (candidates == null || candidates.Count == 0) return null; if (candidates.Count == 1) return candidates[0]; ApplicableFunction best = null; Better[,] betterMap = new Better[candidates.Count, candidates.Count]; for (int i = 0; i < candidates.Count; i++) { bool isBest = true; for (int j = 0; j < candidates.Count; j++) { if (i == j) continue; Better better = betterMap[i, j]; if (better == Better.Undefined) { better = ApplicableFunction.GetBetterCandidate(candidates[i], candidates[j]); betterMap[i, j] = better; betterMap[j, i] = Invert(better); } if (better != Better.Left) { isBest = false; break; } } if (isBest) { if (best == null) best = candidates[i]; else return null; } } return best; }
static Better Invert(Better b) { switch (b) { case Better.Left: return Better.Right; case Better.Right: return Better.Left; default: return b; } }