Files
parr_api/PARR.AIHITRelationshipsSyncer/RelationshipsSyncer.cs

72 lines
2.8 KiB
C#

using Microsoft.Extensions.Logging;
using PARR.AIHITRelationshipsSyncer.Services.Interfaces;
using PARR.AIHITRelationshipsSyncer.Settings;
using PARR.BLL.Services.Interfaces;
namespace PARR.AIHITRelationshipsSyncer
{
internal class RelationshipsSyncer : IRelationshipsSyncer
{
private readonly ILogger<RelationshipsSyncer> logger;
private readonly IIntervalService intervalService;
private readonly IAihitService aihitService;
private readonly IRelationshipsSyncService relationshipsSyncService;
private readonly WorkerSettings workerSettings;
public RelationshipsSyncer(
ILogger<RelationshipsSyncer> logger,
IIntervalService intervalService,
IAihitService aihitService,
IRelationshipsSyncService relationshipsSyncService,
WorkerSettings workerSettings
)
{
this.logger = logger;
this.intervalService = intervalService;
this.aihitService = aihitService;
this.relationshipsSyncService = relationshipsSyncService;
this.workerSettings = workerSettings;
}
public async Task StartAsync()
{
logger.LogInformation("Запуск сервиса синхронизации связей иерархии ЭК из АИХ ИТ в ПАРР");
await intervalService.IntervalInitAsync(async () =>
{
try
{
logger.LogInformation($"Начата загрузка иерархических связей между ЭК из АИХ ИТ");
var aihitdata = aihitService.GetData();
var aihitDataCount = aihitdata?.Count();
if (aihitdata == null || aihitDataCount == 0)
{
logger.LogInformation("АИХ ИТ вернул пустые данные");
return;
}
//File.WriteAllText("MockData.json", aihitdata.ToJson());
//string text = File.OpenText("MockData.json").ReadToEnd();
//var aihitdata = JsonSerializer.Deserialize<List<AihitData>>(text);
await relationshipsSyncService.SyncAsync(aihitdata.ToList());
}
catch (Exception ex)
{
logger.LogError(ex, "Ошибка синхронизации иерархических данных Unit из АИХ ИТ в ПАРР");
}
finally
{
logger.LogInformation($"Завершена загрузка иерархических связей между ЭК из АИХ ИТ");
}
}, workerSettings.RepeatEvery);
}
}
}