From 349cf558624ba0b404f01b5722c5081f1fdc6ae5 Mon Sep 17 00:00:00 2001 From: Mikhail Kuznetsov Date: Thu, 30 Jul 2026 14:18:04 +1000 Subject: [PATCH] =?UTF-8?q?feat(shortcodesService):=20=D0=94=D0=BE=D0=BF?= =?UTF-8?q?=D0=BE=D0=BB=D0=BD=D0=B8=D1=82=D0=B5=D0=BB=D1=8C=D0=BD=D0=B0?= =?UTF-8?q?=D1=8F=20=D0=B4=D0=B5=D1=82=D0=B5=D1=80=D0=BC=D0=B8=D0=BD=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D1=8F=20=D1=81=D0=BF=D0=B8=D1=81=D0=BA=D0=B0=20?= =?UTF-8?q?=D0=B2=20=D1=88=D0=BE=D1=80=D1=82=D0=BA=D0=BE=D0=B4=D0=B5=20?= =?UTF-8?q?=D0=A1=D0=92=D0=AF=D0=97=D0=98(-=D0=9F=D0=9D).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PARR.AIHITMainSyncer/Services/SyncerService.cs | 1 - .../Handlers/RelationshipsShortcodeHandler.cs | 11 ++++++++--- .../Services/UnitFilterService/UnitFilterService.cs | 4 +++- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/PARR.AIHITMainSyncer/Services/SyncerService.cs b/PARR.AIHITMainSyncer/Services/SyncerService.cs index 0bc37390..6803bcc6 100644 --- a/PARR.AIHITMainSyncer/Services/SyncerService.cs +++ b/PARR.AIHITMainSyncer/Services/SyncerService.cs @@ -196,7 +196,6 @@ namespace PARR.AIHITMainSyncer.Services } // Поиск конфигурации поля для тега - // Рекомендация: если метод вызывается в цикле, передавайте найденное поле внешним слоем var tagUnitField = fieldsFromDB.FirstOrDefault(f => f.Code == "tag"); bool isTagProperty = tagUnitField != null && multiValueProperty.Key == tagUnitField.AihitName; diff --git a/PARR.Core/Services/Shortcodes/Handlers/RelationshipsShortcodeHandler.cs b/PARR.Core/Services/Shortcodes/Handlers/RelationshipsShortcodeHandler.cs index 3d43f332..b9fbd4dd 100644 --- a/PARR.Core/Services/Shortcodes/Handlers/RelationshipsShortcodeHandler.cs +++ b/PARR.Core/Services/Shortcodes/Handlers/RelationshipsShortcodeHandler.cs @@ -26,15 +26,20 @@ internal class RelationshipsShortcodeHandler : IShortcodeHandler var hasNumbered = input.Contains("%СВЯЗИ-ПН%", StringComparison.OrdinalIgnoreCase); if (!hasPlain && !hasNumbered) return input; - var relatedNames = await unitFilterService.GetRelatedUnitNamesAsync(template.JobId, template.UnitId, ct); var result = input; + var relatedNames = await unitFilterService.GetRelatedUnitNamesAsync(template.JobId, template.UnitId, ct); + + var orderedNames = relatedNames + .OrderBy(n => n, StringComparer.OrdinalIgnoreCase) + .ToList(); + if (hasPlain) - result = result.Replace("%СВЯЗИ%", string.Join("\n", relatedNames), StringComparison.OrdinalIgnoreCase); + result = result.Replace("%СВЯЗИ%", string.Join("\n", orderedNames), StringComparison.OrdinalIgnoreCase); if (hasNumbered) { - var numbered = relatedNames.Select((n, i) => $"{i + 1}. {n}"); + var numbered = orderedNames.Select((n, i) => $"{i + 1}. {n}"); result = result.Replace("%СВЯЗИ-ПН%", string.Join("\n", numbered), StringComparison.OrdinalIgnoreCase); } diff --git a/PARR.Core/Services/UnitFilterService/UnitFilterService.cs b/PARR.Core/Services/UnitFilterService/UnitFilterService.cs index 113226cb..f52bf540 100644 --- a/PARR.Core/Services/UnitFilterService/UnitFilterService.cs +++ b/PARR.Core/Services/UnitFilterService/UnitFilterService.cs @@ -662,6 +662,8 @@ internal class UnitFilterService : IUnitFilterService } } - return result.ToList(); + return result + .OrderBy(n => n, StringComparer.OrdinalIgnoreCase) + .ToList(); } } \ No newline at end of file