2026-05-15 16:09:49 +10:00
using Microsoft.AspNetCore.Authorization ;
using Microsoft.AspNetCore.Mvc ;
2026-01-16 18:26:06 +10:00
using Microsoft.EntityFrameworkCore ;
using PARR.API.Contracts.V1 ;
using PARR.API.Contracts.V1.Requests ;
using PARR.API.Contracts.V1.Responses ;
using PARR.API.Contracts.V1.Responses.Base ;
using PARR.API.Controllers.V1.Base ;
2026-04-30 10:35:31 +10:00
using PARR.Core.Repositories.Interfaces ;
2026-05-04 11:55:07 +10:00
using PARR.Core.Services.Shortcodes ;
2026-05-15 16:09:49 +10:00
using PARR.Domain.Common.Roles ;
2026-01-16 18:26:06 +10:00
namespace PARR.API.Controllers.V1
{
2026-05-15 16:09:49 +10:00
[Authorize(Roles = ParrRoles.Administrator.Role)]
2026-01-16 18:26:06 +10:00
public class ShortcodeApplyController : BaseApiController
{
private readonly ILogger < ShortcodeController > logger ;
private readonly IShortcodesService shortcodesService ;
2026-04-30 10:35:31 +10:00
private readonly ITemplateRepository templateService ;
2026-01-16 18:26:06 +10:00
public ShortcodeApplyController (
ILogger < ShortcodeController > logger ,
IShortcodesService shortcodesService ,
2026-04-30 10:35:31 +10:00
ITemplateRepository templateService
2026-01-16 18:26:06 +10:00
)
{
this . logger = logger ;
this . shortcodesService = shortcodesService ;
this . templateService = templateService ;
}
/// <summary>
/// Получить список всех переменных составляющих
/// </summary>
/// <returns></returns>
[HttpPost(ApiRoutes.ShortcodeApply.Apply)]
public async Task < IActionResult > Apply ( [ FromBody ] ShortcodeApplyRequest request )
{
var template = await templateService . Get ( )
. Include ( t = > t . Unit )
. Include ( t = > t . UnitsInTemplate )
. Include ( t = > t . Unit )
. Include ( t = > t . Job )
. ThenInclude ( t = > t ! . Group )
. ThenInclude ( t = > t ! . GroupType )
. Include ( t = > t . Job )
. ThenInclude ( t = > t ! . Tnk )
. AsNoTracking ( )
. FirstOrDefaultAsync ( t = > t . Id = = request . TemplateId ) ;
if ( template = = null )
return BadRequest ( new Response ( false , new List < ErrorModel > { new ErrorModel { FieldName = nameof ( request . TemplateId ) , Message = $"Шаблон имеющий Id = {request.TemplateId} не найден" } } ) ) ;
var aplyingShortCodes = await shortcodesService . ApplyShortcodesAsync ( request . Content , template ) ;
var response = new ShortcodeApplyResponse { Content = aplyingShortCodes } ;
return Ok ( new Response < ShortcodeApplyResponse > ( response , true ) ) ;
}
}
}