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