feat(aihitRelationshipsSyncer): логика синхронизации дочерней связти вынесена в отдельный метод

This commit is contained in:
Mikhail Kuznetsov
2025-05-27 16:45:45 +10:00
parent 2348e59c36
commit 04db085635

View File

@@ -47,31 +47,7 @@ namespace PARR.AIHITRelationshipsSyncer.Services.Implementations
{ {
//if (childName.ToLower() != "рпа-робин-рцку-спиуи-прочее-26-гор") //if (childName.ToLower() != "рпа-робин-рцку-спиуи-прочее-26-гор")
// continue; // continue;
//Ищем детей по имени await SyncChildUnit(unit, 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;
} }
//После проверки пришедших к нам из АИХ ИТ дочерних связей удаляем лишние/уже не существующие в базе //После проверки пришедших к нам из АИХ ИТ дочерних связей удаляем лишние/уже не существующие в базе
@@ -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;
}
/// <summary> /// <summary>
/// Удаление дочерних связей у ЭК /// Удаление дочерних связей у ЭК
@@ -159,6 +164,7 @@ namespace PARR.AIHITRelationshipsSyncer.Services.Implementations
return await unitService.Get() return await unitService.Get()
.Include(u => u.ChildUnits) .Include(u => u.ChildUnits)
.ThenInclude(t=>t.ChildUnit)
.FirstAsync(u => u.Name.ToLower() == ekName.ToLower().Trim()); .FirstAsync(u => u.Name.ToLower() == ekName.ToLower().Trim());
} }
} }