diff --git a/PARR.API/Contracts/V1/Requests/Queries/WorkGetAllQuery.cs b/PARR.API/Contracts/V1/Requests/Queries/WorkGetAllQuery.cs
new file mode 100644
index 00000000..57f1fd1b
--- /dev/null
+++ b/PARR.API/Contracts/V1/Requests/Queries/WorkGetAllQuery.cs
@@ -0,0 +1,10 @@
+namespace PARR.API.Contracts.V1.Requests.Queries
+{
+ public class WorkGetAllQuery
+ {
+ ///
+ /// С иерархией до процесса
+ ///
+ public bool AllParents { get; set; } = false;
+ }
+}
diff --git a/PARR.API/Contracts/V1/Responses/SubprocessResponse.cs b/PARR.API/Contracts/V1/Responses/SubprocessResponse.cs
index 95a53dd6..1696d8c0 100644
--- a/PARR.API/Contracts/V1/Responses/SubprocessResponse.cs
+++ b/PARR.API/Contracts/V1/Responses/SubprocessResponse.cs
@@ -10,4 +10,9 @@
public Guid ProcessId { get; set; }
}
+
+ public class SubprocessWithProcessResponse : SubprocessResponse
+ {
+ public ProcessResponse? Process { get; set; }
+ }
}
diff --git a/PARR.API/Contracts/V1/Responses/TnkResponse.cs b/PARR.API/Contracts/V1/Responses/TnkResponse.cs
index c1138162..6ef21633 100644
--- a/PARR.API/Contracts/V1/Responses/TnkResponse.cs
+++ b/PARR.API/Contracts/V1/Responses/TnkResponse.cs
@@ -10,4 +10,9 @@
public Guid SubprocessId { get; set; }
}
+
+ public class TnkWithSubprocessResponse : TnkResponse
+ {
+ public SubprocessWithProcessResponse? Subprocess { get; set; }
+ }
}
diff --git a/PARR.API/Contracts/V1/Responses/WorkResponse.cs b/PARR.API/Contracts/V1/Responses/WorkResponse.cs
index 58909148..3decfc03 100644
--- a/PARR.API/Contracts/V1/Responses/WorkResponse.cs
+++ b/PARR.API/Contracts/V1/Responses/WorkResponse.cs
@@ -10,4 +10,9 @@
public Guid TnkId { get; set; }
}
+
+ public class WorkWithTnkResponse : WorkResponse
+ {
+ public TnkWithSubprocessResponse? Tnk { get; set; }
+ }
}
diff --git a/PARR.API/Controllers/V1/WorkController.cs b/PARR.API/Controllers/V1/WorkController.cs
index b1c6cfdd..01e3e724 100644
--- a/PARR.API/Controllers/V1/WorkController.cs
+++ b/PARR.API/Controllers/V1/WorkController.cs
@@ -52,18 +52,31 @@ namespace PARR.API.Controllers.V1
///
///
[HttpGet(ApiRoutes.Work.GetAll)]
- public async Task GetAll([FromQuery] PaginationQuery paginationQuery)
+ public async Task GetAll([FromQuery] PaginationQuery paginationQuery, [FromQuery] WorkGetAllQuery requestQuery)
{
var paginationFilter = mapper.Map(paginationQuery);
IQueryable query = workService.Get()
.OrderBy(t => t.Name);
+ if (requestQuery.AllParents)
+ query = query.Include(t => t.Tnk).ThenInclude(s => s.Subprocess).ThenInclude(p => p.Process);
+
var works = await workService.GetPage(query, paginationFilter).ToListAsync();
if (!works.Any())
return NoContent();
+ if (requestQuery.AllParents)
+ {
+ //todo: тут бесконечность в маппинге
+ // респонс с иерархией вверх до процесса
+ var allResponse = mapper.Map>(works);
+ var paginationAllResponse = new PagedResponse(allResponse, true).GetPaginatedProps(paginationFilter, query);
+
+ return Ok(paginationAllResponse);
+ }
+
var workResponse = mapper.Map>(works);
var paginationResponse = new PagedResponse(workResponse, true).GetPaginatedProps(paginationFilter, query);
diff --git a/PARR.API/MappingProfiles/DomainToResponseProfile.cs b/PARR.API/MappingProfiles/DomainToResponseProfile.cs
index e7077c9b..9d503e86 100644
--- a/PARR.API/MappingProfiles/DomainToResponseProfile.cs
+++ b/PARR.API/MappingProfiles/DomainToResponseProfile.cs
@@ -37,10 +37,11 @@ namespace PARR.API.MappingProfiles
.ForMember(d => d.LastRun, o => o.MapFrom(s => s.ApplicationsInWork!.LastRun));
// === Template ===
- #endregion
CreateMap();
+ #endregion
+
CreateMap()
.ForMember(d => d.IsAgent, o => o.MapFrom(s => s.IsAgent))
.ForMember(d => d.Name, o => o.MapFrom(s => s.AgentName))
@@ -50,10 +51,28 @@ namespace PARR.API.MappingProfiles
CreateMap();
+ #region Tnk
+
CreateMap();
- CreateMap();
- CreateMap();
- CreateMap();
+
+ CreateMap()
+ .Include();
+
+ CreateMap();
+
+
+ CreateMap()
+ .Include();
+
+ CreateMap();
+
+
+ CreateMap()
+ .Include();
+
+ CreateMap();
+
+ #endregion
CreateMap()
@@ -161,7 +180,7 @@ namespace PARR.API.MappingProfiles
.ForMember(d => d.RobotStatus, o => o.MapFrom(s => s.RobotStatus));
- // --- EsppSch ---
+ #region EsppSch
CreateMap();
CreateMap();
@@ -172,7 +191,7 @@ namespace PARR.API.MappingProfiles
.ForMember(d => d.Order, o => o.MapFrom(s => s.Order))
.ForMember(d => d.Value, o => o.MapFrom(s => s.Value))
.ForMember(d => d.Type, o => o.MapFrom(s => s.Type));
- // === EsppSch ===
+ #endregion EsppSch
CreateMap();
@@ -211,6 +230,7 @@ namespace PARR.API.MappingProfiles
#endregion
+ #region ApplicationInWork
CreateMap()
.ForMember(d => d.Work, o => o.MapFrom(s => s.Work))
@@ -218,6 +238,8 @@ namespace PARR.API.MappingProfiles
.ForMember(d => d.TemplatesCount, o => o.MapFrom(s => s.Templates.Count()))
.ForMember(d => d.Schedule, o => o.MapFrom());
+ #endregion
+
CreateMap();
}