| 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;        }    }}
 |