using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Volo.Abp.BackgroundWorkers; using Volo.Abp.Threading; using Volo.Abp.Uow; using Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent.Outgoing; namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent; public class MesOutgoingBackgroundWorker : AsyncPeriodicBackgroundWorkerBase { private readonly string Outgoing = "MES Outgoing"; private readonly IOptions _options; public MesOutgoingBackgroundWorker( AbpAsyncTimer timer , IOptions options , IServiceScopeFactory serviceScopeFactory ) : base(timer, serviceScopeFactory) { _options = options; Timer.Period = options.Value.OutgoingOptions.PeriodSeconds * 1000; //default 10 minutes } [UnitOfWork] protected override async Task DoWorkAsync(PeriodicBackgroundWorkerContext workerContext) { Logger.LogInformation($"Starting: Handling {Outgoing}"); if (!_options.Value.IncomingOptions.Active) { Logger.LogInformation($"{Outgoing} is not active!"); return; } Logger.LogInformation($"Write Issue"); var issueConvert = workerContext.ServiceProvider.GetRequiredService(); var issueNoteList = await issueConvert.ConvertAsync().ConfigureAwait(false); var issueWriter = workerContext.ServiceProvider.GetRequiredService(); await issueWriter.WriteAsync(issueNoteList).ConfigureAwait(false); Logger.LogInformation($"Completed: Handling {Outgoing}"); } }