public HttpResponseMessage SetConfig(ConfigModel configModel) { if (!ModelState.IsValid || configModel == null) return Request.CreateResponse(HttpStatusCode.BadRequest); var scheduledTasks = new List<ScheduledTaskDto>(); var config = AdminManager.GetConfig().UpdateConfigFromModel(configModel); // update scheduled tasks or create new foreach (var scheduledTaskModel in configModel.ScheduledTasks) { var scheduledTask = AdminManager.GetScheduledTask(scheduledTaskModel); if (scheduledTask == null) { scheduledTask = new ScheduledTaskDto(scheduledTaskModel); } else { scheduledTask.UpdateScheduledTaskFromModel(scheduledTaskModel); } scheduledTasks.Add(scheduledTask); } AdminManager.Save(config, scheduledTasks); return new HttpResponseMessage(HttpStatusCode.Accepted); }
internal static void Handle(ScheduledTaskDto scheduledTask) { if (CurrentTask.IsTaskRunning) return; InitializeTask(scheduledTask); try { switch (scheduledTask.SyncOperation) { case SyncOperation.All: AllImport(); break; case SyncOperation.Channels: ChannelsImport(); break; case SyncOperation.PlaylistItems: PlaylistItemsImport(); break; case SyncOperation.Videos: VideosImport(); break; default: throw new ArgumentOutOfRangeException(); } scheduledTask.LastRunResult = EventStatus.Ok; } catch (Exception e) { if ((e is AggregateException && e.InnerException is OperationCanceledException) || e is OperationCanceledException) { if (_taskService.Token.IsCancellationRequested) { _taskService.EventLog.Log("Task was cancelled by user"); scheduledTask.LastRunResult = EventStatus.Cancelled; return; } } _taskService.EventLog.Log("Task was cancelled by error"); scheduledTask.LastRunResult = EventStatus.Error; _logger.GetLogger().Error(e); } finally { Cleanup(scheduledTask); } }
public static void UpdateScheduledTask(ScheduledTaskDto scheduledTask) { var configService = new ConfigService(); configService.SaveScheduledTask(scheduledTask); }
private static void Cleanup(ScheduledTaskDto scheduledTask) { // TODO: Dispose _taskService.EventLog.Log($"Sync finished: {_taskService.ScheduledTaskInfo.SyncOperation}"); scheduledTask.History = (EventLog) _taskService.EventLog; CurrentTask.IsTaskRunning = false; _taskService = null; _syncService = null; _logger = null; }
public TaskService(ScheduledTaskDto scheduledTask) { EventLog = new EventLog(); ScheduledTaskInfo = scheduledTask; scheduledTask.History = (EventLog) EventLog; TokenSource = new CancellationTokenSource(); Token = TokenSource.Token; }
private static void InitializeTask(ScheduledTaskDto scheduledTask) { _taskService = new TaskService(scheduledTask); _syncService = new SyncService(_taskService); _logger = new Logger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, _taskService.TraceId); CurrentTask.IsTaskRunning = true; _taskService.EventLog.Log($"Sync started: {scheduledTask.SyncOperation}"); }
public void SaveScheduledTask(ScheduledTaskDto scheduledTask) { var query = new ScheduledTasksQuery(scheduledTask.TaskId); _scheduledTaskQueryHandler.CreateOrUpdateValueById<ScheduledTaskDto>(query, scheduledTask); }