Merge pull request 'Добавлен атрибут [Required] на non-nullable поля в dtos' (#194) from fix/dtos-add-required-attribute into dev

Reviewed-on: http://test.digitaldrilling.ru:8080/DDrilling/AsbCloudServer/pulls/194
This commit is contained in:
Никита Фролов 2024-01-21 12:44:40 +05:00
commit 7abb006ba6
53 changed files with 393 additions and 100 deletions

View File

@ -12,6 +12,7 @@ namespace AsbCloudApp.Data
/// <summary> /// <summary>
/// ИД месторождения, необязательный /// ИД месторождения, необязательный
/// </summary> /// </summary>
[Required]
[Range(1, int.MaxValue, ErrorMessage = "Id месторождения не может быть меньше 1")] [Range(1, int.MaxValue, ErrorMessage = "Id месторождения не может быть меньше 1")]
public int IdDeposit { get; set; } public int IdDeposit { get; set; }

View File

@ -1,3 +1,5 @@
using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data namespace AsbCloudApp.Data
{ {
/// <summary> /// <summary>
@ -8,11 +10,13 @@ namespace AsbCloudApp.Data
/// <summary> /// <summary>
/// Макс. механическая скорость проходки по кусту /// Макс. механическая скорость проходки по кусту
/// </summary> /// </summary>
[Required]
public double RopMax { get; set; } public double RopMax { get; set; }
/// <summary> /// <summary>
/// Средняя механическая скорость проходки по кусту /// Средняя механическая скорость проходки по кусту
/// </summary> /// </summary>
[Required]
public double RopAverage { get; set; } public double RopAverage { get; set; }
} }
} }

View File

@ -23,6 +23,7 @@ namespace AsbCloudApp.Data
/// <summary> /// <summary>
/// ИД типа компании /// ИД типа компании
/// </summary> /// </summary>
[Required]
public int IdCompanyType { get; set; } public int IdCompanyType { get; set; }
/// <summary> /// <summary>

View File

@ -1,4 +1,6 @@
namespace AsbCloudApp.Data using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data
{ {
/// <summary> /// <summary>
/// DTO тип компании /// DTO тип компании
@ -6,21 +8,25 @@
public class CompanyTypeDto : IId public class CompanyTypeDto : IId
{ {
/// <inheritdoc/> /// <inheritdoc/>
[Required]
public int Id { get; set; } public int Id { get; set; }
/// <summary> /// <summary>
/// Название типа компании /// Название типа компании
/// </summary> /// </summary>
[Required]
public string Caption { get; set; } = null!; public string Caption { get; set; } = null!;
/// <summary> /// <summary>
/// Порядок /// Порядок
/// </summary> /// </summary>
[Required]
public int Order { get; set; } public int Order { get; set; }
/// <summary> /// <summary>
/// Является ли контактом /// Является ли контактом
/// </summary> /// </summary>
[Required]
public bool IsContact { get; set; } public bool IsContact { get; set; }
} }

View File

@ -1,3 +1,5 @@
using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data.DailyReport.Blocks; namespace AsbCloudApp.Data.DailyReport.Blocks;
/// <summary> /// <summary>
@ -8,11 +10,13 @@ public class ProcessMapWellDrillingRecordDto
/// <summary> /// <summary>
/// Режим бурения /// Режим бурения
/// </summary> /// </summary>
[Required]
public string DrillingMode { get; set; } = null!; public string DrillingMode { get; set; } = null!;
/// <summary> /// <summary>
/// Мех. скорость /// Мех. скорость
/// </summary> /// </summary>
[Required]
public PlanFactDto<double?> Rop { get; set; } = new(); public PlanFactDto<double?> Rop { get; set; } = new();
/// <summary> /// <summary>
@ -23,5 +27,6 @@ public class ProcessMapWellDrillingRecordDto
/// <summary> /// <summary>
/// Часы бурения /// Часы бурения
/// </summary> /// </summary>
[Required]
public double MechDrillingHours { get; set; } public double MechDrillingHours { get; set; }
} }

View File

@ -1,3 +1,5 @@
using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data.DailyReport.Blocks.Sign; namespace AsbCloudApp.Data.DailyReport.Blocks.Sign;
/// <summary> /// <summary>
@ -8,11 +10,13 @@ public class SignRecordDto
/// <summary> /// <summary>
/// Имя /// Имя
/// </summary> /// </summary>
[Required]
public string Name { get; set; } = null!; public string Name { get; set; } = null!;
/// <summary> /// <summary>
/// Фамилия /// Фамилия
/// </summary> /// </summary>
[Required]
public string Surname { get; set; } = null!; public string Surname { get; set; } = null!;
/// <summary> /// <summary>

View File

@ -1,4 +1,5 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq; using System.Linq;
namespace AsbCloudApp.Data.DailyReport.Blocks.Subsystems; namespace AsbCloudApp.Data.DailyReport.Blocks.Subsystems;
@ -36,5 +37,6 @@ public class SubsystemBlockDto : ItemInfoDto
/// <summary> /// <summary>
/// Подсистемы /// Подсистемы
/// </summary> /// </summary>
[Required]
public IEnumerable<SubsystemRecordDto> Subsystems { get; set; } = Enumerable.Empty<SubsystemRecordDto>(); public IEnumerable<SubsystemRecordDto> Subsystems { get; set; } = Enumerable.Empty<SubsystemRecordDto>();
} }

View File

@ -1,3 +1,5 @@
using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data.DailyReport.Blocks.Subsystems; namespace AsbCloudApp.Data.DailyReport.Blocks.Subsystems;
/// <summary> /// <summary>
@ -8,6 +10,7 @@ public class SubsystemRecordDto
/// <summary> /// <summary>
/// Название подсистемы /// Название подсистемы
/// </summary> /// </summary>
[Required]
public string Name { get; set; } = null!; public string Name { get; set; } = null!;
/// <summary> /// <summary>

View File

@ -1,5 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq; using System.Linq;
using AsbCloudApp.Data.DailyReport.Blocks; using AsbCloudApp.Data.DailyReport.Blocks;
using AsbCloudApp.Data.DailyReport.Blocks.Sign; using AsbCloudApp.Data.DailyReport.Blocks.Sign;
@ -16,14 +17,17 @@ public class DailyReportDto : IId,
IWellRelated IWellRelated
{ {
/// <inheritdoc/> /// <inheritdoc/>
[Required]
public int Id { get; set; } public int Id { get; set; }
/// <inheritdoc/> /// <inheritdoc/>
[Required]
public int IdWell { get; set; } public int IdWell { get; set; }
/// <summary> /// <summary>
/// Название скважины /// Название скважины
/// </summary> /// </summary>
[Required]
public string WellCaption { get; set; } = null!; public string WellCaption { get; set; } = null!;
/// <summary> /// <summary>
@ -64,6 +68,7 @@ public class DailyReportDto : IId,
/// <summary> /// <summary>
/// Дата формирования отчёта /// Дата формирования отчёта
/// </summary> /// </summary>
[Required]
public DateOnly Date { get; set; } public DateOnly Date { get; set; }
/// <summary> /// <summary>
@ -74,11 +79,13 @@ public class DailyReportDto : IId,
/// <summary> /// <summary>
/// Блок фактической траектории /// Блок фактической траектории
/// </summary> /// </summary>
[Required]
public TrajectoryBlockDto TrajectoryBlock { get; set; } = null!; public TrajectoryBlockDto TrajectoryBlock { get; set; } = null!;
/// <summary> /// <summary>
/// Фактические операции /// Фактические операции
/// </summary> /// </summary>
[Required]
public WellOperationBlockDto FactWellOperationBlock { get; set; } = null!; public WellOperationBlockDto FactWellOperationBlock { get; set; } = null!;
/// <summary> /// <summary>
@ -99,10 +106,12 @@ public class DailyReportDto : IId,
/// <summary> /// <summary>
/// Блок расписания /// Блок расписания
/// </summary> /// </summary>
[Required]
public IEnumerable<ScheduleRecordDto> ScheduleBlock { get; set; } = Enumerable.Empty<ScheduleRecordDto>(); public IEnumerable<ScheduleRecordDto> ScheduleBlock { get; set; } = Enumerable.Empty<ScheduleRecordDto>();
/// <summary> /// <summary>
/// РТК /// РТК
/// </summary> /// </summary>
[Required]
public IEnumerable<ProcessMapWellDrillingRecordDto> ProcessMapWellDrillingBlock { get; set; } = Enumerable.Empty<ProcessMapWellDrillingRecordDto>(); public IEnumerable<ProcessMapWellDrillingRecordDto> ProcessMapWellDrillingBlock { get; set; } = Enumerable.Empty<ProcessMapWellDrillingRecordDto>();
} }

View File

@ -1,4 +1,5 @@
using System; using System;
using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data namespace AsbCloudApp.Data
{ {
@ -10,11 +11,13 @@ namespace AsbCloudApp.Data
/// <summary> /// <summary>
/// Дата начала диапазона /// Дата начала диапазона
/// </summary> /// </summary>
[Required]
public DateTime From { get; set; } public DateTime From { get; set; }
/// <summary> /// <summary>
/// Дата окончания диапазона /// Дата окончания диапазона
/// </summary> /// </summary>
[Required]
public DateTime To { get; set; } public DateTime To { get; set; }
} }
} }

View File

