переход на fluentValidation
This commit is contained in:
+6
-17
@@ -37,9 +37,9 @@ public sealed class TemplateRouteStepService(ApprovalRouteDbContext db)
|
||||
if (route is null)
|
||||
return Result.Fail<TemplateRouteStepDto>(new NotFoundError("Маршрут", routeId));
|
||||
|
||||
var fieldsError = ValidateFields(r.ExecutorEmail, r.Position, r.ProjectRole, route.ByProject);
|
||||
if (fieldsError is not null)
|
||||
return Result.Fail<TemplateRouteStepDto>(fieldsError);
|
||||
if (!route.ByProject && r.ProjectRole != ProjectRole.None)
|
||||
return Result.Fail<TemplateRouteStepDto>(new ValidationError(
|
||||
"Роль в проекте недопустима для шага маршрута, который не учитывает проект (by_project = false)."));
|
||||
|
||||
var entity = new TemplateRouteStep
|
||||
{
|
||||
@@ -70,9 +70,9 @@ public sealed class TemplateRouteStepService(ApprovalRouteDbContext db)
|
||||
if (entity is null)
|
||||
return Result.Fail<TemplateRouteStepDto>(new NotFoundError("Шаг маршрута", id));
|
||||
|
||||
var fieldsError = ValidateFields(r.ExecutorEmail, r.Position, r.ProjectRole, route.ByProject);
|
||||
if (fieldsError is not null)
|
||||
return Result.Fail<TemplateRouteStepDto>(fieldsError);
|
||||
if (!route.ByProject && r.ProjectRole != ProjectRole.None)
|
||||
return Result.Fail<TemplateRouteStepDto>(new ValidationError(
|
||||
"Роль в проекте недопустима для шага маршрута, который не учитывает проект (by_project = false)."));
|
||||
|
||||
entity.OrderNo = r.OrderNo;
|
||||
entity.ExecutorEmail = r.ExecutorEmail;
|
||||
@@ -99,17 +99,6 @@ public sealed class TemplateRouteStepService(ApprovalRouteDbContext db)
|
||||
return Result.Ok();
|
||||
}
|
||||
|
||||
private static IError? ValidateFields(string executorEmail, string position, ProjectRole projectRole, bool routeByProject)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(executorEmail) && string.IsNullOrWhiteSpace(position) && projectRole == ProjectRole.None)
|
||||
return new ValidationError("Исполнитель, должность и роль в проекте не могут быть пустыми одновременно.");
|
||||
|
||||
if (!routeByProject && projectRole != ProjectRole.None)
|
||||
return new ValidationError("Роль в проекте недопустима для шага маршрута, который не учитывает проект (by_project = false).");
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private async Task<Result<TemplateRouteStepDto>> AppendMissingProjectRoleWarningAsync(
|
||||
TemplateRoute route, Result<TemplateRouteStepDto> result, CancellationToken cancellationToken)
|
||||
{
|
||||
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
using FluentValidation;
|
||||
using Tnsu.ApprovalRoute.Domain.Enums;
|
||||
|
||||
namespace Tnsu.ApprovalRoute.Application.TemplateRouteSteps;
|
||||
|
||||
public sealed class CreateTemplateRouteStepRequestValidator : AbstractValidator<CreateTemplateRouteStepRequest>
|
||||
{
|
||||
public CreateTemplateRouteStepRequestValidator()
|
||||
{
|
||||
RuleFor(x => x)
|
||||
.Must(x => !(string.IsNullOrWhiteSpace(x.ExecutorEmail) && string.IsNullOrWhiteSpace(x.Position) && x.ProjectRole == ProjectRole.None))
|
||||
.WithMessage("Исполнитель, должность и роль в проекте не могут быть пустыми одновременно.");
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class UpdateTemplateRouteStepRequestValidator : AbstractValidator<UpdateTemplateRouteStepRequest>
|
||||
{
|
||||
public UpdateTemplateRouteStepRequestValidator()
|
||||
{
|
||||
RuleFor(x => x)
|
||||
.Must(x => !(string.IsNullOrWhiteSpace(x.ExecutorEmail) && string.IsNullOrWhiteSpace(x.Position) && x.ProjectRole == ProjectRole.None))
|
||||
.WithMessage("Исполнитель, должность и роль в проекте не могут быть пустыми одновременно.");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user