feat(api,dal): в таблицу Jobs добавлено поле ResponseAreaMask. В JobController добавлено поле ResponseAreaMask. В TemplateController отображается фактическая РК, ЗО шаблона. RobotTask ЗО отдается согласно ResponseAreaMask. ShortcodeService теперь умеет принимать Template.

This commit is contained in:
Mikhail Trubnikov
2026-01-13 14:36:07 +10:00
parent 43d40d950e
commit bd4ad918e3
21 changed files with 8438 additions and 87 deletions

View File

@@ -15,6 +15,7 @@ using PARR.Common.Domain;
using PARR.Constants;
using PARR.DAL.Contracts;
using PARR.DAL.DomainModels;
using PARR.DAL.DomainServices.Shortcodes;
using PARR.DAL.Models;
using PARR.DAL.Services.Interfaces;
@@ -31,13 +32,15 @@ namespace PARR.API.Controllers.V1
private readonly IRobotConfigurationService robotConfigurationService;
private readonly IClientService clientService;
private readonly ILogger<TemplateController> logger;
private readonly IShortcodesService shortcodesService;
public TemplateController(
IMapper mapper,
ITemplateService templateService,
IRobotConfigurationService robotConfigurationService,
IClientService clientService,
ILogger<TemplateController> logger
ILogger<TemplateController> logger,
IShortcodesService shortcodesService
)
{
this.mapper = mapper;
@@ -45,6 +48,7 @@ namespace PARR.API.Controllers.V1
this.robotConfigurationService = robotConfigurationService;
this.clientService = clientService;
this.logger = logger;
this.shortcodesService = shortcodesService;
}
@@ -106,6 +110,11 @@ namespace PARR.API.Controllers.V1
return NoContent();
var templateResponse = mapper.Map<List<TemplateResponse>>(templates);
foreach (var responseItem in templateResponse)
{
await ApplyTemplateShortcodesAsync(responseItem, templates.First(t => t.Id == responseItem.Id));
}
var paginationResponse = new PagedResponse<TemplateResponse>(templateResponse, true).GetPaginatedProps(paginationFilter, query);
return Ok(paginationResponse);
@@ -136,6 +145,7 @@ namespace PARR.API.Controllers.V1
return NotFound();
var response = mapper.Map<TemplateResponse>(template);
await ApplyTemplateShortcodesAsync(response, template);
return Ok(new Response<TemplateResponse>(response, true));
}
@@ -198,12 +208,20 @@ namespace PARR.API.Controllers.V1
.Include(t => t.Job).ThenInclude(t => t.Group).ThenInclude(t => t.ScheduleExcludeType)
.Include(t => t.Job).ThenInclude(t => t.Group).ThenInclude(t => t.ScheduleExcludeTypeCalendar)
.AsSplitQuery()
.FirstOrDefaultAsync(t => t.Id == id);
.FirstAsync(t => t.Id == id);
var response = mapper.Map<TemplateResponse>(templateToResponse);
await ApplyTemplateShortcodesAsync(response, templateToResponse);
return Ok(new Response<TemplateResponse>(response, true));
}
private async Task ApplyTemplateShortcodesAsync(TemplateResponse response, Template template)
{
response.WorkGroup = await shortcodesService.ApplyShortcodesAsync(template.Job.WorkGroupMask, template);
response.ResponseArea = await shortcodesService.ApplyShortcodesAsync(template.Job.ResponseAreaMask, template);
}
}
}