Beispiel #1
0
        public static void GetUserTeamPickDataJson(int userTeamId, UserTeamPicks userTeamPicksInsert, UserTeamPickAutomaticSubs userTeamPickAutomaticSubsInsert, SqlConnection db)
        {
            int gameweekId;

            //Logger.Out("GetUserTeamPickDataJson: Gameweek " + Convert.ToString(gameweekId) + " - starting");
            //var urlUserTeamPicks = "";
            string userTeamPicksUrl = ConfigSettings.ReadSetting("userTeamPicksUrl");

            try
            {
                if (Globals.MaxGWFromPicksForUserTeamId == 0 && Globals.StartGameweekId > 0)
                {
                    Globals.MaxGWFromPicksForUserTeamId = Globals.StartGameweekId;
                }
                else
                {
                    Globals.MaxGWFromPicksForUserTeamId += 1;
                }

                for (gameweekId = Globals.MaxGWFromPicksForUserTeamId; gameweekId <= Globals.ActualGameweek; gameweekId++)
                {
                    GetUserTeamPickJson(userTeamId, gameweekId, userTeamPicksUrl, userTeamPicksInsert, userTeamPickAutomaticSubsInsert, db);
                }
            }
            catch (Exception ex)
            {
                Logger.Error("GetUserTeamPickDataJson data exception (UserTeamId: " + userTeamId.ToString() + "): " + ex.Message);
                //throw new Exception("GetUserTeamPickDataJson data exception (UserTeamId: " + userTeamId.ToString() + "): " + ex.Message);
            }
        }
        public static void WriteUserTeamPicksToDB(int pageId, UserTeamPicks userTeamPicksInsert, SqlConnection db)
        {
            try
            {
                UserTeamPickRepository userTeamPickRepository = new UserTeamPickRepository();

                //Write UserTeamPick to the db
                Globals.UserTeamPickRowsInserted = userTeamPickRepository.InsertUserTeamPick(userTeamPicksInsert, db);
                Logger.Out("UserTeamPick bulk insert complete (PageId: " + Convert.ToString(pageId) + ")");

                userTeamPicksInsert.Clear();
            }
            catch (Exception ex)
            {
                Logger.Error("Program WriteUserTeamPickToDB error: " + ex.Message);
                //WriteToDB(userTeamRowsInserted, userTeamSeasonRowsInserted, userTeamInsert, userTeamSeasonsInsert, db);
            }
        }
Beispiel #3
0
        public int InsertUserTeamPick(UserTeamPicks userTeamPicks, SqlConnection db)
        {
            int rowsAffected = 0;

            try
            {
                using (IDataReader reader = userTeamPicks.GetDataReader())
                {
                    using (var bulkCopy = new SqlBulkCopy(db))
                    {
                        bulkCopy.BulkCopyTimeout      = 0;
                        bulkCopy.BatchSize            = 1000;
                        bulkCopy.DestinationTableName = "UserTeamPickStaging";
                        bulkCopy.EnableStreaming      = true;

                        // Add your column mappings here
                        bulkCopy.ColumnMappings.Add("element", "playerid");
                        bulkCopy.ColumnMappings.Add("position", "position");
                        bulkCopy.ColumnMappings.Add("is_captain", "is_captain");
                        bulkCopy.ColumnMappings.Add("is_vice_captain", "is_vice_captain");
                        bulkCopy.ColumnMappings.Add("multiplier", "multiplier");
                        bulkCopy.ColumnMappings.Add("userteamid", "userteamid");
                        bulkCopy.ColumnMappings.Add("gameweekid", "gameweekid");

                        //using (var dataReader = userTeamPicks.ToDataReader())
                        //{
                        bulkCopy.WriteToServer(reader);
                        rowsAffected = SqlBulkCopyExtension.RowsCopiedCount(bulkCopy);
                        //}
                    }
                }
                return(rowsAffected);
            }
            catch (Exception ex)
            {
                Logger.Error("UserTeamPick Repository (insert) error: " + ex.Message);
                return(rowsAffected);
                //throw ex;
            }
        }