@ -1,4 +1,5 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq; using System.Linq;
namespace AsbCloudApp.Data namespace AsbCloudApp.Data
@ -21,6 +22,7 @@ namespace AsbCloudApp.Data
/// <summary> /// <summary>
/// Кусты месторождения /// Кусты месторождения
/// </summary> /// </summary>
[Required]
public IEnumerable<ClusterDto> Clusters { get; set; } = Enumerable.Empty<ClusterDto>(); public IEnumerable<ClusterDto> Clusters { get; set; } = Enumerable.Empty<ClusterDto>();
} }
@ -32,6 +34,7 @@ namespace AsbCloudApp.Data
/// <summary> /// <summary>
/// Кусты месторождения /// Кусты месторождения
/// </summary> /// </summary>
[Required]
public IEnumerable<ClusterBranchDto> Clusters { get; set; } = Enumerable.Empty<ClusterBranchDto>(); public IEnumerable<ClusterBranchDto> Clusters { get; set; } = Enumerable.Empty<ClusterBranchDto>();
} }
} }

View File

@ -1,4 +1,6 @@
namespace AsbCloudApp.Data.DetectedOperation using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data.DetectedOperation
{ {
/// <summary> /// <summary>
/// Статистика по операциям бурильщика /// Статистика по операциям бурильщика
@ -13,11 +15,13 @@
/// <summary> /// <summary>
/// Количество операции /// Количество операции
/// </summary> /// </summary>
[Required]
public int Count { get; set; } public int Count { get; set; }
/// <summary> /// <summary>
/// Среднее по ключевому показателю /// Среднее по ключевому показателю
/// </summary> /// </summary>
[Required]
public double AverageValue { get; set; } public double AverageValue { get; set; }
/// <summary> /// <summary>

View File

@ -1,4 +1,5 @@
using System; using System;
using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data.DetectedOperation namespace AsbCloudApp.Data.DetectedOperation
{ {
@ -8,54 +9,65 @@ namespace AsbCloudApp.Data.DetectedOperation
public class DetectedOperationDto : IId, IWellRelated public class DetectedOperationDto : IId, IWellRelated
{ {
/// <inheritdoc/> /// <inheritdoc/>
[Required]
public int Id { get; set; } public int Id { get; set; }
/// <inheritdoc/> /// <inheritdoc/>
[Required]
public int IdWell { get; set; } public int IdWell { get; set; }
/// <summary> /// <summary>
/// Id телеметрии /// Id телеметрии
/// </summary> /// </summary>
[Required]
public int IdTelemetry { get; set; } public int IdTelemetry { get; set; }
/// <summary> /// <summary>
/// Id названия/описания операции /// Id названия/описания операции
/// </summary> /// </summary>
[Required]
public int IdCategory { get; set; } public int IdCategory { get; set; }
/// <summary> /// <summary>
/// Id пользователя панели /// Id пользователя панели
/// </summary> /// </summary>
[Required]
public int IdUsersAtStart { get; set; } public int IdUsersAtStart { get; set; }
/// <summary> /// <summary>
/// Дата начала операции в часовом поясе скважины /// Дата начала операции в часовом поясе скважины
/// </summary> /// </summary>
[Required]
public DateTime DateStart { get; set; } public DateTime DateStart { get; set; }
/// <summary> /// <summary>
/// Дата завершения операции в часовом поясе скважины /// Дата завершения операции в часовом поясе скважины
/// </summary> /// </summary>
[Required]
public DateTime DateEnd { get; set; } public DateTime DateEnd { get; set; }
/// <summary> /// <summary>
/// Продолжительность операции в минутах /// Продолжительность операции в минутах
/// </summary> /// </summary>
[Required]
public double DurationMinutes => (DateEnd - DateStart).TotalMinutes; public double DurationMinutes => (DateEnd - DateStart).TotalMinutes;
/// <summary> /// <summary>
/// глубина на начало операции, м /// глубина на начало операции, м
/// </summary> /// </summary>
[Required]
public double DepthStart { get; set; } public double DepthStart { get; set; }
/// <summary> /// <summary>
/// глубина на завершения операции, м /// глубина на завершения операции, м
/// </summary> /// </summary>
[Required]
public double DepthEnd { get; set; } public double DepthEnd { get; set; }
/// <summary> /// <summary>
/// название/описание операции /// название/описание операции
/// </summary> /// </summary>
[Required]
public WellOperationCategoryDto OperationCategory { get; set; } = null!; public WellOperationCategoryDto OperationCategory { get; set; } = null!;
/// <summary> /// <summary>
@ -76,11 +88,13 @@ namespace AsbCloudApp.Data.DetectedOperation
/// <summary> /// <summary>
/// Ключевой параметр операции /// Ключевой параметр операции
/// </summary> /// </summary>
[Required]
public double Value { get; set; } public double Value { get; set; }
/// <summary> /// <summary>
/// Флаг включенной подсистемы /// Флаг включенной подсистемы
/// </summary> /// </summary>
[Required]
public int EnabledSubsystems { get; set; } public int EnabledSubsystems { get; set; }
} }
} }

View File

@ -1,4 +1,5 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq; using System.Linq;
namespace AsbCloudApp.Data.DetectedOperation namespace AsbCloudApp.Data.DetectedOperation
@ -11,11 +12,13 @@ namespace AsbCloudApp.Data.DetectedOperation
/// <summary> /// <summary>
/// Список всех операций /// Список всех операций
/// </summary> /// </summary>
[Required]
public IEnumerable<DetectedOperationDto> Operations { get; set; } = Enumerable.Empty<DetectedOperationDto>(); public IEnumerable<DetectedOperationDto> Operations { get; set; } = Enumerable.Empty<DetectedOperationDto>();
/// <summary> /// <summary>
/// Статистика по бурильщикам /// Статистика по бурильщикам
/// </summary> /// </summary>
[Required]
public IEnumerable<DetectedOperationDrillersStatDto> Stats { get; set; } = Enumerable.Empty<DetectedOperationDrillersStatDto>(); public IEnumerable<DetectedOperationDrillersStatDto> Stats { get; set; } = Enumerable.Empty<DetectedOperationDrillersStatDto>();
} }
} }

View File

@ -1,4 +1,6 @@
namespace AsbCloudApp.Data.DetectedOperation using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data.DetectedOperation
{ {
/// <summary> /// <summary>
/// Статистика по операциям например за период. /// Статистика по операциям например за период.
@ -8,6 +10,7 @@
/// <summary> /// <summary>
/// Id названия/описания операции /// Id названия/описания операции
/// </summary> /// </summary>
[Required]
public int IdCategory { get; set; } public int IdCategory { get; set; }
/// <summary> /// <summary>
@ -18,41 +21,49 @@
/// <summary> /// <summary>
/// Количество операций /// Количество операций
/// </summary> /// </summary>
[Required]
public int Count { get; set; } public int Count { get; set; }
/// <summary> /// <summary>
/// Среднее по ключевому показателю /// Среднее по ключевому показателю
/// </summary> /// </summary>
[Required]
public double ValueAverage { get; set; } public double ValueAverage { get; set; }
/// <summary> /// <summary>
/// Мин по ключевому показателю /// Мин по ключевому показателю
/// </summary> /// </summary>
[Required]
public double ValueMin { get; set; } public double ValueMin { get; set; }
/// <summary> /// <summary>
/// Макс по ключевому показателю /// Макс по ключевому показателю
/// </summary> /// </summary>
[Required]
public double ValueMax { get; set; } public double ValueMax { get; set; }
/// <summary> /// <summary>
/// Суммарное время операций, мин /// Суммарное время операций, мин
/// </summary> /// </summary>
[Required]
public double MinutesTotal { get; set; } public double MinutesTotal { get; set; }
/// <summary> /// <summary>
/// Мин продолжительность операции, мин /// Мин продолжительность операции, мин
/// </summary> /// </summary>
[Required]
public double MinutesMin { get; set; } public double MinutesMin { get; set; }
/// <summary> /// <summary>
/// Макс продолжительность операции, мин /// Макс продолжительность операции, мин
/// </summary> /// </summary>
[Required]
public double MinutesMax { get; set; } public double MinutesMax { get; set; }
/// <summary> /// <summary>
/// Средняя продолжительность операции, мин /// Средняя продолжительность операции, мин
/// </summary> /// </summary>
[Required]
public double MinutesAverage { get; set; } public double MinutesAverage { get; set; }
} }
} }

View File

@ -1,4 +1,5 @@
using System; using System;
using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data.DrillTestReport namespace AsbCloudApp.Data.DrillTestReport
{ {
@ -10,16 +11,19 @@ namespace AsbCloudApp.Data.DrillTestReport
/// <summary> /// <summary>
/// Идентификатор отчета /// Идентификатор отчета
/// </summary> /// </summary>
[Required]
public int Id { get; set; } public int Id { get; set; }
/// <summary> /// <summary>
/// Проходка /// Проходка
/// </summary> /// </summary>
[Required]
public float DrillDepth { get; set; } public float DrillDepth { get; set; }
/// <summary> /// <summary>
/// Дата и время /// Дата и время
/// </summary> /// </summary>
[Required]
public DateTime DateTime { get; set; } public DateTime DateTime { get; set; }
} }
} }

View File

