feat(api): jobGroup при создании и обновлении принимает поле GroupingUnitFieldId. Валидации. Контроллеры KiiUnitController, RegionalEkPtkGroupController
This commit is contained in:
@@ -1,12 +1,19 @@
|
||||
using FluentValidation;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using PARR.API.Contracts.V1.Requests;
|
||||
using PARR.DAL.Contracts;
|
||||
using PARR.DAL.Services.Interfaces.Job;
|
||||
using PARR.DAL.Services.Interfaces.Unit;
|
||||
|
||||
namespace PARR.API.Validators
|
||||
{
|
||||
public class JobGroupValidator : AbstractValidator<JobGroupRequest>
|
||||
{
|
||||
public JobGroupValidator(IJobGroupTypeService jobGroupTypeService)
|
||||
public JobGroupValidator(
|
||||
IJobGroupTypeService jobGroupTypeService,
|
||||
IUnitFieldService unitFieldService
|
||||
)
|
||||
{
|
||||
RuleFor(t => t.Name)
|
||||
.NotNull().NotEmpty();
|
||||
@@ -26,6 +33,33 @@ namespace PARR.API.Validators
|
||||
RuleFor(t => t.GroupTypeId)
|
||||
.MustAsync(async (entity, value, c) => await jobGroupTypeService.GetAsync(value) != null)
|
||||
.WithMessage("Указан несуществующий Id типа");
|
||||
|
||||
//Проверяем существует ли такой GroupingUnitFieldId в unitField
|
||||
RuleFor(t => t.GroupingUnitFieldId)
|
||||
.MustAsync(async (entity, value, c) =>
|
||||
{
|
||||
if (!value.HasValue)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return await unitFieldService.GetAsync(value.Value) != null;
|
||||
})
|
||||
.WithMessage("Указано несуществующий Id поля");
|
||||
|
||||
|
||||
RuleFor(t => t.GroupingUnitFieldId)
|
||||
.MustAsync(async (entity, value, c) =>
|
||||
{
|
||||
var groupingJobType = await jobGroupTypeService.Get().FirstAsync(t => t.Code == JobGroupTypesEnum.Group);
|
||||
|
||||
// Если это сгруппированный тип, то у него обязательно должно быть заполнено поле GroupingUnitFieldId
|
||||
if (entity.GroupTypeId == groupingJobType.Id)
|
||||
return value.HasValue;
|
||||
|
||||
return true;
|
||||
})
|
||||
.WithMessage("Не указано поле для группировки");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user