2024-04-03 12:05:44 -07:00

79 lines
2.4 KiB
C#

using FabApprovalWorkerService.Clients;
using FabApprovalWorkerService.Services;
using FabApprovalWorkerService.Workers;
using NLog.Extensions.Logging;
using Quartz;
using System.Net.Mail;
HostApplicationBuilder builder = Host.CreateApplicationBuilder(args);
builder.Logging.ClearProviders();
builder.Logging.SetMinimumLevel(LogLevel.Trace);
builder.Logging.AddNLog();
builder.Services.AddHttpClient();
builder.Services.AddScoped<IDbConnectionService, DbConnectionService>();
builder.Services.AddScoped<IMonInWorkerClient, MonInWorkerClient>();
builder.Services.AddScoped<IDalService, DalService>();
builder.Services.AddScoped<SmtpClient>((serviceProvider) => {
return new SmtpClient("mailrelay-external.infineon.com");
});
builder.Services.AddScoped<ISmtpClientWrapper, SmtpClientWrapper>();
builder.Services.AddScoped<ISmtpService, SmtpService>();
builder.Services.AddScoped<IUserService, UserService>();
builder.Services.AddScoped<IECNService, ECNService>();
builder.Services.AddQuartz(q => {
JobKey pendingOOOStatusJob = new JobKey("Pending OOO status job");
q.AddJob<PendingOOOStatusWorker>(opts => opts
.WithIdentity(pendingOOOStatusJob)
);
q.AddTrigger(opts => opts
.ForJob(pendingOOOStatusJob)
.WithIdentity("Pending OOO status trigger")
.WithCronSchedule(CronScheduleBuilder.DailyAtHourAndMinute(0, 0))
);
JobKey expiredOOOStatusJob = new JobKey("Expired OOO status job");
q.AddJob<ExpiredOOOStatusWorker>(opts => opts
.WithIdentity(expiredOOOStatusJob)
);
q.AddTrigger(opts => opts
.ForJob(expiredOOOStatusJob)
.WithIdentity("Expired OOO status trigger")
.WithCronSchedule(CronScheduleBuilder.DailyAtHourAndMinute(0, 0))
);
JobKey expiringTECNJob = new JobKey("Expiring TECN job");
q.AddJob<ExpiringTECNWorker>(opts => opts
.WithIdentity(expiringTECNJob)
);
q.AddTrigger(opts => opts
.ForJob(expiringTECNJob)
.WithIdentity("Expiring TECN trigger")
.WithSimpleSchedule(x => x
.WithIntervalInMinutes(10)
.RepeatForever()
)
.StartNow()
);
});
builder.Services.AddQuartzHostedService(opt => {
opt.WaitForJobsToComplete = true;
});
builder.Services.AddWindowsService(options => {
options.ServiceName = "Fab Approval Worker Service";
});
builder.Services.AddHostedService<WindowsService>();
IHost app = builder.Build();
app.Run();