public List<Task> UpdateTask(Task task) { using (var monitorContext = new MonitorDbContext()) { try { var matchingDbTask = monitorContext.Tasks.FirstOrDefault(t => t.Name == task.Name); if (matchingDbTask != null) { task.TaskId = matchingDbTask.TaskId; HistoryHandler.UpdateTaskHistoryProperties(task, matchingDbTask); monitorContext.Set<Task>().AddOrUpdate(task); monitorContext.SaveChanges(); } else { var dbTasks = monitorContext.Tasks; if (dbTasks.Any()) task.TaskId = dbTasks.Max(t => t.TaskId) + 1; else task.TaskId = 1; HistoryHandler.UpdateTaskHistoryProperties(task, null); monitorContext.Tasks.Add(task); monitorContext.SaveChanges(); } } catch (Exception ex) { Debug.WriteLine(ex.Message); } return new List<Task> { monitorContext.Tasks.FirstOrDefault(t => t.Name == task.Name) }; } }
protected void OnTaskUpdated(ref Server vcServer, JobClass vcJob, TaskClass vcTask) { UpdateMonitoringTimeMessage(vcServer); if (vcTask.Stats.Status == TaskStatsClass.TaskStatusT.Waiting) { Debug.WriteLine(vcTask.Name); Debug.WriteLine("ExecutionTime: " + vcTask.Stats.ExecutionTime); Debug.WriteLine(vcTask.Stats.Status); var task = new Task(ref vcServer, vcJob, vcTask); var tasks = DbHandler.UpdateTask(task); VisualCronHubHandler.UpdateClients(tasks); } }