feat(aihitRelationshipsSyncer): логика синхронизации дочерней связти вынесена в отдельный метод
This commit is contained in:
@@ -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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user