diff --git a/AsbCloudInfrastructure/DependencyInjection.cs b/AsbCloudInfrastructure/DependencyInjection.cs index fd56eae1..d32253bf 100644 --- a/AsbCloudInfrastructure/DependencyInjection.cs +++ b/AsbCloudInfrastructure/DependencyInjection.cs @@ -93,9 +93,8 @@ namespace AsbCloudInfrastructure // TelemetryData services services.AddTransient, TelemetryDataSaubService>(); services.AddTransient, TelemetryDataSpinService>(); - - // Validation rules - services.AddTransient, AuthDtoValidator>(); + + services.AddValidators(); return services; } diff --git a/AsbCloudInfrastructure/Validators/ClusterDtoValidator.cs b/AsbCloudInfrastructure/Validators/ClusterDtoValidator.cs new file mode 100644 index 00000000..e225c615 --- /dev/null +++ b/AsbCloudInfrastructure/Validators/ClusterDtoValidator.cs @@ -0,0 +1,20 @@ +using AsbCloudApp.Data; +using FluentValidation; + +namespace AsbCloudInfrastructure.Validators +{ + public class ClusterDtoValidator : AbstractValidator + { + 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"); + } + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Validators/CompanyDtoValidator.cs b/AsbCloudInfrastructure/Validators/CompanyDtoValidator.cs new file mode 100644 index 00000000..c8390315 --- /dev/null +++ b/AsbCloudInfrastructure/Validators/CompanyDtoValidator.cs @@ -0,0 +1,16 @@ +using AsbCloudApp.Data; +using FluentValidation; + +namespace AsbCloudInfrastructure.Validators +{ + public class CompanyDtoValidator : AbstractValidator + { + public CompanyDtoValidator() + { + RuleFor(x => x.Caption).Length(1, 50) + .WithMessage("Допустимое имя компании от 1 до 50 символов"); + RuleFor(x => x.CompanyTypeCaption).Length(1, 30) + .WithMessage("Допустимое имя типа компании от 1 до 30 символов"); + } + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Validators/DependencyInjection.cs b/AsbCloudInfrastructure/Validators/DependencyInjection.cs new file mode 100644 index 00000000..fc8083b1 --- /dev/null +++ b/AsbCloudInfrastructure/Validators/DependencyInjection.cs @@ -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, AuthDtoValidator>(); + services.AddTransient, ClusterDtoValidator>(); + services.AddTransient, CompanyDtoValidator>(); + services.AddTransient, DepositDtoValidator>(); + services.AddTransient, DrillFlowChartDtoValidator>(); + services.AddTransient, EventDtoValidator>(); + services.AddTransient, FileInfoDtoValidator>(); + services.AddTransient, FileMarkDtoValidator>(); + services.AddTransient, MeasureDtoValidator>(); + services.AddTransient, MessageDtoValidator>(); + services.AddTransient, PermissionDtoValidator>(); + services.AddTransient, ReportPropertiesDtoValidator>(); + services.AddTransient, UserRegistrationDtoValidator>(); + services.AddTransient, UserRoleDtoValidator>(); + services.AddTransient, WellDtoValidator>(); + services.AddTransient, WellOperationDtoValidator>(); + + return services; + } + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Validators/DepositDtoValidator.cs b/AsbCloudInfrastructure/Validators/DepositDtoValidator.cs new file mode 100644 index 00000000..a98008b1 --- /dev/null +++ b/AsbCloudInfrastructure/Validators/DepositDtoValidator.cs @@ -0,0 +1,18 @@ +using AsbCloudApp.Data; +using FluentValidation; + +namespace AsbCloudInfrastructure.Validators +{ + public class DepositDtoValidator : AbstractValidator + { + 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"); + } + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Validators/DrillFlowChartDtoValidator.cs b/AsbCloudInfrastructure/Validators/DrillFlowChartDtoValidator.cs new file mode 100644 index 00000000..ea6e29e9 --- /dev/null +++ b/AsbCloudInfrastructure/Validators/DrillFlowChartDtoValidator.cs @@ -0,0 +1,20 @@ +using AsbCloudApp.Data; +using FluentValidation; + +namespace AsbCloudInfrastructure.Validators +{ + public class DrillFlowChartDtoValidator : AbstractValidator + { + 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("Глубина не может быть отрицательной"); + } + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Validators/EventDtoValidator.cs b/AsbCloudInfrastructure/Validators/EventDtoValidator.cs new file mode 100644 index 00000000..60846369 --- /dev/null +++ b/AsbCloudInfrastructure/Validators/EventDtoValidator.cs @@ -0,0 +1,18 @@ +using AsbCloudApp.Data; +using FluentValidation; + +namespace AsbCloudInfrastructure.Validators +{ + public class EventDtoValidator : AbstractValidator + { + 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 звука оповещения не может быть отрицательным"); + } + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Validators/FileInfoDtoValidator.cs b/AsbCloudInfrastructure/Validators/FileInfoDtoValidator.cs new file mode 100644 index 00000000..42fb9431 --- /dev/null +++ b/AsbCloudInfrastructure/Validators/FileInfoDtoValidator.cs @@ -0,0 +1,18 @@ +using AsbCloudApp.Data; +using FluentValidation; + +namespace AsbCloudInfrastructure.Validators +{ + public class FileInfoDtoValidator : AbstractValidator + { + 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 символов"); + } + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Validators/FileMarkDtoValidator.cs b/AsbCloudInfrastructure/Validators/FileMarkDtoValidator.cs new file mode 100644 index 00000000..eda4c8b4 --- /dev/null +++ b/AsbCloudInfrastructure/Validators/FileMarkDtoValidator.cs @@ -0,0 +1,18 @@ +using AsbCloudApp.Data; +using FluentValidation; + +namespace AsbCloudInfrastructure.Validators +{ + public class FileMarkDtoValidator : AbstractValidator + { + 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 символов"); + } + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Validators/MeasureDtoValidator.cs b/AsbCloudInfrastructure/Validators/MeasureDtoValidator.cs new file mode 100644 index 00000000..9fdf87cb --- /dev/null +++ b/AsbCloudInfrastructure/Validators/MeasureDtoValidator.cs @@ -0,0 +1,18 @@ +using AsbCloudApp.Data; +using FluentValidation; + +namespace AsbCloudInfrastructure.Validators +{ + public class MeasureDtoValidator : AbstractValidator + { + 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 символов"); + } + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Validators/MessageDtoValidator.cs b/AsbCloudInfrastructure/Validators/MessageDtoValidator.cs new file mode 100644 index 00000000..e7898745 --- /dev/null +++ b/AsbCloudInfrastructure/Validators/MessageDtoValidator.cs @@ -0,0 +1,18 @@ +using AsbCloudApp.Data; +using FluentValidation; + +namespace AsbCloudInfrastructure.Validators +{ + public class MessageDtoValidator : AbstractValidator + { + 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 символов"); + } + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Validators/PermissionDtoValidator.cs b/AsbCloudInfrastructure/Validators/PermissionDtoValidator.cs new file mode 100644 index 00000000..0d65dad4 --- /dev/null +++ b/AsbCloudInfrastructure/Validators/PermissionDtoValidator.cs @@ -0,0 +1,16 @@ +using AsbCloudApp.Data; +using FluentValidation; + +namespace AsbCloudInfrastructure.Validators +{ + public class PermissionDtoValidator : AbstractValidator + { + public PermissionDtoValidator() + { + RuleFor(x => x.Name).Length(1, 50) + .WithMessage("Допустимая длина названия разрешения от 1 до 50 символов"); + RuleFor(x => x.Description) + .Length(1, 200).WithMessage("Допустимая длина описания от 1 до 200 символов"); + } + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Validators/ReportPropertiesDtoValidator.cs b/AsbCloudInfrastructure/Validators/ReportPropertiesDtoValidator.cs new file mode 100644 index 00000000..90d072e6 --- /dev/null +++ b/AsbCloudInfrastructure/Validators/ReportPropertiesDtoValidator.cs @@ -0,0 +1,16 @@ +using AsbCloudApp.Data; +using FluentValidation; + +namespace AsbCloudInfrastructure.Validators +{ + public class ReportPropertiesDtoValidator : AbstractValidator + { + public ReportPropertiesDtoValidator() + { + RuleFor(x => x.Name).Length(1, 50) + .WithMessage("Допустимая длина имени файла от 1 до 50 символов"); + RuleFor(x => x.IdWell).LessThan(1) + .WithMessage("Id скважины не может быть меньше 1"); + } + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Validators/UserRegistrationDtoValidator.cs b/AsbCloudInfrastructure/Validators/UserRegistrationDtoValidator.cs new file mode 100644 index 00000000..afd65961 --- /dev/null +++ b/AsbCloudInfrastructure/Validators/UserRegistrationDtoValidator.cs @@ -0,0 +1,24 @@ +using AsbCloudApp.Data; +using FluentValidation; + +namespace AsbCloudInfrastructure.Validators +{ + public class UserRegistrationDtoValidator : AbstractValidator + { + 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 символов"); + } + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Validators/UserRoleDtoValidator.cs b/AsbCloudInfrastructure/Validators/UserRoleDtoValidator.cs new file mode 100644 index 00000000..c1ed5f72 --- /dev/null +++ b/AsbCloudInfrastructure/Validators/UserRoleDtoValidator.cs @@ -0,0 +1,16 @@ +using AsbCloudApp.Data; +using FluentValidation; + +namespace AsbCloudInfrastructure.Validators +{ + public class UserRoleDtoValidator : AbstractValidator + { + public UserRoleDtoValidator() + { + RuleFor(x => x.Caption).Length(0, 50) + .WithMessage("Допустимая длина названия роли от 1 до 50 символов"); + RuleFor(x => x.IdType).LessThan(1) + .WithMessage("Id типа роли не может быть ниже 1"); + } + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Validators/WellDtoValidator.cs b/AsbCloudInfrastructure/Validators/WellDtoValidator.cs new file mode 100644 index 00000000..e75490cc --- /dev/null +++ b/AsbCloudInfrastructure/Validators/WellDtoValidator.cs @@ -0,0 +1,16 @@ +using AsbCloudApp.Data; +using FluentValidation; + +namespace AsbCloudInfrastructure.Validators +{ + public class WellDtoValidator : AbstractValidator + { + 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"); + } + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Validators/WellOperationDtoValidator.cs b/AsbCloudInfrastructure/Validators/WellOperationDtoValidator.cs new file mode 100644 index 00000000..6202eeb9 --- /dev/null +++ b/AsbCloudInfrastructure/Validators/WellOperationDtoValidator.cs @@ -0,0 +1,16 @@ +using AsbCloudApp.Data; +using FluentValidation; + +namespace AsbCloudInfrastructure.Validators +{ + public class WellOperationDtoValidator : AbstractValidator + { + public WellOperationDtoValidator() + { + RuleFor(x => x.IdWell).LessThan(1) + .WithMessage("Id скважины не может быть меньше 1"); + RuleFor(x => x.Comment).MaximumLength(400) + .WithMessage("Комментарий не может быть длиннее 400 символов"); + } + } +} \ No newline at end of file