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