예제 #1
0
        public Task <TaskResult> Execute()
        {
            token     = tokenSource.Token;
            taskRepo  = new SchedulerDataRepository();
            gamesRepo = new LeagueDataRepository();

            return(Task.Run(() =>
            {
                var result = new TaskResult
                {
                    StartTime = DateTime.Now
                };

                try
                {
                    result.UpdateDb = taskRepo.AddSchedulerTask(AddTaskForAnalyzer(BookmakerOddsStatsAnalyzingExecutor, -1, 60));
                    result.UpdateDb |= taskRepo.AddSchedulerTask(AddTaskForAnalyzer(FootballTeamFormAnalyzingExecutor, -1, 60));
                    result.UpdateDb |= taskRepo.AddSchedulerTask(AddTaskForAnalyzer(HeadToHeadStatsAnalyzingExecutor, -1, 65));
                    result.UpdateDb |= taskRepo.AddSchedulerTask(AddTaskForAnalyzer(RoundStatsAnalyzingExecutor, -1, 70));
                    result.UpdateDb |= taskRepo.AddSchedulerTask(AddTaskForAnalyzer(SeasonStatsAnalyzingExecutor, -1, 70));
                    result.UpdateDb |= taskRepo.AddSchedulerTask(AddTaskForAnalyzer(GamePredictionAnalyzingExecutor, -1, 90));
                }
                catch (Exception ex)
                {
                    result.IsFailed = true;
                    result.FailedReason = ex.Message;
                }

                result.IsFailed = false;
                result.EndTime = DateTime.Now;
                return result;
            }, token));
        }
예제 #2
0
        public Task <TaskResult> Execute()
        {
            token     = tokenSource.Token;
            taskRepo  = new SchedulerDataRepository();
            gamesRepo = new LeagueDataRepository();

            return(Task.Run(() =>
            {
                var result = new TaskResult
                {
                    StartTime = DateTime.Now
                };

                try
                {
                    var nextGame = gamesRepo.GetNextUpcomingGameDateTime();
                    var nextGameExist = ConfigurationManager.AppSettings["GameStatsGatheringDelay_NextGameExist"];
                    var nextGameNotExist = ConfigurationManager.AppSettings["GameStatsGatheringDelay_NextGameNotExist"];

                    var defaultHoursDelay_nextGameExist = string.IsNullOrEmpty(nextGameExist) ? 2 : int.Parse(nextGameExist);
                    var defaultHoursDelay_nextGameNotExist = string.IsNullOrEmpty(nextGameNotExist) ? 12 : int.Parse(nextGameNotExist);

                    var startTime = nextGame.HasValue
                        ? nextGame.Value.AddHours(defaultHoursDelay_nextGameExist)
                        : DateTime.Now.AddHours(defaultHoursDelay_nextGameNotExist);

                    //id could be changed, but name should be consistent
                    var taskExecutorId = taskRepo.GetTaskExecutor("GameStatsGathering").TaskExecutorId;

                    SchedulerTask newTask = new SchedulerTask
                    {
                        TaskExecutorId = taskExecutorId,
                        Status = TaskStatus.Wait,
                        PlanningTime = startTime,
                        UpdateDb = null,
                        Result = null,
                        Type = TaskType.Crawler
                    };
                    result.UpdateDb = taskRepo.AddSchedulerTask(newTask);
                }
                catch (Exception ex)
                {
                    result.IsFailed = true;
                    result.FailedReason = ex.Message;
                }

                result.IsFailed = false;
                result.EndTime = DateTime.Now;
                return result;
            }, token));
        }
