public MatchBet PlaceMatchBet(Match match, Player player) { bool anyParameterIsInvalid = !PlaceMatchBetParametersAreValid(match, player); if (anyParameterIsInvalid) { return(null); } MatchBet newMatchBet = MatchBet.Create(this, match, player); MatchBet existingMatchBet = FindMatchBet(match); bool createdNewMatchBetSuccessfully = newMatchBet != null; bool matchBetForThisMatchAlreadyExists = existingMatchBet != null; if (createdNewMatchBetSuccessfully) { if (matchBetForThisMatchAlreadyExists) { Bets.Remove(existingMatchBet); existingMatchBet.MarkForDeletion(); } Bets.Add(newMatchBet); MarkAsModified(); } return(newMatchBet); }
public MatchBet Get(int id) { MatchBet bet = null; DataTable data = dbController.ExecuteQuery(dbController.GetSelectStr(this.table, this.columns, new string[1] { "match_bet_id" }, new string[1] { id.ToString() })); foreach (DataRow row in data.Rows) { bet = new MatchBet() { id = row.Field <int>(0), match = matchController.GetMatchByID(row.Field <int>(1)), user = userController.GetUserByID(row.Field <int>(2)), team = teamController.GetTeamByID(row.Field <int>(3)), value = row.Field <float>(4), date = row.Field <string>(5) }; } return(bet); }
public void CannotCreateMatchBetForMatchThatIsOngoing() { SystemTimeMocker.SetOneSecondAfter(firstMatch.StartDateTime); MatchBet matchBet = MatchBet.Create(better, firstMatch, firstMatch.Player1); matchBet.Should().BeNull(); }
public void CanCreateMatchBet() { MatchBet matchBet = MatchBet.Create(better, firstMatch, firstMatch.Player1); matchBet.Should().NotBeNull(); matchBet.Id.Should().NotBeEmpty(); matchBet.BetterId.Should().Be(better.Id); matchBet.MatchId.Should().Be(firstMatch.Id); matchBet.PlayerId.Should().Be(firstMatch.Player1.Id); }
public static MatchBetDto ConvertToMatchBetDto(MatchBet bet) { return(new MatchBetDto() { Id = bet.Id, BetterId = bet.BetterId, MatchId = bet.MatchId, PlayerId = bet.PlayerId }); }
public void CannotCreateMatchBetForMatchThatIsFinished() { SystemTimeMocker.SetOneSecondAfter(firstMatch.StartDateTime); int winningScore = (int)Math.Ceiling(firstMatch.BestOf / 2.0); firstMatch.Player1.IncreaseScore(winningScore); MatchBet matchBet = MatchBet.Create(better, firstMatch, firstMatch.Player1); matchBet.Should().BeNull(); }
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 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 async Task <MatchBet> GetMatchBetDetails(IWebDriver driver, string url, DateTime?fromDate) { var detailsCol = await GetDetailsColumn(url); var teamsNames = GetTeamsNames(detailsCol.ChildNodes.FindFirst("h1")); var matchBet = new MatchBet { HostsTeamName = teamsNames[0], GuestsTeamName = teamsNames[1], }; var resultNode = detailsCol.ChildNodes.First(n => n.Id == "event-status").FirstChild; var results = GetMatchResults(resultNode); if (results == null) { return(null); } matchBet.MatchDate = GoToPageAndScrapData(url, matchBet.FullTime, results.FullTime, driver, MatchPart.FullTime).Value; if (fromDate.HasValue && fromDate >= matchBet.MatchDate) { return(null); } if (results.FirstHalf > SingleBetResult.Unknown) { GoToPageAndScrapData($"{url}#1X2;3", matchBet.FirstHalf, results.FirstHalf, driver, MatchPart.FirstHalf); } if (results.SecondHalf > SingleBetResult.Unknown) { GoToPageAndScrapData($"{url}#1X2;4", matchBet.SecondHalf, results.SecondHalf, driver, MatchPart.SecondHalf); } return(matchBet); }
public void CannotCreateMatchBetWithoutPlayer() { MatchBet matchBet = MatchBet.Create(better, firstMatch, null); matchBet.Should().BeNull(); }
public void CannotCreateMatchBetWithoutBetter() { MatchBet matchBet = MatchBet.Create(null, firstMatch, firstMatch.Player1); matchBet.Should().BeNull(); }
private void ValidateMatchBet(MatchBet matchBet, Better correctBetter, Match correctMatch, Player correctPlayer) { matchBet.BetterId.Should().Be(correctBetter.Id); matchBet.MatchId.Should().Be(correctMatch.Id); matchBet.PlayerId.Should().Be(correctPlayer.Id); }