From c9159f6546a590fbfc736ac05c8ed6430e51a097 Mon Sep 17 00:00:00 2001 From: Mikhail Trubnikov Date: Wed, 27 Aug 2025 10:43:33 +1000 Subject: [PATCH] =?UTF-8?q?feat(api):=20=D0=B2=20UnitWithAttributesRespons?= =?UTF-8?q?e=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D1=8B=20?= =?UTF-8?q?=D1=80=D0=BE=D0=B4=D0=B8=D1=82=D0=B5=D0=BB=D1=8C=D1=81=D0=BA?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=B8=20=D0=B4=D0=BE=D1=87=D0=B5=D1=80=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=AD=D0=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PARR.API/Contracts/V1/Responses/UnitBaseResponse.cs | 4 ++++ PARR.API/Controllers/V1/UnitController.cs | 6 +++++- PARR.API/MappingProfiles/DomainToResponseProfile.cs | 4 +++- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/PARR.API/Contracts/V1/Responses/UnitBaseResponse.cs b/PARR.API/Contracts/V1/Responses/UnitBaseResponse.cs index a6cc1bc8..921852d3 100644 --- a/PARR.API/Contracts/V1/Responses/UnitBaseResponse.cs +++ b/PARR.API/Contracts/V1/Responses/UnitBaseResponse.cs @@ -23,6 +23,10 @@ public DateTimeOffset? LastLogon { get; set; } public List? Attributes { get; set; } + + public List? Parents { get; set; } + + public List? Childrens { get; set; } } } diff --git a/PARR.API/Controllers/V1/UnitController.cs b/PARR.API/Controllers/V1/UnitController.cs index 91dd74dc..57cb9547 100644 --- a/PARR.API/Controllers/V1/UnitController.cs +++ b/PARR.API/Controllers/V1/UnitController.cs @@ -53,7 +53,9 @@ namespace PARR.API.Controllers.V1 .Include(t => t.UnitValues) .ThenInclude(uv => uv.Value) .Include(tf => tf.UnitValues) - .ThenInclude(uv => uv.Field); + .ThenInclude(uv => uv.Field) + .Include(p => p.ParentUnits).ThenInclude(t=>t.ParentUnit) + .Include(c => c.ChildUnits).ThenInclude(t=>t.ChildUnit); var units = await unitService.GetPage(query, paginationFilter).ToListAsync(); @@ -80,6 +82,8 @@ namespace PARR.API.Controllers.V1 .ThenInclude(uv => uv.Value) .Include(tf => tf.UnitValues) .ThenInclude(uv => uv.Field) + .Include(p => p.ParentUnits).ThenInclude(t => t.ParentUnit) + .Include(c => c.ChildUnits).ThenInclude(t => t.ChildUnit) .FirstOrDefaultAsync(t => t.Id == id); if (unit == null) diff --git a/PARR.API/MappingProfiles/DomainToResponseProfile.cs b/PARR.API/MappingProfiles/DomainToResponseProfile.cs index 956e13c7..1d44ab90 100644 --- a/PARR.API/MappingProfiles/DomainToResponseProfile.cs +++ b/PARR.API/MappingProfiles/DomainToResponseProfile.cs @@ -119,7 +119,9 @@ namespace PARR.API.MappingProfiles .ForMember(d => d.Name, o => o.MapFrom(s => s.Name)); CreateMap() - .ForMember(d => d.Attributes, o => o.MapFrom(s => s.UnitValues!.OrderBy(s => (string.IsNullOrEmpty(s.Field!.DisplayName)) ? s.Field!.AihitName : s.Field!.DisplayName))); + .ForMember(d => d.Attributes, o => o.MapFrom(s => s.UnitValues!.OrderBy(s => (string.IsNullOrEmpty(s.Field!.DisplayName)) ? s.Field!.AihitName : s.Field!.DisplayName))) + .ForMember(d => d.Childrens, o => o.MapFrom(s => s.ChildUnits.Select(t => t.ChildUnit).OrderBy(t => t.Name))) + .ForMember(d => d.Parents, o => o.MapFrom(s => s.ParentUnits.Select(t => t.ParentUnit).OrderBy(t => t.Name))); #endregion #region WorkGroup