feat: Сервисы и модели RabbitMq разнесены согласно архитектуры

This commit is contained in:
Mikhail Trubnikov
2026-04-14 12:01:49 +10:00
parent 734c2e3c99
commit e892aa12d3
196 changed files with 589 additions and 1232 deletions

View File

@@ -1,64 +1,58 @@
using FluentValidation;
using PARR.API.Contracts.V1.Requests;
using PARR.BLL.Contracts;
using PARR.DAL.Services.Interfaces;
using System.Linq;
namespace PARR.API.Validators
namespace PARR.API.Validators
{
public class GeneratorTemplateRequestValidator : AbstractValidator<GeneratorTemplateRequest>
{
private readonly IApplicationsInWorkService applicationsInWorkService;
//public class GeneratorTemplateRequestValidator : AbstractValidator<GeneratorTemplateRequest>
//{
// private readonly IApplicationsInWorkService applicationsInWorkService;
private bool? isValid = null;
// private bool? isValid = null;
public GeneratorTemplateRequestValidator(IApplicationsInWorkService applicationsInWorkService)
{
this.applicationsInWorkService = applicationsInWorkService;
// public GeneratorTemplateRequestValidator(IApplicationsInWorkService applicationsInWorkService)
// {
// this.applicationsInWorkService = applicationsInWorkService;
RuleFor(t => t.WorkId)
.MustAsync(async (entity, value, c) => await IsApplicationContainWork(entity, entity.ApplicationId))
.WithMessage("У данной работы нет связанных приложений");
// RuleFor(t => t.WorkId)
// .MustAsync(async (entity, value, c) => await IsApplicationContainWork(entity, entity.ApplicationId))
// .WithMessage("У данной работы нет связанных приложений");
RuleFor(t => t.ApplicationId)
.MustAsync(async (entity, value, c) => await IsApplicationContainWork(entity, value))
.WithMessage("У данного приложения нет связанных работ");
// RuleFor(t => t.ApplicationId)
// .MustAsync(async (entity, value, c) => await IsApplicationContainWork(entity, value))
// .WithMessage("У данного приложения нет связанных работ");
//TODO: возможно сделать проверку, по данному выражению есть ли ЭК
RuleFor(t => t.Ek).NotEmpty().WithMessage("Недопустимое значение ЭК. Возможные значения: *, ВРТ-*-ДВС");
// //TODO: возможно сделать проверку, по данному выражению есть ли ЭК
// RuleFor(t => t.Ek).NotEmpty().WithMessage("Недопустимое значение ЭК. Возможные значения: *, ВРТ-*-ДВС");
RuleFor(t => t.Action)
.Must(t => t.ToLower() == GenerateTemplateActionsEnum.create.ToString() || t.ToLower() == GenerateTemplateActionsEnum.deactivate.ToString())
.WithMessage($"Допустимые значения: {GenerateTemplateActionsEnum.create}, {GenerateTemplateActionsEnum.deactivate}");
// RuleFor(t => t.Action)
// .Must(t => t.ToLower() == GenerateTemplateActionsEnum.create.ToString() || t.ToLower() == GenerateTemplateActionsEnum.deactivate.ToString())
// .WithMessage($"Допустимые значения: {GenerateTemplateActionsEnum.create}, {GenerateTemplateActionsEnum.deactivate}");
//0 - все статусы, 1,2,3,4,5,6,7,9
var ekStatuses = new List<int> { 0, 1, 2, 3, 4, 5, 6, 7, 9 };
//RuleFor(t => t.Status).Must(t => ekStatuses.Contains(t)).WithMessage("Допустимые значения: 0 - все статусы, 1,2,3,4,5,6,7,9");
RuleFor(t => t.Status).Must((statuses) =>
{
if (statuses.Count < 1)
return false;
// //0 - все статусы, 1,2,3,4,5,6,7,9
// var ekStatuses = new List<int> { 0, 1, 2, 3, 4, 5, 6, 7, 9 };
// //RuleFor(t => t.Status).Must(t => ekStatuses.Contains(t)).WithMessage("Допустимые значения: 0 - все статусы, 1,2,3,4,5,6,7,9");
// RuleFor(t => t.Status).Must((statuses) =>
// {
// if (statuses.Count < 1)
// return false;
var isContains = true;
statuses.ForEach(status =>
{
if (ekStatuses.Contains(status) == false)
isContains = false;
});
// var isContains = true;
// statuses.ForEach(status =>
// {
// if (ekStatuses.Contains(status) == false)
// isContains = false;
// });
return isContains;
}).WithMessage("Допустимые значения: 0 - все статусы, 1,2,3,4,5,6,7,9");
}
// return isContains;
// }).WithMessage("Допустимые значения: 0 - все статусы, 1,2,3,4,5,6,7,9");
// }
private async Task<bool> IsApplicationContainWork(GeneratorTemplateRequest request, Guid applicationId)
{
//чтобы не делать 2 раза валидацию
if (isValid.HasValue)
return isValid.Value;
// private async Task<bool> IsApplicationContainWork(GeneratorTemplateRequest request, Guid applicationId)
// {
// //чтобы не делать 2 раза валидацию
// if (isValid.HasValue)
// return isValid.Value;
isValid = await applicationsInWorkService.GetAsync(applicationId, request.WorkId) != null;
// isValid = await applicationsInWorkService.GetAsync(applicationId, request.WorkId) != null;
return isValid.Value;
}
}
// return isValid.Value;
// }
//}
}