@ -1,4 +1,6 @@
namespace AsbCloudApp.Data using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data
{ {
/// <summary> /// <summary>
/// Описание данных для бурильщика /// Описание данных для бурильщика
@ -8,16 +10,19 @@
/// <summary> /// <summary>
/// Идентификатор в БД /// Идентификатор в БД
/// </summary> /// </summary>
[Required]
public int Id { get; set; } public int Id { get; set; }
/// <summary> /// <summary>
/// Имя /// Имя
/// </summary> /// </summary>
[Required]
public string Name { get; set; } = null!; public string Name { get; set; } = null!;
/// <summary> /// <summary>
/// Фамилия /// Фамилия
/// </summary> /// </summary>
[Required]
public string Surname { get; set; } = null!; public string Surname { get; set; } = null!;
/// <summary> /// <summary>

View File

@ -1,4 +1,5 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq; using System.Linq;
using AsbCloudApp.Data.User; using AsbCloudApp.Data.User;
@ -12,11 +13,13 @@ namespace AsbCloudApp.Data
/// <summary> /// <summary>
/// Название /// Название
/// </summary> /// </summary>
[Required]
public string Name { get; set; } = string.Empty; public string Name { get; set; } = string.Empty;
/// <summary> /// <summary>
/// ИД категории файла /// ИД категории файла
/// </summary> /// </summary>
[Required]
public int IdFileCategory { get; set; } public int IdFileCategory { get; set; }
/// <summary> /// <summary>
@ -24,26 +27,31 @@ namespace AsbCloudApp.Data
/// 1 - approving /// 1 - approving
/// 2 - completely approved /// 2 - completely approved
/// </summary> /// </summary>
[Required]
public int IdState { get; set; } public int IdState { get; set; }
/// <summary> /// <summary>
/// Публикаторы. Могут загружать файл этой категории /// Публикаторы. Могут загружать файл этой категории
/// </summary> /// </summary>
[Required]
public IEnumerable<UserDto> Publishers { get; set; } = Enumerable.Empty<UserDto>(); public IEnumerable<UserDto> Publishers { get; set; } = Enumerable.Empty<UserDto>();
/// <summary> /// <summary>
/// Согласованты. Могут согласовывать загруженные файлы этой категории /// Согласованты. Могут согласовывать загруженные файлы этой категории
/// </summary> /// </summary>
[Required]
public IEnumerable<UserDto> Approvers { get; set; } = Enumerable.Empty<UserDto>(); public IEnumerable<UserDto> Approvers { get; set; } = Enumerable.Empty<UserDto>();
/// <summary> /// <summary>
/// Разрешение для текущего пользователя согласовывать документ /// Разрешение для текущего пользователя согласовывать документ
/// </summary> /// </summary>
[Required]
public bool PermissionToApprove { get; set; } public bool PermissionToApprove { get; set; }
/// <summary> /// <summary>
/// Разрешение для текущего пользователя загружать документ /// Разрешение для текущего пользователя загружать документ
/// </summary> /// </summary>
[Required]
public bool PermissionToUpload { get; set; } public bool PermissionToUpload { get; set; }
/// <summary> /// <summary>

View File

@ -1,4 +1,5 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq; using System.Linq;
namespace AsbCloudApp.Data namespace AsbCloudApp.Data
@ -14,6 +15,7 @@ namespace AsbCloudApp.Data
/// 2 - формируется (несколько минут) /// 2 - формируется (несколько минут)
/// 3 - готова /// 3 - готова
/// </summary> /// </summary>
[Required]
public int IdState { get; set; } public int IdState { get; set; }
/// <summary> /// <summary>
@ -29,11 +31,13 @@ namespace AsbCloudApp.Data
/// <summary> /// <summary>
/// Разрешение редактировать части программы бурения /// Разрешение редактировать части программы бурения
/// </summary> /// </summary>
[Required]
public bool PermissionToEdit { get; set; } public bool PermissionToEdit { get; set; }
/// <summary> /// <summary>
/// Список частей программы бурения /// Список частей программы бурения
/// </summary> /// </summary>
[Required]
public IEnumerable<DrillingProgramPartDto> Parts { get; set; } = Enumerable.Empty<DrillingProgramPartDto>(); public IEnumerable<DrillingProgramPartDto> Parts { get; set; } = Enumerable.Empty<DrillingProgramPartDto>();
} }
@ -45,11 +49,13 @@ namespace AsbCloudApp.Data
/// <summary> /// <summary>
/// Текст ошибки для отображения пользователю /// Текст ошибки для отображения пользователю
/// </summary> /// </summary>
[Required]
public string Message { get; set; } = string.Empty; public string Message { get; set; } = string.Empty;
/// <summary> /// <summary>
/// Текст ошибки для разработчика /// Текст ошибки для разработчика
/// </summary> /// </summary>
[Required]
public string Exception { get; set; } = string.Empty; public string Exception { get; set; } = string.Empty;
} }
} }

View File

