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)); }
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)); }