public LeagueSeasonModule()
        {
            Get[SharedRoutes.StandingTable] = parameters => {
                var seasonId      = (int)parameters.seasonId;
                var season        = leagueRepo.GetLeagueSeasonById(seasonId);
                var seasonTeams   = analysisRepo.GetSeasonTeams(seasonId);
                var teamsDb       = leagueRepo.GetFootballTeamsByIds(seasonTeams.Select(t => t.FootballTeamId).ToArray());
                var standingTable = new StandingTableDto
                {
                    LeagueSeasonId = seasonId,
                    StartDate      = season.StartDate,
                    EndDate        = season.EndDate,
                    IsFinished     = season.EndDate < DateTime.Now,
                    Teams          = seasonTeams.Select(Mapper.Map <LeagueSeasonTeamDto>).OrderBy(t => t.TablePlace).ToList()
                };
                foreach (var team in standingTable.Teams)
                {
                    var teamDb = teamsDb.Where(t => t.TeamId == team.FootballTeamId).FirstOrDefault();
                    team.FootballTeamName = teamDb.Name;
                }
                return(Response.AsJson(standingTable));
            };

            Get[SharedRoutes.SeasonGames] = parameters => {
                var seasonId    = (int)parameters.seasonId;
                var seasonGames = leagueRepo.GetAllSeasonGames(seasonId).Select(Mapper.Map <GameDto>).ToList();
                return(Response.AsJson(seasonGames));
            };

            Get[SharedRoutes.GameStats] = parameters => {
                var seasonId = (int)parameters.seasonId;
                var matchId  = (int)parameters.id;
                if (!leagueRepo.GetAllSeasonGames(seasonId).Any(g => g.GameId == matchId))
                {
                    return(HttpStatusCode.NotFound);
                }
                bool onlyCreated;
                var  gameStatsDb = leagueRepo.GetGameStats(matchId, out onlyCreated);
                var  gameStats   = Mapper.Map <GameInfoDto>(gameStatsDb);

                return(Response.AsJson(gameStats));
            };

            Get[SharedRoutes.SeasonTotalStats] = parameters => {
                var seasonId    = (int)parameters.seasonId;
                var season      = leagueRepo.GetLeagueSeasonById(seasonId);
                var seasonTeams = analysisRepo.GetSeasonTeams(seasonId);

                var teamsFormDb_allGames  = analysisRepo.GetSeasonTeamForms_AllGames(seasonId);
                var teamsFormDb_homeGames = analysisRepo.GetSeasonTeamForms_HomeGames(seasonId);
                var teamsFormDb_awayGames = analysisRepo.GetSeasonTeamForms_AwayGames(seasonId);

                var teamTotals = new List <SeasonTeamTotalDto>();
                foreach (var team in seasonTeams)
                {
                    var teamFormDb_allGames  = teamsFormDb_allGames.Where(t => t.TeamId == team.FootballTeamId).FirstOrDefault();
                    var teamFormDb_homeGames = teamsFormDb_homeGames.Where(t => t.TeamId == team.FootballTeamId).FirstOrDefault();
                    var teamFormDb_awayGames = teamsFormDb_awayGames.Where(t => t.TeamId == team.FootballTeamId).FirstOrDefault();

                    var teamTotal = new SeasonTeamTotalDto
                    {
                        FootballTeamId   = team.FootballTeamId,
                        FootballTeamName = team.FootballTeam.Name,
                        GamePlayed       = team.GamePlayed,
                        TotalOver        = teamFormDb_allGames?.GamesOver2_5 ?? 0,
                        TotalUnder       = teamFormDb_allGames?.GamesUnder2_5 ?? 0,
                        TotalOverHome    = teamFormDb_homeGames?.GamesOver2_5 ?? 0,
                        TotalUnderHome   = teamFormDb_homeGames?.GamesUnder2_5 ?? 0,
                        TotalOverAway    = teamFormDb_awayGames?.GamesOver2_5 ?? 0,
                        TotalUnderAway   = teamFormDb_awayGames?.GamesUnder2_5 ?? 0
                    };
                    teamTotals.Add(teamTotal);
                }

                var totalTable = new TotalTableDto
                {
                    LeagueSeasonId = seasonId,
                    StartDate      = season.StartDate,
                    EndDate        = season.EndDate,
                    IsFinished     = season.EndDate < DateTime.Now,
                    Teams          = teamTotals.OrderBy(t => t.TotalOver).ToList()
                };
                return(Response.AsJson(totalTable));
            };

            Get[SharedRoutes.SeasonBttsStats] = parameters => {
                var seasonId    = (int)parameters.seasonId;
                var season      = leagueRepo.GetLeagueSeasonById(seasonId);
                var seasonTeams = analysisRepo.GetSeasonTeams(seasonId);

                var teamsFormDb_allGames  = analysisRepo.GetSeasonTeamForms_AllGames(seasonId);
                var teamsFormDb_homeGames = analysisRepo.GetSeasonTeamForms_HomeGames(seasonId);
                var teamsFormDb_awayGames = analysisRepo.GetSeasonTeamForms_AwayGames(seasonId);

                var teamTotals = new List <SeasonTeamBttsDto>();
                foreach (var team in seasonTeams)
                {
                    var teamFormDb_allGames  = teamsFormDb_allGames.Where(t => t.TeamId == team.FootballTeamId).FirstOrDefault();
                    var teamFormDb_homeGames = teamsFormDb_homeGames.Where(t => t.TeamId == team.FootballTeamId).FirstOrDefault();
                    var teamFormDb_awayGames = teamsFormDb_awayGames.Where(t => t.TeamId == team.FootballTeamId).FirstOrDefault();

                    var teamTotal = new SeasonTeamBttsDto
                    {
                        FootballTeamId   = team.FootballTeamId,
                        FootballTeamName = team.FootballTeam.Name,
                        GamePlayed       = team.GamePlayed,
                        BttsYes          = teamFormDb_allGames?.BTTS_Yes ?? 0,
                        BttsNo           = teamFormDb_allGames?.BTTS_No ?? 0,
                        BttsYesHome      = teamFormDb_homeGames?.BTTS_Yes ?? 0,
                        BttsNoHome       = teamFormDb_homeGames?.BTTS_No ?? 0,
                        BttsYesAway      = teamFormDb_awayGames?.BTTS_Yes ?? 0,
                        BttsNoAway       = teamFormDb_awayGames?.BTTS_No ?? 0
                    };
                    teamTotals.Add(teamTotal);
                }

                var totalTable = new BttsTableDto
                {
                    LeagueSeasonId = seasonId,
                    StartDate      = season.StartDate,
                    EndDate        = season.EndDate,
                    IsFinished     = season.EndDate < DateTime.Now,
                    Teams          = teamTotals.OrderBy(t => t.BttsYes).ToList()
                };
                return(Response.AsJson(totalTable));
            };
        }
