/// <summary> /// Called when the item is a repeat item. /// </summary> /// <param name="target">The object that was passed to IParseItem.Visit.</param> /// <returns>The passed target or a modification of it.</returns> /// <exception cref="System.ArgumentNullException">If target is null.</exception> public IParseItem Visit(RepeatItem target) { if (target == null) { throw new ArgumentNullException(nameof(target)); } ILGenerator gen = compiler.CurrentGenerator; target.Break.UserData = target.Break.UserData ?? gen.DefineLabel(); Label start = gen.DefineLabel(); Label end = (Label)target.Break.UserData; // start: gen.MarkLabel(start); // {Block} target.Block.Accept(this); // if (!{Exp}.IsTrue) goto start; target.Expression.Accept(this); gen.Emit(OpCodes.Callvirt, typeof(ILuaValue).GetProperty(nameof(ILuaValue.IsTrue)).GetGetMethod()); gen.Emit(OpCodes.Brfalse, start); // end: gen.MarkLabel(end); return(target); }
public JobViewModel(RepeatItem <Job> repeatjob) { Description = repeatjob.Item.Description; StartTime = repeatjob.StartTime; IsRepeat = true; Frequence = repeatjob.Frequence; FrequenceUnit = repeatjob.FrequenceUnit; JobName = repeatjob.Item.JobName; this.Id = repeatjob.Item.Id; this.CodeId = repeatjob.Item.CodeId; }
public IParseItem Visit(RepeatItem target) { if (target == null) { throw new ArgumentNullException(nameof(target)); } target.Expression.Accept(this); using (_tree.Block(true)) { _tree.DefineLabel(target.Break); target.Block.Accept(this); } return(target); }
public void ExecuteRepeatingJob(RepeatItem <Job> repeatingJob) { if (repeatingJob != null && repeatingJob.Item != null) { try { var website = Kooboo.Data.GlobalDb.WebSites.Get(repeatingJob.Item.WebSiteId); if (website != null) { RenderContext context = new RenderContext(); context.WebSite = website; var sitedb = website.SiteDb(); var code = sitedb.Code.Get(repeatingJob.Item.CodeId); if (code != null) { Manager.ExecuteCode(context, code.Body, code.Id); } else { AddJobLog(repeatingJob.Item.JobName, false, DateTime.Now, repeatingJob.Item.WebSiteId, "Job code not found"); return; } } else { // not needed, since no website no where to show... } AddJobLog(repeatingJob.Item.JobName, true, DateTime.Now, repeatingJob.Item.WebSiteId, ""); } catch (Exception ex) { AddJobLog(repeatingJob.Item.JobName, false, DateTime.Now, repeatingJob.Item.WebSiteId, ex.Message); } } }
private void ExecuteRepeatingJob(RepeatItem <Job> repeatingJob) { if (repeatingJob != null && repeatingJob.Item != null) { try { var job = JobContainer.GetJob(repeatingJob.Item.JobName); if (job == null) { AddJobLog(repeatingJob.Item.JobName, null, false, DateTime.Now, repeatingJob.Item.WebSiteId, "job not found, name: " + repeatingJob.Item.JobName); } else { job.Execute(repeatingJob.Item.WebSiteId, repeatingJob.Item.Config); AddJobLog(repeatingJob.Item.JobName, repeatingJob.Item.Description, true, DateTime.Now, repeatingJob.Item.WebSiteId, ""); } } catch (Exception ex) { AddJobLog(repeatingJob.Item.JobName, repeatingJob.Item.Description, false, DateTime.Now, repeatingJob.Item.WebSiteId, ex.Message); } } }
public void Post(JobEditViewModel model, ApiCall call) { //JobEditViewModel model = call.Context.Request.Model as JobEditViewModel; Job newjob = new Job(); newjob.Description = model.Description; newjob.JobName = model.Name; newjob.WebSiteId = call.Context.WebSite.Id; newjob.Script = model.Script; newjob.CodeId = model.CodeId; // add a new job. if (model.IsRepeat) { RepeatItem <Job> repeatjob = new RepeatItem <Job>(); repeatjob.Item = newjob; repeatjob.StartTime = model.StartTime; repeatjob.FrequenceUnit = model.FrequenceUnit; switch (model.Frequence.ToLower()) { case "month": { repeatjob.Frequence = RepeatFrequence.Month; break; } case "day": { repeatjob.Frequence = RepeatFrequence.Day; break; } case "minutes": { repeatjob.Frequence = RepeatFrequence.Minutes; break; } case "minute": { repeatjob.Frequence = RepeatFrequence.Minutes; break; } case "second": { repeatjob.Frequence = RepeatFrequence.Second; break; } case "week": { repeatjob.Frequence = RepeatFrequence.Week; break; } case "hour": { repeatjob.Frequence = RepeatFrequence.Hour; break; } default: break; } GlobalDb.RepeatingJob().Add(repeatjob); GlobalDb.RepeatingJob().Close(); } else { GlobalDb.ScheduleJob().Add(newjob, model.StartTime); GlobalDb.ScheduleJob().Close(); } }