Files
Disco/Disco.Services/Devices/Exporting/DeviceExportTask.cs
T
Gary Sharp f70261aa25 #34 Update: Additional Validation & UI Changes
Ensure at least one field is selected, and UI improvements.
2014-05-22 12:11:26 +10:00

48 lines
1.5 KiB
C#

using Disco.Models.Repository;
using Disco.Models.Services.Devices.Exporting;
using Disco.Services.Tasks;
using Quartz;
using System;
using System.IO;
using System.Linq;
using Disco.Data.Repository;
namespace Disco.Services.Devices.Exporting
{
public class DeviceExportTask : ScheduledTask
{
private const string JobDataMapContext = "Context";
public override string TaskName { get { return "Export Devices"; } }
public override bool SingleInstanceTask { get { return false; } }
public override bool CancelInitiallySupported { get { return false; } }
public static DeviceExportTaskContext ScheduleNow(DeviceExportOptions Options)
{
// Build Context
var context = new DeviceExportTaskContext(Options);
// Build Data Map
var task = new DeviceExportTask();
JobDataMap taskData = new JobDataMap() { { JobDataMapContext, context} };
// Schedule Task
context.TaskStatus = task.ScheduleTask(taskData);
return context;
}
protected override void ExecuteTask()
{
var context = (DeviceExportTaskContext)this.ExecutionContext.JobDetail.JobDataMap[JobDataMapContext];
Status.UpdateStatus(10, "Exporting Device Records", "Starting...");
using (DiscoDataContext Database = new DiscoDataContext())
{
context.Result = DeviceExport.GenerateExport(Database, context.Options, this.Status);
}
}
}
}