forked from ddrilling/AsbCloudServer
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:
commit
fd5822ac91
@ -1,4 +1,6 @@
|
|||||||
namespace AsbCloudApp.Data
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
|
namespace AsbCloudApp.Data
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// DTO для авторизации
|
/// DTO для авторизации
|
||||||
@ -8,11 +10,15 @@
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Имя пользователя для входа
|
/// Имя пользователя для входа
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Required(ErrorMessage = "Логин не должен быть пустым")]
|
||||||
|
[StringLength(50, MinimumLength = 1, ErrorMessage = "Допустимая длина логина от 1 до 50 символов")]
|
||||||
public string Login { get; set; } = null!;
|
public string Login { get; set; } = null!;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Пароль пользователя для входа
|
/// Пароль пользователя для входа
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Required(ErrorMessage = "Пароль не должен быть пустым")]
|
||||||
|
[StringLength(50, MinimumLength = 1, ErrorMessage = "Допустимая длина пароля от 1 до 50 символов")]
|
||||||
public string Password { get; set; } = null!;
|
public string Password { get; set; } = null!;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data
|
||||||
@ -11,6 +12,7 @@ namespace AsbCloudApp.Data
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// ИД месторождения, необязательный
|
/// ИД месторождения, необязательный
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Range(1, int.MaxValue, ErrorMessage = "Id месторождения не может быть меньше 1")]
|
||||||
public int IdDeposit { get; set; }
|
public int IdDeposit { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -14,6 +14,7 @@ namespace AsbCloudApp.Data
|
|||||||
/// Название
|
/// Название
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
|
[StringLength(50, MinimumLength = 1, ErrorMessage = "Допустимое имя компании от 1 до 50 символов")]
|
||||||
public string Caption { get; set; } = null!;
|
public string Caption { get; set; } = null!;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -24,6 +25,7 @@ namespace AsbCloudApp.Data
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Название типа компании
|
/// Название типа компании
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string? CompanyTypeCaption { get; set; }
|
[StringLength(30, MinimumLength = 1, ErrorMessage = "Допустимое имя типа компании от 1 до 30 символов")]
|
||||||
|
public string? CompanyTypeCaption { get; set; } = null!;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data
|
||||||
@ -13,11 +14,13 @@ namespace AsbCloudApp.Data
|
|||||||
public int Id { get; set; }
|
public int Id { get; set; }
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
|
[Range(1, int.MaxValue, ErrorMessage = "Id скважины не может быть меньше 1")]
|
||||||
public int IdWell { get; set; }
|
public int IdWell { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// id категории файла
|
/// id категории файла
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Range(1, int.MaxValue, ErrorMessage = "Id категории файла не может быть меньше 1")]
|
||||||
public int IdCategory { get; set; }
|
public int IdCategory { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -28,6 +31,7 @@ namespace AsbCloudApp.Data
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// имя файла
|
/// имя файла
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[StringLength(260, MinimumLength = 1, ErrorMessage = "Допустимое имя компании от 1 до 260 символов")]
|
||||||
public string Name { get; set; } = null!;
|
public string Name { get; set; } = null!;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data
|
||||||
{
|
{
|
||||||
@ -13,12 +14,14 @@ namespace AsbCloudApp.Data
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// id ôàéëà
|
/// id ôàéëà
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Range(1, int.MaxValue, ErrorMessage = "Id файла не может быть меньше 1")]
|
||||||
public int IdFile { get; set; }
|
public int IdFile { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 0 - îòêëîíåí
|
/// 0 - îòêëîíåí
|
||||||
/// 1 - ñîãëàñîâàí
|
/// 1 - ñîãëàñîâàí
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Range(0, int.MaxValue, ErrorMessage = "Id категории действия с файлом не может быть меньше 1")]
|
||||||
public int IdMarkType { get; set; }
|
public int IdMarkType { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -26,10 +29,11 @@ namespace AsbCloudApp.Data
|
|||||||
/// Íåîáÿçàòåëüíî óêàçûâàòü â çàïðîñå íà ñîçäàíèå.
|
/// Íåîáÿçàòåëüíî óêàçûâàòü â çàïðîñå íà ñîçäàíèå.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public DateTime DateCreated { get; set; }
|
public DateTime DateCreated { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Ïîëåçíûé êîììåíòàðèé
|
/// Ïîëåçíûé êîììåíòàðèé
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[StringLength(4096, MinimumLength = 1, ErrorMessage = "Допустимое имя компании от 1 до 4096 символов")]
|
||||||
public string? Comment { get; set; }
|
public string? Comment { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
namespace AsbCloudApp.Data
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
|
namespace AsbCloudApp.Data
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Точка на карте с названием
|
/// Точка на карте с названием
|
||||||
@ -11,12 +13,15 @@
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Название
|
/// Название
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[StringLength(50, MinimumLength = 1, ErrorMessage = "Допустимая длина названия от 1 до 50 символов")]
|
||||||
public string Caption { get; set; } = null!;
|
public string Caption { get; set; } = null!;
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
|
[Range(-90, 90, ErrorMessage = "Допустимые значения широты от -90 до 90")]
|
||||||
public double? Latitude { get; set; }
|
public double? Latitude { get; set; }
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
|
[Range(-180, 180, ErrorMessage = "Допустимые значения долготы от -180 до 180")]
|
||||||
public double? Longitude { get; set; }
|
public double? Longitude { get; set; }
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data
|
||||||
{
|
{
|
||||||
@ -12,16 +13,19 @@ namespace AsbCloudApp.Data
|
|||||||
public int Id { get; set; }
|
public int Id { get; set; }
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
|
[Range(1, int.MaxValue, ErrorMessage = "Id скважины не может быть меньше 1")]
|
||||||
public int IdWell { get; set; }
|
public int IdWell { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Id категории замера
|
/// Id категории замера
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Range(1, int.MaxValue, ErrorMessage = "Id категории не может быть меньше 1")]
|
||||||
public int IdCategory { get; set; }
|
public int IdCategory { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// название категории замера
|
/// название категории замера
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[StringLength(120, MinimumLength = 1, ErrorMessage = "Название категории не может быть больше 120 символов")]
|
||||||
public string CategoryName { get; set; } = string.Empty;
|
public string CategoryName { get; set; } = string.Empty;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data
|
||||||
{
|
{
|
||||||
@ -18,11 +19,17 @@ namespace AsbCloudApp.Data
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// категория события
|
/// категория события
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Range(1, int.MaxValue, ErrorMessage = "Id категории не может быть ниже 1")]
|
||||||
public int CategoryId { get; set; }
|
public int CategoryId { get; set; }
|
||||||
|
|
||||||
|
//TODO: в модели дто сообщения отсутствует поле Id скважины
|
||||||
|
// скорее всего опечатка т.к. используется глубина в правиле валидатора
|
||||||
|
//в других валидаторах парамтр глубины идет рэнжированный от...до
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// глубина забоя, при котором событие возникло
|
/// глубина забоя, при котором событие возникло
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Range(-1, int.MaxValue, ErrorMessage = "Id скважины не может быть ниже 1")]
|
||||||
public double WellDepth { get; set; }
|
public double WellDepth { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -33,6 +40,7 @@ namespace AsbCloudApp.Data
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// текст сообщения
|
/// текст сообщения
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[StringLength(400, MinimumLength = 1, ErrorMessage = "Допустимая длина текста сообщения от 1 до 400 символов")]
|
||||||
public string Message { get; set; } = string.Empty;
|
public string Message { get; set; } = string.Empty;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
namespace AsbCloudApp.Data
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
|
namespace AsbCloudApp.Data
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Разрешение для группы пользователей сделать что-либо через web-api. <br/>
|
/// Разрешение для группы пользователей сделать что-либо через web-api. <br/>
|
||||||
@ -12,11 +14,13 @@
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Название
|
/// Название
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[StringLength(50, MinimumLength = 1, ErrorMessage = "Допустимая длина названия разрешения от 1 до 50 символов")]
|
||||||
public string Name { get; set; } = string.Empty;
|
public string Name { get; set; } = string.Empty;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Описание
|
/// Описание
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[StringLength(1024, MinimumLength = 1, ErrorMessage = "Допустимая длина описания от 1 до 1024 символов")]
|
||||||
public string? Description { get; set; }
|
public string? Description { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,16 +1,18 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data.ProcessMap
|
namespace AsbCloudApp.Data.ProcessMap
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// РТК
|
/// РТК
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class ProcessMapDto : IId, IWellRelated
|
public class ProcessMapDto : IId, IWellRelated
|
||||||
{
|
{
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
public int Id { get; set; }
|
public int Id { get; set; }
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
|
[Range(1,int.MaxValue, ErrorMessage = "Id скважины не может быть меньше 1")]
|
||||||
public int IdWell { get; set; }
|
public int IdWell { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -31,11 +33,13 @@ namespace AsbCloudApp.Data.ProcessMap
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Стартовая глубина
|
/// Стартовая глубина
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Range(0,50000,ErrorMessage = "Глубина не может быть отрицательной")]
|
||||||
public double DepthStart { get; set; }
|
public double DepthStart { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Глубина окончания интервала
|
/// Глубина окончания интервала
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Range(0, 50000, ErrorMessage = "Глубина не может быть отрицательной")]
|
||||||
public double DepthEnd { get; set; }
|
public double DepthEnd { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data
|
||||||
{
|
{
|
||||||
@ -9,13 +10,15 @@ namespace AsbCloudApp.Data
|
|||||||
{
|
{
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
public int Id { get; set; }
|
public int Id { get; set; }
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
|
[Range(1, int.MaxValue, ErrorMessage = "Id скважины не может быть ниже 1")]
|
||||||
public int IdWell { get; set; }
|
public int IdWell { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// название
|
/// название
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[StringLength(260, MinimumLength = 1, ErrorMessage = "Допустимая длина имени файла от 1 до 260 символов")]
|
||||||
public string Name { get; set; } = null!;
|
public string Name { get; set; } = null!;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
namespace AsbCloudApp.Data.SAUB
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
|
namespace AsbCloudApp.Data.SAUB
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Описание шаблона события панели оператора
|
/// Описание шаблона события панели оператора
|
||||||
@ -8,6 +10,7 @@
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// id события
|
/// id события
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public int Id { get; set; }
|
public int Id { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -18,6 +21,7 @@
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// id категории события
|
/// id категории события
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Range(1, int.MaxValue, ErrorMessage = "Id категории события не может быть отрицательным")]
|
||||||
public int IdCategory { get; set; }
|
public int IdCategory { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -28,6 +32,7 @@
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// тип определения наступления события
|
/// тип определения наступления события
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Range(1, int.MaxValue, ErrorMessage = "Id типа события не может быть отрицательным")]
|
||||||
public int EventType { get; set; }
|
public int EventType { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -13,40 +13,45 @@ namespace AsbCloudApp.Data
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// логин
|
/// логин
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required(ErrorMessage = "Логин не должен быть пустым")]
|
||||||
[StringLength(255, MinimumLength = 2)]
|
[StringLength(50, MinimumLength = 1, ErrorMessage = "Допустимая длина логина от 1 до 50 символов")]
|
||||||
public string Login { get; set; } = null!;
|
public string Login { get; set; } = null!;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Имя
|
/// Имя
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[StringLength(50, MinimumLength = 0, ErrorMessage = "Допустимая длина имени от 1 до 50 символов")]
|
||||||
public string? Name { get; set; }
|
public string? Name { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Фамилия
|
/// Фамилия
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[StringLength(50, MinimumLength = 0, ErrorMessage = "Допустимая длина фамилии от 1 до 50 символов")]
|
||||||
public string? Surname { get; set; }
|
public string? Surname { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Отчество
|
/// Отчество
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[StringLength(50, MinimumLength = 0, ErrorMessage = "Допустимая длина отчества от 1 до 50 символов")]
|
||||||
public string? Patronymic { get; set; }
|
public string? Patronymic { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Email
|
/// Email
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
[StringLength(255, MinimumLength = 6)]
|
[StringLength(260, MinimumLength = 1, ErrorMessage = "Допустимая длина email от 1 до 260 символов")]
|
||||||
public string Email { get; set; } = null!;
|
public string Email { get; set; } = null!;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Phone
|
/// Phone
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[StringLength(50, MinimumLength = 1, ErrorMessage = "Допустимая длина телефона от 1 до 50 символов")]
|
||||||
public string? Phone { get; set; }
|
public string? Phone { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Должность
|
/// Должность
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[StringLength(100, MinimumLength = 1, ErrorMessage = "Допустимая длина должности от 1 до 100 символов")]
|
||||||
public string? Position { get; set; }
|
public string? Position { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
namespace AsbCloudApp.Data
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
|
namespace AsbCloudApp.Data
|
||||||
{
|
{
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
public class UserRegistrationDto : UserDto
|
public class UserRegistrationDto : UserDto
|
||||||
@ -6,6 +8,8 @@
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// пароль, используется только при регистрации.
|
/// пароль, используется только при регистрации.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Required(ErrorMessage = "Пароль не должен быть пустым")]
|
||||||
|
[StringLength(50, MinimumLength = 1, ErrorMessage = "Допустимая длина пароля от 1 до 50 символов")]
|
||||||
public string Password { get; set; } = null!;
|
public string Password { get; set; } = null!;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,6 +16,7 @@ namespace AsbCloudApp.Data
|
|||||||
/// название
|
/// название
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
|
[StringLength(50, MinimumLength = 1,ErrorMessage = "Допустимая длина названия роли от 1 до 50 символов")]
|
||||||
public string Caption { get; set; } = null!;
|
public string Caption { get; set; } = null!;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -10,10 +10,12 @@ namespace AsbCloudApp.Data
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public class WellDto : WellInfoDto, IMapPoint, IId
|
public class WellDto : WellInfoDto, IMapPoint, IId
|
||||||
{
|
{
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
|
[Range(-90, 90, ErrorMessage = "Допустимые значения широты от -90 до 90")]
|
||||||
public double? Latitude { get; set; }
|
public double? Latitude { get; set; }
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
|
[Range(-180, 180, ErrorMessage = "Допустимые значения долготы от -180 до 180")]
|
||||||
public double? Longitude { get; set; }
|
public double? Longitude { get; set; }
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
|
@ -7,12 +7,16 @@ namespace AsbCloudApp.Data
|
|||||||
/// Операции на скважине (заведенные пользователем)
|
/// Операции на скважине (заведенные пользователем)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class WellOperationDto : IId, IWellRelated
|
public class WellOperationDto : IId, IWellRelated
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
public int Id { get; set; }
|
public int Id { get; set; }
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
[Required]
|
[Required]
|
||||||
|
[Range(1, int.MaxValue, ErrorMessage = "Id скважины не может быть меньше 1")]
|
||||||
public int IdWell { get; set; }
|
public int IdWell { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -90,7 +94,7 @@ namespace AsbCloudApp.Data
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Полезный комментарий
|
/// Полезный комментарий
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[StringLength(8192)]
|
[StringLength(4096, ErrorMessage = "Комментарий не может быть длиннее 4096 символов")]
|
||||||
public string? Comment { get; set; }
|
public string? Comment { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -39,7 +39,6 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="CliWrap" Version="3.6.0" />
|
<PackageReference Include="CliWrap" Version="3.6.0" />
|
||||||
<PackageReference Include="ClosedXML" Version="0.96.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="itext7" Version="7.2.3" />
|
||||||
<PackageReference Include="Mapster" Version="7.3.0" />
|
<PackageReference Include="Mapster" Version="7.3.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Hosting" Version="6.0.1" />
|
<PackageReference Include="Microsoft.Extensions.Hosting" Version="6.0.1" />
|
||||||
|
@ -17,8 +17,6 @@ using AsbCloudInfrastructure.Services.SAUB;
|
|||||||
using AsbCloudInfrastructure.Services.Subsystems;
|
using AsbCloudInfrastructure.Services.Subsystems;
|
||||||
using AsbCloudInfrastructure.Services.Trajectory;
|
using AsbCloudInfrastructure.Services.Trajectory;
|
||||||
using AsbCloudInfrastructure.Services.WellOperationService;
|
using AsbCloudInfrastructure.Services.WellOperationService;
|
||||||
using AsbCloudInfrastructure.Validators;
|
|
||||||
using FluentValidation.AspNetCore;
|
|
||||||
using Mapster;
|
using Mapster;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.Extensions.Caching.Memory;
|
using Microsoft.Extensions.Caching.Memory;
|
||||||
@ -92,9 +90,7 @@ namespace AsbCloudInfrastructure
|
|||||||
#endif
|
#endif
|
||||||
services.AddDbContext<AsbCloudDbContext>(options =>
|
services.AddDbContext<AsbCloudDbContext>(options =>
|
||||||
options.UseNpgsql(configuration.GetConnectionString(connectionStringName)));
|
options.UseNpgsql(configuration.GetConnectionString(connectionStringName)));
|
||||||
|
|
||||||
// TODO: переместить FluentValidation в описание моделей
|
|
||||||
services.AddFluentValidationClientsideAdapters();
|
|
||||||
|
|
||||||
services.AddMemoryCache();
|
services.AddMemoryCache();
|
||||||
services.AddScoped<IAsbCloudDbContext>(provider => provider.GetService<AsbCloudDbContext>());
|
services.AddScoped<IAsbCloudDbContext>(provider => provider.GetService<AsbCloudDbContext>());
|
||||||
@ -195,9 +191,7 @@ namespace AsbCloudInfrastructure
|
|||||||
services.AddTransient<IWitsRecordRepository<AsbCloudApp.Data.WITS.Record8Dto>, WitsRecordRepository<AsbCloudApp.Data.WITS.Record8Dto, AsbCloudDb.Model.WITS.Record8>>();
|
services.AddTransient<IWitsRecordRepository<AsbCloudApp.Data.WITS.Record8Dto>, WitsRecordRepository<AsbCloudApp.Data.WITS.Record8Dto, AsbCloudDb.Model.WITS.Record8>>();
|
||||||
services.AddTransient<IWitsRecordRepository<AsbCloudApp.Data.WITS.Record50Dto>, WitsRecordRepository<AsbCloudApp.Data.WITS.Record50Dto, AsbCloudDb.Model.WITS.Record50>>();
|
services.AddTransient<IWitsRecordRepository<AsbCloudApp.Data.WITS.Record50Dto>, WitsRecordRepository<AsbCloudApp.Data.WITS.Record50Dto, AsbCloudDb.Model.WITS.Record50>>();
|
||||||
services.AddTransient<IWitsRecordRepository<AsbCloudApp.Data.WITS.Record60Dto>, WitsRecordRepository<AsbCloudApp.Data.WITS.Record60Dto, AsbCloudDb.Model.WITS.Record60>>();
|
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.AddTransient<IWitsRecordRepository<AsbCloudApp.Data.WITS.Record61Dto>, WitsRecordRepository<AsbCloudApp.Data.WITS.Record61Dto, AsbCloudDb.Model.WITS.Record61>>();
|
||||||
|
|
||||||
services.AddValidators();
|
|
||||||
|
|
||||||
return services;
|
return services;
|
||||||
}
|
}
|
||||||
|
@ -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 символов");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -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");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -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 символов");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -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");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -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 типа события не может быть отрицательным");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -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 символов");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -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 символов");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -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 символов");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -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 символов");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -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 символов");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -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("Глубина не может быть отрицательной");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -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");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -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]");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -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 символов");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -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 символов");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -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");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -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 символов");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -18,10 +18,7 @@ namespace ConsoleApp1
|
|||||||
static void Main(/*string[] args*/)
|
static void Main(/*string[] args*/)
|
||||||
{
|
{
|
||||||
|
|
||||||
var n = "-159.99";
|
|
||||||
var s = "159.99s";
|
|
||||||
var r1 = reg.IsMatch( n );
|
|
||||||
var r2 = reg.IsMatch( s );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user