forked from ddrilling/AsbCloudServer
Рефаторинг DTO
This commit is contained in:
parent
f0e0a829f6
commit
7f43c951f5
@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using AsbCloudApp.Data.WellOperation;
|
||||
|
||||
namespace AsbCloudApp.Data
|
||||
{
|
||||
|
@ -12,12 +12,12 @@ namespace AsbCloudApp.Data
|
||||
/// Дата начала диапазона
|
||||
/// </summary>
|
||||
[Required]
|
||||
public DateTime From { get; set; }
|
||||
public DateTimeOffset From { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Дата окончания диапазона
|
||||
/// </summary>
|
||||
[Required]
|
||||
public DateTime To { get; set; }
|
||||
public DateTimeOffset To { get; set; }
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using AsbCloudApp.Data.WellOperation;
|
||||
|
||||
namespace AsbCloudApp.Data.DetectedOperation;
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace AsbCloudApp.Data
|
||||
namespace AsbCloudApp.Data.WellOperation
|
||||
{
|
||||
/// <summary>
|
||||
/// DTO категория операции
|
115
AsbCloudApp/Data/WellOperation/WellOperationDto.cs
Normal file
115
AsbCloudApp/Data/WellOperation/WellOperationDto.cs
Normal file
@ -0,0 +1,115 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace AsbCloudApp.Data.WellOperation;
|
||||
|
||||
public class WellOperationDto : ItemInfoDto,
|
||||
IId,
|
||||
IWellRelated
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[Required]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <inheritdoc/>
|
||||
[Required]
|
||||
public int IdWell { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Id секции скважины
|
||||
/// </summary>
|
||||
public int IdWellSectionType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 0 = план или 1 = факт или прогноз = 2
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int IdType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// id категории операции
|
||||
/// </summary>
|
||||
public int IdCategory { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Глубина на начало операции, м
|
||||
/// </summary>
|
||||
public double DepthStart { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Глубина после завершения операции, м
|
||||
/// </summary>
|
||||
[Required]
|
||||
[Range(0, 50_000)]
|
||||
public double DepthEnd { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Дата начала операции
|
||||
/// </summary>
|
||||
[Required]
|
||||
public DateTimeOffset DateStart { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Продолжительность, часы
|
||||
/// </summary>
|
||||
public double DurationHours { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Наименование секции
|
||||
/// </summary>
|
||||
public string? WellSectionTypeCaption { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Наименование категории
|
||||
/// </summary>
|
||||
public string? OperationCategoryName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// id плановой операции для сопоставления
|
||||
/// </summary>
|
||||
public int? IdPlan { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Ключ родителя у категории
|
||||
/// </summary>
|
||||
public int? IdParentCategory { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// дополнительная информация по операции
|
||||
/// </summary>
|
||||
[StringLength(8192)]
|
||||
public string? CategoryInfo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Кол-во дней от даты начала первой плановой (а если её нет, то фактической) операции
|
||||
/// </summary>
|
||||
[Required]
|
||||
public double Day { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Кол-во часов НПВ от даты начала первой плановой (а если её нет, то фактической) операции
|
||||
/// </summary>
|
||||
[Required]
|
||||
public double NptHours { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Полезный комментарий
|
||||
/// </summary>
|
||||
[StringLength(4096, ErrorMessage = "Комментарий не может быть длиннее 4096 символов")]
|
||||
public string? Comment { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Валидация даты
|
||||
/// </summary>
|
||||
/// <param name="validationContext"></param>
|
||||
/// <returns></returns>
|
||||
public IEnumerable<ValidationResult> 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) });
|
||||
}
|
||||
}
|
@ -1,39 +0,0 @@
|
||||
namespace AsbCloudApp.Data
|
||||
{
|
||||
/// Операция на скважине
|
||||
public class WellOperationDataDto : IWellRelated
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
public int IdWell { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// id секции скважины
|
||||
/// </summary>
|
||||
public int IdWellSectionType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// id категории операции
|
||||
/// </summary>
|
||||
public int IdCategory { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Глубина на начало операции, м
|
||||
/// </summary>
|
||||
public double DepthStart { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Продолжительность, часы
|
||||
/// </summary>
|
||||
public double DurationHours { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Наименование секции
|
||||
/// </summary>
|
||||
public string WellSectionTypeCaption { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Наименование категории
|
||||
/// </summary>
|
||||
public string OperationCategoryName { get; set; } = string.Empty;
|
||||
}
|
||||
}
|
@ -1,124 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace AsbCloudApp.Data
|
||||
{
|
||||
/// <summary>
|
||||
/// Операции на скважине (заведенные пользователем)
|
||||
/// </summary>
|
||||
public class WellOperationDto : ItemInfoDto, IId, IWellRelated, IValidatableObject
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[Required]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <inheritdoc/>
|
||||
[Required]
|
||||
public int IdWell { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// id секции скважины
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int IdWellSectionType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// название секции скважины
|
||||
/// </summary>
|
||||
public string? WellSectionTypeName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// id категории операции
|
||||
/// </summary>
|
||||
[Required]
|
||||
[Range(5000, int.MaxValue)]
|
||||
public int IdCategory { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// id плановой операции для сопоставления
|
||||
/// </summary>
|
||||
public int? IdPlan { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// название категории операции
|
||||
/// </summary>
|
||||
public string? CategoryName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// ключ родителя у категории
|
||||
/// </summary>
|
||||
public int? IdParentCategory { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// дополнительная информация по операции
|
||||
/// </summary>
|
||||
[StringLength(8192)]
|
||||
public string? CategoryInfo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 0 = план или 1 = факт или прогноз = 2
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int IdType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Глубина на начало операции, м
|
||||
/// </summary>
|
||||
[Required]
|
||||
[Range(0, 50_000)]
|
||||
public double DepthStart { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Глубина после завершения операции, м
|
||||
/// </summary>
|
||||
[Required]
|
||||
[Range(0, 50_000)]
|
||||
public double DepthEnd { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Кол-во дней от даты начала первой плановой (а если её нет, то фактической) операции
|
||||
/// </summary>
|
||||
[Required]
|
||||
public double Day { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Кол-во часов НПВ от даты начала первой плановой (а если её нет, то фактической) операции
|
||||
/// </summary>
|
||||
[Required]
|
||||
public double NptHours { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Дата начала операции
|
||||
/// </summary>
|
||||
[Required]
|
||||
public DateTimeOffset DateStart { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Продолжительность, часы
|
||||
/// </summary>
|
||||
[Required]
|
||||
[Range(0, 50)]
|
||||
public double DurationHours { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Полезный комментарий
|
||||
/// </summary>
|
||||
[StringLength(4096, ErrorMessage = "Комментарий не может быть длиннее 4096 символов")]
|
||||
public string? Comment { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Валидация даты
|
||||
/// </summary>
|
||||
/// <param name="validationContext"></param>
|
||||
/// <returns></returns>
|
||||
public IEnumerable<ValidationResult> 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) });
|
||||
}
|
||||
}
|
||||
}
|
@ -1,28 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Linq;
|
||||
|
||||
namespace AsbCloudApp.Data
|
||||
{
|
||||
/// <summary>
|
||||
/// класс, который хранит список плановых операций для сопоставления
|
||||
/// и даты последней сопоставленной плановой операции
|
||||
/// </summary>
|
||||
#nullable enable
|
||||
public class WellOperationPlanDto
|
||||
{
|
||||
/// <summary>
|
||||
/// коллекция плановых операций
|
||||
/// </summary>
|
||||
[Required]
|
||||
public IEnumerable<WellOperationDto> WellOperationsPlan { get; set; } = Enumerable.Empty<WellOperationDto>();
|
||||
|
||||
/// <summary>
|
||||
/// дата последней сопоставленной плановой операции
|
||||
/// </summary>
|
||||
public DateTime? DateLastAssosiatedPlanOperation { get; set; }
|
||||
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user