@ -1,4 +1,5 @@
using System; using System;
using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data namespace AsbCloudApp.Data
{ {
@ -10,6 +11,7 @@ namespace AsbCloudApp.Data
/// <summary> /// <summary>
/// ключ вопроса /// ключ вопроса
/// </summary> /// </summary>
[Required]
public int Id { get; set; } public int Id { get; set; }
/// <summary> /// <summary>
@ -31,6 +33,7 @@ namespace AsbCloudApp.Data
/// <summary> /// <summary>
/// текст вопроса /// текст вопроса
/// </summary> /// </summary>
[Required]
public string Question { get; set; } = null!; public string Question { get; set; } = null!;
/// <summary> /// <summary>
@ -41,21 +44,25 @@ namespace AsbCloudApp.Data
/// <summary> /// <summary>
/// статус вопроса /// статус вопроса
/// </summary> /// </summary>
[Required]
public int State { get; set; } = 0; public int State { get; set; } = 0;
/// <summary> /// <summary>
/// Счетчик повторений вопроса /// Счетчик повторений вопроса
/// </summary> /// </summary>
[Required]
public int CounterQuestion { get; set; } = 1; public int CounterQuestion { get; set; } = 1;
/// <summary> /// <summary>
/// Частый вопрос /// Частый вопрос
/// </summary> /// </summary>
[Required]
public bool IsFrequently { get; set; } = false; public bool IsFrequently { get; set; } = false;
/// <summary> /// <summary>
/// Автор вопроса /// Автор вопроса
/// </summary> /// </summary>
[Required]
public string AurhorQuestionName { get; set; } = string.Empty; public string AurhorQuestionName { get; set; } = string.Empty;
/// <summary> /// <summary>

View File

@ -1,4 +1,6 @@
namespace AsbCloudApp.Data using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data
{ {
/// <summary> /// <summary>
/// DTO категории файла /// DTO категории файла
@ -6,12 +8,14 @@
public class FileCategoryDto : IId public class FileCategoryDto : IId
{ {
/// <inheritdoc/> /// <inheritdoc/>
[Required]
public int Id { get; set; } public int Id { get; set; }
/// <summary> /// <summary>
/// полное название /// полное название
/// </summary> /// </summary>
public string Name { get; set; } = string.Empty; [Required]
public string Name { get; set; } = null!;
/// <summary> /// <summary>
/// сокращенное название /// сокращенное название

View File

@ -12,15 +12,18 @@ namespace AsbCloudApp.Data
public class FileInfoDto : IId, IWellRelated public class FileInfoDto : IId, IWellRelated
{ {
/// <inheritdoc/> /// <inheritdoc/>
[Required]
public int Id { get; set; } public int Id { get; set; }
/// <inheritdoc/> /// <inheritdoc/>
[Required]
[Range(1, int.MaxValue, ErrorMessage = "Id скважины не может быть меньше 1")] [Range(1, int.MaxValue, ErrorMessage = "Id скважины не может быть меньше 1")]
public int IdWell { get; set; } public int IdWell { get; set; }
/// <summary> /// <summary>
/// id категории файла /// id категории файла
/// </summary> /// </summary>
[Required]
[Range(1, int.MaxValue, ErrorMessage = "Id категории файла не может быть меньше 1")] [Range(1, int.MaxValue, ErrorMessage = "Id категории файла не может быть меньше 1")]
public int IdCategory { get; set; } public int IdCategory { get; set; }
@ -32,22 +35,26 @@ namespace AsbCloudApp.Data
/// <summary> /// <summary>
/// имя файла /// имя файла
/// </summary> /// </summary>
[Required]
[StringLength(260, MinimumLength = 1, ErrorMessage = "Допустимое имя компании от 1 до 260 символов")] [StringLength(260, MinimumLength = 1, ErrorMessage = "Допустимое имя компании от 1 до 260 символов")]
public string Name { get; set; } = null!; public string Name { get; set; } = null!;
/// <summary> /// <summary>
/// дата загрузки /// дата загрузки
/// </summary> /// </summary>
[Required]
public DateTime UploadDate { get; set; } public DateTime UploadDate { get; set; }
/// <summary> /// <summary>
/// размер в байтах /// размер в байтах
/// </summary> /// </summary>
[Required]
public long Size { get; set; } public long Size { get; set; }
/// <summary> /// <summary>
/// Помечен как удаленный /// Помечен как удаленный
/// </summary> /// </summary>
[Required]
public bool IsDeleted { get; set; } public bool IsDeleted { get; set; }
/// <summary> /// <summary>
@ -58,6 +65,7 @@ namespace AsbCloudApp.Data
/// <summary> /// <summary>
/// список отметок файла /// список отметок файла
/// </summary> /// </summary>
[Required]
public IEnumerable<FileMarkDto> FileMarks { get; set; } = Enumerable.Empty<FileMarkDto>(); public IEnumerable<FileMarkDto> FileMarks { get; set; } = Enumerable.Empty<FileMarkDto>();
} }
} }

View File

@ -10,11 +10,13 @@ namespace AsbCloudApp.Data
public class FileMarkDto: IId public class FileMarkDto: IId
{ {
/// <inheritdoc/> /// <inheritdoc/>
[Required]
public int Id { get; set; } public int Id { get; set; }
/// <summary> /// <summary>
/// id файла /// id файла
/// </summary> /// </summary>
[Required]
[Range(1, int.MaxValue, ErrorMessage = "Id файла не может быть меньше 1")] [Range(1, int.MaxValue, ErrorMessage = "Id файла не может быть меньше 1")]
public int IdFile { get; set; } public int IdFile { get; set; }
@ -22,6 +24,7 @@ namespace AsbCloudApp.Data
/// 0 - отклонен /// 0 - отклонен
/// 1 - согласован /// 1 - согласован
/// </summary> /// </summary>
[Required]
[Range(0, int.MaxValue, ErrorMessage = "Id категории действия с файлом не может быть меньше 1")] [Range(0, int.MaxValue, ErrorMessage = "Id категории действия с файлом не может быть меньше 1")]
public int IdMarkType { get; set; } public int IdMarkType { get; set; }
@ -29,6 +32,7 @@ namespace AsbCloudApp.Data
/// дата/время добавления. /// дата/время добавления.
/// Необязательно указывать в запросе на создание. /// Необязательно указывать в запросе на создание.
/// </summary> /// </summary>
[Required]
public DateTime DateCreated { get; set; } public DateTime DateCreated { get; set; }
/// <summary> /// <summary>
@ -40,6 +44,7 @@ namespace AsbCloudApp.Data
/// <summary> /// <summary>
/// признак удаления отметки /// признак удаления отметки
/// </summary> /// </summary>
[Required]
public bool IsDeleted { get; set; } public bool IsDeleted { get; set; }
/// <summary> /// <summary>

View File

@ -1,4 +1,5 @@
using System.Collections; using System.Collections;
using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data namespace AsbCloudApp.Data
{ {
@ -33,11 +34,13 @@ namespace AsbCloudApp.Data
/// <summary> /// <summary>
/// идентификатор /// идентификатор
/// </summary> /// </summary>
[Required]
public int Id { get; set; } public int Id { get; set; }
/// <summary> /// <summary>
/// Состояние /// Состояние
/// </summary> /// </summary>
[Required]
public JobState State { get; set; } public JobState State { get; set; }
/// <summary> /// <summary>

View File

@ -1,4 +1,5 @@
using System; using System;
using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data namespace AsbCloudApp.Data
{ {
@ -10,31 +11,37 @@ namespace AsbCloudApp.Data
/// <summary> /// <summary>
/// Идентификатор скважины /// Идентификатор скважины
/// </summary> /// </summary>
[Required]
public int IdWell { get; set; } public int IdWell { get; set; }
/// <summary> /// <summary>
/// Время бурения /// Время бурения
/// </summary> /// </summary>
[Required]
public float TotalMinutes { get; set; } public float TotalMinutes { get; set; }
/// <summary> /// <summary>
/// Глубина бурения /// Глубина бурения
/// </summary> /// </summary>
[Required]
public float Depth { get; set; } public float Depth { get; set; }
/// <summary> /// <summary>
/// Идентификатор критерия бурения /// Идентификатор критерия бурения
/// </summary> /// </summary>
[Required]
public short IdFeedRegulator { get; set; } public short IdFeedRegulator { get; set; }
/// <summary> /// <summary>
/// Наименование критерия бурения /// Наименование критерия бурения
/// </summary> /// </summary>
[Required]
public string NameFeedRegulator { get; set; } = string.Empty; public string NameFeedRegulator { get; set; } = string.Empty;
/// <summary> /// <summary>
/// Количество включений /// Количество включений
/// </summary> /// </summary>
[Required]
public int NumberInclusions { get; set; } public int NumberInclusions { get; set; }
} }
} }

View File

@ -10,32 +10,38 @@ namespace AsbCloudApp.Data
public class MeasureDto : IId, IWellRelated public class MeasureDto : IId, IWellRelated
{ {
/// <inheritdoc/> /// <inheritdoc/>
[Required]
public int Id { get; set; } public int Id { get; set; }
/// <inheritdoc/> /// <inheritdoc/>
[Required]
[Range(1, int.MaxValue, ErrorMessage = "Id скважины не может быть меньше 1")] [Range(1, int.MaxValue, ErrorMessage = "Id скважины не может быть меньше 1")]
public int IdWell { get; set; } public int IdWell { get; set; }
/// <summary> /// <summary>
/// Id категории замера /// Id категории замера
/// </summary> /// </summary>
[Required]
[Range(1, int.MaxValue, ErrorMessage = "Id категории не может быть меньше 1")] [Range(1, int.MaxValue, ErrorMessage = "Id категории не может быть меньше 1")]
public int IdCategory { get; set; } public int IdCategory { get; set; }
/// <summary> /// <summary>
/// название категории замера /// название категории замера
/// </summary> /// </summary>
[Required]
[StringLength(120, MinimumLength = 1, ErrorMessage = "Название категории не может быть больше 120 символов")] [StringLength(120, MinimumLength = 1, ErrorMessage = "Название категории не может быть больше 120 символов")]
public string CategoryName { get; set; } = string.Empty; public string CategoryName { get; set; } = string.Empty;
/// <summary> /// <summary>
/// отметка времени замера /// отметка времени замера
/// </summary> /// </summary>
[Required]
public DateTime Timestamp { get; set; } public DateTime Timestamp { get; set; }
/// <summary> /// <summary>
/// данные замера /// данные замера
/// </summary> /// </summary>
[Required]
public Dictionary<string, object> Data { get; set; } = new(); public Dictionary<string, object> Data { get; set; } = new();
} }
} }

View File

@ -9,22 +9,26 @@ namespace AsbCloudApp.Data
public class MessageDto : IId public class MessageDto : IId
{ {
/// <inheritdoc/> /// <inheritdoc/>
[Required]
public int Id { get; set; } public int Id { get; set; }
/// <summary> /// <summary>
/// дата появления события /// дата появления события
/// </summary> /// </summary>
[Required]
public DateTime DateTime { get; set; } public DateTime DateTime { get; set; }
/// <summary> /// <summary>
/// категория события /// категория события
/// </summary> /// </summary>
[Required]
[Range(1, int.MaxValue, ErrorMessage = "Id категории не может быть ниже 1")] [Range(1, int.MaxValue, ErrorMessage = "Id категории не может быть ниже 1")]
public int CategoryId { get; set; } public int CategoryId { get; set; }
/// <summary> /// <summary>
/// глубина забоя, при котором событие возникло /// глубина забоя, при котором событие возникло
/// </summary> /// </summary>
[Required]
[Range(-1, int.MaxValue, ErrorMessage = "Id скважины не может быть ниже 1")] [Range(-1, int.MaxValue, ErrorMessage = "Id скважины не может быть ниже 1")]
public double WellDepth { get; set; } public double WellDepth { get; set; }
@ -36,6 +40,7 @@ namespace AsbCloudApp.Data
/// <summary> /// <summary>
/// текст сообщения /// текст сообщения
/// </summary> /// </summary>
[Required]
[StringLength(400, MinimumLength = 1, ErrorMessage = "Допустимая длина текста сообщения от 1 до 400 символов")] [StringLength(400, MinimumLength = 1, ErrorMessage = "Допустимая длина текста сообщения от 1 до 400 символов")]
public string Message { get; set; } = string.Empty; public string Message { get; set; } = string.Empty;
} }

View File

@ -1,3 +1,5 @@
using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data; namespace AsbCloudApp.Data;
/// <summary> /// <summary>
@ -8,10 +10,12 @@ public class NotificationCategoryDto : IId
/// <summary> /// <summary>
/// Id категории /// Id категории
/// </summary> /// </summary>
[Required]
public int Id { get; set; } public int Id { get; set; }
/// <summary> /// <summary>
/// Название категории /// Название категории
/// </summary> /// </summary>
[Required]
public string Name { get; set; } = null!; public string Name { get; set; } = null!;
} }

View File

@ -11,16 +11,19 @@ public class NotificationDto : IId
/// <summary> /// <summary>
/// Id уведомления /// Id уведомления
/// </summary> /// </summary>
[Required]
public int Id { get; set; } public int Id { get; set; }
/// <summary> /// <summary>
/// Id получателя уведомления /// Id получателя уведомления
/// </summary> /// </summary>
[Required]
public int IdUser { get; set; } public int IdUser { get; set; }
/// <summary> /// <summary>
/// Id категории уведомления /// Id категории уведомления
/// </summary> /// </summary>
[Required]
public int IdNotificationCategory { get; set; } public int IdNotificationCategory { get; set; }
/// <summary> /// <summary>
@ -38,6 +41,7 @@ public class NotificationDto : IId
/// <summary> /// <summary>
/// Дата регистрации уведомления /// Дата регистрации уведомления
/// </summary> /// </summary>
[Required]
public DateTime RegistrationDate { get; set; } public DateTime RegistrationDate { get; set; }
/// <summary> /// <summary>
@ -56,6 +60,7 @@ public class NotificationDto : IId
/// 1 - Отправлено, /// 1 - Отправлено,
/// 2 - Прочитано /// 2 - Прочитано
/// </summary> /// </summary>
[Required]
public int IdState public int IdState
{ {
get get
@ -93,11 +98,13 @@ public class NotificationDto : IId
/// 0 - SignalR /// 0 - SignalR
/// 1 - Email /// 1 - Email
/// </summary> /// </summary>
[Required]
[Range(0,1)] [Range(0,1)]
public int IdTransportType { get; set; } public int IdTransportType { get; set; }
/// <summary> /// <summary>
/// DTO категории уведомления /// DTO категории уведомления
/// </summary> /// </summary>
[Required]
public NotificationCategoryDto NotificationCategory { get; set; } = null!; public NotificationCategoryDto NotificationCategory { get; set; } = null!;
} }

View File

@ -1,4 +1,6 @@
namespace AsbCloudApp.Data using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data
{ {
/// <summary> /// <summary>
/// Описание целевых/нормативных показателей операций /// Описание целевых/нормативных показателей операций
@ -8,36 +10,43 @@
/// <summary> /// <summary>
/// Идентификатор в БД /// Идентификатор в БД
/// </summary> /// </summary>
[Required]
public int Id { get; set; } public int Id { get; set; }
/// <summary> /// <summary>
/// Идентификатор скважины /// Идентификатор скважины
/// </summary> /// </summary>
[Required]
public int IdWell { get; set; } public int IdWell { get; set; }
/// <summary> /// <summary>
/// Идентификатор категории операции /// Идентификатор категории операции
/// </summary> /// </summary>
[Required]
public int IdOperationCategory { get; set; } public int IdOperationCategory { get; set; }
/// <summary> /// <summary>
/// Целевой показатель /// Целевой показатель
/// </summary> /// </summary>
[Required]
public double TargetValue { get; set; } public double TargetValue { get; set; }
/// <summary> /// <summary>
/// Нормативный показатель /// Нормативный показатель
/// </summary> /// </summary>
[Required]
public double StandardValue { get; set; } public double StandardValue { get; set; }
/// <summary> /// <summary>
/// Стартовая глубина /// Стартовая глубина
/// </summary> /// </summary>
[Required]
public double DepthStart { get; set; } public double DepthStart { get; set; }
/// <summary> /// <summary>
/// Конечная глубина /// Конечная глубина
/// </summary> /// </summary>
[Required]
public double DepthEnd { get; set; } public double DepthEnd { get; set; }
} }

View File

@ -9,11 +9,13 @@ namespace AsbCloudApp.Data
public class PermissionDto : IId public class PermissionDto : IId
{ {
/// <inheritdoc/> /// <inheritdoc/>
[Required]
public int Id { get; set; } public int Id { get; set; }
/// <summary> /// <summary>
/// Название /// Название
/// </summary> /// </summary>
[Required]
[StringLength(50, MinimumLength = 1, ErrorMessage = "Допустимая длина названия разрешения от 1 до 50 символов")] [StringLength(50, MinimumLength = 1, ErrorMessage = "Допустимая длина названия разрешения от 1 до 50 символов")]
public string Name { get; set; } = string.Empty; public string Name { get; set; } = string.Empty;

View File

@ -1,4 +1,6 @@
namespace AsbCloudApp.Data using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data
{ {
/// <summary> /// <summary>
/// Плановое значение и максимально допустимое ограничение /// Плановое значение и максимально допустимое ограничение
@ -8,11 +10,13 @@
/// <summary> /// <summary>
/// План /// План
/// </summary> /// </summary>
[Required]
public double Plan { get; set; } public double Plan { get; set; }
/// <summary> /// <summary>
/// Максимальное ограничение /// Максимальное ограничение
/// </summary> /// </summary>
[Required]
public double LimitMax { get; set; } public double LimitMax { get; set; }
} }

View File

@ -7,11 +7,13 @@ namespace AsbCloudApp.Data.ProcessMaps;
public abstract class ProcessMapPlanBaseDto : IId, IWellRelated public abstract class ProcessMapPlanBaseDto : IId, IWellRelated
{ {
/// <inheritdoc/> /// <inheritdoc/>
[Required]
public int Id { get; set; } public int Id { get; set; }
/// <summary> /// <summary>
/// Id скважины /// Id скважины
/// </summary> /// </summary>
[Required]
[Range(1, int.MaxValue, ErrorMessage = "Id скважины не может быть меньше 1")] [Range(1, int.MaxValue, ErrorMessage = "Id скважины не может быть меньше 1")]
public int IdWell { get; set; } public int IdWell { get; set; }
@ -23,6 +25,7 @@ public abstract class ProcessMapPlanBaseDto : IId, IWellRelated
/// <summary> /// <summary>
/// Тип секции /// Тип секции
/// </summary> /// </summary>
[Required]
[Range(1, int.MaxValue, ErrorMessage = "Id секции скважины не может быть меньше 1")] [Range(1, int.MaxValue, ErrorMessage = "Id секции скважины не может быть меньше 1")]
public int IdWellSectionType { get; set; } public int IdWellSectionType { get; set; }
@ -37,6 +40,7 @@ public abstract class ProcessMapPlanBaseDto : IId, IWellRelated
/// на начало интервала /// на начало интервала
/// </para> /// </para>
/// </summary> /// </summary>
[Required]
[Range(0, 99999.9, ErrorMessage = "Глубина не может быть отрицательной")] [Range(0, 99999.9, ErrorMessage = "Глубина не может быть отрицательной")]
public double DepthStart { get; set; } public double DepthStart { get; set; }
@ -46,6 +50,7 @@ public abstract class ProcessMapPlanBaseDto : IId, IWellRelated
/// на конец интервала /// на конец интервала
/// </para> /// </para>
/// </summary> /// </summary>
[Required]
[Range(0, 99999.9, ErrorMessage = "Глубина не может быть отрицательной")] [Range(0, 99999.9, ErrorMessage = "Глубина не может быть отрицательной")]
public double DepthEnd { get; set; } public double DepthEnd { get; set; }

View File

@ -10,49 +10,58 @@ public class ProcessMapPlanWellDrillingDto : ProcessMapPlanBaseDto
/// <summary> /// <summary>
/// Id режима 0-ручной, 1-ротор, 2 - слайд /// Id режима 0-ручной, 1-ротор, 2 - слайд
/// </summary> /// </summary>
[Required]
[Range(0, 2, ErrorMessage = "Id режима должен быть либо 0-ручной либо, 1-ротор либо 2-слайд")] [Range(0, 2, ErrorMessage = "Id режима должен быть либо 0-ручной либо, 1-ротор либо 2-слайд")]
public int IdMode { get; set; } public int IdMode { get; set; }
/// <summary> /// <summary>
/// Нагрузка /// Нагрузка
/// </summary> /// </summary>
[Required]
public PlanLimitDto AxialLoad { get; set; } = null!; public PlanLimitDto AxialLoad { get; set; } = null!;
/// <summary> /// <summary>
/// Перепад давления /// Перепад давления
/// </summary> /// </summary>
[Required]
public PlanLimitDto Pressure { get; set; } = null!; public PlanLimitDto Pressure { get; set; } = null!;
/// <summary> /// <summary>
/// Момент на ВСП /// Момент на ВСП
/// </summary> /// </summary>
[Required]
public PlanLimitDto TopDriveTorque { get; set; } = null!; public PlanLimitDto TopDriveTorque { get; set; } = null!;
/// <summary> /// <summary>
/// Обороты на ВСП /// Обороты на ВСП
/// </summary> /// </summary>
[Required]
public PlanLimitDto TopDriveSpeed { get; set; } = null!; public PlanLimitDto TopDriveSpeed { get; set; } = null!;
/// <summary> /// <summary>
/// Расход /// Расход
/// </summary> /// </summary>
[Required]
public PlanLimitDto Flow { get; set; } = null!; public PlanLimitDto Flow { get; set; } = null!;
/// <summary> /// <summary>
/// Плановая механическая скорость, м/ч /// Плановая механическая скорость, м/ч
/// </summary> /// </summary>
[Required]
[Range(0, 99999.9, ErrorMessage = "Плановая механическая скорость должно быть в пределах от 0 до 99999.9")] [Range(0, 99999.9, ErrorMessage = "Плановая механическая скорость должно быть в пределах от 0 до 99999.9")]
public double RopPlan { get; set; } public double RopPlan { get; set; }
/// <summary> /// <summary>
/// Плановый процент использования АКБ /// Плановый процент использования АКБ
/// </summary> /// </summary>
[Required]
[Range(0, 100, ErrorMessage = "Процент использования АКБ должен быть в пределах от 0 до 100")] [Range(0, 100, ErrorMessage = "Процент использования АКБ должен быть в пределах от 0 до 100")]
public double UsageSaub { get; set; } public double UsageSaub { get; set; }
/// <summary> /// <summary>
/// Плановый процент использования spin master /// Плановый процент использования spin master
/// </summary> /// </summary>
[Required]
[Range(0, 100, ErrorMessage = "Процент использования spin master должен быть в пределах от 0 до 100")] [Range(0, 100, ErrorMessage = "Процент использования spin master должен быть в пределах от 0 до 100")]
public double UsageSpin { get; set; } public double UsageSpin { get; set; }
} }

View File

@ -11,54 +11,63 @@ public class ProcessMapPlanWellReamDto : ProcessMapPlanBaseDto, IValidatableObje
/// <summary> /// <summary>
/// Количество повторений /// Количество повторений
/// </summary> /// </summary>
[Required]
[Range(0, 100, ErrorMessage = "Количество повторений должно быть в пределах от 0 до 100")] [Range(0, 100, ErrorMessage = "Количество повторений должно быть в пределах от 0 до 100")]
public double Repeats { get; set; } public double Repeats { get; set; }
/// <summary> /// <summary>
/// Вращение при движении вверх, об/мин /// Вращение при движении вверх, об/мин
/// </summary> /// </summary>
[Required]
[Range(0, 99999.9, ErrorMessage = "Количество вращений вверх должно быть в пределах от 0 до 99999.9")] [Range(0, 99999.9, ErrorMessage = "Количество вращений вверх должно быть в пределах от 0 до 99999.9")]
public double SpinUpward { get; set; } public double SpinUpward { get; set; }
/// <summary> /// <summary>
/// Вращение при движении вниз, об/мин /// Вращение при движении вниз, об/мин
/// </summary> /// </summary>
[Required]
[Range(0, 99999.9, ErrorMessage = "Количество вращений вниз должно быть в пределах от 0 до 99999.9")] [Range(0, 99999.9, ErrorMessage = "Количество вращений вниз должно быть в пределах от 0 до 99999.9")]
public double SpinDownward { get; set; } public double SpinDownward { get; set; }
/// <summary> /// <summary>
/// Скорость подъёма, м/ч /// Скорость подъёма, м/ч
/// </summary> /// </summary>
[Required]
[Range(0, 99999.9, ErrorMessage = "Скорость подъёма должна быть в пределах от 0 до 99999.9")] [Range(0, 99999.9, ErrorMessage = "Скорость подъёма должна быть в пределах от 0 до 99999.9")]
public double SpeedUpward { get; set; } public double SpeedUpward { get; set; }
/// <summary> /// <summary>
/// Скорость спуска, м/ч /// Скорость спуска, м/ч
/// </summary> /// </summary>
[Required]
[Range(0, 99999.9, ErrorMessage = "Скорость спуска должна быть в пределах от 0 до 99999.9")] [Range(0, 99999.9, ErrorMessage = "Скорость спуска должна быть в пределах от 0 до 99999.9")]
public double SpeedDownward { get; set; } public double SpeedDownward { get; set; }
/// <summary> /// <summary>
/// Уставка зятяжки, т /// Уставка зятяжки, т
/// </summary> /// </summary>
[Required]
[Range(0, 99999.9, ErrorMessage = "Значение затяжек уставки должно быть в пределах от 0 до 99999.9")] [Range(0, 99999.9, ErrorMessage = "Значение затяжек уставки должно быть в пределах от 0 до 99999.9")]
public double SetpointDrag { get; set; } public double SetpointDrag { get; set; }
/// <summary> /// <summary>
/// Уставка посадки, т /// Уставка посадки, т
/// </summary> /// </summary>
[Required]
[Range(0, 99999.9, ErrorMessage = "Значение посадки уставки должно быть в пределах от 0 до 99999.9")] [Range(0, 99999.9, ErrorMessage = "Значение посадки уставки должно быть в пределах от 0 до 99999.9")]
public double SetpointTight { get; set; } public double SetpointTight { get; set; }
/// <summary> /// <summary>
/// Давление, атм /// Давление, атм
/// </summary> /// </summary>
[Required]
[Range(0, 99999.9, ErrorMessage = "Давление должно быть в пределах от 0 до 99999.9")] [Range(0, 99999.9, ErrorMessage = "Давление должно быть в пределах от 0 до 99999.9")]
public double Pressure { get; set; } public double Pressure { get; set; }
/// <summary> /// <summary>
/// Момент, кН*м /// Момент, кН*м
/// </summary> /// </summary>
[Required]
[Range(0, 99999.9, ErrorMessage = "Крутящий момент должен быть в пределах от 0 до 99999.9")] [Range(0, 99999.9, ErrorMessage = "Крутящий момент должен быть в пределах от 0 до 99999.9")]
public double Torque { get; set; } public double Torque { get; set; }

View File

@ -1,4 +1,5 @@
using System; using System;
using System.ComponentModel.DataAnnotations;
using AsbCloudApp.Data.User; using AsbCloudApp.Data.User;
namespace AsbCloudApp.Data namespace AsbCloudApp.Data
@ -11,11 +12,13 @@ namespace AsbCloudApp.Data
/// <summary> /// <summary>
/// Id пользователя /// Id пользователя
/// </summary> /// </summary>
[Required]
public int UserId { get; set; } public int UserId { get; set; }
/// <summary> /// <summary>
/// логин /// логин
/// </summary> /// </summary>
[Required]
public string Login { get; set; } = string.Empty; public string Login { get; set; } = string.Empty;
/// <summary> /// <summary>
@ -26,26 +29,31 @@ namespace AsbCloudApp.Data
/// <summary> /// <summary>
/// время выполнения запроса /// время выполнения запроса
/// </summary> /// </summary>
[Required]
public long ElapsedMs { get; set; } public long ElapsedMs { get; set; }
/// <summary> /// <summary>
/// метка времени последнего запроса /// метка времени последнего запроса
/// </summary> /// </summary>
[Required]
public DateTime LastDate { get; set; } public DateTime LastDate { get; set; }
/// <summary> /// <summary>
/// кол-во запросов /// кол-во запросов
/// </summary> /// </summary>
[Required]
public long Requests { get; set; } public long Requests { get; set; }
/// <summary> /// <summary>
/// кол-во ошибок /// кол-во ошибок
/// </summary> /// </summary>
[Required]
public long Errors { get; set; } public long Errors { get; set; }
/// <summary> /// <summary>
/// DTO пользователя /// DTO пользователя
/// </summary> /// </summary>
[Required]
public UserDto User { get; set; } = null!; public UserDto User { get; set; } = null!;
} }
} }

