diff --git a/PARR.API/Contracts/V1/ApiRoutes.cs b/PARR.API/Contracts/V1/ApiRoutes.cs index a142816c..aef688e4 100644 --- a/PARR.API/Contracts/V1/ApiRoutes.cs +++ b/PARR.API/Contracts/V1/ApiRoutes.cs @@ -75,7 +75,7 @@ public static class RobotHistory { - //public const string GetAll = Base + "/robot-histories/"; + public const string GetAll = Base + "/robot-histories/"; public const string Create = Base + "/robot-histories/"; } diff --git a/PARR.API/Contracts/V1/Requests/Queries/RobotHistoryQuery.cs b/PARR.API/Contracts/V1/Requests/Queries/RobotHistoryQuery.cs new file mode 100644 index 00000000..9c060738 --- /dev/null +++ b/PARR.API/Contracts/V1/Requests/Queries/RobotHistoryQuery.cs @@ -0,0 +1,23 @@ +using PARR.DAL.Contracts; + +namespace PARR.API.Contracts.V1.Requests.Queries +{ + public class RobotHistoryQuery + { + /// + /// Фильтр по ИД шаблона + /// + public Guid? TemplateId { get; set; } + + /// + /// Фильтр по ИД робота + /// + public RobotsEnum? RobotCode { get; set; } + + /// + /// Фильтр по уровню истории + /// + public RobotHistoryLevelEnum? HistoryLevel { get; set; } + + } +} diff --git a/PARR.API/Contracts/V1/Requests/Queries/RobotTemplateHistoryQuery.cs b/PARR.API/Contracts/V1/Requests/Queries/RobotTemplateHistoryQuery.cs deleted file mode 100644 index 9e29df48..00000000 --- a/PARR.API/Contracts/V1/Requests/Queries/RobotTemplateHistoryQuery.cs +++ /dev/null @@ -1,15 +0,0 @@ -namespace PARR.API.Contracts.V1.Requests.Queries -{ - public class RobotTemplateHistoryQuery - { - /// - /// Фильтр по ИД шаблона - /// - public Guid? TemplateId { get; set; } - - /// - /// Фильтр по ИД серии - /// - public Guid? IdSeries { get; set; } - } -} diff --git a/PARR.API/Contracts/V1/Responses/RobotHistoryResponse.cs b/PARR.API/Contracts/V1/Responses/RobotHistoryResponse.cs index c2930742..8e5ec1b1 100644 --- a/PARR.API/Contracts/V1/Responses/RobotHistoryResponse.cs +++ b/PARR.API/Contracts/V1/Responses/RobotHistoryResponse.cs @@ -10,11 +10,19 @@ public string? EsppMessage { get; set; } - public int TaskStatusCode { get; set; } + //public int TaskStatusCode { get; set; } + + public TaskStatusResponse? TaskStatus { get; set; } public Guid TaskId { get; set; } public RobotHistoryLevelResponse? Level { get; set; } + public Guid TemplateId { get; set; } + + public string? TemplateName { get; set; } + + + } } diff --git a/PARR.API/Controllers/V1/RobotHistoryController.cs b/PARR.API/Controllers/V1/RobotHistoryController.cs index 4516c988..cd6ca33a 100644 --- a/PARR.API/Controllers/V1/RobotHistoryController.cs +++ b/PARR.API/Controllers/V1/RobotHistoryController.cs @@ -4,10 +4,13 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using PARR.API.Contracts.V1; using PARR.API.Contracts.V1.Requests; +using PARR.API.Contracts.V1.Requests.Queries; using PARR.API.Contracts.V1.Responses; using PARR.API.Contracts.V1.Responses.Base; using PARR.API.Controllers.V1.Base; +using PARR.API.Extensions; using PARR.API.Services.Interfaces; +using PARR.DAL.DomainModels; using PARR.DAL.Models; using PARR.DAL.Services.Interfaces; @@ -38,39 +41,43 @@ namespace PARR.API.Controllers.V1 } - ///// - ///// Получить историю робота шаблонов - ///// - ///// - ///// - ///// - //[HttpGet(ApiRoutes.RobotTemplateHistory.GetAll)] - //public async Task GetAll([FromQuery] PaginationQuery paginationQuery, [FromQuery] RobotTemplateHistoryQuery filter) - //{ - // var paginationFilter = mapper.Map(paginationQuery); + /// + /// Просмотр истории работы робота + /// + /// + /// + /// + [HttpGet(ApiRoutes.RobotHistory.GetAll)] + public async Task GetAll([FromQuery] PaginationQuery paginationQuery, [FromQuery] RobotHistoryQuery request) + { + var paginationFilter = mapper.Map(paginationQuery); - // IQueryable query = historyService.Get() - // .Include(t => t.Template) - // .Include(t => t.RobotHistoryLevel) - // .OrderByDescending(t => t.DateCreated).ThenBy(t => t.IdSeries); + IQueryable query = robotHistoryService.Get() + .Include(t => t.RobotConfiguration) + .ThenInclude(t=>t!.Template) + .Include(t => t.RobotHistoryLevel) + .Include(t => t.StatusTask) + .OrderByDescending(t => t.DateCreated); - // if (filter.IdSeries != null) - // query = query.Where(t => t.IdSeries == filter.IdSeries); + if (request.TemplateId.HasValue) + query = query.Where(t => t.RobotConfiguration!.TemplateId == request.TemplateId.Value); - // if (filter.TemplateId != null) - // query = query.Where(t => t.TemplateId == filter.TemplateId); + if (request.RobotCode.HasValue) + query = query.Where(t => t.RobotConfiguration!.RobotCode == (int)request.RobotCode); + if (request.HistoryLevel.HasValue) + query = query.Where(t => t.HistoryLevel == (int)request.HistoryLevel); - // var history = await historyService.GetPage(query, paginationFilter).ToListAsync(); + var history = await robotHistoryService.GetPage(query, paginationFilter).ToListAsync(); - // if (!history.Any()) - // return NoContent(); + if (!history.Any()) + return NoContent(); - // var response = mapper.Map>(history); - // var paginationResponse = new PagedResponse(response, true).GetPaginatedProps(paginationFilter, query); + var response = mapper.Map>(history); + var paginationResponse = new PagedResponse(response, true).GetPaginatedProps(paginationFilter, query); - // return Ok(paginationResponse); - //} + return Ok(paginationResponse); + } /// @@ -105,7 +112,9 @@ namespace PARR.API.Controllers.V1 var createdObj = await robotHistoryService.Get() .Include(t => t.RobotConfiguration) + .ThenInclude(t => t!.Template) .Include(t => t.RobotHistoryLevel) + .Include(t => t.StatusTask) .FirstOrDefaultAsync(t => t.Id == history.Id); var response = mapper.Map(createdObj); diff --git a/PARR.API/MappingProfiles/DomainToResponseProfile.cs b/PARR.API/MappingProfiles/DomainToResponseProfile.cs index 02cb8700..ad16fe0a 100644 --- a/PARR.API/MappingProfiles/DomainToResponseProfile.cs +++ b/PARR.API/MappingProfiles/DomainToResponseProfile.cs @@ -71,7 +71,10 @@ namespace PARR.API.MappingProfiles CreateMap() .ForMember(d => d.Level, o => o.MapFrom(s => s.RobotHistoryLevel)) .ForMember(d => d.Date, o => o.MapFrom(s => s.DateCreated)) - .ForMember(d => d.TaskId, o => o.MapFrom(s => s.RobotConfigurationId)); + .ForMember(d => d.TaskId, o => o.MapFrom(s => s.RobotConfigurationId)) + .ForMember(d => d.TaskStatus, o => o.MapFrom(s => s.StatusTask)) + .ForMember(d => d.TemplateId, o => o.MapFrom(s => s.RobotConfiguration!.TemplateId)) + .ForMember(d => d.TemplateName, o => o.MapFrom(s => s.RobotConfiguration!.Template!.Name)); // --- RobotConfiguration ---