123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- using Comal.Classes;
- using InABox.Clients;
- using InABox.Core;
- using InABox.Scripting;
- using System;
- namespace Comal.TaskScheduler.Shared
- {
- public class ScheduledScriptPlugin : SchedulePlugin<ScheduledScript>
- {
- 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<Schedule>().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;
- }
- }
- }
|