public void UpdateJob(string id, Status status, string outcome = null, string scriptName = null) { if (Int32.TryParse(id, out int jobId)) { var job = _scriptRepository.GetJobs().FirstOrDefault(e => e.JobId == jobId); if (job != null) { if (status == Status.Completed) { var script = _scriptRepository.GetScriptById(job.ScriptId); if (script != null) { outcome = script.LastOutput; } } UpdateJobStatus(job, status, outcome); } //Scheduled Jobs Craeted Here: if (id != null && job == null) //Maybe just job==null { var newJob = new Job() { UserName = "******", ScriptId = _scriptRepository.GetScripts().FirstOrDefault(e => e.Name == scriptName).Id, //TODO: What is script was deleted but still scheduled? Date = DateTime.Now, JobId = jobId, Status = Status.Completed }; _scriptRepository.InsertJob(newJob); _scriptRepository.Save(); } } }
public void UpdateJobStatus(Job job, Status status, string outcome = null) { if (job.JobType == JobType.ScheduledWithRecurring) { job.JobType = JobType.Scheduled; } job.Status = status; if (!String.IsNullOrEmpty(outcome)) { job.Outcome = outcome; } _scriptRepository.UpdateJob(job); _scriptRepository.Save(); }
//Laucnh/Schedule Jobs public void LaunchScript(string name, Script script) { //ToDo: Add Logic to Return True/False if successful var newJob = new Job() { UserName = name, ScriptId = script.Id, Date = DateTime.Now, JobId = Int32.Parse(BackgroundJob.Enqueue(() => Run(script.Name))), Status = Status.Started }; _scriptRepository.InsertJob(newJob); _scriptRepository.Save(); }
public void LaunchScriptWithParams(string name, PowerShellParam psParam) { var jobServices = new JobServices(_scriptRepository); //ToDo: Add Logic to Return True / False if successful var script = _scriptRepository.GetScriptById(psParam.Id); var newJob = new Job() { UserName = name, ScriptId = script.Id, Date = DateTime.Now, JobId = Int32.Parse(BackgroundJob.Enqueue(() => jobServices.Run(script.Name, psParam.PSparams))), Status = Status.Started }; _scriptRepository.InsertJob(newJob); _scriptRepository.Save(); }
public void Schedule(Script script, PowerShellSchedule schedule, string username) { var job = new Job() { UserName = username, ScriptId = schedule.Id, Date = schedule.Date, JobId = Int32.Parse(BackgroundJob.Schedule(() => Run(script.Name, schedule.PSparams), new DateTime(schedule.Date.Ticks))), Status = Status.Scheduled, JobType = JobType.Scheduled }; _scriptRepository.InsertJob(job); _scriptRepository.Save(); if (schedule.SelectedRecurring != null) { // Change Job Type and Set Recurring Job // This is important to ensure CancelJob cancels associated recurring jobs // TODO: Review Logic job.JobType = JobType.ScheduledWithRecurring; _scriptRepository.UpdateJob(job); var recurringJob = new Job() { UserName = username, ScriptId = script.Id, Date = schedule.Date, JobId = Int32.Parse( BackgroundJob.Schedule( () => RunOnSchedule(job.Id, script.Name, schedule.SelectedRecurring, schedule.PSparams), new DateTime(schedule.Date.Ticks))), RecurringId = job.Id, Status = Status.Scheduled, JobType = JobType.Recurring, Outcome = schedule.SelectedRecurring }; _scriptRepository.InsertJob(recurringJob); _scriptRepository.Save(); } }
public ActionResult CancelJobConfirmed(Job job) { var jobServices = new JobServices(_scriptRepository); //Get Recurring and Original Job Info var recurringJob = _scriptRepository.GetJobById(job.Id); BackgroundJob.Delete(recurringJob.JobId.ToString()); if (recurringJob.JobType == JobType.Recurring) { var originalJob = _scriptRepository.GetJobById(recurringJob.RecurringId); BackgroundJob.Delete(originalJob.JobId.ToString()); jobServices.UpdateJobStatus(recurringJob, Status.Cancelled); } RecurringJob.RemoveIfExists(recurringJob.RecurringId.ToString()); jobServices.UpdateJobStatus(recurringJob, Status.Cancelled); return RedirectToAction("Details", new { id = recurringJob.ScriptId }); }
public void UpdateJob(string id, Status status, string outcome = null, string scriptName = null) { int jobId; if (Int32.TryParse(id, out jobId)) { var job = _scriptRepository.GetJobs().FirstOrDefault(e => e.JobId == jobId); if (job != null) { if (status == Status.Completed) { var script = _scriptRepository.GetScriptById(job.ScriptId); if (script != null) outcome = script.LastOutput; } UpdateJobStatus(job, status, outcome); } //Scheduled Jobs Craeted Here: if (id != null && job == null) //Maybe just job==null { var newJob = new Job() { UserName = "******", ScriptId = _scriptRepository.GetScripts().FirstOrDefault(e => e.Name == scriptName).Id, //TODO: What is script was deleted but still scheduled? Date = DateTime.Now, JobId = jobId, Status = Status.Completed }; _scriptRepository.InsertJob(newJob); _scriptRepository.Save(); } } }
public void UpdateJob(Job job) { _context.Entry(job).State = EntityState.Modified; }
public void InsertJob(Job job) { _context.Jobs.Add(job); }