feat(api): в Works добавлена маска динамической генерации имени шаблона; добавлены Shortcodes; актализированы валидация, запросы,ответы; миграция БД - запрет приёма нулевых значений в маску
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
public class WorkRequest
|
||||
{
|
||||
public required string Name { get; set; }
|
||||
public required string TemplateNameMask { get; set; }
|
||||
public string? TemplateSuffix { get;set; }
|
||||
public int EsppId { get; set; }
|
||||
public Guid TnkId { get; set; }
|
||||
|
||||
@@ -6,6 +6,8 @@
|
||||
|
||||
public required string Name { get; set; }
|
||||
|
||||
public required string TemplateNameMask { get; set; }
|
||||
|
||||
public string? TemplateSuffix { get; set; }
|
||||
|
||||
public int EsppId { get; set; }
|
||||
|
||||
@@ -137,6 +137,7 @@ namespace PARR.API.Controllers.V1
|
||||
{
|
||||
Id = Guid.NewGuid(),
|
||||
Name = request.Name.Trim(),
|
||||
TemplateNameMask = request.TemplateNameMask,
|
||||
EsppId = request.EsppId,
|
||||
TnkId = request.TnkId,
|
||||
TemplateSuffix = request.TemplateSuffix
|
||||
@@ -179,6 +180,7 @@ namespace PARR.API.Controllers.V1
|
||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = $"Ошибка при изменении вида работ. Не найдена работа Id: {id}" } }));
|
||||
|
||||
orig.Name = request.Name.Trim();
|
||||
orig.TemplateNameMask = request.TemplateNameMask.Trim();
|
||||
orig.EsppId = request.EsppId;
|
||||
orig.TnkId = request.TnkId;
|
||||
orig.DateModified = DateTimeOffset.UtcNow;
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
using FluentValidation;
|
||||
using PARR.API.Contracts.V1.Requests;
|
||||
using PARR.BLL.Services.Interfaces;
|
||||
using PARR.Constants.Shortcodes;
|
||||
using PARR.DAL.Services.Interfaces;
|
||||
|
||||
namespace PARR.API.Validators
|
||||
@@ -11,13 +13,27 @@ namespace PARR.API.Validators
|
||||
private bool? isValid = null;
|
||||
|
||||
public WorkRequestValidator(
|
||||
ITnkService tnkService
|
||||
ITnkService tnkService,
|
||||
ITemplateMaskValidator templateMaskValidator
|
||||
)
|
||||
{
|
||||
this.tnkService = tnkService;
|
||||
|
||||
RuleFor(t => t.Name).NotEmpty().NotNull();
|
||||
|
||||
RuleFor(t => t.TemplateNameMask)
|
||||
.NotEmpty()
|
||||
.NotNull();
|
||||
|
||||
RuleFor(t => t.TemplateNameMask)
|
||||
.Must((entity, value, c) => templateMaskValidator
|
||||
.IsValid(entity.TemplateNameMask))
|
||||
.WithMessage($"Неверно указана маска имени шаблонов. Обязательными условиями являются" +
|
||||
$" наличие кодового слова \"ПАРР\" и обязательное использование динамической составляющей" +
|
||||
$" %ЭК%. Доступные значения динамических составляющих:" +
|
||||
$" {string.Join(", ", Shortcodes.GetAll().Select(sc => sc.Name + " - " + sc.Description))}"
|
||||
);
|
||||
|
||||
RuleFor(t => t.EsppId).NotEmpty().NotNull().WithMessage("EsppId не может быть пустым");
|
||||
|
||||
RuleFor(t => t.TnkId).NotEmpty().NotNull();
|
||||
|
||||
Reference in New Issue
Block a user