Beispiel #4
0
        public static bool GetLeagueDataJson(int leagueId, List <int> userTeamIds, string userTeamLeaguesUrl, string userTeamUrl, UserTeams userTeamsUpdateInsert, UserTeamCupMatches userTeamCupInsert, UserTeamClassicLeagues userTeamClassicLeaguesInsert, UserTeamH2hLeagues userTeamH2hLeaguesInsert, UserTeamGameweekHistories userTeamGameweekHistoriesInsert, UserTeamPicks userTeamPicksInsert, UserTeamPickAutomaticSubs userTeamPickAutomaticSubsInsert, UserTeamChips userTeamChipsInsert, UserTeamTransferHistoryData userTeamTransferHistoriesInsert, UserTeamSeasons userTeamSeasonsInsert, SqlConnection db)
        {
            UserTeamRepository                userTeamRepository                = new UserTeamRepository();
            UserTeamPickRepository            userTeamPickRepository            = new UserTeamPickRepository();
            UserTeamGameweekHistoryRepository userTeamGameweekHistoryRepository = new UserTeamGameweekHistoryRepository();
            UserTeamTransferHistoryRepository userTeamTransferHistoryRepository = new UserTeamTransferHistoryRepository();
            UserTeamClassicLeagueRepository   userTeamClassicLeagueRepository   = new UserTeamClassicLeagueRepository();
            UserTeamSeasonRepository          userTeamSeasonRepository          = new UserTeamSeasonRepository();

            try
            {
                int        userTeamId        = 0;
                bool       has_next          = false;
                List <int> leagueUserTeamIds = new List <int>();

                string url = string.Format(userTeamLeaguesUrl, leagueId, Globals.PageId);

                JsonSerializer serializer = new JsonSerializer()
                {
                    Formatting = Formatting.None
                };

                ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

                using (HttpClient client = new HttpClient())
                    using (Stream s = client.GetStreamAsync(url).Result)
                        using (StreamReader sr = new StreamReader(s))
                            using (JsonReader reader = new JsonTextReader(sr))
                            {
                                Globals.ApiCalls     += 1;
                                Globals.ApiPageCalls += 1;

                                // read the json from a stream
                                // json size doesn't matter because only a small piece is read at a time from the HTTP request
                                var leagueStandingsData = serializer.Deserialize <LeagueStandingsData>(reader);

                                if (leagueStandingsData != null)
                                {
                                    League    league    = leagueStandingsData.league;
                                    Standings standings = leagueStandingsData.standings;

                                    string leagueName = league.name;
                                    has_next = standings.has_next;

                                    Logger.Out(leagueName + " (" + Convert.ToString(leagueId) + "): Page " + Convert.ToString(Globals.PageId));
                                    Logger.Out("");

                                    if (db.State == ConnectionState.Closed)
                                    {
                                        db.ConnectionString = ConfigurationManager.ConnectionStrings["FantasyPremierLeagueUserTeam"].ConnectionString;
                                        db.Open();
                                        Logger.Error("GetLeagueDataJson Info (LeagueId: " + leagueId.ToString() + ", PageId:" + Globals.PageId.ToString() + "): Reopening closed db connection");
                                    }

                                    List <int> pageUserTeamIds = new List <int>();

                                    foreach (TeamLeaguePosition teamLeaguePosition in standings.results)
                                    {
                                        userTeamId = teamLeaguePosition.entry;

                                        //Add each UserTeamId to a list for checking if GameweekHistory, TransferHistory, and Picks have already been processed for that GW by UserTeamId
                                        pageUserTeamIds.Add(userTeamId);
                                    }

                                    using (DataTable dtUserMaxGWForUserTeamForGameweekHistory = userTeamGameweekHistoryRepository.GetMaxGameweekIdFromUserTeamGameweekHistoryForUserTeamIds(pageUserTeamIds, db))
                                        using (DataTable dtUserMaxGWForUserTeamForPicks = userTeamPickRepository.GetMaxGameweekIdFromUserTeamPickForUserTeamIds(pageUserTeamIds, db))
                                            using (DataTable dtUserMaxGWForUserTeamForTransferHistory = userTeamTransferHistoryRepository.GetMaxGameweekIdFromUserTeamTransferHistoryForUserTeamIds(pageUserTeamIds, db))
                                                using (DataTable dtClassicLeagueCountForUserTeam = userTeamClassicLeagueRepository.GetClassicLeagueCountFromUserTeamClassicLeagueForUserTeamIds(pageUserTeamIds, db))
                                                    using (DataTable dtSeasonCountForUserTeam = userTeamSeasonRepository.GetSeasonCountFromUserTeamSeasonForUserTeamIds(pageUserTeamIds, db))
                                                        using (DataTable dtUserTeam = userTeamRepository.GetUserTeamForUserTeamIds(pageUserTeamIds, db))
                                                        {
                                                            foreach (TeamLeaguePosition teamLeaguePosition in standings.results)
                                                            {
                                                                userTeamId = teamLeaguePosition.entry;

                                                                Globals.MaxGWFromGameweekHistoryForUserTeamId             = GetColumnNameValue(userTeamId, dtUserMaxGWForUserTeamForGameweekHistory, "gameweekid");
                                                                Globals.MaxGWFromPicksForUserTeamId                       = GetColumnNameValue(userTeamId, dtUserMaxGWForUserTeamForPicks, "gameweekid");
                                                                Globals.MaxGWFromTransferHistoryForUserTeamId             = GetColumnNameValue(userTeamId, dtUserMaxGWForUserTeamForTransferHistory, "gameweekid");
                                                                Globals.LeagueCountFromUserTeamClassicLeagueForUserTeamId = GetColumnNameValue(userTeamId, dtClassicLeagueCountForUserTeam, "leagueCount");
                                                                Globals.SeasonCountFromUserTeamSeasonForUserTeamId        = GetColumnNameValue(userTeamId, dtSeasonCountForUserTeam, "seasonCount");
                                                                Globals.ExistingUserTeamId = GetColumnNameValue(userTeamId, dtUserTeam, "userteamid");

                                                                FantasyPremierLeagueAPIClient.GetUserTeamDataJson(userTeamId, userTeamIds, userTeamUrl, userTeamsUpdateInsert, userTeamCupInsert, userTeamClassicLeaguesInsert, userTeamH2hLeaguesInsert, userTeamGameweekHistoriesInsert, userTeamPicksInsert, userTeamPickAutomaticSubsInsert, userTeamChipsInsert, userTeamTransferHistoriesInsert, userTeamSeasonsInsert, db);
                                                            }
                                                        }
                                    pageUserTeamIds.Clear();
                                }
                                return(has_next);
                            }
            }
            catch (Exception ex)
            {
                Logger.Error("GetLeagueDataJson data exception (LeagueId: " + leagueId.ToString() + ", PageId:" + Globals.PageId.ToString() + "): " + ex.Message);

                bool has_next = true;

                if (Globals.LeagueRetries < 10)
                {
                    has_next = GetLeagueDataJson(leagueId, userTeamIds, userTeamLeaguesUrl, userTeamUrl, userTeamsUpdateInsert, userTeamCupInsert, userTeamClassicLeaguesInsert, userTeamH2hLeaguesInsert, userTeamGameweekHistoriesInsert, userTeamPicksInsert, userTeamPickAutomaticSubsInsert, userTeamChipsInsert, userTeamTransferHistoriesInsert, userTeamSeasonsInsert, db);
                    Globals.LeagueRetries += 1;
                }
                else
                {
                    Logger.Error("GetLeagueDataJson data exception (LeagueId: " + leagueId.ToString() + "):  League/Page doesn't exist skipping to next!!!");
                    //Program.WriteToDB(pageId, userTeamGameweekHistoriesInsert, userTeamPicksInsert, userTeamPickAutomaticSubsInsert, userTeamChipsInsert, userTeamTransferHistoriesInsert, userTeamSeasonsInsert, userTeamClassicLeaguesInsert, userTeamH2hLeaguesInsert, db);
                    Globals.LeagueRetries = 0;
                    //throw new Exception("GetLeagueDataJson data exception (LeagueId: " + leagueId.ToString() + ", PageId:" + Globals.PageId.ToString() + "): " + ex.Message);
                }

                return(has_next);
            }
        }
        public static void WriteToDB(int pageId, UserTeams userTeamsUpdateInsert, UserTeamCupMatches userTeamCupInsert, UserTeamClassicLeagues userTeamClassicLeaguesInsert, UserTeamH2hLeagues userTeamH2hLeaguesInsert, UserTeamGameweekHistories userTeamGameweekHistoriesInsert, UserTeamPicks userTeamPicksInsert, UserTeamPickAutomaticSubs userTeamPickAutomaticSubsInsert, UserTeamChips userTeamChipsInsert, UserTeamTransferHistoryData userTeamTransferHistoriesInsert, UserTeamSeasons userTeamSeasonsInsert, SqlConnection db)
        {
            try
            {
                Globals.UserTeamUpdateRowsInserted            = 0;
                Globals.UserTeamPickRowsInserted              = 0;
                Globals.UserTeamPickAutomaticSubsRowsInserted = 0;
                Globals.UserTeamGameweekHistoryRowsInserted   = 0;
                Globals.UserTeamChipRowsInserted              = 0;
                Globals.UserTeamTransferHistoryRowsInserted   = 0;
                Globals.UserTeamSeasonRowsInserted            = 0;
                Globals.UserTeamClassicLeagueRowsInserted     = 0;
                Globals.UserTeamH2hLeagueRowsInserted         = 0;
                Globals.UserTeamCupRowsInserted = 0;

                Logger.Out("");

                WriteUserTeamToDB(Globals.PageId, userTeamsUpdateInsert, db);
                WriteUserTeamChipToDB(Globals.PageId, userTeamChipsInsert, db);
                WriteUserTeamGameweekHistoryToDB(Globals.PageId, userTeamGameweekHistoriesInsert, db);
                WriteUserTeamPicksToDB(Globals.PageId, userTeamPicksInsert, db);
                WriteUserTeamPickAutomaticSubsToDB(Globals.PageId, userTeamPickAutomaticSubsInsert, db);
                WriteUserTeamTransferHistoryToDB(Globals.PageId, userTeamTransferHistoriesInsert, db);
                WriteUserTeamSeasonToDB(Globals.PageId, userTeamSeasonsInsert, db);
                WriteUserTeamClassicLeagueToDB(Globals.PageId, userTeamClassicLeaguesInsert, db);
                WriteUserTeamH2hLeagueToDB(Globals.PageId, userTeamH2hLeaguesInsert, db);
                WriteUserTeamCupToDB(Globals.PageId, userTeamCupInsert, db);

                Logger.Out("");
                Logger.Out("UserTeam: " + Convert.ToString(Globals.UserTeamInsertCount) + " rows inserted");
                Logger.Out("UserTeamCup: " + Convert.ToString(Globals.UserTeamCupRowsInserted) + " rows inserted");
                Logger.Out("UserTeamUpdates: " + Convert.ToString(Globals.UserTeamUpdateRowsInserted) + " rows inserted");
                Logger.Out("UserTeamSeason: " + Convert.ToString(Globals.UserTeamSeasonRowsInserted) + " rows inserted");
                Logger.Out("UserTeamClassicLeague: " + Convert.ToString(Globals.UserTeamClassicLeagueRowsInserted) + " rows inserted");
                Logger.Out("UserTeamH2hLeague: " + Convert.ToString(Globals.UserTeamH2hLeagueRowsInserted) + " rows inserted");
                Logger.Out("UserTeamGameweekHistory: " + Convert.ToString(Globals.UserTeamGameweekHistoryRowsInserted) + " rows inserted");
                Logger.Out("UserTeamTransferHistory: " + Convert.ToString(Globals.UserTeamTransferHistoryRowsInserted) + " rows inserted");
                Logger.Out("UserTeamChip: " + Convert.ToString(Globals.UserTeamChipRowsInserted) + " rows inserted");
                Logger.Out("UserTeamPick: " + Convert.ToString(Globals.UserTeamPickRowsInserted) + " rows inserted");
                Logger.Out("UserTeamPickAutomaticSub: " + Convert.ToString(Globals.UserTeamPickAutomaticSubsRowsInserted) + " rows inserted");
                Logger.Out("");
                Logger.Out("API Page calls: " + Convert.ToString(Globals.ApiPageCalls));
                Logger.Out("API UserTeam calls: " + Convert.ToString(Globals.ApiUserTeamCalls));
                Logger.Out("API UserTeamHistory calls: " + Convert.ToString(Globals.ApiUserTeamHistoryCalls));
                Logger.Out("API UserTeamTransferHistory calls: " + Convert.ToString(Globals.ApiUserTeamTransferHistoryCalls));
                Logger.Out("API UserTeamPick calls: " + Convert.ToString(Globals.ApiUserTeamPickCalls));
                Logger.Out("API calls: " + Convert.ToString(Globals.ApiCalls));
                Logger.Out("");
            }
            catch (Exception ex)
            {
                Logger.Error("Program WriteToDB error: " + ex.Message);
                //WriteToDB(userTeamRowsInserted, userTeamSeasonRowsInserted, userTeamInsert, userTeamSeasonsInsert, db);
            }
        }
        static void Main(string[] args)
        {
            XmlConfigurator.Configure();

            //int pageId;
            int pageCnt;
            int leagueId = 314;

            UserTeams                   userTeamsUpdateInsert           = new UserTeams();
            UserTeamPicks               userTeamPicksInsert             = new UserTeamPicks();
            UserTeamPickAutomaticSubs   userTeamPickAutomaticSubsInsert = new UserTeamPickAutomaticSubs();
            UserTeamGameweekHistories   userTeamGameweekHistoriesInsert = new UserTeamGameweekHistories();
            UserTeamChips               userTeamChipsInsert             = new UserTeamChips();
            UserTeamTransferHistoryData userTeamTransferHistoriesInsert = new UserTeamTransferHistoryData();
            UserTeamSeasons             userTeamSeasonsInsert           = new UserTeamSeasons();
            UserTeamClassicLeagues      userTeamClassicLeaguesInsert    = new UserTeamClassicLeagues();
            UserTeamH2hLeagues          userTeamH2hLeaguesInsert        = new UserTeamH2hLeagues();

            UserTeamCupMatches userTeamCupInsert = new UserTeamCupMatches();

            UserTeamRepository userTeamRepository = new UserTeamRepository();

            SqlConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["FantasyPremierLeagueUserTeam"].ConnectionString);

            try
            {
                Logger.Out("Starting...");
                Logger.Out("");

                int pageId;
                Globals.PageId = 1;

                int insertInterval;
                Globals.InsertInterval = 10;

                bool test = true;

                if (args.Length == 0)
                {
                    //System.Console.WriteLine("No arguments passed into program");
                    Logger.Out("No arguments passed into program");
                }
                else
                {
                    test = int.TryParse(args[0], out pageId);

                    if (test == false)
                    {
                        Logger.Out("Argument[0] passed into program doesnn't exist or was not integer");
                        return;
                    }
                    else
                    {
                        Globals.PageId = pageId;
                    }

                    test = int.TryParse(args[1], out insertInterval);

                    if (test == false)
                    {
                        //System.Console.WriteLine("Arguments passed into program were not integer");
                        Logger.Out("Argument[1] InsertInterval passed into program doesnn't exist or were not integer");
                        return;
                    }
                    else
                    {
                        Globals.InsertInterval = insertInterval;
                    }
                }

                Logger.Out("Starting UserTeams data load");
                Logger.Out("");

                string userTeamUrl        = ConfigSettings.ReadSetting("userTeamURL");
                string userTeamLeaguesUrl = ConfigSettings.ReadSetting("userTeamLeaguesURL");

                using (db)
                {
                    db.Open();

                    bool has_next = true;

                    Globals.UserTeamRetries = 0;
                    pageCnt = 0;

                    List <int> userTeamIds = userTeamRepository.GetAllUserTeamIds(db);

                    Globals.ApiCalls                        = 0;
                    Globals.ApiPageCalls                    = 0;
                    Globals.ApiUserTeamCalls                = 0;
                    Globals.ApiUserTeamHistoryCalls         = 0;
                    Globals.ApiUserTeamTransferHistoryCalls = 0;
                    Globals.ApiUserTeamPickCalls            = 0;
                    Globals.UserTeamInsertCount             = 0;

                    while (has_next == true)
                    {
                        SetLatestGameweek("UserTeamGameweekHistory");
                        SetActualGameweek("UserTeamGameweekPick");

                        pageCnt += 1;

                        if (db.State == ConnectionState.Closed)
                        {
                            db.ConnectionString = ConfigurationManager.ConnectionStrings["FantasyPremierLeagueUserTeam"].ConnectionString;
                            db.Open();
                            Logger.Error("Program Info (LeagueId: " + leagueId.ToString() + ", PageId:" + Globals.PageId.ToString() + "): Reopening closed db connection");
                        }

                        has_next = FantasyPremierLeagueLeaguesAPIClient.GetLeagueDataJson(leagueId, userTeamIds, userTeamLeaguesUrl, userTeamUrl, userTeamsUpdateInsert, userTeamCupInsert, userTeamClassicLeaguesInsert, userTeamH2hLeaguesInsert, userTeamGameweekHistoriesInsert, userTeamPicksInsert, userTeamPickAutomaticSubsInsert, userTeamChipsInsert, userTeamTransferHistoriesInsert, userTeamSeasonsInsert, db);

                        if (pageCnt >= Globals.InsertInterval)
                        {
                            WriteToDB(Globals.PageId, userTeamsUpdateInsert, userTeamCupInsert, userTeamClassicLeaguesInsert, userTeamH2hLeaguesInsert, userTeamGameweekHistoriesInsert, userTeamPicksInsert, userTeamPickAutomaticSubsInsert, userTeamChipsInsert, userTeamTransferHistoriesInsert, userTeamSeasonsInsert, db);

                            Globals.ApiCalls                        = 0;
                            Globals.ApiPageCalls                    = 0;
                            Globals.ApiUserTeamCalls                = 0;
                            Globals.ApiUserTeamHistoryCalls         = 0;
                            Globals.ApiUserTeamTransferHistoryCalls = 0;
                            Globals.ApiUserTeamPickCalls            = 0;
                            Globals.UserTeamInsertCount             = 0;

                            pageCnt = 0;
                        }

                        Globals.PageId += 1;
                    }

                    WriteToDB(Globals.PageId, userTeamsUpdateInsert, userTeamCupInsert, userTeamClassicLeaguesInsert, userTeamH2hLeaguesInsert, userTeamGameweekHistoriesInsert, userTeamPicksInsert, userTeamPickAutomaticSubsInsert, userTeamChipsInsert, userTeamTransferHistoriesInsert, userTeamSeasonsInsert, db);

                    db.Close();
                }

                Logger.Out("UserTeams data load complete");
                Logger.Out("");

                Logger.Out("Finished!!!");

                //// Wait for user input - keep the program running
                Console.ReadKey();
            }
            catch (Exception ex)
            {
                Logger.Error(ex.Message);
                //Logger.Error(userTeamName + " caused error!!!");

                if (db.State == ConnectionState.Closed)
                {
                    db.ConnectionString = ConfigurationManager.ConnectionStrings["FantasyPremierLeagueUserTeam"].ConnectionString;
                    db.Open();
                    Logger.Error("Program Exception Info (LeagueId: " + leagueId.ToString() + ", PageId:" + Globals.PageId.ToString() + "): Reopening closed db connection");
                }

                //If error is thrown from sub program write existing records to the DB
                WriteToDB(Globals.PageId, userTeamsUpdateInsert, userTeamCupInsert, userTeamClassicLeaguesInsert, userTeamH2hLeaguesInsert, userTeamGameweekHistoriesInsert, userTeamPicksInsert, userTeamPickAutomaticSubsInsert, userTeamChipsInsert, userTeamTransferHistoriesInsert, userTeamSeasonsInsert, db);

                //db.Close();

                //throw ex;
            }
        }