View File

@ -1,5 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq; using System.Linq;
namespace AsbCloudApp.Data.SAUB namespace AsbCloudApp.Data.SAUB
@ -12,16 +13,19 @@ namespace AsbCloudApp.Data.SAUB
/// <summary> /// <summary>
/// Идентификатор drill test /// Идентификатор drill test
/// </summary> /// </summary>
[Required]
public int Id { get; set; } public int Id { get; set; }
/// <summary> /// <summary>
/// Время начала drill test /// Время начала drill test
/// </summary> /// </summary>
[Required]
public DateTimeOffset TimeStampStart { get; set; } public DateTimeOffset TimeStampStart { get; set; }
/// <summary> /// <summary>
/// Глубина начала drill test /// Глубина начала drill test
/// </summary> /// </summary>
[Required]
public float DepthStart { get; set; } public float DepthStart { get; set; }
/// <summary> /// <summary>
@ -32,6 +36,7 @@ namespace AsbCloudApp.Data.SAUB
/// <summary> /// <summary>
/// Параметры теста /// Параметры теста
/// </summary> /// </summary>
[Required]
public IEnumerable<DrillTestParamsDto> Params { get; set; } = Enumerable.Empty<DrillTestParamsDto>(); public IEnumerable<DrillTestParamsDto> Params { get; set; } = Enumerable.Empty<DrillTestParamsDto>();
} }
} }

