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