feat(dal, templateMatcher): изменена логика работы Shortcodes сервиса в сторону самостоятельной дозагрузки данных из БД, в Template сервис добавлен метод атомарного резервирования шаблона для TemplateMatcher
This commit is contained in:
@@ -521,6 +521,10 @@
|
||||
public const string GetAll = Base + "/shortcodes/";
|
||||
}
|
||||
|
||||
public static class ShortcodeApply
|
||||
{
|
||||
public const string Apply = Base + "/shortcodes/apply";
|
||||
}
|
||||
public static class RegionalEkPtkGroup
|
||||
{
|
||||
public const string GetAll = Base + "/regional-ek-ptk-groups/";
|
||||
|
||||
8
PARR.API/Contracts/V1/Requests/ShortcodeApplyRequest.cs
Normal file
8
PARR.API/Contracts/V1/Requests/ShortcodeApplyRequest.cs
Normal file
@@ -0,0 +1,8 @@
|
||||
namespace PARR.API.Contracts.V1.Requests
|
||||
{
|
||||
public class ShortcodeApplyRequest
|
||||
{
|
||||
public Guid TemplateId { get; set; }
|
||||
public required string Content { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
namespace PARR.API.Contracts.V1.Responses
|
||||
{
|
||||
public class ShortcodeApplyResponse
|
||||
{
|
||||
public required string Content { get; set; }
|
||||
}
|
||||
}
|
||||
60
PARR.API/Controllers/V1/ShortcodeApplyController.cs
Normal file
60
PARR.API/Controllers/V1/ShortcodeApplyController.cs
Normal file
@@ -0,0 +1,60 @@
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
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;
|
||||
using PARR.DAL.DomainServices.Shortcodes;
|
||||
using PARR.DAL.Services.Interfaces;
|
||||
|
||||
namespace PARR.API.Controllers.V1
|
||||
{
|
||||
public class ShortcodeApplyController : BaseApiController
|
||||
{
|
||||
private readonly ILogger<ShortcodeController> logger;
|
||||
private readonly IShortcodesService shortcodesService;
|
||||
private readonly ITemplateService templateService;
|
||||
|
||||
public ShortcodeApplyController(
|
||||
ILogger<ShortcodeController> logger,
|
||||
IShortcodesService shortcodesService,
|
||||
ITemplateService templateService
|
||||
)
|
||||
{
|
||||
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));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user