View File

@ -1,4 +1,6 @@
namespace AsbCloudApp.Data.SAUB using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data.SAUB
{ {
/// <summary> /// <summary>
/// Параметры Drill Test /// Параметры Drill Test
@ -8,6 +10,7 @@
/// <summary> /// <summary>
/// Шаг /// Шаг
/// </summary> /// </summary>
[Required]
public int Step { get; set; } public int Step { get; set; }
/// <summary> /// <summary>

View File

@ -10,17 +10,20 @@ namespace AsbCloudApp.Data.SAUB
/// <summary> /// <summary>
/// id события /// id события
/// </summary> /// </summary>
[Required]
public int Id { get; set; } public int Id { get; set; }
/// <summary> /// <summary>
/// шаблон текста сообщения /// шаблон текста сообщения
/// </summary> /// </summary>
[Required]
public string Message { get; set; } = string.Empty; public string Message { get; set; } = string.Empty;
/// <summary> /// <summary>
/// id категории события /// id категории события
/// </summary> /// </summary>
[Required]
[Range(0, int.MaxValue, ErrorMessage = "Id категории события не может быть отрицательным")] [Range(0, int.MaxValue, ErrorMessage = "Id категории события не может быть отрицательным")]
public int IdCategory { get; set; } public int IdCategory { get; set; }
@ -32,12 +35,14 @@ namespace AsbCloudApp.Data.SAUB
/// <summary> /// <summary>
/// тип определения наступления события /// тип определения наступления события
/// </summary> /// </summary>
[Required]
[Range(0, int.MaxValue, ErrorMessage = "Id типа события не может быть отрицательным")] [Range(0, int.MaxValue, ErrorMessage = "Id типа события не может быть отрицательным")]
public int EventType { get; set; } public int EventType { get; set; }
/// <summary> /// <summary>
/// флаг, следует ли воспроизводить звук при наступлении события /// флаг, следует ли воспроизводить звук при наступлении события
/// </summary> /// </summary>
[Required]
public int IdSound { get; set; } public int IdSound { get; set; }
} }
} }

View File

@ -1,4 +1,6 @@
namespace AsbCloudApp.Data.SAUB using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data.SAUB
{ {
/// <summary> /// <summary>
/// DTO рекомендации уставок передаваемых на панель оператора /// DTO рекомендации уставок передаваемых на панель оператора
@ -13,6 +15,7 @@
/// <summary> /// <summary>
/// настоящее название уставки (имя переменной в панели оператора) /// настоящее название уставки (имя переменной в панели оператора)
/// </summary> /// </summary>
[Required]
public string Name { get; set; } = null!; public string Name { get; set; } = null!;
/// <summary> /// <summary>
@ -28,11 +31,13 @@
/// <summary> /// <summary>
/// макс. значение /// макс. значение
/// </summary> /// </summary>
[Required]
public double Max { get; set; } = double.MaxValue; public double Max { get; set; } = double.MaxValue;
/// <summary> /// <summary>
/// мин значение /// мин значение
/// </summary> /// </summary>
[Required]
public double Min { get; set; } = double.MinValue; public double Min { get; set; } = double.MinValue;
} }
} }

