2023-12-04 17:05:57 +05:00
|
|
|
using System.Collections.Generic;
|
|
|
|
using System.ComponentModel.DataAnnotations;
|
|
|
|
|
2023-12-13 18:06:48 +05:00
|
|
|
namespace AsbCloudApp.Data.ProcessMaps;
|
2023-12-04 17:05:57 +05:00
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// Секция скважины - план
|
|
|
|
/// </summary>
|
|
|
|
public class WellSectionPlanDto : ItemInfoDto,
|
2024-07-04 11:02:45 +05:00
|
|
|
IId,
|
|
|
|
IWellRelated,
|
|
|
|
IValidatableObject
|
2023-12-04 17:05:57 +05:00
|
|
|
{
|
2024-07-04 11:02:45 +05:00
|
|
|
/// <inheritdoc/>
|
|
|
|
public int Id { get; set; }
|
2023-12-04 17:05:57 +05:00
|
|
|
|
2024-01-17 13:12:17 +05:00
|
|
|
/// <inheritdoc/>
|
|
|
|
[Required]
|
2024-07-04 11:02:45 +05:00
|
|
|
public int IdWell { get; set; }
|
2023-12-04 17:05:57 +05:00
|
|
|
|
2024-07-04 11:02:45 +05:00
|
|
|
/// <summary>
|
|
|
|
/// Тип секции
|
|
|
|
/// </summary>
|
|
|
|
[Required(ErrorMessage = "Поле обязательно для заполнение")]
|
|
|
|
[Range(1, int.MaxValue)]
|
|
|
|
public int IdSectionType { get; set; }
|
2023-12-04 17:05:57 +05:00
|
|
|
|
2024-07-04 11:02:45 +05:00
|
|
|
/// <summary>
|
|
|
|
/// Начальная глубина бурения, м
|
|
|
|
/// </summary>
|
|
|
|
[Required(ErrorMessage = "Поле обязательно для заполнение")]
|
|
|
|
[Range(0, 10000, ErrorMessage = "Допустимое значение от 0 до 10000")]
|
|
|
|
public double DepthStart { get; set; }
|
2023-12-04 17:05:57 +05:00
|
|
|
|
2024-07-04 11:02:45 +05:00
|
|
|
/// <summary>
|
|
|
|
/// Конечная глубина бурения, м
|
|
|
|
/// </summary>
|
|
|
|
[Required(ErrorMessage = "Поле обязательно для заполнение")]
|
|
|
|
[Range(0, 10000, ErrorMessage = "Допустимое значение от 0 до 10000")]
|
|
|
|
public double DepthEnd { get; set; }
|
2023-12-04 17:05:57 +05:00
|
|
|
|
2024-07-04 11:02:45 +05:00
|
|
|
/// <summary>
|
|
|
|
/// Внешний диаметр
|
|
|
|
/// </summary>
|
|
|
|
[Range(1, 10000, ErrorMessage = "Допустимое значение от 1 до 10000")]
|
|
|
|
public double? OuterDiameter { get; set; }
|
2023-12-04 17:05:57 +05:00
|
|
|
|
2024-07-04 11:02:45 +05:00
|
|
|
/// <summary>
|
|
|
|
/// Внутренний диаметр
|
|
|
|
/// </summary>
|
|
|
|
[Range(1, 10000, ErrorMessage = "Допустимое значение от 1 до 10000")]
|
|
|
|
public double? InnerDiameter { get; set; }
|
2023-12-04 17:05:57 +05:00
|
|
|
|
2024-07-04 11:02:45 +05:00
|
|
|
/// <inheritdoc />
|
|
|
|
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
|
|
|
|
{
|
|
|
|
if (!OuterDiameter.HasValue && !InnerDiameter.HasValue)
|
|
|
|
yield break;
|
2023-12-04 17:05:57 +05:00
|
|
|
|
2024-07-04 11:02:45 +05:00
|
|
|
if (!OuterDiameter.HasValue)
|
|
|
|
yield return new ValidationResult("Поле обязательно для заполнение", new[] { nameof(OuterDiameter) });
|
2023-12-04 17:05:57 +05:00
|
|
|
|
2024-07-04 11:02:45 +05:00
|
|
|
if (!InnerDiameter.HasValue)
|
|
|
|
yield return new ValidationResult("Поле обязательно для заполнение", new[] { nameof(InnerDiameter) });
|
2023-12-04 17:05:57 +05:00
|
|
|
|
2024-07-04 11:02:45 +05:00
|
|
|
if (OuterDiameter <= InnerDiameter)
|
|
|
|
yield return new ValidationResult("Внешний диаметр не должен быть больше или равен внутреннему",
|
|
|
|
new[] { nameof(OuterDiameter) });
|
|
|
|
}
|
2023-12-04 17:05:57 +05:00
|
|
|
}
|