This commit is contained in:
Фролов 2022-01-17 16:07:09 +05:00
commit 1f1f86f00e
17 changed files with 302 additions and 3 deletions

View File

@ -94,8 +94,7 @@ namespace AsbCloudInfrastructure
services.AddTransient<ITelemetryDataService<TelemetryDataSaubDto>, TelemetryDataSaubService>();
services.AddTransient<ITelemetryDataService<TelemetryDataSpinDto>, TelemetryDataSpinService>();
// Validation rules
services.AddTransient<IValidator<AuthDto>, AuthDtoValidator>();
services.AddValidators();
return services;
}

View File

@ -0,0 +1,20 @@
using AsbCloudApp.Data;
using FluentValidation;
namespace AsbCloudInfrastructure.Validators
{
public class ClusterDtoValidator : AbstractValidator<ClusterDto>
{
public ClusterDtoValidator()
{
RuleFor(x => x.Caption).Length(1, 50)
.WithMessage("Допустимая длина названия от 1 до 50 символов");
RuleFor(x => x.Latitude).Must(lat => lat is <= 90 and >= -90)
.WithMessage("Допустимые значения широты от -90 до 90");
RuleFor(x => x.Longitude).Must(lat => lat is <= 180 and >= -180)
.WithMessage("Допустимые значения долготы от -180 до 180");
RuleFor(x => x.IdDeposit).LessThan(1)
.WithMessage("Id не может быть меньше 1");
}
}
}

View File

@ -0,0 +1,16 @@
using AsbCloudApp.Data;
using FluentValidation;
namespace AsbCloudInfrastructure.Validators
{
public class CompanyDtoValidator : AbstractValidator<CompanyDto>
{
public CompanyDtoValidator()
{
RuleFor(x => x.Caption).Length(1, 50)
.WithMessage("Допустимое имя компании от 1 до 50 символов");
RuleFor(x => x.CompanyTypeCaption).Length(1, 30)
.WithMessage("Допустимое имя типа компании от 1 до 30 символов");
}
}
}

View File

@ -0,0 +1,32 @@
using AsbCloudApp.Data;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using FluentValidation;
namespace AsbCloudInfrastructure.Validators
{
public static class DependencyInjection
{
public static IServiceCollection AddValidators(this IServiceCollection services)
{
services.AddTransient<IValidator<AuthDto>, AuthDtoValidator>();
services.AddTransient<IValidator<ClusterDto>, ClusterDtoValidator>();
services.AddTransient<IValidator<CompanyDto>, CompanyDtoValidator>();
services.AddTransient<IValidator<DepositDto>, DepositDtoValidator>();
services.AddTransient<IValidator<DrillFlowChartDto>, DrillFlowChartDtoValidator>();
services.AddTransient<IValidator<EventDto>, EventDtoValidator>();
services.AddTransient<IValidator<FileInfoDto>, FileInfoDtoValidator>();
services.AddTransient<IValidator<FileMarkDto>, FileMarkDtoValidator>();
services.AddTransient<IValidator<MeasureDto>, MeasureDtoValidator>();
services.AddTransient<IValidator<MessageDto>, MessageDtoValidator>();
services.AddTransient<IValidator<PermissionDto>, PermissionDtoValidator>();
services.AddTransient<IValidator<ReportPropertiesDto>, ReportPropertiesDtoValidator>();
services.AddTransient<IValidator<UserRegistrationDto>, UserRegistrationDtoValidator>();
services.AddTransient<IValidator<UserRoleDto>, UserRoleDtoValidator>();
services.AddTransient<IValidator<WellDto>, WellDtoValidator>();
services.AddTransient<IValidator<WellOperationDto>, WellOperationDtoValidator>();
return services;
}
}
}

View File

@ -0,0 +1,18 @@
using AsbCloudApp.Data;
using FluentValidation;
namespace AsbCloudInfrastructure.Validators
{
public class DepositDtoValidator : AbstractValidator<DepositDto>
{
public DepositDtoValidator()
{
RuleFor(x => x.Caption).Length(1, 50)
.WithMessage("Допустимая длина названия от 1 до 50 символов");
RuleFor(x => x.Latitude).Must(lat => lat is <= 90 and >= -90)
.WithMessage("Допустимые значения широты от -90 до 90");
RuleFor(x => x.Longitude).Must(lat => lat is <= 180 and >= -180)
.WithMessage("Допустимые значения долготы от -180 до 180");
}
}
}