View File

@ -1,5 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using AsbCloudApp.Data.User; using AsbCloudApp.Data.User;
namespace AsbCloudApp.Data.SAUB namespace AsbCloudApp.Data.SAUB
@ -10,19 +11,23 @@ namespace AsbCloudApp.Data.SAUB
public class SetpointsRequestDto : IId, IWellRelated public class SetpointsRequestDto : IId, IWellRelated
{ {
/// <inheritdoc/> /// <inheritdoc/>
[Required]
public int Id { get; set; } public int Id { get; set; }
/// <inheritdoc/> /// <inheritdoc/>
[Required]
public int IdWell { get; set; } public int IdWell { get; set; }
/// <summary> /// <summary>
/// Id автора запроса /// Id автора запроса
/// </summary> /// </summary>
[Required]
public int IdAuthor { get; set; } public int IdAuthor { get; set; }
/// <summary> /// <summary>
/// текущее состояние запроса 0: неизвестно, 1:ожидает отправки, 2: отправлено, 3: принято оператором, 4: отклонено оператором, 5: устарело /// текущее состояние запроса 0: неизвестно, 1:ожидает отправки, 2: отправлено, 3: принято оператором, 4: отклонено оператором, 5: устарело
/// </summary> /// </summary>
[Required]
public int IdState { get; set; } public int IdState { get; set; }
/// <summary> /// <summary>
@ -33,11 +38,13 @@ namespace AsbCloudApp.Data.SAUB
/// <summary> /// <summary>
/// время в секундах актуальности этого запроса /// время в секундах актуальности этого запроса
/// </summary> /// </summary>
[Required]
public int ObsolescenceSec { get; set; } public int ObsolescenceSec { get; set; }
/// <summary> /// <summary>
/// набор уставок: {"название переменной панели"; "рекомендуемое значение"} /// набор уставок: {"название переменной панели"; "рекомендуемое значение"}
/// </summary> /// </summary>
[Required]
public Dictionary<string, double> Setpoints { get; set; } = new(); public Dictionary<string, double> Setpoints { get; set; } = new();
/// <summary> /// <summary>

View File

@ -11,6 +11,7 @@ namespace AsbCloudApp.Data.SAUB
/// <summary> /// <summary>
/// метка времени данных /// метка времени данных
/// </summary> /// </summary>
[Required]
public DateTime DateTime { get; set; } public DateTime DateTime { get; set; }
/// <summary> /// <summary>

View File

@ -1,4 +1,5 @@
using System; using System;
using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data.SAUB namespace AsbCloudApp.Data.SAUB
{ {
@ -15,6 +16,7 @@ namespace AsbCloudApp.Data.SAUB
/// <summary> /// <summary>
/// Дата /// Дата
/// </summary> /// </summary>
[Required]
public DateTime DateTime { get; set; } public DateTime DateTime { get; set; }
/// <summary> /// <summary>
@ -70,11 +72,13 @@ namespace AsbCloudApp.Data.SAUB
/// <summary> /// <summary>
/// Осцилляция включена /// Осцилляция включена
/// </summary> /// </summary>
[Required]
public bool IsOscillating => State != 0 & State != 6 & State != 7; public bool IsOscillating => State != 0 & State != 6 & State != 7;
/// <summary> /// <summary>
/// Демпфирование включено /// Демпфирование включено
/// </summary> /// </summary>
[Required]
public bool IsDampening => State == 7 && (Mode & 2) > 0; public bool IsDampening => State == 7 && (Mode & 2) > 0;
} }
} }

View File

@ -1,4 +1,5 @@
using System; using System;
using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data namespace AsbCloudApp.Data
{ {
@ -8,34 +9,41 @@ namespace AsbCloudApp.Data
public class ScheduleDto : IId, IWellRelated public class ScheduleDto : IId, IWellRelated
{ {
/// <inheritdoc/> /// <inheritdoc/>
[Required]
public int Id { get; set; } public int Id { get; set; }
/// <inheritdoc/> /// <inheritdoc/>
[Required]
public int IdWell { get; set; } public int IdWell { get; set; }
/// <summary> /// <summary>
/// Идентификатор бурильщика /// Идентификатор бурильщика
/// </summary> /// </summary>
[Required]
public int IdDriller { get; set; } public int IdDriller { get; set; }
/// <summary> /// <summary>
/// Начало смены /// Начало смены
/// </summary> /// </summary>
[Required]
public TimeDto ShiftStart { get; set; } = null!; public TimeDto ShiftStart { get; set; } = null!;
/// <summary> /// <summary>
/// Конец смены /// Конец смены
/// </summary> /// </summary>
[Required]
public TimeDto ShiftEnd { get; set; } = null!; public TimeDto ShiftEnd { get; set; } = null!;
/// <summary> /// <summary>
/// Начало бурения /// Начало бурения
/// </summary> /// </summary>
[Required]
public DateTime DrillStart { get; set; } public DateTime DrillStart { get; set; }
/// <summary> /// <summary>
/// Конец бурения /// Конец бурения
/// </summary> /// </summary>
[Required]
public DateTime DrillEnd { get; set; } public DateTime DrillEnd { get; set; }
/// <summary> /// <summary>

View File

@ -11,42 +11,50 @@ public class SectionByOperationsDto
/// <summary> /// <summary>
/// Id скважины /// Id скважины
/// </summary> /// </summary>
[Required]
public int IdWell { get; set; } public int IdWell { get; set; }
/// <summary> /// <summary>
/// 0 = план или 1 = факт или прогноз = 2 /// 0 = план или 1 = факт или прогноз = 2
/// </summary> /// </summary>
[Required]
public int IdType { get; set; } public int IdType { get; set; }
/// <summary> /// <summary>
/// id секции скважины /// id секции скважины
/// </summary> /// </summary>
[Required]
public int IdWellSectionType { get; set; } public int IdWellSectionType { get; set; }
/// <summary> /// <summary>
/// Глубина начала первой операции в секции, м /// Глубина начала первой операции в секции, м
/// </summary> /// </summary>
[Required]
[Range(0, 50_000)] [Range(0, 50_000)]
public double DepthStart { get; set; } public double DepthStart { get; set; }
/// <summary> /// <summary>
/// Дата начала первой операции в секции /// Дата начала первой операции в секции
/// </summary> /// </summary>
[Required]
public DateTimeOffset DateStart { get; set; } public DateTimeOffset DateStart { get; set; }
/// <summary> /// <summary>
/// Глубина после завершения последней операции в секции, м /// Глубина после завершения последней операции в секции, м
/// </summary> /// </summary>
[Required]
[Range(0, 50_000)] [Range(0, 50_000)]
public double DepthEnd { get; set; } public double DepthEnd { get; set; }
/// <summary> /// <summary>
/// Дата после завершения последней операции в секции /// Дата после завершения последней операции в секции
/// </summary> /// </summary>
[Required]
public DateTimeOffset DateEnd { get; set; } public DateTimeOffset DateEnd { get; set; }
/// <summary> /// <summary>
/// Название /// Название
/// </summary> /// </summary>
[Required]
public string Caption { get; set; } = string.Empty; public string Caption { get; set; } = string.Empty;
} }

View File

@ -1,4 +1,5 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq; using System.Linq;
namespace AsbCloudApp.Data namespace AsbCloudApp.Data
@ -9,16 +10,19 @@ namespace AsbCloudApp.Data
public class StatClusterDto : IId public class StatClusterDto : IId
{ {
/// <inheritdoc/> /// <inheritdoc/>
[Required]
public int Id { get; set; } public int Id { get; set; }
/// <summary> /// <summary>
/// название куста /// название куста
/// </summary> /// </summary>
[Required]
public string Caption { get; set; } = string.Empty; public string Caption { get; set; } = string.Empty;
/// <summary> /// <summary>
/// список статистик скважин куста /// список статистик скважин куста
/// </summary> /// </summary>
[Required]
public IEnumerable<StatWellDto> StatsWells { get; set; } = Enumerable.Empty<StatWellDto>(); public IEnumerable<StatWellDto> StatsWells { get; set; } = Enumerable.Empty<StatWellDto>();
} }
} }

View File

