diff --git a/Libs/YPermitin.FIASToolSet.DistributionLoader/FIASDistributionLoader.cs b/Libs/YPermitin.FIASToolSet.DistributionLoader/FIASDistributionLoader.cs index b37297d..3105271 100644 --- a/Libs/YPermitin.FIASToolSet.DistributionLoader/FIASDistributionLoader.cs +++ b/Libs/YPermitin.FIASToolSet.DistributionLoader/FIASDistributionLoader.cs @@ -199,7 +199,7 @@ public string ExtractDataForRegion(Region region) if (regionItem == null) { throw new RegionNotFoundException( - $"Не найден регион с кодом \"{region}\" среди достпных регионов в дистрибутиве ФИАС.", + $"Не найден регион с кодом \"{region.Code}\" среди доступных регионов в дистрибутиве ФИАС.", region.ToString()); } diff --git a/Libs/YPermitin.FIASToolSet.Jobs/JobItems/InstallAndUpdateFIASJob.cs b/Libs/YPermitin.FIASToolSet.Jobs/JobItems/InstallAndUpdateFIASJob.cs index f21707a..8c6d683 100644 --- a/Libs/YPermitin.FIASToolSet.Jobs/JobItems/InstallAndUpdateFIASJob.cs +++ b/Libs/YPermitin.FIASToolSet.Jobs/JobItems/InstallAndUpdateFIASJob.cs @@ -4,6 +4,7 @@ using Quartz; using YPermitin.FIASToolSet.DistributionBrowser.Models; using YPermitin.FIASToolSet.DistributionLoader; +using YPermitin.FIASToolSet.DistributionLoader.Exceptions; namespace YPermitin.FIASToolSet.Jobs.JobItems; @@ -32,14 +33,22 @@ public InstallAndUpdateFIASJob( _configuration = configuration; _workingDirectory = _configuration.GetValue("FIASToolSet:WorkingDirectory", string.Empty); - - _availableRegions = _configuration + + var availableRegionsAsStrings = _configuration .GetSection("FIASToolSet:Regions") - .Get>() - .DefaultIfEmpty() - .Where(e => int.TryParse(e, out _)) - .Select(int.Parse) - .ToList(); + .Get>(); + if (availableRegionsAsStrings == null || availableRegionsAsStrings.Count == 0) + { + _availableRegions = new List(); + } + else + { + _availableRegions = availableRegionsAsStrings + .DefaultIfEmpty() + .Where(e => int.TryParse(e, out _)) + .Select(int.Parse) + .ToList(); + } _removeArchiveDistributionFiles = _configuration.GetValue("FIASToolSet:ClearTempDistributionFiles:RemoveArchiveDistributionFiles", false); @@ -129,11 +138,25 @@ await loader.DownloadAndExtractDistribution(args => await loader.LoadNormativeDocKinds(); await loader.LoadNormativeDocTypes(); - var availableRegions = loader.GetAvailableRegions() - .Where(e => _availableRegions.Contains(e.Code)); + var availableRegions = loader.GetAvailableRegions(); + if (_availableRegions.Count > 0) + { + availableRegions = availableRegions + .Where(e => _availableRegions.Contains(e.Code)) + .ToList(); + } + foreach (var availableRegion in availableRegions) { - loader.ExtractDataForRegion(availableRegion); + try + { + loader.ExtractDataForRegion(availableRegion); + } + catch (RegionNotFoundException) + { + _logger.LogError($"Не найден регион с кодом ${availableRegion.Code} среди доступных регионов в дистрибутиве ФИАС. Загрузка пропущена."); + continue; + } await loader.LoadNormativeDocuments(availableRegion); await loader.LoadAddressObjects(availableRegion);