/// <inheritdoc /> public Task <long> Create(ScheduledTaskData data) { ScheduledDays days = data.Days; if (days == ScheduledDays.None) { days = ScheduledDays.All; } DateTime?nextexecution = data.FirstExecutionTime(); return(insert.ExecuteAsync(data.Name, data.WorkableType, data.WorkableName, data.WorkableRevision, nextexecution, days, data.Interval)); }
static DateTime?ExecutionTime(this ScheduledTaskData task, DateTime time) { ScheduledDays dayfilter = task.Days; if (dayfilter == ScheduledDays.None) { dayfilter = ScheduledDays.All; } while ((time.DayOfWeek.ToScheduledDays() & dayfilter) == ScheduledDays.None) { time += TimeSpan.FromDays(1.0); } return(time); }
public override bool Insert(Schedule schedule, DataAccessTransaction trx) { if (!InsertSchedule(schedule, trx)) { return(false); } ScheduledDays days = (ScheduledDays)schedule; string sql = "INSERT INTO {0} ( SCHEDULE_ID, INTERVAL, STARTDATE, RUNATTIME, SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY ) VALUES ( @SCHEDULE_ID, @INTERVAL, @STARTDATE, @RUNATTIME, @SUNDAY, @MONDAY, @TUESDAY, @WEDNESDAY, @THURSDAY, @FRIDAY, @SATURDAY )"; using (IDbCommand cmd = GetCommand(string.Format(sql, TableName), trx)) { cmd.Parameters.Add(GetDataParameter("@SCHEDULE_ID", days.Id)); cmd.Parameters.Add(GetDataParameter("@INTERVAL", days.Interval)); cmd.Parameters.Add(GetDataParameter("@STARTDATE", days.StartDate.Date)); cmd.Parameters.Add(GetDataParameter("@RUNATTIME", days.RunAtTimeToString())); cmd.Parameters.Add(GetDataParameter("@SUNDAY", days.Days[(int)DayOfWeek.Sunday] == true ? 1 : 0)); cmd.Parameters.Add(GetDataParameter("@MONDAY", days.Days[(int)DayOfWeek.Monday] == true ? 1 : 0)); cmd.Parameters.Add(GetDataParameter("@TUESDAY", days.Days[(int)DayOfWeek.Tuesday] == true ? 1 : 0)); cmd.Parameters.Add(GetDataParameter("@WEDNESDAY", days.Days[(int)DayOfWeek.Wednesday] == true ? 1 : 0)); cmd.Parameters.Add(GetDataParameter("@THURSDAY", days.Days[(int)DayOfWeek.Thursday] == true ? 1 : 0)); cmd.Parameters.Add(GetDataParameter("@FRIDAY", days.Days[(int)DayOfWeek.Friday] == true ? 1 : 0)); cmd.Parameters.Add(GetDataParameter("@SATURDAY", days.Days[(int)DayOfWeek.Saturday] == true ? 1 : 0)); try { cmd.ExecuteNonQuery(); } catch (SQLiteException e) { Log.Debug(string.Format("Insert {0}, ID={1} - {2}", TableName, schedule.Id, e)); if (e.ErrorCode == SQLiteErrorCode.Constraint) { return(false); // assume we have a 'duplicate' error. } throw new DataAccessException(string.Format("ID:{0}, SQL:{1}", schedule.Id, sql), e); } } return(true); }
public IActionResult OnGet() { var initResult = Init(); if (initResult != null) { return(initResult); } InitPage(); if (Plan == null) { return(NotFound()); } Enabled = Plan.Enabled; Id = Plan.Id; Name = Plan.Name; StartDate = Plan.StartDate; if (StartDate.HasValue) { StartDate = StartDate.Value; } EndDate = Plan.EndDate; if (EndDate.HasValue) { EndDate = EndDate.Value; } Type = Plan.Type; NextTriggerTime = Plan.NextTriggerTime; IntervalInMinutes = Plan.IntervalInMinutes; JobTypeName = $"{Plan.JobType.Name} ({Plan.JobType.Id})"; if (Plan.ScheduledDays.ScheduledOnSunday) { ScheduledDays.Add(DayOfWeek.Sunday.ToString()); } if (Plan.ScheduledDays.ScheduledOnMonday) { ScheduledDays.Add(DayOfWeek.Monday.ToString()); } if (Plan.ScheduledDays.ScheduledOnTuesday) { ScheduledDays.Add(DayOfWeek.Tuesday.ToString()); } if (Plan.ScheduledDays.ScheduledOnWednesday) { ScheduledDays.Add(DayOfWeek.Wednesday.ToString()); } if (Plan.ScheduledDays.ScheduledOnThursday) { ScheduledDays.Add(DayOfWeek.Thursday.ToString()); } if (Plan.ScheduledDays.ScheduledOnFriday) { ScheduledDays.Add(DayOfWeek.Friday.ToString()); } if (Plan.ScheduledDays.ScheduledOnSaturday) { ScheduledDays.Add(DayOfWeek.Saturday.ToString()); } if (Plan.StartTimespan != null) { StartTimespan = new DateTime(2000, 1, 1).AddMinutes(Plan.StartTimespan.Value); } if (Plan.EndTimespan != null) { EndTimespan = new DateTime(2000, 1, 1).AddMinutes(Plan.EndTimespan.Value); } BeforeRender(); return(Page()); }