Template Response
This commit is contained in:
@@ -18,7 +18,6 @@
|
||||
public required string RzdMTNKsubprocess { get; set; }
|
||||
public required string RzdMTNKtnk { get; set; }
|
||||
public required string RzdMTNKjob { get; set; }
|
||||
public required string Assignee { get; set; }
|
||||
|
||||
|
||||
public Guid ParrTemplateId { get; set; }
|
||||
@@ -43,7 +42,6 @@
|
||||
public required string RzdMTNKsubprocess { get; set; }
|
||||
public required string RzdMTNKtnk { get; set; }
|
||||
public required string RzdMTNKjob { get; set; }
|
||||
public required string Assignee { get; set; }
|
||||
|
||||
|
||||
public required string ParrTemplateId { get; set; }
|
||||
|
||||
@@ -42,13 +42,7 @@ namespace PARR.API.Controllers.V1
|
||||
{
|
||||
var paginationFilter = mapper.Map<PaginationFilter>(paginationQuery);
|
||||
|
||||
IQueryable<Template> query = templateService.Get()
|
||||
.Include(h => h.Host)
|
||||
.Include(a => a.ApplicationsInWork)
|
||||
.ThenInclude(w => w!.Work)
|
||||
.ThenInclude(t => t!.Tnk)
|
||||
.ThenInclude(s => s!.Subprocess)
|
||||
.ThenInclude(p => p!.Process)
|
||||
IQueryable<Template> query = templateService.GetWithIncludes()
|
||||
.OrderBy(t => t.Name)
|
||||
.AsSplitQuery();
|
||||
|
||||
@@ -89,7 +83,9 @@ namespace PARR.API.Controllers.V1
|
||||
[HttpGet(ApiRoutes.Template.Get)]
|
||||
public async Task<IActionResult> GetById([FromRoute] Guid id)
|
||||
{
|
||||
var template = await templateService.GetAsync(id);
|
||||
var template = await templateService.GetWithIncludes()
|
||||
.AsSplitQuery()
|
||||
.FirstOrDefaultAsync(t => t.Id == id);
|
||||
|
||||
if (template == null)
|
||||
return NotFound();
|
||||
@@ -107,7 +103,11 @@ namespace PARR.API.Controllers.V1
|
||||
[HttpGet(ApiRoutes.Template.GetByStatusCode)]
|
||||
public async Task<IActionResult> GetByStatus([FromRoute] int statusCode, [FromQuery] RobinQuery query)
|
||||
{
|
||||
var template = await templateService.Get().FirstOrDefaultAsync(t => t.StatusCode == statusCode);
|
||||
//Тут узкое место, так как возвращается первый, елси будет много роботов, то будет возвращаться им один и тот же элемент.
|
||||
//нужно вводить статус, что эл уже занят
|
||||
var template = await templateService.GetWithIncludes()
|
||||
.AsSplitQuery()
|
||||
.FirstOrDefaultAsync(t => t.StatusCode == statusCode);
|
||||
|
||||
if (template == null)
|
||||
return NotFound();
|
||||
@@ -132,7 +132,9 @@ namespace PARR.API.Controllers.V1
|
||||
[HttpPut(ApiRoutes.Template.SetOkStatus)]
|
||||
public async Task<IActionResult> SetOkStatus([FromRoute] Guid id)
|
||||
{
|
||||
var template = await templateService.GetAsync(id);
|
||||
var template = await templateService.GetWithIncludes()
|
||||
.AsSplitQuery()
|
||||
.FirstOrDefaultAsync(t => t.Id == id);
|
||||
|
||||
if (template == null)
|
||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = $"Не найден шаблон с id: {id}" } }));
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using AutoMapper;
|
||||
using PARR.API.Contracts.V1.Responses;
|
||||
using PARR.API.MappingProfiles.Resolvers;
|
||||
using PARR.DAL.Models;
|
||||
using PARR.DAL.Models.V1;
|
||||
|
||||
@@ -33,16 +34,15 @@ namespace PARR.API.MappingProfiles
|
||||
.ForMember(d => d.Branch, o => o.MapFrom(s => s.Host!.ResponseArea))
|
||||
.ForMember(d => d.SlaInterval, o => o.MapFrom(s => s.ApplicationsInWork!.Work!.TemplateDuration))
|
||||
.ForMember(d => d.ConfigurationItem, o => o.MapFrom(s => s.Host!.Ek))
|
||||
//.ForMember(d => d.ContactName, o => o.MapFrom(s => s.Initiator))
|
||||
.ForMember(d => d.ContactName, o => o.MapFrom<TemplateInitiatorResolver>())
|
||||
.ForMember(d => d.Description, o => o.MapFrom(s => s.ApplicationsInWork!.Work!.FullDescription))
|
||||
//.ForMember(d => d.ResolutionCode, o => o.MapFrom(s => s.ClosingCode))
|
||||
.ForMember(d => d.ResolutionCode, o => o.MapFrom<TemplateClosingCodeResolver>())
|
||||
.ForMember(d => d.Resolution, o => o.MapFrom(s => s.ApplicationsInWork!.Work!.Solution))
|
||||
.ForMember(d => d.RzdMTNKprocess, o => o.MapFrom(s => s.ApplicationsInWork!.Work!.Tnk!.Subprocess!.Process!.Name))
|
||||
.ForMember(d => d.RzdMTNKsubprocess, o => o.MapFrom(s => s.ApplicationsInWork!.Work!.Tnk!.Subprocess!.Name))
|
||||
.ForMember(d => d.RzdMTNKtnk, o => o.MapFrom(s => s.ApplicationsInWork!.Work!.Tnk!.Name))
|
||||
.ForMember(d => d.RzdMTNKjob, o => o.MapFrom(s => s.ApplicationsInWork!.Work!.Name))
|
||||
//.ForMember(d => d.Assignee, o => o.MapFrom(s => s.Worker))
|
||||
;
|
||||
.ForMember(d => d.Category, o => o.MapFrom<TemplateCategoryResolver>());
|
||||
|
||||
CreateMap<TemplateResponse, TemplateStringResponse>();
|
||||
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
namespace PARR.API.MappingProfiles.Resolvers
|
||||
{
|
||||
public class _
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
using AutoMapper;
|
||||
using PARR.API.Contracts.V1.Responses;
|
||||
using PARR.DAL.Contracts;
|
||||
using PARR.DAL.Models;
|
||||
|
||||
namespace PARR.API.MappingProfiles.Resolvers
|
||||
{
|
||||
public class TemplateCategoryResolver : IValueResolver<Template, TemplateResponse, string>
|
||||
{
|
||||
private readonly SettingsFromDb settingsFromDb;
|
||||
|
||||
public TemplateCategoryResolver(SettingsFromDb settingsFromDb)
|
||||
{
|
||||
this.settingsFromDb = settingsFromDb;
|
||||
}
|
||||
|
||||
public string Resolve(Template source, TemplateResponse destination, string destMember, ResolutionContext context)
|
||||
{
|
||||
return settingsFromDb.Category;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
using AutoMapper;
|
||||
using PARR.API.Contracts.V1.Responses;
|
||||
using PARR.DAL.Contracts;
|
||||
using PARR.DAL.Models;
|
||||
|
||||
namespace PARR.API.MappingProfiles.Resolvers
|
||||
{
|
||||
public class TemplateClosingCodeResolver : IValueResolver<Template, TemplateResponse, string>
|
||||
{
|
||||
private readonly SettingsFromDb settingsFromDb;
|
||||
|
||||
public TemplateClosingCodeResolver(SettingsFromDb settingsFromDb)
|
||||
{
|
||||
this.settingsFromDb = settingsFromDb;
|
||||
}
|
||||
|
||||
public string Resolve(Template source, TemplateResponse destination, string destMember, ResolutionContext context)
|
||||
{
|
||||
return settingsFromDb.ClosingCode;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
using AutoMapper;
|
||||
using PARR.API.Contracts.V1.Responses;
|
||||
using PARR.DAL.Contracts;
|
||||
using PARR.DAL.Models;
|
||||
|
||||
namespace PARR.API.MappingProfiles.Resolvers
|
||||
{
|
||||
public class TemplateInitiatorResolver : IValueResolver<Template, TemplateResponse, string>
|
||||
{
|
||||
private readonly SettingsFromDb settingsFromDb;
|
||||
|
||||
public TemplateInitiatorResolver(SettingsFromDb settingsFromDb)
|
||||
{
|
||||
this.settingsFromDb = settingsFromDb;
|
||||
}
|
||||
|
||||
public string Resolve(Template source, TemplateResponse destination, string destMember, ResolutionContext context)
|
||||
{
|
||||
return settingsFromDb.Initiator;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -26,5 +26,16 @@ namespace PARR.DAL.Services.Implementations
|
||||
{
|
||||
return await EntitySet.FirstOrDefaultAsync(t => t.Name == name);
|
||||
}
|
||||
|
||||
public IQueryable<Template> GetWithIncludes()
|
||||
{
|
||||
return Get()
|
||||
.Include(h => h.Host)
|
||||
.Include(a => a.ApplicationsInWork)
|
||||
.ThenInclude(w => w!.Work)
|
||||
.ThenInclude(t => t!.Tnk)
|
||||
.ThenInclude(s => s!.Subprocess)
|
||||
.ThenInclude(p => p!.Process);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,5 +6,7 @@ namespace PARR.DAL.Services.Interfaces
|
||||
public interface ITemplateService : IBaseService<Template>
|
||||
{
|
||||
Task<Template?> GetTemplateByNameAsync(string name);
|
||||
|
||||
IQueryable<Template> GetWithIncludes();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user