CS2-125: Added base dto validation

This commit is contained in:
Харченко Владимир 2022-01-12 17:28:27 +05:00
parent 42c5974d68
commit 9792fe2196
17 changed files with 286 additions and 3 deletions

View File

@ -78,9 +78,6 @@ namespace AsbCloudInfrastructure
// TelemetryData services
services.AddTransient<ITelemetryDataService<TelemetryDataSaubDto>, TelemetryDataSaubService>();
services.AddTransient<ITelemetryDataService<TelemetryDataSpinDto>, TelemetryDataSpinService>();
// Validation rules
services.AddTransient<IValidator<AuthDto>, AuthDtoValidator>();
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,18 @@
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,
IConfiguration configuration)
{
services.AddTransient<IValidator<AuthDto>, AuthDtoValidator>();
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 символов");
}
}
}