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();