Beispiel #7
0
        public static void GetUserTeamDataJson(int userTeamId, List <int> userTeamIds, string userTeamUrl, UserTeams userTeamsUpdateInsert, UserTeamCupMatches userTeamCupInsert, UserTeamClassicLeagues userTeamClassicLeaguesInsert, UserTeamH2hLeagues userTeamH2hLeaguesInsert, UserTeamGameweekHistories userTeamGameweekHistoriesInsert, UserTeamPicks userTeamPicksInsert, UserTeamPickAutomaticSubs userTeamPickAutomaticSubsInsert, UserTeamChips userTeamChipsInsert, UserTeamTransferHistoryData userTeamTransferHistoriesInsert, UserTeamSeasons userTeamSeasonsInsert, SqlConnection db)
        {
            try
            {
                //Process UserTeam, UserTeamClassicLeague, UserTeamH2hLeague, UserTeamCup
                ////if (Globals.ExistingUserTeamId == 0 || Globals.LeagueCountFromUserTeamClassicLeagueForUserTeamId == 0)
                //{
                FantasyPremierLeagueAPIUserTeamLeagueAndCup.GetUserTeamLeagueAndCupJson(userTeamId, userTeamIds, userTeamUrl, userTeamsUpdateInsert, userTeamCupInsert, userTeamClassicLeaguesInsert, userTeamH2hLeaguesInsert, db);
                //}
                //else
                //{
                //    Logger.Out("UserTeam: " + Convert.ToString(userTeamId) + " - skipped (already exists with leagues)");
                //}

                //Process UserTeamGameweekHistory, UserTeamChip, UserTeamSeasonHistory
                if (Globals.MaxGWFromGameweekHistoryForUserTeamId < Globals.LatestGameweek)
                {
                    FantasyPremierLeagueAPIGameweekHistory.GetUserTeamHistoryDataJson(userTeamId, userTeamGameweekHistoriesInsert, userTeamChipsInsert, userTeamSeasonsInsert, db);
                }

                //Process UserTeamPick, UserTeamPickAutomaticSub
                //Doesn't check UserTeamPickAutomaticSub - which will be missing if run during an active Gameweek - matches are in progress or before have been played)
                if (Globals.MaxGWFromPicksForUserTeamId < Globals.ActualGameweek && Globals.ActualGameweek > 0)
                {
                    FantasyPremierLeagueAPIPick.GetUserTeamPickDataJson(userTeamId, userTeamPicksInsert, userTeamPickAutomaticSubsInsert, db);
                }

                //Process UserTeamTransferHistory
                if (Globals.MaxGWFromTransferHistoryForUserTeamId < Globals.ActualGameweek && Globals.ActualGameweek > 0)
                {
                    FantasyPremierLeagueAPITransferHistory.GetUserTeamTransferHistoryDataJson(userTeamId, userTeamTransferHistoriesInsert, db);
                }

                Logger.Out("");
            }
            catch (Exception ex)
            {
                Logger.Error("GetUserTeamDataJson data exception (UserTeamId: " + userTeamId.ToString() + "): " + ex.Message);
                //throw new Exception("GetUserTeamDataJson data exception (UserTeamId: " + userTeamId.ToString() + "): " + ex.Message);
                if (Globals.UserTeamRetries < 10)
                {
                    Globals.UserTeamRetries += 1;
                    GetUserTeamDataJson(userTeamId, userTeamIds, userTeamUrl, userTeamsUpdateInsert, userTeamCupInsert, userTeamClassicLeaguesInsert, userTeamH2hLeaguesInsert, userTeamGameweekHistoriesInsert, userTeamPicksInsert, userTeamPickAutomaticSubsInsert, userTeamChipsInsert, userTeamTransferHistoriesInsert, userTeamSeasonsInsert, db);
                }
                else
                {
                    Logger.Error("GetUserTeamDataJson data exception (UserTeamId: " + userTeamId.ToString() + "): Issue processing User Team skipping to next!!!");
                    Thread.Sleep(20000);
                }
            }
        }
