using Comal.Classes; using InABox.Clients; using InABox.Core; using InABox.Scripting; using System; namespace Comal.TaskScheduler.Shared { public class ScheduledScriptPlugin : SchedulePlugin { public override bool Execute(Schedule schedule, ScheduledScript entity) { if (schedule.DueDate.AddDays(0 - schedule.LeadTime) <= DateTime.Now) { Logger.Send(LogType.Information,ClientFactory.UserID," * Executing Module.Execute()"); DateTime duedate = DateTime.Now.AddDays(schedule.LeadTime); var script = new ScriptDocument(entity.Script); try { if (script.Compile()) { bool result = false; try { result = script.Execute(); } catch (Exception eRun) { Logger.Send(LogType.Error, ClientFactory.UserID, "Execute: " + CoreUtils.FormatException(eRun)); } if (result) { Logger.Send(LogType.Information, ClientFactory.UserID, " * Execute() returns true - updating schedule"); schedule.DueDate = schedule.GetNextDate(schedule.Rollover.Equals(ScheduleRollover.FromDueDate) ? schedule.DueDate : duedate); new Client().Save(schedule, "Schedule Updated by Task (Due Date)"); } else Logger.Send(LogType.Information, ClientFactory.UserID, " * Execute() returns false - skipping schedule update"); return true; } else { Logger.Send(LogType.Error, ClientFactory.UserID, "Script failed to Compile:"); foreach (var line in script.Result.Split('\n')) Logger.Send(LogType.Information, "", line); return false; } } catch (Exception eComp) { Logger.Send(LogType.Error, ClientFactory.UserID, "Compile: "+eComp.Message); } } return false; } } }