From 1222c102f0a83a6a57ca86f4420da57ee3d0830a Mon Sep 17 00:00:00 2001 From: Mikhail Trubnikov Date: Thu, 30 Nov 2023 10:17:02 +1000 Subject: [PATCH] =?UTF-8?q?feat(api):=20=D0=B2=20HostResponse=20=D0=B4?= =?UTF-8?q?=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B0=20=D0=B8=D0=BD?= =?UTF-8?q?=D1=84=D0=BE=D1=80=D0=BC=D0=B0=D1=86=D0=B8=D1=8F=20=D0=BE=20?= =?UTF-8?q?=D0=BA=D0=BE=D0=BC=D0=BF=D0=BE=D0=BD=D0=B5=D0=BD=D1=82=D0=BD?= =?UTF-8?q?=D0=BE=D0=BC=20=D1=81=D0=BE=D1=81=D1=82=D0=B0=D0=B2=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../V1/Responses/ApplicationResponse.cs | 2 ++ .../V1/Responses/ApplicationTypeResponse.cs | 11 +++++++ .../V1/Responses/HostBaseResponse.cs | 33 +++++++++++++++++++ .../Contracts/V1/Responses/HostResponse.cs | 17 ---------- .../V1/Responses/TemplateResponse.cs | 2 +- PARR.API/Controllers/V1/HostController.cs | 5 +-- .../DomainToResponseProfile.cs | 16 +++++++-- 7 files changed, 64 insertions(+), 22 deletions(-) create mode 100644 PARR.API/Contracts/V1/Responses/ApplicationTypeResponse.cs create mode 100644 PARR.API/Contracts/V1/Responses/HostBaseResponse.cs delete mode 100644 PARR.API/Contracts/V1/Responses/HostResponse.cs diff --git a/PARR.API/Contracts/V1/Responses/ApplicationResponse.cs b/PARR.API/Contracts/V1/Responses/ApplicationResponse.cs index 6dedd199..ee875e91 100644 --- a/PARR.API/Contracts/V1/Responses/ApplicationResponse.cs +++ b/PARR.API/Contracts/V1/Responses/ApplicationResponse.cs @@ -5,5 +5,7 @@ public Guid Id { get; set; } public required string Name { get; set; } + + public ApplicationTypeResponse? Type { get; set; } } } diff --git a/PARR.API/Contracts/V1/Responses/ApplicationTypeResponse.cs b/PARR.API/Contracts/V1/Responses/ApplicationTypeResponse.cs new file mode 100644 index 00000000..01510c9e --- /dev/null +++ b/PARR.API/Contracts/V1/Responses/ApplicationTypeResponse.cs @@ -0,0 +1,11 @@ +namespace PARR.API.Contracts.V1.Responses +{ + public class ApplicationTypeResponse + { + public Guid Id { get; set; } + + public required string Name { get; set; } + + public required string Description { get; set; } + } +} diff --git a/PARR.API/Contracts/V1/Responses/HostBaseResponse.cs b/PARR.API/Contracts/V1/Responses/HostBaseResponse.cs new file mode 100644 index 00000000..19e9ac29 --- /dev/null +++ b/PARR.API/Contracts/V1/Responses/HostBaseResponse.cs @@ -0,0 +1,33 @@ +namespace PARR.API.Contracts.V1.Responses +{ + public class HostBaseResponse + { + public Guid Id { get; set; } + + public string Ek { get; set; } = string.Empty; + + public required string IP { get; set; } + + public string? Status { get; set; } + + public string? WorkGroup { get; set; } + + public string? ResponseArea { get; set; } + } + + /// + /// Респонс Хоста для Шаблона + /// + public class HostTemplateResponse : HostBaseResponse + { + + } + + /// + /// Респонс Хоста с приложениями (компнентном составе) + /// + public class HostWithApplicationsResponse : HostBaseResponse + { + public List? Applications { get; set; } + } +} diff --git a/PARR.API/Contracts/V1/Responses/HostResponse.cs b/PARR.API/Contracts/V1/Responses/HostResponse.cs deleted file mode 100644 index 2ca69ed8..00000000 --- a/PARR.API/Contracts/V1/Responses/HostResponse.cs +++ /dev/null @@ -1,17 +0,0 @@ -namespace PARR.API.Contracts.V1.Responses -{ - public class HostResponse - { - public Guid Id { get; set; } - - public string Ek { get; set; } - - public required string IP { get; set; } - - public string? Status { get; set; } - - public string? WorkGroup { get; set; } - - public string? ResponseArea { get; set; } - } -} diff --git a/PARR.API/Contracts/V1/Responses/TemplateResponse.cs b/PARR.API/Contracts/V1/Responses/TemplateResponse.cs index e8ed2508..e9299d8e 100644 --- a/PARR.API/Contracts/V1/Responses/TemplateResponse.cs +++ b/PARR.API/Contracts/V1/Responses/TemplateResponse.cs @@ -22,7 +22,7 @@ public DateTimeOffset NextRun { get; set; } - public HostResponse? Host { get; set; } + public HostTemplateResponse? Host { get; set; } public WorkResponse? Work { get; set; } public ProcessResponse? Process { get; set; } diff --git a/PARR.API/Controllers/V1/HostController.cs b/PARR.API/Controllers/V1/HostController.cs index 4a9ff8ee..dd0e6387 100644 --- a/PARR.API/Controllers/V1/HostController.cs +++ b/PARR.API/Controllers/V1/HostController.cs @@ -38,6 +38,7 @@ namespace PARR.API.Controllers.V1 IQueryable query = hostService.Get() .Include(s => s.EkStatus) .Include(s => s.ResponseArea) + .Include(t => t.ApplicationsInHosts).ThenInclude(t => t.Application).ThenInclude(t => t!.ApplicationType) .OrderBy(t => t.Ek); if (!string.IsNullOrEmpty(request.Mask)) @@ -48,8 +49,8 @@ namespace PARR.API.Controllers.V1 if (!hosts.Any()) return NoContent(); - var hostResponse = mapper.Map>(hosts); - var paginationResponse = new PagedResponse(hostResponse, true).GetPaginatedProps(paginationFilter, query); + var hostResponse = mapper.Map>(hosts); + var paginationResponse = new PagedResponse(hostResponse, true).GetPaginatedProps(paginationFilter, query); return Ok(paginationResponse); } diff --git a/PARR.API/MappingProfiles/DomainToResponseProfile.cs b/PARR.API/MappingProfiles/DomainToResponseProfile.cs index d5e4389e..14411476 100644 --- a/PARR.API/MappingProfiles/DomainToResponseProfile.cs +++ b/PARR.API/MappingProfiles/DomainToResponseProfile.cs @@ -49,12 +49,24 @@ namespace PARR.API.MappingProfiles CreateMap(); - CreateMap(); + CreateMap() + .ForMember(t => t.Type, o => o.MapFrom(s => s.ApplicationType)); - CreateMap() + CreateMap(); + + // --- Host --- + CreateMap() + .Include() + .Include() .ForMember(d => d.Status, o => o.MapFrom(s => s.EkStatus!.Name)) .ForMember(d => d.ResponseArea, o => o.MapFrom(s => s.ResponseArea!.Name)); + CreateMap(); + + CreateMap() + .ForMember(d => d.Applications, o => o.MapFrom(s => s.ApplicationsInHosts.Select(t => t.Application).OrderBy(t=>t.Name))); + // === Host === + CreateMap(); CreateMap();