Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        public void CannotCreateMatchBetForMatchThatIsOngoing()
        {
            SystemTimeMocker.SetOneSecondAfter(firstMatch.StartDateTime);

            MatchBet matchBet = MatchBet.Create(better, firstMatch, firstMatch.Player1);

            matchBet.Should().BeNull();
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
 public static MatchBetDto ConvertToMatchBetDto(MatchBet bet)
 {
     return(new MatchBetDto()
     {
         Id = bet.Id,
         BetterId = bet.BetterId,
         MatchId = bet.MatchId,
         PlayerId = bet.PlayerId
     });
 }
Beispiel #6
0
        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();
        }
Beispiel #7
0
        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);
        }
Beispiel #8
0
        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);
        }
Beispiel #9
0
        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);
        }
Beispiel #11
0
        public void CannotCreateMatchBetWithoutPlayer()
        {
            MatchBet matchBet = MatchBet.Create(better, firstMatch, null);

            matchBet.Should().BeNull();
        }
Beispiel #12
0
        public void CannotCreateMatchBetWithoutBetter()
        {
            MatchBet matchBet = MatchBet.Create(null, firstMatch, firstMatch.Player1);

            matchBet.Should().BeNull();
        }
Beispiel #13
0
 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);
 }