From b977ca043be2372bb2f0348aac7c0ae6eb429f01 Mon Sep 17 00:00:00 2001 From: Olga Nemt Date: Thu, 15 Aug 2024 09:22:46 +0500 Subject: [PATCH] =?UTF-8?q?WellOperationBaseDto=20=D0=B4=D0=BE=D0=B1=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WellOperation/WellOperationBaseDto.cs | 107 ++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 AsbCloudApp/Data/WellOperation/WellOperationBaseDto.cs diff --git a/AsbCloudApp/Data/WellOperation/WellOperationBaseDto.cs b/AsbCloudApp/Data/WellOperation/WellOperationBaseDto.cs new file mode 100644 index 00000000..61625da8 --- /dev/null +++ b/AsbCloudApp/Data/WellOperation/WellOperationBaseDto.cs @@ -0,0 +1,107 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; + +namespace AsbCloudApp.Data.WellOperation; + +/// +/// Операция по скважине +/// +public class WellOperationBaseDto : ItemInfoDto, + IId, + IWellRelated, + IValidatableObject +{ + /// + [Required] + public int Id { get; set; } + + /// + [Required] + public int IdWell { get; set; } + + /// + /// Id секции скважины + /// + public int IdWellSectionType { get; set; } + + /// + /// 0 = план или 1 = факт или прогноз = 2 + /// + [Required] + public int IdType { get; set; } + + /// + /// id категории операции + /// + public int IdCategory { get; set; } + + /// + /// Глубина на начало операции, м + /// + public double DepthStart { get; set; } + + /// + /// Глубина после завершения операции, м + /// + [Required] + [Range(0, 50_000)] + public double DepthEnd { get; set; } + + /// + /// Дата начала операции + /// + [Required] + public DateTimeOffset DateStart { get; set; } + + /// + /// Продолжительность, часы + /// + public double DurationHours { get; set; } + + /// + /// Наименование секции + /// + public string? WellSectionTypeCaption { get; set; } + + /// + /// Наименование категории + /// + public string? OperationCategoryName { get; set; } + + /// + /// id плановой операции для сопоставления + /// + public int? IdPlan { get; set; } + + /// + /// Ключ родителя у категории + /// + public int? IdParentCategory { get; set; } + + /// + /// дополнительная информация по операции + /// + [StringLength(8192)] + public string? CategoryInfo { get; set; } + + /// + /// Полезный комментарий + /// + [StringLength(4096, ErrorMessage = "Комментарий не может быть длиннее 4096 символов")] + public string? Comment { get; set; } + + /// + /// Валидация даты + /// + /// + /// + public IEnumerable Validate(ValidationContext validationContext) + { + var gtDate = new DateTimeOffset(2010, 1, 1, 0, 0, 0, TimeSpan.Zero); + if (DateStart <= gtDate) + yield return new ValidationResult( + $"{nameof(DateStart)}: DateStart не может быть меньше {gtDate}", + new[] { nameof(DateStart) }); + } +}