diff --git a/PARR.API/Contracts/V1/ApiRoutes.cs b/PARR.API/Contracts/V1/ApiRoutes.cs index 7059c593..a5136c9c 100644 --- a/PARR.API/Contracts/V1/ApiRoutes.cs +++ b/PARR.API/Contracts/V1/ApiRoutes.cs @@ -211,6 +211,17 @@ namespace PARR.API.Contracts.V1 #endregion + + #region Наряды + + public static class Order + { + public const string GetAll = Base + "/orders/"; + + public const string getParam = "{id}"; + } + + #endregion } } diff --git a/PARR.API/Contracts/V1/Responses/OrderResponse.cs b/PARR.API/Contracts/V1/Responses/OrderResponse.cs index ff87ab20..36b0e7e1 100644 --- a/PARR.API/Contracts/V1/Responses/OrderResponse.cs +++ b/PARR.API/Contracts/V1/Responses/OrderResponse.cs @@ -15,5 +15,22 @@ public class OrderResponse : OrderResponseBase { + public DateTimeOffset DateCreated { get; set; } + + public string? WorkGroup { get; set; } + + public Guid? TemplateId { get; set; } + + public string TemplateName { get; set; } = string.Empty; + + public OrderStatusResponse? Status { get; set; } + + public OrderStatusResponse? NextStatus { get; set; } + + public string ShortName { get; set; } = string.Empty; + + public DateTimeOffset? GenerateDate { get; set; } + + public DateTimeOffset ExpirationDate { get; set; } } } diff --git a/PARR.API/Controllers/V1/OrderController.cs b/PARR.API/Controllers/V1/OrderController.cs new file mode 100644 index 00000000..44379e29 --- /dev/null +++ b/PARR.API/Controllers/V1/OrderController.cs @@ -0,0 +1,64 @@ +using AutoMapper; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; +using PARR.API.Contracts.V1; +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.Constants; +using PARR.DAL.DomainModels; +using PARR.DAL.Services.Interfaces; + +namespace PARR.API.Controllers.V1 +{ + /// + /// Наряды + /// + [Authorize(Roles = ParrRoles.Administrator.Role)] + public class OrderController : BaseApiController + { + private readonly IMapper mapper; + private readonly IOrderService orderService; + + public OrderController( + IMapper mapper, + IOrderService orderService + ) + { + this.mapper = mapper; + this.orderService = orderService; + } + + + /// + /// Получить список нарядов постранично + /// + /// + /// + [HttpGet(ApiRoutes.Order.GetAll)] + public async Task GetAll([FromQuery] PaginationQuery paginationQuery) + { + var paginationFilter = mapper.Map(paginationQuery); + + var query = orderService.Get() + .Include(t=>t.Template) + .Include(s=>s.OrderStatus) + .Include(s => s.NextStatus) + .OrderByDescending(t => t.DateCreated); + + var orders = await orderService.GetPage(query, paginationFilter).ToListAsync(); + + if (!orders.Any()) + return NoContent(); + + var orderResponse = mapper.Map>(orders); + var paginationResponse = new PagedResponse(orderResponse, true).GetPaginatedProps(paginationFilter, query); + + return Ok(paginationResponse); + } + + } +} diff --git a/PARR.API/MappingProfiles/DomainToResponseProfile.cs b/PARR.API/MappingProfiles/DomainToResponseProfile.cs index cbed062b..100393e6 100644 --- a/PARR.API/MappingProfiles/DomainToResponseProfile.cs +++ b/PARR.API/MappingProfiles/DomainToResponseProfile.cs @@ -28,7 +28,7 @@ namespace PARR.API.MappingProfiles .ForMember(d => d.Initiator, o => o.MapFrom()) .ForMember(d => d.ClosingCode, o => o.MapFrom()) .ForMember(d => d.Category, o => o.MapFrom()) - .ForMember(d => d.SyncStatus, o => o.MapFrom(s => s.RobotConfigurations.OrderBy(t=>t.RobotCode))) + .ForMember(d => d.SyncStatus, o => o.MapFrom(s => s.RobotConfigurations.OrderBy(t => t.RobotCode))) .ForMember(d => d.Schedule, o => o.MapFrom()) .ForMember(d => d.Agent, o => o.MapFrom(s => s.ApplicationsInWork)) .ForMember(d => d.NextRun, o => o.MapFrom(s => s.ApplicationsInWork!.NextRun)) @@ -202,7 +202,9 @@ namespace PARR.API.MappingProfiles .ForMember(s => s.Status, o => o.MapFrom(s => s.OrderStatus)) .ForMember(s => s.NextStatus, o => o.MapFrom(s => s.NextStatus)); - CreateMap(); + CreateMap() + .ForMember(s => s.Status, o => o.MapFrom(s => s.OrderStatus)) + .ForMember(s => s.NextStatus, o => o.MapFrom(s => s.NextStatus)); #endregion