feat(all): исправления после добавления таблицы WorkGroup. Доработана логика генерации шаблонов с учетом рабочих групп

This commit is contained in:
Mikhail Trubnikov
2024-06-04 12:03:15 +10:00
parent 90948108c1
commit 7deef9a264
15 changed files with 227 additions and 20 deletions

View File

@@ -1,6 +1,6 @@
using FluentValidation;
using Microsoft.EntityFrameworkCore;
using PARR.API.Contracts.V1.Requests;
using PARR.API.Contracts.V1.Responses.Base;
using PARR.DAL.Services.Interfaces;
namespace PARR.API.Validators
@@ -10,17 +10,19 @@ namespace PARR.API.Validators
private readonly IApplicationsInWorkService applicationsInWorkService;
private readonly IWorkService workService;
private readonly IEsppSchTypeConfigService esppSchTypeConfigService;
private readonly IWorkGroupService workGroupService;
public ApplicationInWorkValidator(
IApplicationsInWorkService applicationsInWorkService,
IWorkService workService,
IEsppSchTypeConfigService esppSchTypeConfigService
IEsppSchTypeConfigService esppSchTypeConfigService,
IWorkGroupService workGroupService
)
{
this.applicationsInWorkService = applicationsInWorkService;
this.workService = workService;
this.esppSchTypeConfigService = esppSchTypeConfigService;
this.workGroupService = workGroupService;
RuleFor(t => t.TemplateDuration)
.NotNull().NotEmpty()//.WithMessage("Длительность данного задания на выполнение работ не может быть пустым")
@@ -45,8 +47,8 @@ namespace PARR.API.Validators
RuleFor(t => t.ApplicationId)
.MustAsync(async (entity, value, c) => await IsApplicationExist(entity))
.WithMessage("Указан несуществующий Id программного обеспечения");
//.MustAsync(async (entity, value, c) => await AppInWorkIsUnique(entity))
// .WithMessage("Задание на выполнение работ с такими ПО и работой уже существует");
//.MustAsync(async (entity, value, c) => await AppInWorkIsUnique(entity))
// .WithMessage("Задание на выполнение работ с такими ПО и работой уже существует");
//.WithMessage("У данного задания на выполнение работ указан несуществующий Id программного обеспечения");
@@ -89,6 +91,18 @@ namespace PARR.API.Validators
// .When(t => t.Schedule != null).WithMessage("Не удалось найти подходящую конфигруцию планировщика задания на выполнение работ");
#endregion
RuleFor(t => t.WorkGroups)
.MustAsync(async (entity, value, c) => await IsWorkGroupsExistAsync(entity))
.WithMessage("Указаные несуществующие Id рабочих групп");
}
private async Task<bool> IsWorkGroupsExistAsync(ApplicationInWorkRequest entity)
{
var result = await workGroupService.Get().Where(t => entity.WorkGroups.Contains(t.Id)).ToListAsync();
return entity.WorkGroups.Count() == result.Count();
}
//private bool IsEsppSchValuesExist(ApplicationInWorkRequest request)