Merge pull request 'Add attrib's to dto models and remove the "FluentValidation" package' (#34) from AddAttributesToDtos into dev

Reviewed-on: http://test.digitaldrilling.ru:8080/DDrilling/AsbCloudServer/pulls/34
This commit is contained in:
Никита Фролов 2023-03-10 13:46:21 +05:00
commit fd5822ac91
38 changed files with 86 additions and 362 deletions

View File

@ -1,4 +1,6 @@
namespace AsbCloudApp.Data
using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data
{
/// <summary>
/// DTO для авторизации
@ -8,11 +10,15 @@
/// <summary>
/// Имя пользователя для входа
/// </summary>
[Required(ErrorMessage = "Логин не должен быть пустым")]
[StringLength(50, MinimumLength = 1, ErrorMessage = "Допустимая длина логина от 1 до 50 символов")]
public string Login { get; set; } = null!;
/// <summary>
/// Пароль пользователя для входа
/// </summary>
[Required(ErrorMessage = "Пароль не должен быть пустым")]
[StringLength(50, MinimumLength = 1, ErrorMessage = "Допустимая длина пароля от 1 до 50 символов")]
public string Password { get; set; } = null!;
}
}

View File

@ -1,4 +1,5 @@
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
namespace AsbCloudApp.Data
@ -11,6 +12,7 @@ namespace AsbCloudApp.Data
/// <summary>
/// ИД месторождения, необязательный
/// </summary>
[Range(1, int.MaxValue, ErrorMessage = "Id месторождения не может быть меньше 1")]
public int IdDeposit { get; set; }
/// <summary>

View File

@ -14,6 +14,7 @@ namespace AsbCloudApp.Data
/// Название
/// </summary>
[Required]
[StringLength(50, MinimumLength = 1, ErrorMessage = "Допустимое имя компании от 1 до 50 символов")]
public string Caption { get; set; } = null!;
/// <summary>
@ -24,6 +25,7 @@ namespace AsbCloudApp.Data
/// <summary>
/// Название типа компании
/// </summary>
public string? CompanyTypeCaption { get; set; }
[StringLength(30, MinimumLength = 1, ErrorMessage = "Допустимое имя типа компании от 1 до 30 символов")]
public string? CompanyTypeCaption { get; set; } = null!;
}
}

View File

@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
namespace AsbCloudApp.Data
@ -13,11 +14,13 @@ namespace AsbCloudApp.Data
public int Id { get; set; }
/// <inheritdoc/>
[Range(1, int.MaxValue, ErrorMessage = "Id скважины не может быть меньше 1")]
public int IdWell { get; set; }
/// <summary>
/// id категории файла
/// </summary>
[Range(1, int.MaxValue, ErrorMessage = "Id категории файла не может быть меньше 1")]
public int IdCategory { get; set; }
/// <summary>
@ -28,6 +31,7 @@ namespace AsbCloudApp.Data
/// <summary>
/// имя файла
/// </summary>
[StringLength(260, MinimumLength = 1, ErrorMessage = "Допустимое имя компании от 1 до 260 символов")]
public string Name { get; set; } = null!;
/// <summary>

View File