View File

@ -0,0 +1,20 @@
using AsbCloudApp.Data;
using FluentValidation;
namespace AsbCloudInfrastructure.Validators
{
public class DrillFlowChartDtoValidator : AbstractValidator<DrillFlowChartDto>
{
public DrillFlowChartDtoValidator()
{
RuleFor(x => x.IdWell).LessThan(1)
.WithMessage("Id скважины не может быть меньше 1");
RuleFor(x => x.IdWellOperationCategory).LessThan(1)
.WithMessage("Id категории операции не может быть меньше 1");
RuleFor(x => x.DepthStart).LessThan(1)
.WithMessage("Глубина не может быть отрицательной");
RuleFor(x => x.DepthEnd).LessThan(1)
.WithMessage("Глубина не может быть отрицательной");
}
}
}

View File

@ -0,0 +1,18 @@
using AsbCloudApp.Data;
using FluentValidation;
namespace AsbCloudInfrastructure.Validators
{
public class EventDtoValidator : AbstractValidator<EventDto>
{
public EventDtoValidator()
{
RuleFor(x => x.IdCategory).LessThan(0)
.WithMessage("Id категории события не может быть отрицательным");
RuleFor(x => x.EventType).LessThan(0)
.WithMessage("Id типа события не может быть отрицательным");
RuleFor(x => x.IdSound).LessThan(0)
.WithMessage("Id звука оповещения не может быть отрицательным");
}
}
}

View File

@ -0,0 +1,18 @@
using AsbCloudApp.Data;
using FluentValidation;
namespace AsbCloudInfrastructure.Validators
{
public class FileInfoDtoValidator : AbstractValidator<FileInfoDto>
{
public FileInfoDtoValidator()
{
RuleFor(x => x.IdWell).LessThan(1)
.WithMessage("Id скважины не может быть меньше 1");
RuleFor(x => x.IdCategory).LessThan(1)
.WithMessage("Id категории файла не может быть меньше 1");
RuleFor(x => x.Name).Length(1, 50)
.WithMessage("Допустимое имя файла от 1 до 50 символов");
}
}
}

View File

@ -0,0 +1,18 @@
using AsbCloudApp.Data;
using FluentValidation;
namespace AsbCloudInfrastructure.Validators
{
public class FileMarkDtoValidator : AbstractValidator<FileMarkDto>
{
public FileMarkDtoValidator()
{
RuleFor(x => x.IdFile).LessThan(1)
.WithMessage("Id файла не может быть ниже 1");
RuleFor(x => x.IdMarkType).LessThan(1)
.WithMessage("Id категории действия с файлом не может быть ниже 1");
RuleFor(x => x.Comment).MaximumLength(200)
.WithMessage("Длина текста комментария не может быть выше 200 символов");
}
}
}

View File

@ -0,0 +1,18 @@
using AsbCloudApp.Data;
using FluentValidation;
namespace AsbCloudInfrastructure.Validators
{
public class MeasureDtoValidator : AbstractValidator<MeasureDto>
{
public MeasureDtoValidator()
{
RuleFor(x => x.IdWell).LessThan(1)
.WithMessage("Id скважины не может быть меньше 1");
RuleFor(x => x.IdCategory).LessThan(1)
.WithMessage("Id категории не может быть меньше 1");
RuleFor(x => x.CategoryName).MaximumLength(50)
.WithMessage("Название категории не может быть больше 50 символов");
}
}
}

View File

@ -0,0 +1,18 @@
using AsbCloudApp.Data;
using FluentValidation;
namespace AsbCloudInfrastructure.Validators
{
public class MessageDtoValidator : AbstractValidator<MessageDto>
{
public MessageDtoValidator()
{
RuleFor(x => x.CategoryId).LessThan(1)
.WithMessage("Id категории не может быть ниже 1");
RuleFor(x => x.WellDepth).LessThan(1)
.WithMessage("Id скважины не может быть ниже 1");
RuleFor(x => x.Message).Length(1, 200)
.WithMessage("Допустимая длина текста сообщения от 1 до 200 символов");
}
}
}

View File

