fix(aihit): после создания нового хоста не обновлялось его программное обеспечение

This commit is contained in:
Mikhail Kuznetsov
2024-01-17 15:58:51 +10:00
parent 13652ba9aa
commit 26c627fe93

View File

@@ -131,13 +131,13 @@ namespace PARR.AIHIT
if (ek.IP == null) if (ek.IP == null)
continue; continue;
var foundHost = await hostService.GetHostWithAppsAsync(ek.IP); var host = await hostService.GetHostWithAppsAsync(ek.IP);
var mappedHost = mapper.Map<Host>(ek); var mappedHost = mapper.Map<Host>(ek);
//TODO Валидация по внешним связям //TODO Валидация по внешним связям
var hostApplications = await GetAndFillApplicationsAsync(ek); var hostApplications = await GetAndFillApplicationsAsync(ek);
if (foundHost == null) if (host == null)
{ {
// создаем // создаем
if (!await hostService.CreateAsync(mappedHost) || !await hostService.CommitAsync()) if (!await hostService.CreateAsync(mappedHost) || !await hostService.CommitAsync())
@@ -148,28 +148,28 @@ namespace PARR.AIHIT
else else
logger.LogInformation($"----- Создан Host: {mappedHost.Id} -----"); logger.LogInformation($"----- Создан Host: {mappedHost.Id} -----");
host = await hostService.GetHostWithAppsAsync(mappedHost.IP);
// Синхронизация Applications // Синхронизация Applications
await SyncApplicationAndHostAsync(foundHost, hostApplications); await SyncApplicationAndHostAsync(host, hostApplications);
} }
else else
{ {
// обновляем // обновляем
var isChanged = false; var isChanged = false;
if (!foundHost.EkStatusCode!.Equals(mappedHost.EkStatusCode)) if (!host.EkStatusCode!.Equals(mappedHost.EkStatusCode))
{ {
foundHost.EkStatusCode = mappedHost.EkStatusCode; host.EkStatusCode = mappedHost.EkStatusCode;
isChanged = true; isChanged = true;
} }
else if (mappedHost.WorkGroup != null && (foundHost.WorkGroup == null || !foundHost.WorkGroup!.Equals(mappedHost.WorkGroup))) else if (mappedHost.WorkGroup != null && (host.WorkGroup == null || !host.WorkGroup!.Equals(mappedHost.WorkGroup)))
{ {
foundHost.WorkGroup = mappedHost.WorkGroup; host.WorkGroup = mappedHost.WorkGroup;
isChanged = true; isChanged = true;
} }
if (isChanged) if (isChanged)
{ {
foundHost.DateModified = DateTimeOffset.UtcNow; host.DateModified = DateTimeOffset.UtcNow;
if (!await hostService.CommitAsync()) if (!await hostService.CommitAsync())
logger.LogError($"Не удалось обновить узел {mappedHost.IP}"); logger.LogError($"Не удалось обновить узел {mappedHost.IP}");
else else
@@ -177,11 +177,18 @@ namespace PARR.AIHIT
} }
// Синхронизация Applications // Синхронизация Applications
await SyncApplicationAndHostAsync(foundHost, hostApplications, true); await SyncApplicationAndHostAsync(host, hostApplications, true);
} }
} }
} }
/// <summary>
/// Метод синхронизации
/// </summary>
/// <param name="host">Хост</param>
/// <param name="hostApplications">Список программного обеспечения</param>
/// <param name="isUpdateDateModified">Признак обновления поля DateModified</param>
/// <returns></returns>
private async Task SyncApplicationAndHostAsync(Host? host, List<Application> hostApplications, bool isUpdateDateModified = false) private async Task SyncApplicationAndHostAsync(Host? host, List<Application> hostApplications, bool isUpdateDateModified = false)
{ {