using DigitalData.Modules.Logging; using EnvelopeGenerator.Common; using EnvelopeGenerator.Web.Services; using Quartz; namespace EnvelopeGenerator.Web { public class Program { public static void Main(string[] args) { var builder = WebApplication.CreateBuilder(args); // Add base services builder.Services.AddSingleton(); builder.Services.AddTransient(); // Add higher order services builder.Services.AddSingleton(); // Add services to the container. builder.Services.AddControllersWithViews().AddJsonOptions(q => { // Prevents serialization error when serializing SvgBitmap in EnvelopeReceiver q.JsonSerializerOptions.ReferenceHandler = System.Text.Json.Serialization.ReferenceHandler.IgnoreCycles; }); // Configure and start scheduler builder.Services.AddQuartz(q => { Scheduler scheduler = InitScheduler(builder); scheduler.ScheduleJob(q, "CertificateDocument", 5); }); builder.Services.AddQuartzHostedService(); var app = builder.Build(); // Configure the HTTP request pipeline. if (!app.Environment.IsDevelopment()) { app.UseExceptionHandler("/Home/Error"); // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseAuthorization(); app.MapControllers(); app.Run(); } private static LogConfig InitLogger(WebApplicationBuilder builder) { string logPath = builder.Configuration.GetValue("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("Config:ConnectionString"); Scheduler scheduler = new(logConfig, connectionString); return scheduler; } } }