@ -0,0 +1,16 @@
using AsbCloudApp.Data;
using FluentValidation;
namespace AsbCloudInfrastructure.Validators
{
public class PermissionDtoValidator : AbstractValidator<PermissionDto>
{
public PermissionDtoValidator()
{
RuleFor(x => x.Name).Length(1, 50)
.WithMessage("Допустимая длина названия разрешения от 1 до 50 символов");
RuleFor(x => x.Description)
.Length(1, 200).WithMessage("Допустимая длина описания от 1 до 200 символов");
}
}
}

View File

@ -0,0 +1,16 @@
using AsbCloudApp.Data;
using FluentValidation;
namespace AsbCloudInfrastructure.Validators
{
public class ReportPropertiesDtoValidator : AbstractValidator<ReportPropertiesDto>
{
public ReportPropertiesDtoValidator()
{
RuleFor(x => x.Name).Length(1, 50)
.WithMessage("Допустимая длина имени файла от 1 до 50 символов");
RuleFor(x => x.IdWell).LessThan(1)
.WithMessage("Id скважины не может быть меньше 1");
}
}
}

View File

@ -0,0 +1,24 @@
using AsbCloudApp.Data;
using FluentValidation;
namespace AsbCloudInfrastructure.Validators
{
public class UserRegistrationDtoValidator : AbstractValidator<UserRegistrationDto>
{
public UserRegistrationDtoValidator()
{
RuleFor(x => x.Login).NotNull().WithMessage("Логин не должен быть пустым");
RuleFor(x => x.Login).NotEmpty().WithMessage("Логин не должен быть пустым");
RuleFor(x => x.Login).Length(0, 50).WithMessage("Допустимая длина логина от 1 до 50 символов");
RuleFor(x => x.Password).NotNull().WithMessage("Логин не должен быть пустым");
RuleFor(x => x.Password).NotEmpty().WithMessage("Логин не должен быть пустым");
RuleFor(x => x.Password).Length(0, 50).WithMessage("Допустимая длина логина от 1 до 50 символов");
RuleFor(x => x.Name).Length(0, 50).WithMessage("Допустимая длина имени от 1 до 50 символов");
RuleFor(x => x.Surname).Length(0, 50).WithMessage("Допустимая длина фамилии от 1 до 50 символов");
RuleFor(x => x.Patronymic).Length(0, 50).WithMessage("Допустимая длина отчества от 1 до 50 символов");
RuleFor(x => x.Email).Length(0, 200).WithMessage("Допустимая длина email от 1 до 200 символов");
RuleFor(x => x.Phone).Length(0, 50).WithMessage("Допустимая длина телефона от 1 до 50 символов");
RuleFor(x => x.Position).Length(0, 50).WithMessage("Допустимая длина должности от 1 до 50 символов");
}
}
}

View File

@ -0,0 +1,16 @@
using AsbCloudApp.Data;
using FluentValidation;
namespace AsbCloudInfrastructure.Validators
{
public class UserRoleDtoValidator : AbstractValidator<UserRoleDto>
{
public UserRoleDtoValidator()
{
RuleFor(x => x.Caption).Length(0, 50)
.WithMessage("Допустимая длина названия роли от 1 до 50 символов");
RuleFor(x => x.IdType).LessThan(1)
.WithMessage("Id типа роли не может быть ниже 1");
}
}
}

View File

@ -0,0 +1,16 @@
using AsbCloudApp.Data;
using FluentValidation;
namespace AsbCloudInfrastructure.Validators
{
public class WellDtoValidator : AbstractValidator<WellDto>
{
public WellDtoValidator()
{
RuleFor(x => x.Latitude).Must(lat => lat is <= 90 and >= -90)
.WithMessage("Допустимые значения широты от -90 до 90");
RuleFor(x => x.Longitude).Must(lat => lat is <= 180 and >= -180)
.WithMessage("Допустимые значения долготы от -180 до 180");
}
}
}

View File

@ -0,0 +1,16 @@
using AsbCloudApp.Data;
using FluentValidation;
namespace AsbCloudInfrastructure.Validators
{
public class WellOperationDtoValidator : AbstractValidator<WellOperationDto>
{
public WellOperationDtoValidator()
{
RuleFor(x => x.IdWell).LessThan(1)
.WithMessage("Id скважины не может быть меньше 1");
RuleFor(x => x.Comment).MaximumLength(400)
.WithMessage("Комментарий не может быть длиннее 400 символов");
}
}
}