scheduler

This commit is contained in:
Jonathan Jenne
2023-12-01 15:05:41 +01:00
parent 3ca992e043
commit bdff38410c
13 changed files with 178 additions and 51 deletions

View File

@@ -56,7 +56,7 @@ namespace EnvelopeGenerator.Web.Controllers
envelopeService.EnsureValidEnvelopeKey(envelopeKey);
EnvelopeResponse response = envelopeService.LoadEnvelope(envelopeKey);
actionService.OpenEnvelope(response.Envelope, response.Receiver.Id);
actionService.OpenEnvelope(response.Envelope, response.Receiver);
return Ok();
}

View File

@@ -64,7 +64,7 @@ namespace EnvelopeGenerator.Web.Controllers
//emailService.SendSignedEmail(response.Receiver.Id, response.Envelope.Id);
var signResult = actionService?.SignEnvelope(response.Envelope, response.Receiver.Id);
var signResult = actionService?.SignEnvelope(response.Envelope, response.Receiver);
return Ok();
}

View File

@@ -9,6 +9,10 @@
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
<PackageReference Include="NLog" Version="5.2.5" />
<PackageReference Include="Quartz" Version="3.8.0" />
<PackageReference Include="Quartz.AspNetCore" Version="3.8.0" />
<PackageReference Include="Quartz.Plugins" Version="3.8.0" />
<PackageReference Include="Quartz.Serialization.Json" Version="3.8.0" />
<PackageReference Include="System.Data.SqlClient" Version="4.8.5" />
<PackageReference Include="System.Drawing.Common" Version="7.0.0" />
</ItemGroup>

View File

@@ -1,4 +1,7 @@
using DigitalData.Modules.Logging;
using EnvelopeGenerator.Common;
using EnvelopeGenerator.Web.Services;
using Quartz;
namespace EnvelopeGenerator.Web
{
@@ -18,6 +21,14 @@ namespace EnvelopeGenerator.Web
// Add services to the container.
builder.Services.AddControllersWithViews();
// Configure and start scheduler
builder.Services.AddQuartz(q =>
{
Scheduler scheduler = InitScheduler(builder);
scheduler.ScheduleJob<CertificateDocumentJob>(q, "CertificateDocument", 5);
});
builder.Services.AddQuartzHostedService();
var app = builder.Build();
// Configure the HTTP request pipeline.
@@ -39,5 +50,19 @@ namespace EnvelopeGenerator.Web
app.Run();
}
private static LogConfig InitLogger(WebApplicationBuilder builder)
{
string logPath = builder.Configuration.GetValue<string>("Config:LogPath");
return new LogConfig(LogConfig.PathType.CustomPath, logPath, "Scheduler", "Digital Data", "ECM.EnvelopeGenerator.Web");
}
private static Scheduler InitScheduler( WebApplicationBuilder builder)
{
LogConfig logConfig = InitLogger(builder);
string connectionString = builder.Configuration.GetValue<string>("Config:ConnectionString");
Scheduler scheduler = new(logConfig, connectionString);
return scheduler;
}
}
}

View File

@@ -0,0 +1,44 @@
using DigitalData.Modules.Base;
using DigitalData.Modules.Logging;
using EnvelopeGenerator.Common;
using Quartz;
using System;
using System.Collections.Specialized;
using System.ComponentModel.DataAnnotations;
namespace EnvelopeGenerator.Web
{
public class Scheduler : BaseClass
{
private const string DATABASE = "DATABASE";
private const string LOGCONFIG = "LOGCONFIG";
private string ConnectionString;
public Scheduler(LogConfig logConfig, string connectionString) : base(logConfig)
{
this.ConnectionString = connectionString;
}
public void ScheduleJob<TJob>(IServiceCollectionQuartzConfigurator q, string name, int interval) where TJob : IJob
{
var jobKey = new JobKey(name);
var jobData = new JobDataMap
{
{ DATABASE, ConnectionString },
{ LOGCONFIG, LogConfig }
};
q.AddJob<TJob>(opts => opts
.WithIdentity(jobKey)
.UsingJobData(jobData));
q.AddTrigger(opts => opts
.ForJob(jobKey)
.WithIdentity($"{name}-trigger")
.WithSimpleSchedule(s => s
.RepeatForever()
.WithIntervalInMinutes(interval)));
}
}
}