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 logger; private readonly IIntervalService intervalService; private readonly IAihitService aihitService; private readonly IRelationshipsSyncService relationshipsSyncService; private readonly WorkerSettings workerSettings; public RelationshipsSyncer( ILogger 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>(text); await relationshipsSyncService.SyncAsync(aihitdata.ToList()); } catch (Exception ex) { logger.LogError(ex, "Ошибка синхронизации иерархических данных Unit из АИХ ИТ в ПАРР"); } finally { logger.LogInformation($"Завершена загрузка иерархических связей между ЭК из АИХ ИТ"); } }, workerSettings.RepeatEvery); } } }