Template Response
This commit is contained in:
@@ -18,7 +18,6 @@
|
|||||||
public required string RzdMTNKsubprocess { get; set; }
|
public required string RzdMTNKsubprocess { get; set; }
|
||||||
public required string RzdMTNKtnk { get; set; }
|
public required string RzdMTNKtnk { get; set; }
|
||||||
public required string RzdMTNKjob { get; set; }
|
public required string RzdMTNKjob { get; set; }
|
||||||
public required string Assignee { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
public Guid ParrTemplateId { get; set; }
|
public Guid ParrTemplateId { get; set; }
|
||||||
@@ -43,7 +42,6 @@
|
|||||||
public required string RzdMTNKsubprocess { get; set; }
|
public required string RzdMTNKsubprocess { get; set; }
|
||||||
public required string RzdMTNKtnk { get; set; }
|
public required string RzdMTNKtnk { get; set; }
|
||||||
public required string RzdMTNKjob { get; set; }
|
public required string RzdMTNKjob { get; set; }
|
||||||
public required string Assignee { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
public required string ParrTemplateId { get; set; }
|
public required string ParrTemplateId { get; set; }
|
||||||
|
|||||||
@@ -42,13 +42,7 @@ namespace PARR.API.Controllers.V1
|
|||||||
{
|
{
|
||||||
var paginationFilter = mapper.Map<PaginationFilter>(paginationQuery);
|
var paginationFilter = mapper.Map<PaginationFilter>(paginationQuery);
|
||||||
|
|
||||||
IQueryable<Template> query = templateService.Get()
|
IQueryable<Template> query = templateService.GetWithIncludes()
|
||||||
.Include(h => h.Host)
|
|
||||||
.Include(a => a.ApplicationsInWork)
|
|
||||||
.ThenInclude(w => w!.Work)
|
|
||||||
.ThenInclude(t => t!.Tnk)
|
|
||||||
.ThenInclude(s => s!.Subprocess)
|
|
||||||
.ThenInclude(p => p!.Process)
|
|
||||||
.OrderBy(t => t.Name)
|
.OrderBy(t => t.Name)
|
||||||
.AsSplitQuery();
|
.AsSplitQuery();
|
||||||
|
|
||||||
@@ -89,7 +83,9 @@ namespace PARR.API.Controllers.V1
|
|||||||
[HttpGet(ApiRoutes.Template.Get)]
|
[HttpGet(ApiRoutes.Template.Get)]
|
||||||
public async Task<IActionResult> GetById([FromRoute] Guid id)
|
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)
|
if (template == null)
|
||||||
return NotFound();
|
return NotFound();
|
||||||
@@ -107,7 +103,11 @@ namespace PARR.API.Controllers.V1
|
|||||||
[HttpGet(ApiRoutes.Template.GetByStatusCode)]
|
[HttpGet(ApiRoutes.Template.GetByStatusCode)]
|
||||||
public async Task<IActionResult> GetByStatus([FromRoute] int statusCode, [FromQuery] RobinQuery query)
|
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)
|
if (template == null)
|
||||||
return NotFound();
|
return NotFound();
|
||||||
@@ -132,7 +132,9 @@ namespace PARR.API.Controllers.V1
|
|||||||
[HttpPut(ApiRoutes.Template.SetOkStatus)]
|
[HttpPut(ApiRoutes.Template.SetOkStatus)]
|
||||||
public async Task<IActionResult> SetOkStatus([FromRoute] Guid id)
|
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)
|
if (template == null)
|
||||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = $"Не найден шаблон с id: {id}" } }));
|
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = $"Не найден шаблон с id: {id}" } }));
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
using AutoMapper;
|
using AutoMapper;
|
||||||
using PARR.API.Contracts.V1.Responses;
|
using PARR.API.Contracts.V1.Responses;
|
||||||
|
using PARR.API.MappingProfiles.Resolvers;
|
||||||
using PARR.DAL.Models;
|
using PARR.DAL.Models;
|
||||||
using PARR.DAL.Models.V1;
|
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.Branch, o => o.MapFrom(s => s.Host!.ResponseArea))
|
||||||
.ForMember(d => d.SlaInterval, o => o.MapFrom(s => s.ApplicationsInWork!.Work!.TemplateDuration))
|
.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.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.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.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.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.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.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.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>();
|
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);
|
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>
|
public interface ITemplateService : IBaseService<Template>
|
||||||
{
|
{
|
||||||
Task<Template?> GetTemplateByNameAsync(string name);
|
Task<Template?> GetTemplateByNameAsync(string name);
|
||||||
|
|
||||||
|
IQueryable<Template> GetWithIncludes();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user