@ -1,4 +1,5 @@
using System; using System;
using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data namespace AsbCloudApp.Data
{ {
@ -20,41 +21,49 @@ namespace AsbCloudApp.Data
/// <summary> /// <summary>
/// Глубина, м /// Глубина, м
/// </summary> /// </summary>
[Required]
public double WellDepthStart { get; set; } public double WellDepthStart { get; set; }
/// <summary> /// <summary>
/// Глубина, м /// Глубина, м
/// </summary> /// </summary>
[Required]
public double WellDepthEnd { get; set; } public double WellDepthEnd { get; set; }
/// <summary> /// <summary>
/// Рейсовая скорость, м/час /// Рейсовая скорость, м/час
/// </summary> /// </summary>
[Required]
public double RouteSpeed { get; set; } public double RouteSpeed { get; set; }
/// <summary> /// <summary>
/// Механическая скорость проходки, м/час /// Механическая скорость проходки, м/час
/// </summary> /// </summary>
[Required]
public double Rop { get; set; } public double Rop { get; set; }
/// <summary> /// <summary>
/// Скорость подъема КНБК /// Скорость подъема КНБК
/// </summary> /// </summary>
[Required]
public double BhaUpSpeed { get; set; } public double BhaUpSpeed { get; set; }
/// <summary> /// <summary>
/// Скорость спуска КНБК /// Скорость спуска КНБК
/// </summary> /// </summary>
[Required]
public double BhaDownSpeed { get; set; } public double BhaDownSpeed { get; set; }
/// <summary> /// <summary>
/// Скорость спуска обсадной колонны /// Скорость спуска обсадной колонны
/// </summary> /// </summary>
[Required]
public double CasingDownSpeed { get; set; } public double CasingDownSpeed { get; set; }
/// <summary> /// <summary>
/// Непроизводительное время /// Непроизводительное время
/// </summary> /// </summary>
[Required]
public double NonProductiveHours { get; set; } public double NonProductiveHours { get; set; }
} }
} }

View File

@ -1,4 +1,6 @@
namespace AsbCloudApp.Data using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data
{ {
/// <summary> /// <summary>
/// План-факт статистики по операциям за секцию скважины /// План-факт статистики по операциям за секцию скважины
@ -6,11 +8,13 @@
public class StatSectionDto : PlanFactDto<StatOperationsDto>, IId public class StatSectionDto : PlanFactDto<StatOperationsDto>, IId
{ {
/// <inheritdoc/> /// <inheritdoc/>
[Required]
public int Id { get; set; } public int Id { get; set; }
/// <summary> /// <summary>
/// название секции /// название секции
/// </summary> /// </summary>
[Required]
public string Caption { get; set; } = string.Empty; public string Caption { get; set; } = string.Empty;
} }
} }

View File

@ -1,5 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq; using System.Linq;
namespace AsbCloudApp.Data namespace AsbCloudApp.Data
@ -10,46 +11,55 @@ namespace AsbCloudApp.Data
public class StatWellDto : IId public class StatWellDto : IId
{ {
/// <inheritdoc/> /// <inheritdoc/>
[Required]
public int Id { get; set; } public int Id { get; set; }
/// <summary> /// <summary>
/// название /// название
/// </summary> /// </summary>
[Required]
public string Caption { get; set; } = string.Empty; public string Caption { get; set; } = string.Empty;
/// <summary> /// <summary>
/// тип скважины /// тип скважины
/// </summary> /// </summary>
[Required]
public string WellType { get; set; } = string.Empty; public string WellType { get; set; } = string.Empty;
/// <summary> /// <summary>
/// ИД состояния скважины /// ИД состояния скважины
/// </summary> /// </summary>
[Required]
public int IdState { get; set; } public int IdState { get; set; }
/// <summary> /// <summary>
/// текст состояния скважины /// текст состояния скважины
/// </summary> /// </summary>
[Required]
public string State { get; set; } = string.Empty; public string State { get; set; } = string.Empty;
/// <summary> /// <summary>
/// дата прихода последней телеметрии /// дата прихода последней телеметрии
/// </summary> /// </summary>
[Required]
public DateTime LastTelemetryDate { get; set; } public DateTime LastTelemetryDate { get; set; }
/// <summary> /// <summary>
/// Статистика по секциям /// Статистика по секциям
/// </summary> /// </summary>
[Required]
public IEnumerable<StatSectionDto> Sections { get; set; } = Enumerable.Empty<StatSectionDto>(); public IEnumerable<StatSectionDto> Sections { get; set; } = Enumerable.Empty<StatSectionDto>();
/// <summary> /// <summary>
/// статистика за всю скважину /// статистика за всю скважину
/// </summary> /// </summary>
[Required]
public PlanFactDto<StatOperationsDto> Total { get; set; } = new(); public PlanFactDto<StatOperationsDto> Total { get; set; } = new();
/// <summary> /// <summary>
/// компании участвующие в строительстве скважины /// компании участвующие в строительстве скважины
/// </summary> /// </summary>
[Required]
public IEnumerable<CompanyDto> Companies { get; set; } = Enumerable.Empty<CompanyDto>(); public IEnumerable<CompanyDto> Companies { get; set; } = Enumerable.Empty<CompanyDto>();
/// <summary> /// <summary>

View File

@ -1,4 +1,6 @@
namespace AsbCloudApp.Data.Subsystems; using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data.Subsystems;
/// <summary> /// <summary>
/// Статистика наработки подсистем по активным скважинам /// Статистика наработки подсистем по активным скважинам
@ -8,6 +10,7 @@ public class SubsystemActiveWellStatDto
/// <summary> /// <summary>
/// Активная скважина /// Активная скважина
/// </summary> /// </summary>
[Required]
public WellInfoDto Well { get; set; } = null!; public WellInfoDto Well { get; set; } = null!;
/// <summary> /// <summary>
/// Наработки подсистемы АПД /// Наработки подсистемы АПД

View File

@ -1,4 +1,6 @@
namespace AsbCloudApp.Data.Subsystems using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data.Subsystems
{ {
/// <summary> /// <summary>
/// Описание параметров подсистемы /// Описание параметров подсистемы
@ -8,14 +10,17 @@
/// <summary> /// <summary>
/// Идентификатор подсистемы /// Идентификатор подсистемы
/// </summary> /// </summary>
[Required]
public int Id { get; set; } public int Id { get; set; }
/// <summary> /// <summary>
/// Наименование подсистемы /// Наименование подсистемы
/// </summary> /// </summary>
[Required]
public string Name { get; set; } = null!; public string Name { get; set; } = null!;
/// <summary> /// <summary>
/// Детальное описание подсистемы /// Детальное описание подсистемы
/// </summary> /// </summary>
[Required]
public string Description { get; set; } = string.Empty; public string Description { get; set; } = string.Empty;
} }
} }

View File

@ -1,4 +1,6 @@
using System; using System;
using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data.Subsystems namespace AsbCloudApp.Data.Subsystems
{ {
/// <summary> /// <summary>
@ -9,34 +11,42 @@ namespace AsbCloudApp.Data.Subsystems
/// <summary> /// <summary>
/// Идентификатор подсистемы /// Идентификатор подсистемы
/// </summary> /// </summary>
[Required]
public int IdSubsystem { get; set; } public int IdSubsystem { get; set; }
/// <summary> /// <summary>
/// Название подсистемы /// Название подсистемы
/// </summary> /// </summary>
[Required]
public string SubsystemName { get; set; } = null!; public string SubsystemName { get; set; } = null!;
/// <summary> /// <summary>
/// наработка подсистемы /// наработка подсистемы
/// </summary> /// </summary>
[Required]
public double UsedTimeHours { get; set; } public double UsedTimeHours { get; set; }
/// <summary> /// <summary>
/// коэффициент использования /// коэффициент использования
/// </summary> /// </summary>
[Required]
public double KUsage { get; set; } public double KUsage { get; set; }
/// <summary> /// <summary>
/// сумма изменения глубин при включеной подсистеме /// сумма изменения глубин при включеной подсистеме
/// </summary> /// </summary>
[Required]
public double SumDepthInterval { get; set; } public double SumDepthInterval { get; set; }
/// <summary> /// <summary>
/// сумма проходок автоопределенных операций выполняемых подсистемой /// сумма проходок автоопределенных операций выполняемых подсистемой
/// </summary> /// </summary>
[Required]
public double SumOperationDepthInterval { get; set; } public double SumOperationDepthInterval { get; set; }
/// <summary> /// <summary>
/// сумма продолжительности автоопределенных операций выполняемых подсистемой /// сумма продолжительности автоопределенных операций выполняемых подсистемой
/// </summary> /// </summary>
[Required]
public double SumOperationDurationHours { get; set; } public double SumOperationDurationHours { get; set; }
/// <summary> /// <summary>
/// количество включений подсистемы /// количество включений подсистемы
/// </summary> /// </summary>
[Required]
public int OperationCount { get; set; } public int OperationCount { get; set; }
} }
} }

View File

@ -1,4 +1,5 @@
using System; using System;
using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data.WITS namespace AsbCloudApp.Data.WITS
{ {
@ -8,17 +9,20 @@ namespace AsbCloudApp.Data.WITS
public abstract class RecordBaseDto : IId, ITelemetryData public abstract class RecordBaseDto : IId, ITelemetryData
{ {
/// <inheritdoc/> /// <inheritdoc/>
[Required]
public int Id { get; set; } public int Id { get; set; }
/// <inheritdoc/> /// <inheritdoc/>
public int IdTelemetry { get; set; } public int IdTelemetry { get; set; }
/// <inheritdoc/> /// <inheritdoc/>
[Required]
public DateTime DateTime { get; set; } public DateTime DateTime { get; set; }
/// <summary> /// <summary>
/// îòìåòêà âðåìåíè /// îòìåòêà âðåìåíè
/// </summary> /// </summary>
[Required]
public int TimeStamp { get; set; } public int TimeStamp { get; set; }
/// <summary> /// <summary>
@ -33,7 +37,7 @@ namespace AsbCloudApp.Data.WITS
/// Length = 16, /// Length = 16,
/// ValueType = "A" /// ValueType = "A"
/// </summary> /// </summary>
[Required]
public string Wellid { get; set; } = string.Empty; public string Wellid { get; set; } = string.Empty;
/// <summary> /// <summary>