Template Response

This commit is contained in:
Mikhail Trubnikov
2023-09-19 16:42:06 +10:00
parent 1857a96249
commit a8c015ce7b
9 changed files with 95 additions and 22 deletions

View File

@@ -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; }

View File

@@ -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}" } }));

View File

@@ -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>();

View File

@@ -1,6 +0,0 @@
namespace PARR.API.MappingProfiles.Resolvers
{
public class _
{
}
}

View File

@@ -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;
}
}
}

View File

@@ -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;
}
}
}

View File

@@ -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;
}
}
}