Example #2
0
        private void SaveFootballDataModelToDb(FootballDataModel match, ref int processedGames)
        {
            bool onlyCreated;
            var  leagueSeason = leagueDataRepo.CreateAndSaveLeagueSeason(_startYear, leagueDataRepo.GetLaLiga());
            var  homeTeam     = leagueDataRepo.GetFootballTeam(match.HomeTeam, leagueSeason, "FootballData");
            var  awayTeam     = leagueDataRepo.GetFootballTeam(match.AwayTeam, leagueSeason, "FootballData");
            Game matchDb      = null;

            try
            {
                matchDb = leagueDataRepo.GetGame(homeTeam, awayTeam, match.MatchDate, leagueSeason, out onlyCreated);
            }
            catch (Exception ex)
            {
                return;
            }

            if (onlyCreated || matchDb.Result == 0) //update game record
            {
                //Console.WriteLine("Game record only created - will be processed");
                matchDb.AwayTeamGoals = match.FullTimeAwayTeamGoals;
                matchDb.HomeTeamGoals = match.FullTimeHomeTeamGoals;
                if (matchDb.HomeTeamGoals > matchDb.AwayTeamGoals)
                {
                    matchDb.Result = GameResult.HomeWin;
                }
                else if (matchDb.HomeTeamGoals < matchDb.AwayTeamGoals)
                {
                    matchDb.Result = GameResult.AwayWin;
                }
                else
                {
                    matchDb.Result = GameResult.Draw;
                }

                leagueDataRepo.UpdateGameRecord(matchDb);
                processedGames++;
            }

            var matchStats = leagueDataRepo.GetGameStats(matchDb.GameId, out onlyCreated);

            if (onlyCreated) //update game stats
            {
                matchStats.Game = matchDb;
                matchStats.HalfTimeHomeGoals = match.HalfTimeHomeTeamGoals;
                matchStats.HalfTimeAwayGoals = match.HalfTimeAwayTeamGoals;
                if (matchStats.HalfTimeHomeGoals > matchStats.HalfTimeAwayGoals)
                {
                    matchStats.HalfTimeResult = GameResult.HomeWin;
                }
                else if (matchStats.HalfTimeHomeGoals < matchStats.HalfTimeAwayGoals)
                {
                    matchStats.HalfTimeResult = GameResult.AwayWin;
                }
                else
                {
                    matchStats.HalfTimeResult = GameResult.Draw;
                }

                matchStats.HomeTeamShots = match.HomeTeamShots;
                matchStats.AwayTeamShots = match.AwayTeamShots;

                matchStats.HomeTeamTargetShots = match.HomeTeamShotsOnTarget;
                matchStats.AwayTeamTargetShots = match.AwayTeamShotsOnTarget;

                matchStats.HomeTeamFouls = match.HomeTeamFouls;
                matchStats.AwayTeamFouls = match.AwayTeamFouls;

                matchStats.HomeTeamCorners = match.HomeTeamCorners;
                matchStats.AwayTeamCorners = match.AwayTeamCorners;

                matchStats.HomeTeamYCards   = match.HomeTeamYellowCards;
                matchStats.AwayTeamYCards   = match.AwayTeamYellowCards;
                matchStats.HomeTeamRedCards = match.HomeTeamRedCards;
                matchStats.AwayTeamRedCards = match.AwayTeamRedCards;

                matchStats.HomeTeamOffsides = match.HomeTeamOffsides;
                matchStats.AwayTeamOffsides = match.AwayTeamOffsides;

                leagueDataRepo.UpdateGameStats(matchStats);
            }

            var bookmaker    = bookmakerRepo.GetBookmaker("Bet365");
            var bookmakerOdd = bookmakerRepo.GetBookmakerOdds(matchDb.GameId, bookmaker.BookmakerId, out onlyCreated);

            if (onlyCreated) //update game record
            {
                bookmakerOdd.HomeWinCoef = match.B365_HomeWin;
                bookmakerOdd.DrawCoef    = match.B365_Draw;
                bookmakerOdd.AwayWinCoef = match.B365_AwayWin;

                bookmakerOdd.Total2_5Over  = match.B365_TotalMore2_5;
                bookmakerOdd.Total2_5Under = match.B365_TotalLess2_5;

                bookmakerRepo.UpdateBookmakerOdds(bookmakerOdd);
            }

            bookmaker    = bookmakerRepo.GetBookmaker("Blue Square");
            bookmakerOdd = bookmakerRepo.GetBookmakerOdds(matchDb.GameId, bookmaker.BookmakerId, out onlyCreated);
            if (onlyCreated) //update game record
            {
                bookmakerOdd.HomeWinCoef = match.BS_HomeWin;
                bookmakerOdd.DrawCoef    = match.BS_Draw;
                bookmakerOdd.AwayWinCoef = match.BS_AwayWin;

                bookmakerRepo.UpdateBookmakerOdds(bookmakerOdd);
            }

            bookmaker    = bookmakerRepo.GetBookmaker("Bet&Win");
            bookmakerOdd = bookmakerRepo.GetBookmakerOdds(matchDb.GameId, bookmaker.BookmakerId, out onlyCreated);
            if (onlyCreated) //update game record
            {
                bookmakerOdd.HomeWinCoef = match.BW_HomeWin;
                bookmakerOdd.DrawCoef    = match.BW_Draw;
                bookmakerOdd.AwayWinCoef = match.BW_AwayWin;

                bookmakerRepo.UpdateBookmakerOdds(bookmakerOdd);
            }

            bookmaker    = bookmakerRepo.GetBookmaker("Gamebookers");
            bookmakerOdd = bookmakerRepo.GetBookmakerOdds(matchDb.GameId, bookmaker.BookmakerId, out onlyCreated);
            if (onlyCreated) //update game record
            {
                bookmakerOdd.HomeWinCoef = match.GB_HomeWin;
                bookmakerOdd.DrawCoef    = match.GB_Draw;
                bookmakerOdd.AwayWinCoef = match.GB_AwayWin;

                bookmakerOdd.Total2_5Over  = match.GB_TotalMore2_5;
                bookmakerOdd.Total2_5Under = match.GB_TotalLess2_5;

                bookmakerRepo.UpdateBookmakerOdds(bookmakerOdd);
            }

            bookmaker    = bookmakerRepo.GetBookmaker("Interwetten");
            bookmakerOdd = bookmakerRepo.GetBookmakerOdds(matchDb.GameId, bookmaker.BookmakerId, out onlyCreated);
            if (onlyCreated) //update game record
            {
                bookmakerOdd.HomeWinCoef = match.IW_HomeWin;
                bookmakerOdd.DrawCoef    = match.IW_Draw;
                bookmakerOdd.AwayWinCoef = match.IW_AwayWin;

                bookmakerRepo.UpdateBookmakerOdds(bookmakerOdd);
            }

            bookmaker    = bookmakerRepo.GetBookmaker("Pinnacle");
            bookmakerOdd = bookmakerRepo.GetBookmakerOdds(matchDb.GameId, bookmaker.BookmakerId, out onlyCreated);
            if (onlyCreated) //update game record
            {
                bookmakerOdd.HomeWinCoef = match.Pinnacle_HomeWin;
                bookmakerOdd.DrawCoef    = match.Pinnacle_Draw;
                bookmakerOdd.AwayWinCoef = match.Pinnacle_AwayWin;

                bookmakerRepo.UpdateBookmakerOdds(bookmakerOdd);
            }

            bookmaker    = bookmakerRepo.GetBookmaker("Sporting Odds");
            bookmakerOdd = bookmakerRepo.GetBookmakerOdds(matchDb.GameId, bookmaker.BookmakerId, out onlyCreated);
            if (onlyCreated) //update game record
            {
                bookmakerOdd.HomeWinCoef = match.SO_HomeWin;
                bookmakerOdd.DrawCoef    = match.SO_Draw;
                bookmakerOdd.AwayWinCoef = match.SO_AwayWin;

                bookmakerRepo.UpdateBookmakerOdds(bookmakerOdd);
            }

            bookmaker    = bookmakerRepo.GetBookmaker("Sportingbet");
            bookmakerOdd = bookmakerRepo.GetBookmakerOdds(matchDb.GameId, bookmaker.BookmakerId, out onlyCreated);
            if (onlyCreated) //update game record
            {
                bookmakerOdd.HomeWinCoef = match.SB_HomeWin;
                bookmakerOdd.DrawCoef    = match.SB_Draw;
                bookmakerOdd.AwayWinCoef = match.SB_AwayWin;

                bookmakerRepo.UpdateBookmakerOdds(bookmakerOdd);
            }

            bookmaker    = bookmakerRepo.GetBookmaker("Stan James");
            bookmakerOdd = bookmakerRepo.GetBookmakerOdds(matchDb.GameId, bookmaker.BookmakerId, out onlyCreated);
            if (onlyCreated) //update game record
            {
                bookmakerOdd.HomeWinCoef = match.SJ_HomeWin;
                bookmakerOdd.DrawCoef    = match.SJ_Draw;
                bookmakerOdd.AwayWinCoef = match.SJ_AwayWin;

                bookmakerRepo.UpdateBookmakerOdds(bookmakerOdd);
            }

            bookmaker    = bookmakerRepo.GetBookmaker("Stanleybet");
            bookmakerOdd = bookmakerRepo.GetBookmakerOdds(matchDb.GameId, bookmaker.BookmakerId, out onlyCreated);
            if (onlyCreated) //update game record
            {
                bookmakerOdd.HomeWinCoef = match.Stanleybet_HomeWin;
                bookmakerOdd.DrawCoef    = match.Stanleybet_Draw;
                bookmakerOdd.AwayWinCoef = match.Stanleybet_AwayWin;

                bookmakerRepo.UpdateBookmakerOdds(bookmakerOdd);
            }

            bookmaker    = bookmakerRepo.GetBookmaker("VC");
            bookmakerOdd = bookmakerRepo.GetBookmakerOdds(matchDb.GameId, bookmaker.BookmakerId, out onlyCreated);
            if (onlyCreated) //update game record
            {
                bookmakerOdd.HomeWinCoef = match.VC_HomeWin;
                bookmakerOdd.DrawCoef    = match.VC_Draw;
                bookmakerOdd.AwayWinCoef = match.VC_AwayWin;

                bookmakerRepo.UpdateBookmakerOdds(bookmakerOdd);
            }

            bookmaker    = bookmakerRepo.GetBookmaker("William Hill");
            bookmakerOdd = bookmakerRepo.GetBookmakerOdds(matchDb.GameId, bookmaker.BookmakerId, out onlyCreated);
            if (onlyCreated) //update game record
            {
                bookmakerOdd.HomeWinCoef = match.WH_HomeWin;
                bookmakerOdd.DrawCoef    = match.WH_Draw;
                bookmakerOdd.AwayWinCoef = match.WH_AwayWin;

                bookmakerRepo.UpdateBookmakerOdds(bookmakerOdd);
            }

            bookmaker    = bookmakerRepo.GetBookmaker("Total average odds");
            bookmakerOdd = bookmakerRepo.GetBookmakerOdds(matchDb.GameId, bookmaker.BookmakerId, out onlyCreated);
            if (onlyCreated) //update game record
            {
                bookmakerOdd.Total2_5Over  = match.Average_TotalMore2_5;
                bookmakerOdd.Total2_5Under = match.Average_TotalLess2_5;

                bookmakerRepo.UpdateBookmakerOdds(bookmakerOdd);
            }

            bookmaker    = bookmakerRepo.GetBookmaker("Total maximal odds");
            bookmakerOdd = bookmakerRepo.GetBookmakerOdds(matchDb.GameId, bookmaker.BookmakerId, out onlyCreated);
            if (onlyCreated) //update game record
            {
                bookmakerOdd.Total2_5Over  = match.Max_TotalMore2_5;
                bookmakerOdd.Total2_5Under = match.Max_TotalLess2_5;

                bookmakerRepo.UpdateBookmakerOdds(bookmakerOdd);
            }
        }