From 04db085635c5172e94076dc308d720a79ea72b25 Mon Sep 17 00:00:00 2001 From: Mikhail Kuznetsov Date: Tue, 27 May 2025 16:45:45 +1000 Subject: [PATCH] =?UTF-8?q?feat(aihitRelationshipsSyncer):=20=D0=BB=D0=BE?= =?UTF-8?q?=D0=B3=D0=B8=D0=BA=D0=B0=20=D1=81=D0=B8=D0=BD=D1=85=D1=80=D0=BE?= =?UTF-8?q?=D0=BD=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D0=B8=20=D0=B4=D0=BE=D1=87?= =?UTF-8?q?=D0=B5=D1=80=D0=BD=D0=B5=D0=B9=20=D1=81=D0=B2=D1=8F=D0=B7=D1=82?= =?UTF-8?q?=D0=B8=20=D0=B2=D1=8B=D0=BD=D0=B5=D1=81=D0=B5=D0=BD=D0=B0=20?= =?UTF-8?q?=D0=B2=20=D0=BE=D1=82=D0=B4=D0=B5=D0=BB=D1=8C=D0=BD=D1=8B=D0=B9?= =?UTF-8?q?=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../RelationshipsSyncSrevice.cs | 56 ++++++++++--------- 1 file changed, 31 insertions(+), 25 deletions(-) diff --git a/PARR.AIHITRelationshipsSyncer/Services/Implementations/RelationshipsSyncSrevice.cs b/PARR.AIHITRelationshipsSyncer/Services/Implementations/RelationshipsSyncSrevice.cs index a1e94350..926e71a6 100644 --- a/PARR.AIHITRelationshipsSyncer/Services/Implementations/RelationshipsSyncSrevice.cs +++ b/PARR.AIHITRelationshipsSyncer/Services/Implementations/RelationshipsSyncSrevice.cs @@ -47,31 +47,7 @@ namespace PARR.AIHITRelationshipsSyncer.Services.Implementations { //if (childName.ToLower() != "рпа-робин-рцку-спиуи-прочее-26-гор") // continue; - //Ищем детей по имени - var child = unit.ChildUnits.FirstOrDefault(t => t.ChildUnit?.Name.ToLower() == childName!.ToLower().Trim()); - - //не нашли создаём и сразу пишем в базу, чтобы если попадуться дубликаты в списке они были созданы - if (child == null) - { - var childUnit = await GetUnitByNameAsync(childName!); - unit.ChildUnits.Add( - new UnitInUnit - { - ParentUnitId = unit.Id, - ChildUnitId = childUnit.Id, - DateCreated = DateTimeOffset.UtcNow, - DateSynced = DateTimeOffset.UtcNow - } - ); - - if (!await unitService.CommitAsync()) - logger.LogError($"Не удалось создать связь Unit {unit.Name} с {childUnit.Name}"); - else - logger.LogInformation($"----- Создана новая связь Unit {unit.Name} с {childUnit.Name} -----"); - } - //Для всех обновляем дату синхронизации - else - child.DateSynced = DateTimeOffset.UtcNow; + await SyncChildUnit(unit, childName!); } //После проверки пришедших к нам из АИХ ИТ дочерних связей удаляем лишние/уже не существующие в базе @@ -108,6 +84,35 @@ namespace PARR.AIHITRelationshipsSyncer.Services.Implementations } } + private async Task SyncChildUnit(Unit unit, string childName) + { + //Ищем детей по имени + var child = unit.ChildUnits.FirstOrDefault(t => t.ChildUnit?.Name.ToLower() == childName!.ToLower().Trim()); + + //Не нашли создаём и сразу пишем в базу, чтобы если попадуться дубликаты в списке они были созданы + if (child == null) + { + var childUnit = await GetUnitByNameAsync(childName!); + unit.ChildUnits.Add( + new UnitInUnit + { + ParentUnitId = unit.Id, + ChildUnitId = childUnit.Id, + DateCreated = DateTimeOffset.UtcNow, + DateSynced = DateTimeOffset.UtcNow + } + ); + + if (!await unitService.CommitAsync()) + logger.LogError($"Не удалось создать связь Unit {unit.Name} с {childUnit.Name}"); + else + logger.LogInformation($"----- Создана новая связь Unit {unit.Name} с {childUnit.Name} -----"); + } + //Для всех обновляем дату синхронизации + else + child.DateSynced = DateTimeOffset.UtcNow; + } + /// /// Удаление дочерних связей у ЭК @@ -159,6 +164,7 @@ namespace PARR.AIHITRelationshipsSyncer.Services.Implementations return await unitService.Get() .Include(u => u.ChildUnits) + .ThenInclude(t=>t.ChildUnit) .FirstAsync(u => u.Name.ToLower() == ekName.ToLower().Trim()); } }