@ -1,4 +1,5 @@
using System;
using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data
{
@ -13,12 +14,14 @@ namespace AsbCloudApp.Data
/// <summary>
/// id ôàéëà
/// </summary>
[Range(1, int.MaxValue, ErrorMessage = "Id файла не может быть меньше 1")]
public int IdFile { get; set; }
/// <summary>
/// 0 - îòêëîíåí
/// 1 - ñîãëàñîâàí
/// </summary>
[Range(0, int.MaxValue, ErrorMessage = "Id категории действия с файлом не может быть меньше 1")]
public int IdMarkType { get; set; }
/// <summary>
@ -30,6 +33,7 @@ namespace AsbCloudApp.Data
/// <summary>
/// Ïîëåçíûé êîììåíòàðèé
/// </summary>
[StringLength(4096, MinimumLength = 1, ErrorMessage = "Допустимое имя компании от 1 до 4096 символов")]
public string? Comment { get; set; }
/// <summary>

View File

@ -1,4 +1,6 @@
namespace AsbCloudApp.Data
using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data
{
/// <summary>
/// Точка на карте с названием
@ -11,12 +13,15 @@
/// <summary>
/// Название
/// </summary>
[StringLength(50, MinimumLength = 1, ErrorMessage = "Допустимая длина названия от 1 до 50 символов")]
public string Caption { get; set; } = null!;
/// <inheritdoc/>
[Range(-90, 90, ErrorMessage = "Допустимые значения широты от -90 до 90")]
public double? Latitude { get; set; }
/// <inheritdoc/>
[Range(-180, 180, ErrorMessage = "Допустимые значения долготы от -180 до 180")]
public double? Longitude { get; set; }
/// <inheritdoc/>

View File

@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data
{
@ -12,16 +13,19 @@ namespace AsbCloudApp.Data
public int Id { get; set; }
/// <inheritdoc/>
[Range(1, int.MaxValue, ErrorMessage = "Id скважины не может быть меньше 1")]
public int IdWell { get; set; }
/// <summary>
/// Id категории замера
/// </summary>
[Range(1, int.MaxValue, ErrorMessage = "Id категории не может быть меньше 1")]
public int IdCategory { get; set; }
/// <summary>
/// название категории замера
/// </summary>
[StringLength(120, MinimumLength = 1, ErrorMessage = "Название категории не может быть больше 120 символов")]
public string CategoryName { get; set; } = string.Empty;
/// <summary>

View File

@ -1,4 +1,5 @@
using System;
using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data
{
@ -18,11 +19,17 @@ namespace AsbCloudApp.Data
/// <summary>
/// категория события
/// </summary>
[Range(1, int.MaxValue, ErrorMessage = "Id категории не может быть ниже 1")]
public int CategoryId { get; set; }
//TODO: в модели дто сообщения отсутствует поле Id скважины
// скорее всего опечатка т.к. используется глубина в правиле валидатора
//в других валидаторах парамтр глубины идет рэнжированный от...до
/// <summary>
/// глубина забоя, при котором событие возникло
/// </summary>
[Range(-1, int.MaxValue, ErrorMessage = "Id скважины не может быть ниже 1")]
public double WellDepth { get; set; }
/// <summary>
@ -33,6 +40,7 @@ namespace AsbCloudApp.Data
/// <summary>
/// текст сообщения
/// </summary>
[StringLength(400, MinimumLength = 1, ErrorMessage = "Допустимая длина текста сообщения от 1 до 400 символов")]
public string Message { get; set; } = string.Empty;
}
}

View File

@ -1,4 +1,6 @@
namespace AsbCloudApp.Data
using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data
{
/// <summary>
/// Разрешение для группы пользователей сделать что-либо через web-api. <br/>
@ -12,11 +14,13 @@
/// <summary>
/// Название
/// </summary>
[StringLength(50, MinimumLength = 1, ErrorMessage = "Допустимая длина названия разрешения от 1 до 50 символов")]
public string Name { get; set; } = string.Empty;
/// <summary>
/// Описание
/// </summary>
[StringLength(1024, MinimumLength = 1, ErrorMessage = "Допустимая длина описания от 1 до 1024 символов")]
public string? Description { get; set; }
}
}

View File

@ -1,4 +1,5 @@
using System;
using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data.ProcessMap
{
@ -11,6 +12,7 @@ namespace AsbCloudApp.Data.ProcessMap
public int Id { get; set; }
/// <inheritdoc/>
[Range(1,int.MaxValue, ErrorMessage = "Id скважины не может быть меньше 1")]
public int IdWell { get; set; }
/// <summary>
@ -31,11 +33,13 @@ namespace AsbCloudApp.Data.ProcessMap
/// <summary>
/// Стартовая глубина
/// </summary>
[Range(0,50000,ErrorMessage = "Глубина не может быть отрицательной")]
public double DepthStart { get; set; }
/// <summary>
/// Глубина окончания интервала
/// </summary>
[Range(0, 50000, ErrorMessage = "Глубина не может быть отрицательной")]
public double DepthEnd { get; set; }
/// <summary>

View File

@ -1,4 +1,5 @@
using System;
using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data
{
@ -11,11 +12,13 @@ namespace AsbCloudApp.Data
public int Id { get; set; }
/// <inheritdoc/>
[Range(1, int.MaxValue, ErrorMessage = "Id скважины не может быть ниже 1")]
public int IdWell { get; set; }
/// <summary>
/// название
/// </summary>
[StringLength(260, MinimumLength = 1, ErrorMessage = "Допустимая длина имени файла от 1 до 260 символов")]
public string Name { get; set; } = null!;
/// <summary>

View File

@ -1,4 +1,6 @@
namespace AsbCloudApp.Data.SAUB
using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data.SAUB
{
/// <summary>
/// Описание шаблона события панели оператора
@ -8,6 +10,7 @@
/// <summary>
/// id события
/// </summary>
public int Id { get; set; }
/// <summary>
@ -18,6 +21,7 @@
/// <summary>
/// id категории события
/// </summary>
[Range(1, int.MaxValue, ErrorMessage = "Id категории события не может быть отрицательным")]
public int IdCategory { get; set; }
/// <summary>
@ -28,6 +32,7 @@
/// <summary>
/// тип определения наступления события
/// </summary>
[Range(1, int.MaxValue, ErrorMessage = "Id типа события не может быть отрицательным")]
public int EventType { get; set; }
/// <summary>

View File

@ -13,40 +13,45 @@ namespace AsbCloudApp.Data
/// <summary>
/// логин
/// </summary>
[Required]
[StringLength(255, MinimumLength = 2)]
[Required(ErrorMessage = "Логин не должен быть пустым")]
[StringLength(50, MinimumLength = 1, ErrorMessage = "Допустимая длина логина от 1 до 50 символов")]
public string Login { get; set; } = null!;
/// <summary>
/// Имя
/// </summary>
[StringLength(50, MinimumLength = 0, ErrorMessage = "Допустимая длина имени от 1 до 50 символов")]
public string? Name { get; set; }
/// <summary>
/// Фамилия
/// </summary>
[StringLength(50, MinimumLength = 0, ErrorMessage = "Допустимая длина фамилии от 1 до 50 символов")]
public string? Surname { get; set; }
/// <summary>
/// Отчество
/// </summary>
[StringLength(50, MinimumLength = 0, ErrorMessage = "Допустимая длина отчества от 1 до 50 символов")]
public string? Patronymic { get; set; }
/// <summary>
/// Email
/// </summary>
[Required]
[StringLength(255, MinimumLength = 6)]
[StringLength(260, MinimumLength = 1, ErrorMessage = "Допустимая длина email от 1 до 260 символов")]
public string Email { get; set; } = null!;
/// <summary>
/// Phone
/// </summary>
[StringLength(50, MinimumLength = 1, ErrorMessage = "Допустимая длина телефона от 1 до 50 символов")]
public string? Phone { get; set; }
/// <summary>
/// Должность
/// </summary>
[StringLength(100, MinimumLength = 1, ErrorMessage = "Допустимая длина должности от 1 до 100 символов")]
public string? Position { get; set; }
/// <summary>

View File

@ -1,4 +1,6 @@
namespace AsbCloudApp.Data
using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data
{
/// <inheritdoc/>
public class UserRegistrationDto : UserDto
@ -6,6 +8,8 @@
/// <summary>
/// пароль, используется только при регистрации.
/// </summary>
[Required(ErrorMessage = "Пароль не должен быть пустым")]
[StringLength(50, MinimumLength = 1, ErrorMessage = "Допустимая длина пароля от 1 до 50 символов")]
public string Password { get; set; } = null!;
}
}

View File

@ -16,6 +16,7 @@ namespace AsbCloudApp.Data
/// название
/// </summary>
[Required]
[StringLength(50, MinimumLength = 1,ErrorMessage = "Допустимая длина названия роли от 1 до 50 символов")]
public string Caption { get; set; } = null!;
/// <summary>

View File

@ -11,9 +11,11 @@ namespace AsbCloudApp.Data
public class WellDto : WellInfoDto, IMapPoint, IId
{
/// <inheritdoc/>
[Range(-90, 90, ErrorMessage = "Допустимые значения широты от -90 до 90")]
public double? Latitude { get; set; }
/// <inheritdoc/>
[Range(-180, 180, ErrorMessage = "Допустимые значения долготы от -180 до 180")]
public double? Longitude { get; set; }
/// <inheritdoc/>

View File

@ -8,11 +8,15 @@ namespace AsbCloudApp.Data
/// </summary>
public class WellOperationDto : IId, IWellRelated
{
/// <inheritdoc/>
public int Id { get; set; }
/// <inheritdoc/>
[Required]
[Range(1, int.MaxValue, ErrorMessage = "Id скважины не может быть меньше 1")]
public int IdWell { get; set; }
/// <summary>
@ -90,7 +94,7 @@ namespace AsbCloudApp.Data
/// <summary>
/// Полезный комментарий
/// </summary>
[StringLength(8192)]
[StringLength(4096, ErrorMessage = "Комментарий не может быть длиннее 4096 символов")]
public string? Comment { get; set; }
}
}

View File

@ -39,7 +39,6 @@
<ItemGroup>
<PackageReference Include="CliWrap" Version="3.6.0" />
<PackageReference Include="ClosedXML" Version="0.96.0" />
<PackageReference Include="FluentValidation.AspNetCore" Version="11.2.2" />
<PackageReference Include="itext7" Version="7.2.3" />
<PackageReference Include="Mapster" Version="7.3.0" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="6.0.1" />

View File

@ -17,8 +17,6 @@ using AsbCloudInfrastructure.Services.SAUB;
using AsbCloudInfrastructure.Services.Subsystems;
using AsbCloudInfrastructure.Services.Trajectory;
using AsbCloudInfrastructure.Services.WellOperationService;
using AsbCloudInfrastructure.Validators;
using FluentValidation.AspNetCore;
using Mapster;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Caching.Memory;
@ -93,8 +91,6 @@ namespace AsbCloudInfrastructure
services.AddDbContext<AsbCloudDbContext>(options =>
options.UseNpgsql(configuration.GetConnectionString(connectionStringName)));
// TODO: переместить FluentValidation в описание моделей
services.AddFluentValidationClientsideAdapters();
services.AddMemoryCache();
services.AddScoped<IAsbCloudDbContext>(provider => provider.GetService<AsbCloudDbContext>());
@ -197,8 +193,6 @@ namespace AsbCloudInfrastructure
services.AddTransient<IWitsRecordRepository<AsbCloudApp.Data.WITS.Record60Dto>, WitsRecordRepository<AsbCloudApp.Data.WITS.Record60Dto, AsbCloudDb.Model.WITS.Record60>>();
services.AddTransient<IWitsRecordRepository<AsbCloudApp.Data.WITS.Record61Dto>, WitsRecordRepository<AsbCloudApp.Data.WITS.Record61Dto, AsbCloudDb.Model.WITS.Record61>>();
services.AddValidators();
return services;
}

View File

@ -1,18 +0,0 @@
using AsbCloudApp.Data;
using FluentValidation;
namespace AsbCloudInfrastructure.Validators
{
public class AuthDtoValidator : AbstractValidator<AuthDto>
{
public AuthDtoValidator()
{
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 символов");
}
}
}

View File

@ -1,20 +0,0 @@
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(l => l is null or <= 90 and >= -90)
.WithMessage("Допустимые значения широты от -90 до 90");
RuleFor(x => x.Longitude).Must(l => l is null or <= 180 and >= -180)
.WithMessage("Допустимые значения долготы от -180 до 180");
RuleFor(x => x.IdDeposit).GreaterThan(0)
.WithMessage("Id не может быть меньше 1");
}
}
}

