feat(api): доработка AppInWorkController. Упрощен request, обновлен валидатор. В update добавлено обновление расписания. Метод удаления срабатывает только если нет связанных шаблонов.
This commit is contained in:
@@ -22,34 +22,53 @@ namespace PARR.API.Validators
|
||||
|
||||
|
||||
RuleFor(t => t.TemplateDuration)
|
||||
.NotNull().NotEmpty().WithMessage("Длительность данного задания на выполнение работ не может быть пустым")
|
||||
.NotNull().NotEmpty()//.WithMessage("Длительность данного задания на выполнение работ не может быть пустым")
|
||||
.Matches("^\\d{1,2}\\s\\d{1,2}[:]\\d{1,2}[:]\\d{1,2}$")
|
||||
.WithMessage("Длительность данного задания на выполнение работ должна соответствовать шаблону dd hh:mm:ss(7 00:00:00)");
|
||||
//.WithMessage("Длительность данного задания на выполнение работ должна соответствовать шаблону dd hh:mm:ss(7 00:00:00)");
|
||||
.WithMessage("Значение не соответствует шаблону dd hh:mm:ss(7 00:00:00)");
|
||||
|
||||
RuleFor(t => t.ShortDescription)
|
||||
.NotNull().NotEmpty().WithMessage("Краткое описание данного задания на выполнение работ не может быть пустым");
|
||||
.NotNull().NotEmpty();//.WithMessage("Краткое описание данного задания на выполнение работ не может быть пустым");
|
||||
|
||||
RuleFor(t => t.FullDescription)
|
||||
.NotNull().NotEmpty().WithMessage("Подробное описание данного задания на выполнение работ не может быть пустым");
|
||||
.NotNull().NotEmpty();//.WithMessage("Подробное описание данного задания на выполнение работ не может быть пустым");
|
||||
|
||||
RuleFor(t => t.Solution)
|
||||
.NotNull().NotEmpty().WithMessage("Решение данного задания на выполнение работ не может быть пустым");
|
||||
.NotNull().NotEmpty();//.WithMessage("Решение данного задания на выполнение работ не может быть пустым");
|
||||
|
||||
RuleFor(t => t.WorkId)
|
||||
.MustAsync(async (entity, value, c) => await IsWorkExist(entity))
|
||||
.WithMessage("У данного задания на выполнение работ указан несуществующий Id работы");
|
||||
.WithMessage("Указан несуществующий Id работы");
|
||||
//.WithMessage("У данного задания на выполнение работ указан несуществующий Id работы");
|
||||
|
||||
RuleFor(t => t.ApplicationId)
|
||||
.MustAsync(async (entity, value, c) => await IsApplicationExist(entity))
|
||||
.WithMessage("У данного задания на выполнение работ указан несуществующий Id программного обеспечения");
|
||||
.WithMessage("Указан несуществующий Id программного обеспечения");
|
||||
//.WithMessage("У данного задания на выполнение работ указан несуществующий Id программного обеспечения");
|
||||
|
||||
|
||||
|
||||
#region old schedule
|
||||
//Проверяем настройки планировщика
|
||||
RuleFor(t => t.Schedule).NotNull().NotEmpty().WithMessage("Настройки планировщика задания на выполнение работ не могут быть пустыми");
|
||||
//RuleFor(t => t.Schedule).NotNull().NotEmpty()
|
||||
// .WithMessage("Настройки планировщика задания на выполнение работ не могут быть пустыми");
|
||||
|
||||
RuleFor(t => t.Schedule.EsppSchValues)
|
||||
.NotNull().NotEmpty().When(t => t.Schedule != null).WithMessage("Настройки планировщика задания на выполнение работ не могут быть пустыми")
|
||||
.Must((entity, value, c) => IsEsppSchValuesExist(entity)).WithMessage("Не удалось найти подходящую конфигруцию планировщика задания на выполнение работ");
|
||||
//RuleFor(t => t.Schedule.EsppSchValues)
|
||||
// .NotNull().NotEmpty()
|
||||
// .When(t => t.Schedule != null)
|
||||
// .WithMessage("Настройки планировщика задания на выполнение работ не могут быть пустыми")
|
||||
// .Must((entity, value, c) => IsEsppSchValuesExist(entity))
|
||||
// .WithMessage("Не удалось найти подходящую конфигруцию планировщика задания на выполнение работ");
|
||||
#endregion
|
||||
|
||||
RuleFor(t => t.Schedule)
|
||||
.NotNull().NotEmpty()
|
||||
.When(t => t.Schedule.Count() > 0)
|
||||
.WithMessage("Настройки планировщика не могут быть пустыми")
|
||||
.Must((entity, value, c) => IsEsppSchValuesExist(entity.Schedule))
|
||||
.WithMessage("Не удалось найти подходящую конфигруцию планировщика задания");
|
||||
|
||||
#region comment
|
||||
|
||||
//RuleFor(t => t.Schedule.Values)
|
||||
// .NotNull().NotEmpty().WithMessage($"Настройки значений планировщика задания на выполнение работ не могут быть пустыми")
|
||||
@@ -65,15 +84,19 @@ namespace PARR.API.Validators
|
||||
// .NotNull().NotEmpty().WithMessage($"Настройки значений планировщика задания на выполнение работ не могут быть пустыми")
|
||||
// .Must((entity, value, c) => IsScheduleTypeValueIdExist(entity))
|
||||
// .When(t => t.Schedule != null).WithMessage("Не удалось найти подходящую конфигруцию планировщика задания на выполнение работ");
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
private bool IsEsppSchValuesExist(ApplicationInWorkRequest request)
|
||||
//private bool IsEsppSchValuesExist(ApplicationInWorkRequest request)
|
||||
private bool IsEsppSchValuesExist(List<EsppSchValueRequest> listSchedule)
|
||||
{
|
||||
var configs = esppSchTypeConfigService.GetWithSchIncludes().ToList();
|
||||
|
||||
//Проверяем полученные Id конфигураций и Id конфигураций в базе
|
||||
var typeConfigIdList = request.Schedule.EsppSchValues.Select(t => t.TypeConfigId);
|
||||
var typeConfigIdList = listSchedule.Select(t => t.TypeConfigId);
|
||||
var foundTypeConfigIdList = configs.Where(t => typeConfigIdList.Contains(t.Id)).Distinct();
|
||||
|
||||
if (foundTypeConfigIdList.Count() == 0 //Не найдено совпадений с базой
|
||||
|| foundTypeConfigIdList.Select(t => t.TypeScheduleId).Distinct().Count() > 1) //или имеют разный тип планировщика
|
||||
return false;
|
||||
@@ -84,7 +107,7 @@ namespace PARR.API.Validators
|
||||
return false;
|
||||
|
||||
//Теперь проверяем значения
|
||||
foreach (var item in request.Schedule.EsppSchValues)
|
||||
foreach (var item in listSchedule)
|
||||
{
|
||||
var curTypeConfig = configs.Where(t => t.Id == item.TypeConfigId).Single();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user