예제 #3
0
 private void Initialize()
 {
     Console.WriteLine("***** Initialize all TaskStarter variables *****");
     repo          = new SchedulerDataRepository();
     runLoop       = true;
     tasks         = new ConcurrentStack <Task>();
     taskExecutors = new Dictionary <string, ITaskExecutor>();
     taskExecutors.Add(nameof(GameStatsGathering), new GameStatsGathering());
     taskExecutors.Add(nameof(BwinCoefGathering), new BwinCoefGathering());
     taskExecutors.Add(nameof(LeagueSeasonInfosGathering), new LeagueSeasonInfosGathering());
     taskExecutors.Add(nameof(SchedulerForGames), new SchedulerForGames());
     taskExecutors.Add(nameof(SchedulerForBwin), new SchedulerForBwin());
     taskExecutors.Add(nameof(SchedulerForAnalyzers), new SchedulerForAnalyzers());
     taskExecutors.Add(nameof(BookmakerOddsStatsAnalyzing), new BookmakerOddsStatsAnalyzing());
     taskExecutors.Add(nameof(FootballTeamFormAnalyzing), new FootballTeamFormAnalyzing());
     taskExecutors.Add(nameof(GamePredictionAnalyzing), new GamePredictionAnalyzing());
     taskExecutors.Add(nameof(HeadToHeadStatsAnalyzing), new HeadToHeadStatsAnalyzing());
     taskExecutors.Add(nameof(RoundStatsAnalyzing), new RoundStatsAnalyzing());
     taskExecutors.Add(nameof(SeasonStatsAnalyzing), new SeasonStatsAnalyzing());
 }
예제 #4
0
        public Task <TaskResult> Execute()
        {
            token     = tokenSource.Token;
            taskRepo  = new SchedulerDataRepository();
            gamesRepo = new LeagueDataRepository();

            return(Task.Run(() =>
            {
                var result = new TaskResult
                {
                    StartTime = DateTime.Now
                };

                try
                {
                    var nextGame = gamesRepo.GetNextUpcomingGameDateTime();
                    var lastGathering = taskRepo.GetTimeOfLastExecution(BwinGatheringExecutor);

                    var nextGameNotExist = ConfigurationManager.AppSettings["BwinCoefGatheringDelay_NextGameNotExist"];
                    var nextGameToday = ConfigurationManager.AppSettings["BwinCoefGatheringDelay_NextGameToday"];
                    var nextGameNotToday = ConfigurationManager.AppSettings["BwinCoefGatheringDelay_NextGameNotToday"];

                    var defaultHoursDelay = string.IsNullOrEmpty(nextGameNotExist) ? -2 : -int.Parse(nextGameNotExist);

                    var defaultMinutesShortDelay = string.IsNullOrEmpty(nextGameToday) ? DelayMinutesShort : int.Parse(nextGameToday);
                    var defaultMinutesLongDelay = string.IsNullOrEmpty(nextGameNotToday) ? DelayMinutesLong : int.Parse(nextGameNotToday);


                    if (DateTime.Now.AddHours(defaultHoursDelay) > lastGathering || !lastGathering.HasValue)
                    {
                        lastGathering = DateTime.Now.AddHours(defaultHoursDelay);
                    }

                    var startTime = DateTime.Now;
                    if (nextGame.HasValue)
                    {
                        startTime = (nextGame.Value.Date == DateTime.Now.Date)
                                ? lastGathering.Value.AddMinutes(defaultMinutesShortDelay)
                                : lastGathering.Value.AddMinutes(defaultMinutesLongDelay);
                    }

                    //id could be changed, but name should be consistent
                    var taskExecutorId = taskRepo.GetTaskExecutor(BwinGatheringExecutor).TaskExecutorId;

                    SchedulerTask newTask = new SchedulerTask
                    {
                        TaskExecutorId = taskExecutorId,
                        Status = TaskStatus.Wait,
                        PlanningTime = startTime,
                        UpdateDb = null,
                        Result = null,
                        Type = TaskType.Crawler
                    };
                    result.UpdateDb = taskRepo.AddSchedulerTask(newTask);
                }
                catch (Exception ex)
                {
                    result.IsFailed = true;
                    result.FailedReason = ex.Message;
                }

                result.IsFailed = false;
                result.EndTime = DateTime.Now;
                return result;
            }, token));
        }