View File

@ -1,16 +0,0 @@
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

@ -1,30 +0,0 @@
using Microsoft.Extensions.DependencyInjection;
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>, ProcessMapValidator>();
// 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>();
// TimeDtoValidator
return services;
}
}
}

View File

@ -1,18 +0,0 @@
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(l => l is null or <= 90 and >= -90)
.WithMessage("Допустимые значения широты от -90 до 90");
RuleFor(x => x.Longitude).Must(l => l is null or <= 180 and >= -180)
.WithMessage("Допустимые значения долготы от -180 до 180");
}
}
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,16 +0,0 @@
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, 1024)
.WithMessage("Допустимая длина описания от 1 до 1024 символов");
}
}
}

View File

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

View File

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

View File

@ -1,23 +0,0 @@
using AsbCloudApp.Data;
using FluentValidation;
namespace AsbCloudInfrastructure.Validators
{
public class TimeDtoValidator : AbstractValidator<TimeDto>
{
public TimeDtoValidator()
{
RuleFor(x => x.Hour)
.InclusiveBetween(0, 23)
.WithMessage("hour should be in [0; 23]");
RuleFor(x => x.Minute)
.InclusiveBetween(0, 59)
.WithMessage("minute should be in [0; 59]");
RuleFor(x => x.Second)
.InclusiveBetween(0, 59)
.WithMessage("second should be in [0; 59]");
}
}
}

View File

@ -1,24 +0,0 @@
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, 260).WithMessage("Допустимая длина email от 1 до 260 символов");
RuleFor(x => x.Phone).Length(0, 50).WithMessage("Допустимая длина телефона от 1 до 50 символов");
RuleFor(x => x.Position).Length(0, 100).WithMessage("Допустимая длина должности от 1 до 100 символов");
}
}
}

View File

@ -1,14 +0,0 @@
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 символов");
}
}
}

View File

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

View File

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

View File

@ -18,10 +18,7 @@ namespace ConsoleApp1
static void Main(/*string[] args*/)
{
var n = "-159.99";
var s = "159.99s";
var r1 = reg.IsMatch( n );
var r2 = reg.IsMatch( s );
}
}
}