43 lines
1.4 KiB
C#
43 lines
1.4 KiB
C#
using Disco.Data.Repository;
|
|
using Disco.Services.Tasks;
|
|
using Quartz;
|
|
using System;
|
|
|
|
namespace Disco.Services.Exporting
|
|
{
|
|
public class SavedExportTask : ScheduledTask
|
|
{
|
|
public override string TaskName { get; } = "Saved Export Scheduler";
|
|
public override bool SingleInstanceTask { get; } = true;
|
|
public override bool CancelInitiallySupported { get; } = false;
|
|
public override bool LogExceptionsOnly { get; } = true;
|
|
|
|
public override void InitalizeScheduledTask(DiscoDataContext Database)
|
|
{
|
|
|
|
// run in 30 seconds, then every hour on the hour
|
|
if (DateTime.Now.Minute != 59)
|
|
{
|
|
var immediateTrigger = TriggerBuilder.Create().StartAt(DateTimeOffset.Now.AddSeconds(30));
|
|
ScheduleTask(immediateTrigger);
|
|
}
|
|
|
|
var nextHourTicks = DateTime.UtcNow.Ticks;
|
|
nextHourTicks -= nextHourTicks % TimeSpan.TicksPerHour; // round down to the hour
|
|
var nextHour = new DateTime(nextHourTicks, DateTimeKind.Utc)
|
|
.AddHours(1)
|
|
.AddSeconds(1);
|
|
var hourlyTrigger = TriggerBuilder.Create()
|
|
.StartAt(nextHour)
|
|
.WithSchedule(SimpleScheduleBuilder.RepeatHourlyForever());
|
|
ScheduleTask(hourlyTrigger);
|
|
}
|
|
|
|
protected override void ExecuteTask()
|
|
{
|
|
SavedExports.EvaluateSavedExportSchedules();
|
|
}
|
|
|
|
}
|
|
}
|