Beispiel #8
0
        //public static void GetUserTeamPickDataJson(int userTeamId, int gameweekId, UserTeamPicks userTeamPicksInsert, UserTeamPickAutomaticSubs userTeamPickAutomaticSubsInsert, string userTeamPicksUrl, SqlConnection db)
        //{
        //    //Logger.Out("GetUserTeamPickDataJson: Gameweek " + Convert.ToString(gameweekId) + " - starting");

        //    var urlUserTeamPicks = "";

        //    try
        //    {
        //        UserTeamPickRepository userTeamPickRepository = new UserTeamPickRepository();

        //        urlUserTeamPicks = string.Format(userTeamPicksUrl, userTeamId, gameweekId);

        //        HttpClient clientUserTeamPicks = new HttpClient();
        //        JsonSerializer serializerUserTeamPicks = new JsonSerializer();
        //        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

        //        //Logger.Out("Before using statements - url: " + urlUserTeamPicks);

        //        using (Stream sUserTeamPicks = clientUserTeamPicks.GetStreamAsync(urlUserTeamPicks).Result)
        //        using (StreamReader srUserTeamPicks = new StreamReader(sUserTeamPicks))
        //        using (JsonReader readerUserTeamPicks = new JsonTextReader(srUserTeamPicks))
        //        {
        //            Globals.ApiCalls += 1;
        //            Globals.ApiUserTeamPickCalls += 1;

        //            // read the json from a stream
        //            // json size doesn't matter because only a small piece is read at a time from the HTTP request
        //            var userTeamPickData = serializerUserTeamPicks.Deserialize<UserTeamPickData>(readerUserTeamPicks);

        //            if (userTeamPickData != null)
        //            {
        //                GetUserTeamPickJson(userTeamId, gameweekId, userTeamPicksInsert, userTeamPickData, db);
        //                GetUserTeamPickAutomaticSubJson(userTeamId, gameweekId, userTeamPickAutomaticSubsInsert, userTeamPickData, db);
        //            }
        //        }
        //        //Logger.Out("GetUserTeamPickDataJson: Gameweek " + Convert.ToString(gameweekId) + " - completed");
        //    }
        //    catch (Exception ex)
        //    {
        //        Logger.Error("GetUserTeamPickDataJson data exception (UserTeamId: " + userTeamId.ToString() + " GameweekId: " + gameweekId.ToString() + "): " + ex.Message);
        //        //throw new Exception("GetUserTeamPickDataJson data exception (UserTeamId: " + userTeamId.ToString() + "): " + ex.Message);
        //        GetUserTeamPickDataJson(userTeamId, gameweekId, userTeamPicksInsert, userTeamPickAutomaticSubsInsert, userTeamPicksUrl, db);
        //    }
        //}

        public static void GetUserTeamPickJson(int userTeamId, int gameweekId, string urlUserTeamPicks, UserTeamPicks userTeamPicksInsert, UserTeamPickAutomaticSubs userTeamPickAutomaticSubsInsert, SqlConnection db)
        {
            try
            {
                //Process UserTeamPick and UserTeamPickAutomaticSub
                if (gameweekId >= Globals.MaxGWFromPicksForUserTeamId)
                {
                    UserTeamPickRepository userTeamPickRepository = new UserTeamPickRepository();

                    urlUserTeamPicks = string.Format(urlUserTeamPicks, userTeamId, gameweekId);

                    JsonSerializer serializerUserTeamPicks = new JsonSerializer()
                    {
                        Formatting = Formatting.None
                    };

                    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

                    using (HttpClient clientUserTeamPicks = new HttpClient())
                        using (Stream sUserTeamPicks = clientUserTeamPicks.GetStreamAsync(urlUserTeamPicks).Result)
                            using (StreamReader srUserTeamPicks = new StreamReader(sUserTeamPicks))
                                using (JsonReader readerUserTeamPicks = new JsonTextReader(srUserTeamPicks))
                                {
                                    Globals.ApiCalls             += 1;
                                    Globals.ApiUserTeamPickCalls += 1;

                                    // read the json from a stream
                                    // json size doesn't matter because only a small piece is read at a time from the HTTP request
                                    var userTeamPickData = serializerUserTeamPicks.Deserialize <UserTeamPickData>(readerUserTeamPicks);

                                    if (userTeamPickData != null)
                                    {
                                        //Load UserTeamPick data
                                        //int userTeamPickIds_userteamid = 0;
                                        //int userTeamPickIds_gameweekid = 0;

                                        //UserTeamPickId userTeamPickId = new UserTeamPickId();
                                        //userTeamPickId.userteamid = userTeamId;
                                        //userTeamPickId.gameweekid = gameweekId;

                                        ///List<UserTeamPickId> userTeamPickIds = userTeamPickRepository.GetAllUserTeamPickIdsForUserTeamIdAndGameweekId(userTeamId, gameweekId, db);

                                        //if (userTeamPickIds.Count > 0)
                                        //{
                                        //    userTeamPickIds_userteamid = userTeamPickIds[0].userteamid;
                                        //    userTeamPickIds_gameweekid = userTeamPickIds[0].gameweekid;
                                        //}

                                        //UserTeamPicks userTeamPicksUpdate = new UserTeamPicks();

                                        foreach (UserTeamPick userTeamPick in userTeamPickData.picks)
                                        {
                                            UserTeamPickId userTeamPickId = new UserTeamPickId
                                                                            (
                                                userTeamId,
                                                gameweekId,
                                                userTeamPick.position
                                                                            );

                                            //needed if want to assign value from parent to add into db table
                                            userTeamPick.userteamid = userTeamId;
                                            userTeamPick.gameweekid = gameweekId;

                                            //if (!userTeamPickIds.Contains(userTeamPickId) && !userTeamPicksInsert.Contains(userTeamPick))
                                            if (!userTeamPicksInsert.Contains(userTeamPick))
                                            {
                                                userTeamPicksInsert.Add(userTeamPick);
                                            }
                                            //else
                                            //{
                                            //    userTeamPickRepository.UpdateUserTeamPick(userTeamPick);
                                            //}
                                        }
                                        //Logger.Out("GetUserTeamPickJson: Gameweek " + Convert.ToString(gameweekId) + " - completed");
                                    }
                                    GetUserTeamPickAutomaticSubJson(userTeamId, gameweekId, userTeamPickAutomaticSubsInsert, userTeamPickData, db);
                                }
                }
                //Logger.Out("GetUserTeamPickDataJson: Gameweek " + Convert.ToString(gameweekId) + " - completed");
            }
            catch (Exception ex)
            {
                Logger.Error("GetUserTeamPickJson data exception (UserTeamId:" + userTeamId.ToString() + "/GameweekId:" + gameweekId.ToString() + "): " + ex.Message);
                Logger.Error("GetUserTeamPickJson data exception (UserTeamId:" + userTeamId.ToString() + "/GameweekId:" + gameweekId.ToString() + "): skipping userteam/gameweek");
                //throw new Exception("GetUserTeamPickJson data exception (UserTeamId: " + userTeamId.ToString() + "): " + ex.Message);
                //GetUserTeamPickJson(userTeamId, gameweekId, urlUserTeamPicks, maxGWFromPicksForUserTeamId, userTeamPicksInsert, userTeamPickAutomaticSubsInsert, db);
                //if (gameweekId + 1 < Globals.ActualGameweek)
                //{
                //    gameweekId++;
                //    GetUserTeamPickJson(userTeamId, gameweekId, urlUserTeamPicks, maxGWFromPicksForUserTeamId, userTeamPicksInsert, userTeamPickAutomaticSubsInsert, db);
                //}
            }
        }