2023-11-15 16:34:28 +10:00
|
|
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
|
|
|
|
using Microsoft.Extensions.Logging;
|
2023-11-29 15:59:27 +10:00
|
|
|
|
using PARR.BLL.Services.Interfaces;
|
2023-11-15 16:34:28 +10:00
|
|
|
|
using PARR.Master.Services;
|
2023-10-24 12:14:22 +10:00
|
|
|
|
using PARR.Master.Settings;
|
|
|
|
|
|
|
|
|
|
|
|
namespace PARR.Master
|
|
|
|
|
|
{
|
|
|
|
|
|
internal class Master : IMaster
|
|
|
|
|
|
{
|
|
|
|
|
|
private readonly WorkerSettings settings;
|
|
|
|
|
|
private readonly ILogger<Master> logger;
|
2023-11-15 16:34:28 +10:00
|
|
|
|
private readonly IServiceProvider serviceProvider;
|
2023-11-29 15:59:27 +10:00
|
|
|
|
private readonly IIntervalService intervalService;
|
2023-10-24 12:14:22 +10:00
|
|
|
|
|
|
|
|
|
|
public Master(
|
|
|
|
|
|
WorkerSettings settings,
|
2023-11-15 16:34:28 +10:00
|
|
|
|
ILogger<Master> logger,
|
2023-11-29 15:59:27 +10:00
|
|
|
|
IServiceProvider serviceProvider,
|
|
|
|
|
|
IIntervalService intervalService
|
2023-10-24 12:14:22 +10:00
|
|
|
|
)
|
|
|
|
|
|
{
|
|
|
|
|
|
this.settings = settings;
|
|
|
|
|
|
this.logger = logger;
|
2023-11-15 16:34:28 +10:00
|
|
|
|
this.serviceProvider = serviceProvider;
|
2023-11-29 15:59:27 +10:00
|
|
|
|
this.intervalService = intervalService;
|
2023-10-24 12:14:22 +10:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public async Task StartAsync()
|
|
|
|
|
|
{
|
|
|
|
|
|
logger.LogInformation("Запуск сервиса.");
|
|
|
|
|
|
|
2023-11-29 15:59:27 +10:00
|
|
|
|
await intervalService.IntervalInitAsync(ManageOrdersAsync, settings.RepeatEvery);
|
2023-10-24 12:14:22 +10:00
|
|
|
|
|
2023-11-29 15:59:27 +10:00
|
|
|
|
//var nextStart = DateTime.Now;
|
2023-10-24 12:14:22 +10:00
|
|
|
|
|
2023-11-29 15:59:27 +10:00
|
|
|
|
//while (true)
|
|
|
|
|
|
//{
|
|
|
|
|
|
// if (nextStart.Hour == DateTime.Now.Hour && nextStart.Minute == DateTime.Now.Minute)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// logger.LogInformation("Запуск по расписанию.");
|
2023-10-24 12:14:22 +10:00
|
|
|
|
|
2023-11-29 15:59:27 +10:00
|
|
|
|
// await ManageOrdersAsync();
|
2023-10-24 12:14:22 +10:00
|
|
|
|
|
2023-11-29 15:59:27 +10:00
|
|
|
|
// nextStart = DateTime.Now.Add(settings.RepeatEvery);
|
|
|
|
|
|
// logger.LogInformation($"Следующая дата запуска: {nextStart}");
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
// // Каждую минуту
|
|
|
|
|
|
// await Task.Delay(60 * 1000);
|
|
|
|
|
|
// }
|
2023-10-24 12:14:22 +10:00
|
|
|
|
}
|
2023-11-15 16:34:28 +10:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private async Task ManageOrdersAsync()
|
|
|
|
|
|
{
|
|
|
|
|
|
using (var scope = serviceProvider.CreateScope())
|
|
|
|
|
|
{
|
|
|
|
|
|
var orderMasterService = scope.ServiceProvider.GetService<IOrderMasterService>();
|
|
|
|
|
|
if (orderMasterService == null)
|
|
|
|
|
|
throw new Exception("Не смог получить серивс IOrderMasterService, scope.ServiceProvider.GetService<IOrderMasterService>()");
|
|
|
|
|
|
|
|
|
|
|
|
await orderMasterService.ManageOrdersAsync();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2023-10-24 12:14:22 +10:00
|
|
|
|
}
|
|
|
|
|
|
}
|