diff --git a/AsbCloudApp/Data/ClusterDto.cs b/AsbCloudApp/Data/ClusterDto.cs
index 800d61a6..38dd282f 100644
--- a/AsbCloudApp/Data/ClusterDto.cs
+++ b/AsbCloudApp/Data/ClusterDto.cs
@@ -12,6 +12,7 @@ namespace AsbCloudApp.Data
///
/// ИД месторождения, необязательный
///
+ [Required]
[Range(1, int.MaxValue, ErrorMessage = "Id месторождения не может быть меньше 1")]
public int IdDeposit { get; set; }
diff --git a/AsbCloudApp/Data/ClusterRopStatDto.cs b/AsbCloudApp/Data/ClusterRopStatDto.cs
index abc8de19..c941c082 100644
--- a/AsbCloudApp/Data/ClusterRopStatDto.cs
+++ b/AsbCloudApp/Data/ClusterRopStatDto.cs
@@ -1,3 +1,5 @@
+using System.ComponentModel.DataAnnotations;
+
namespace AsbCloudApp.Data
{
///
@@ -8,11 +10,13 @@ namespace AsbCloudApp.Data
///
/// .
///
+ [Required]
public double RopMax { get; set; }
///
///
///
+ [Required]
public double RopAverage { get; set; }
}
}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/CompanyDto.cs b/AsbCloudApp/Data/CompanyDto.cs
index 7599aa5a..3c670412 100644
--- a/AsbCloudApp/Data/CompanyDto.cs
+++ b/AsbCloudApp/Data/CompanyDto.cs
@@ -23,6 +23,7 @@ namespace AsbCloudApp.Data
///
/// ИД типа компании
///
+ [Required]
public int IdCompanyType { get; set; }
///
diff --git a/AsbCloudApp/Data/CompanyTypeDto.cs b/AsbCloudApp/Data/CompanyTypeDto.cs
index 58901f85..dc29e85e 100644
--- a/AsbCloudApp/Data/CompanyTypeDto.cs
+++ b/AsbCloudApp/Data/CompanyTypeDto.cs
@@ -1,4 +1,6 @@
-namespace AsbCloudApp.Data
+using System.ComponentModel.DataAnnotations;
+
+namespace AsbCloudApp.Data
{
///
/// DTO тип компании
@@ -6,21 +8,25 @@
public class CompanyTypeDto : IId
{
///
+ [Required]
public int Id { get; set; }
///
/// Название типа компании
///
+ [Required]
public string Caption { get; set; } = null!;
///
/// Порядок
///
+ [Required]
public int Order { get; set; }
///
/// Является ли контактом
///
+ [Required]
public bool IsContact { get; set; }
}
diff --git a/AsbCloudApp/Data/DailyReport/Blocks/ProcessMapWellDrillingRecordDto.cs b/AsbCloudApp/Data/DailyReport/Blocks/ProcessMapWellDrillingRecordDto.cs
index d51d4b5d..b5c85244 100644
--- a/AsbCloudApp/Data/DailyReport/Blocks/ProcessMapWellDrillingRecordDto.cs
+++ b/AsbCloudApp/Data/DailyReport/Blocks/ProcessMapWellDrillingRecordDto.cs
@@ -1,3 +1,5 @@
+using System.ComponentModel.DataAnnotations;
+
namespace AsbCloudApp.Data.DailyReport.Blocks;
///
@@ -8,20 +10,23 @@ public class ProcessMapWellDrillingRecordDto
///
/// Режим бурения
///
+ [Required]
public string DrillingMode { get; set; } = null!;
-
- ///
- /// Мех. скорость
- ///
- public PlanFactDto Rop { get; set; } = new();
+
+ ///
+ /// Мех. скорость
+ ///
+ [Required]
+ public PlanFactDto Rop { get; set; } = new();
///
/// Глубина ствола
///
public double? WellBoreDepth { get; set; }
-
- ///
- /// Часы бурения
- ///
- public double MechDrillingHours { get; set; }
+
+ ///
+ /// Часы бурения
+ ///
+ [Required]
+ public double MechDrillingHours { get; set; }
}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/DailyReport/Blocks/Sign/SignRecordDto.cs b/AsbCloudApp/Data/DailyReport/Blocks/Sign/SignRecordDto.cs
index 2196224e..b071a2fb 100644
--- a/AsbCloudApp/Data/DailyReport/Blocks/Sign/SignRecordDto.cs
+++ b/AsbCloudApp/Data/DailyReport/Blocks/Sign/SignRecordDto.cs
@@ -1,3 +1,5 @@
+using System.ComponentModel.DataAnnotations;
+
namespace AsbCloudApp.Data.DailyReport.Blocks.Sign;
///
@@ -8,12 +10,14 @@ public class SignRecordDto
///
/// Имя
///
+ [Required]
public string Name { get; set; } = null!;
- ///
- /// Фамилия
- ///
- public string Surname { get; set; } = null!;
+ ///
+ /// Фамилия
+ ///
+ [Required]
+ public string Surname { get; set; } = null!;
///
/// Отчество
diff --git a/AsbCloudApp/Data/DailyReport/Blocks/Subsystems/SubsystemBlockDto.cs b/AsbCloudApp/Data/DailyReport/Blocks/Subsystems/SubsystemBlockDto.cs
index 605b8bdf..3e997cb5 100644
--- a/AsbCloudApp/Data/DailyReport/Blocks/Subsystems/SubsystemBlockDto.cs
+++ b/AsbCloudApp/Data/DailyReport/Blocks/Subsystems/SubsystemBlockDto.cs
@@ -1,4 +1,5 @@
using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
using System.Linq;
namespace AsbCloudApp.Data.DailyReport.Blocks.Subsystems;
@@ -36,5 +37,6 @@ public class SubsystemBlockDto : ItemInfoDto
///
/// Подсистемы
///
+ [Required]
public IEnumerable Subsystems { get; set; } = Enumerable.Empty();
}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/DailyReport/Blocks/Subsystems/SubsystemRecordDto.cs b/AsbCloudApp/Data/DailyReport/Blocks/Subsystems/SubsystemRecordDto.cs
index fab29d57..99811775 100644
--- a/AsbCloudApp/Data/DailyReport/Blocks/Subsystems/SubsystemRecordDto.cs
+++ b/AsbCloudApp/Data/DailyReport/Blocks/Subsystems/SubsystemRecordDto.cs
@@ -1,3 +1,5 @@
+using System.ComponentModel.DataAnnotations;
+
namespace AsbCloudApp.Data.DailyReport.Blocks.Subsystems;
///
@@ -8,6 +10,7 @@ public class SubsystemRecordDto
///
/// Название подсистемы
///
+ [Required]
public string Name { get; set; } = null!;
///
diff --git a/AsbCloudApp/Data/DailyReport/DailyReportDto.cs b/AsbCloudApp/Data/DailyReport/DailyReportDto.cs
index 7c1a1ea1..d8d9d4c8 100644
--- a/AsbCloudApp/Data/DailyReport/DailyReportDto.cs
+++ b/AsbCloudApp/Data/DailyReport/DailyReportDto.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
using System.Linq;
using AsbCloudApp.Data.DailyReport.Blocks;
using AsbCloudApp.Data.DailyReport.Blocks.Sign;
@@ -16,15 +17,18 @@ public class DailyReportDto : IId,
IWellRelated
{
///
+ [Required]
public int Id { get; set; }
///
+ [Required]
public int IdWell { get; set; }
- ///
- /// Название скважины
- ///
- public string WellCaption { get; set; } = null!;
+ ///
+ /// Название скважины
+ ///
+ [Required]
+ public string WellCaption { get; set; } = null!;
///
/// Название типа скважины
@@ -61,25 +65,28 @@ public class DailyReportDto : IId,
///
public double? DepthEnd { get; set; }
- ///
- /// Дата формирования отчёта
- ///
- public DateOnly Date { get; set; }
+ ///
+ /// Дата формирования отчёта
+ ///
+ [Required]
+ public DateOnly Date { get; set; }
///
/// Дата последнего обновления
///
- public DateTime? DateLastUpdate { get; set; }
-
- ///
- /// Блок фактической траектории
- ///
- public TrajectoryBlockDto TrajectoryBlock { get; set; } = null!;
+ public DateTime? DateLastUpdate { get; set; }
- ///
- /// Фактические операции
- ///
- public WellOperationBlockDto FactWellOperationBlock { get; set; } = null!;
+ ///
+ /// Блок фактической траектории
+ ///
+ [Required]
+ public TrajectoryBlockDto TrajectoryBlock { get; set; } = null!;
+
+ ///
+ /// Фактические операции
+ ///
+ [Required]
+ public WellOperationBlockDto FactWellOperationBlock { get; set; } = null!;
///
/// Баланс времени
@@ -96,13 +103,15 @@ public class DailyReportDto : IId,
///
public SignBlockDto? SignBlock { get; set; }
- ///
- /// Блок расписания
- ///
- public IEnumerable ScheduleBlock { get; set; } = Enumerable.Empty();
+ ///
+ /// Блок расписания
+ ///
+ [Required]
+ public IEnumerable ScheduleBlock { get; set; } = Enumerable.Empty();
- ///
- /// РТК
- ///
- public IEnumerable ProcessMapWellDrillingBlock { get; set; } = Enumerable.Empty();
+ ///
+ /// РТК
+ ///
+ [Required]
+ public IEnumerable ProcessMapWellDrillingBlock { get; set; } = Enumerable.Empty();
}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/DatesRangeDto.cs b/AsbCloudApp/Data/DatesRangeDto.cs
index 64a01263..3f12acb7 100644
--- a/AsbCloudApp/Data/DatesRangeDto.cs
+++ b/AsbCloudApp/Data/DatesRangeDto.cs
@@ -1,4 +1,5 @@
using System;
+using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data
{
@@ -10,11 +11,13 @@ namespace AsbCloudApp.Data
///
/// Дата начала диапазона
///
+ [Required]
public DateTime From { get; set; }
///
/// Дата окончания диапазона
///
+ [Required]
public DateTime To { get; set; }
}
}
diff --git a/AsbCloudApp/Data/DepositDto.cs b/AsbCloudApp/Data/DepositDto.cs
index 55c9e816..6f39cc87 100644
--- a/AsbCloudApp/Data/DepositDto.cs
+++ b/AsbCloudApp/Data/DepositDto.cs
@@ -1,4 +1,5 @@
using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
using System.Linq;
namespace AsbCloudApp.Data
@@ -21,6 +22,7 @@ namespace AsbCloudApp.Data
///
/// Кусты месторождения
///
+ [Required]
public IEnumerable Clusters { get; set; } = Enumerable.Empty();
}
@@ -32,6 +34,7 @@ namespace AsbCloudApp.Data
///
/// Кусты месторождения
///
+ [Required]
public IEnumerable Clusters { get; set; } = Enumerable.Empty();
}
}
diff --git a/AsbCloudApp/Data/DetectedOperation/DetectedOperationDrillersStatDto.cs b/AsbCloudApp/Data/DetectedOperation/DetectedOperationDrillersStatDto.cs
index 2eb06f63..c0be17d8 100644
--- a/AsbCloudApp/Data/DetectedOperation/DetectedOperationDrillersStatDto.cs
+++ b/AsbCloudApp/Data/DetectedOperation/DetectedOperationDrillersStatDto.cs
@@ -1,4 +1,6 @@
-namespace AsbCloudApp.Data.DetectedOperation
+using System.ComponentModel.DataAnnotations;
+
+namespace AsbCloudApp.Data.DetectedOperation
{
///
/// Статистика по операциям бурильщика
@@ -13,11 +15,13 @@
///
/// Количество операции
///
+ [Required]
public int Count { get; set; }
///
/// Среднее по ключевому показателю
///
+ [Required]
public double AverageValue { get; set; }
///
diff --git a/AsbCloudApp/Data/DetectedOperation/DetectedOperationDto.cs b/AsbCloudApp/Data/DetectedOperation/DetectedOperationDto.cs
index cdc6571b..0386e8b3 100644
--- a/AsbCloudApp/Data/DetectedOperation/DetectedOperationDto.cs
+++ b/AsbCloudApp/Data/DetectedOperation/DetectedOperationDto.cs
@@ -1,4 +1,5 @@
using System;
+using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data.DetectedOperation
{
@@ -8,54 +9,65 @@ namespace AsbCloudApp.Data.DetectedOperation
public class DetectedOperationDto : IId, IWellRelated
{
///
+ [Required]
public int Id { get; set; }
///
+ [Required]
public int IdWell { get; set; }
-
+
///
/// Id телеметрии
///
+ [Required]
public int IdTelemetry { get; set; }
///
/// Id названия/описания операции
///
+ [Required]
public int IdCategory { get; set; }
///
/// Id пользователя панели
///
+ [Required]
public int IdUsersAtStart { get; set; }
///
/// Дата начала операции в часовом поясе скважины
///
+ [Required]
public DateTime DateStart { get; set; }
///
/// Дата завершения операции в часовом поясе скважины
///
+ [Required]
public DateTime DateEnd { get; set; }
///
/// Продолжительность операции в минутах
///
+ [Required]
public double DurationMinutes => (DateEnd - DateStart).TotalMinutes;
///
/// глубина на начало операции, м
///
+ [Required]
public double DepthStart { get; set; }
///
/// глубина на завершения операции, м
///
+ [Required]
public double DepthEnd { get; set; }
///
/// название/описание операции
///
+ [Required]
public WellOperationCategoryDto OperationCategory { get; set; } = null!;
///
@@ -76,11 +88,13 @@ namespace AsbCloudApp.Data.DetectedOperation
///
/// Ключевой параметр операции
///
+ [Required]
public double Value { get; set; }
-
+
///
/// Флаг включенной подсистемы
///
+ [Required]
public int EnabledSubsystems { get; set; }
}
}
diff --git a/AsbCloudApp/Data/DetectedOperation/DetectedOperationListDto.cs b/AsbCloudApp/Data/DetectedOperation/DetectedOperationListDto.cs
index 496fcd60..fef979bb 100644
--- a/AsbCloudApp/Data/DetectedOperation/DetectedOperationListDto.cs
+++ b/AsbCloudApp/Data/DetectedOperation/DetectedOperationListDto.cs
@@ -1,4 +1,5 @@
using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
using System.Linq;
namespace AsbCloudApp.Data.DetectedOperation
@@ -11,11 +12,13 @@ namespace AsbCloudApp.Data.DetectedOperation
///
/// Список всех операций
///
+ [Required]
public IEnumerable Operations { get; set; } = Enumerable.Empty();
///
/// Статистика по бурильщикам
///
+ [Required]
public IEnumerable Stats { get; set; } = Enumerable.Empty();
}
}
diff --git a/AsbCloudApp/Data/DetectedOperation/DetectedOperationStatDto.cs b/AsbCloudApp/Data/DetectedOperation/DetectedOperationStatDto.cs
index 251345aa..e922bf6c 100644
--- a/AsbCloudApp/Data/DetectedOperation/DetectedOperationStatDto.cs
+++ b/AsbCloudApp/Data/DetectedOperation/DetectedOperationStatDto.cs
@@ -1,4 +1,6 @@
-namespace AsbCloudApp.Data.DetectedOperation
+using System.ComponentModel.DataAnnotations;
+
+namespace AsbCloudApp.Data.DetectedOperation
{
///
/// Статистика по операциям например за период.
@@ -8,6 +10,7 @@
///
/// Id названия/описания операции
///
+ [Required]
public int IdCategory { get; set; }
///
@@ -18,41 +21,49 @@
///
/// Количество операций
///
+ [Required]
public int Count { get; set; }
///
/// Среднее по ключевому показателю
///
+ [Required]
public double ValueAverage { get; set; }
///
/// Мин по ключевому показателю
///
+ [Required]
public double ValueMin { get; set; }
///
/// Макс по ключевому показателю
///
+ [Required]
public double ValueMax { get; set; }
///
/// Суммарное время операций, мин
///
+ [Required]
public double MinutesTotal { get; set; }
///
/// Мин продолжительность операции, мин
///
+ [Required]
public double MinutesMin { get; set; }
///
/// Макс продолжительность операции, мин
///
+ [Required]
public double MinutesMax { get; set; }
///
/// Средняя продолжительность операции, мин
///
+ [Required]
public double MinutesAverage { get; set; }
}
}
diff --git a/AsbCloudApp/Data/DrillTestReport/DrillTestReportInfoDto.cs b/AsbCloudApp/Data/DrillTestReport/DrillTestReportInfoDto.cs
index 8d3a9244..39d37a11 100644
--- a/AsbCloudApp/Data/DrillTestReport/DrillTestReportInfoDto.cs
+++ b/AsbCloudApp/Data/DrillTestReport/DrillTestReportInfoDto.cs
@@ -1,4 +1,5 @@
using System;
+using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data.DrillTestReport
{
@@ -10,16 +11,19 @@ namespace AsbCloudApp.Data.DrillTestReport
///
/// Идентификатор отчета
///
+ [Required]
public int Id { get; set; }
///
/// Проходка
///
+ [Required]
public float DrillDepth { get; set; }
///
/// Дата и время
///
+ [Required]
public DateTime DateTime { get; set; }
}
}
diff --git a/AsbCloudApp/Data/DrillerDto.cs b/AsbCloudApp/Data/DrillerDto.cs
index cf1a9ea5..f2c8b6b0 100644
--- a/AsbCloudApp/Data/DrillerDto.cs
+++ b/AsbCloudApp/Data/DrillerDto.cs
@@ -1,4 +1,6 @@
-namespace AsbCloudApp.Data
+using System.ComponentModel.DataAnnotations;
+
+namespace AsbCloudApp.Data
{
///
/// Описание данных для бурильщика
@@ -8,16 +10,19 @@
///
/// Идентификатор в БД
///
+ [Required]
public int Id { get; set; }
-
+
///
/// Имя
///
+ [Required]
public string Name { get; set; } = null!;
///
/// Фамилия
///
+ [Required]
public string Surname { get; set; } = null!;
///
diff --git a/AsbCloudApp/Data/DrillingProgramPartDto.cs b/AsbCloudApp/Data/DrillingProgramPartDto.cs
index f349c9de..d4cc66fb 100644
--- a/AsbCloudApp/Data/DrillingProgramPartDto.cs
+++ b/AsbCloudApp/Data/DrillingProgramPartDto.cs
@@ -1,4 +1,5 @@
using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
using System.Linq;
using AsbCloudApp.Data.User;
@@ -12,11 +13,13 @@ namespace AsbCloudApp.Data
///
/// Название
///
+ [Required]
public string Name { get; set; } = string.Empty;
///
/// ИД категории файла
///
+ [Required]
public int IdFileCategory { get; set; }
///
@@ -24,26 +27,31 @@ namespace AsbCloudApp.Data
/// 1 - approving
/// 2 - completely approved
///
+ [Required]
public int IdState { get; set; }
///
/// Публикаторы. Могут загружать файл этой категории
///
+ [Required]
public IEnumerable Publishers { get; set; } = Enumerable.Empty();
///
/// Согласованты. Могут согласовывать загруженные файлы этой категории
///
+ [Required]
public IEnumerable Approvers { get; set; } = Enumerable.Empty();
///
/// Разрешение для текущего пользователя согласовывать документ
///
+ [Required]
public bool PermissionToApprove { get; set; }
///
/// Разрешение для текущего пользователя загружать документ
///
+ [Required]
public bool PermissionToUpload { get; set; }
///
diff --git a/AsbCloudApp/Data/DrillingProgramStateDto.cs b/AsbCloudApp/Data/DrillingProgramStateDto.cs
index 791d80b4..b2abcef0 100644
--- a/AsbCloudApp/Data/DrillingProgramStateDto.cs
+++ b/AsbCloudApp/Data/DrillingProgramStateDto.cs
@@ -1,4 +1,5 @@
using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
using System.Linq;
namespace AsbCloudApp.Data
@@ -14,6 +15,7 @@ namespace AsbCloudApp.Data
/// 2 - формируется (несколько минут)
/// 3 - готова
///
+ [Required]
public int IdState { get; set; }
///
@@ -25,15 +27,17 @@ namespace AsbCloudApp.Data
/// Файл сформированной программы бурения
///
public FileInfoDto? Program { get; set; }
-
+
///
/// Разрешение редактировать части программы бурения
///
+ [Required]
public bool PermissionToEdit { get; set; }
///
/// Список частей программы бурения
///
+ [Required]
public IEnumerable Parts { get; set; } = Enumerable.Empty();
}
@@ -45,11 +49,13 @@ namespace AsbCloudApp.Data
///
/// Текст ошибки для отображения пользователю
///
+ [Required]
public string Message { get; set; } = string.Empty;
///
/// Текст ошибки для разработчика
///
+ [Required]
public string Exception { get; set; } = string.Empty;
}
}
diff --git a/AsbCloudApp/Data/FaqDto.cs b/AsbCloudApp/Data/FaqDto.cs
index 3f817fdf..e69c0579 100644
--- a/AsbCloudApp/Data/FaqDto.cs
+++ b/AsbCloudApp/Data/FaqDto.cs
@@ -1,4 +1,5 @@
using System;
+using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data
{
@@ -10,6 +11,7 @@ namespace AsbCloudApp.Data
///
/// ключ вопроса
///
+ [Required]
public int Id { get; set; }
///
@@ -31,6 +33,7 @@ namespace AsbCloudApp.Data
///
/// текст вопроса
///
+ [Required]
public string Question { get; set; } = null!;
///
@@ -41,21 +44,25 @@ namespace AsbCloudApp.Data
///
/// статус вопроса
///
+ [Required]
public int State { get; set; } = 0;
///
/// Счетчик повторений вопроса
///
+ [Required]
public int CounterQuestion { get; set; } = 1;
///
/// Частый вопрос
- ///
+ ///
+ [Required]
public bool IsFrequently { get; set; } = false;
///
/// Автор вопроса
///
+ [Required]
public string AurhorQuestionName { get; set; } = string.Empty;
///
diff --git a/AsbCloudApp/Data/FileCategoryDto.cs b/AsbCloudApp/Data/FileCategoryDto.cs
index 2174af01..0b837a7a 100644
--- a/AsbCloudApp/Data/FileCategoryDto.cs
+++ b/AsbCloudApp/Data/FileCategoryDto.cs
@@ -1,17 +1,21 @@
-namespace AsbCloudApp.Data
+using System.ComponentModel.DataAnnotations;
+
+namespace AsbCloudApp.Data
{
///
/// DTO категории файла
///
public class FileCategoryDto : IId
{
- ///
+ ///
+ [Required]
public int Id { get; set; }
-
+
///
/// полное название
///
- public string Name { get; set; } = string.Empty;
+ [Required]
+ public string Name { get; set; } = null!;
///
/// сокращенное название
diff --git a/AsbCloudApp/Data/FileInfoDto.cs b/AsbCloudApp/Data/FileInfoDto.cs
index 9b98c092..8e006661 100644
--- a/AsbCloudApp/Data/FileInfoDto.cs
+++ b/AsbCloudApp/Data/FileInfoDto.cs
@@ -12,15 +12,18 @@ namespace AsbCloudApp.Data
public class FileInfoDto : IId, IWellRelated
{
///
+ [Required]
public int Id { get; set; }
///
+ [Required]
[Range(1, int.MaxValue, ErrorMessage = "Id скважины не может быть меньше 1")]
public int IdWell { get; set; }
///
/// id категории файла
///
+ [Required]
[Range(1, int.MaxValue, ErrorMessage = "Id категории файла не может быть меньше 1")]
public int IdCategory { get; set; }
@@ -32,22 +35,26 @@ namespace AsbCloudApp.Data
///
/// имя файла
///
+ [Required]
[StringLength(260, MinimumLength = 1, ErrorMessage = "Допустимое имя компании от 1 до 260 символов")]
public string Name { get; set; } = null!;
///
/// дата загрузки
///
+ [Required]
public DateTime UploadDate { get; set; }
///
/// размер в байтах
///
+ [Required]
public long Size { get; set; }
///
/// Помечен как удаленный
///
+ [Required]
public bool IsDeleted { get; set; }
///
@@ -58,6 +65,7 @@ namespace AsbCloudApp.Data
///
/// список отметок файла
///
+ [Required]
public IEnumerable FileMarks { get; set; } = Enumerable.Empty();
}
}
diff --git a/AsbCloudApp/Data/FileMarkDto.cs b/AsbCloudApp/Data/FileMarkDto.cs
index 4d37457d..7329821b 100644
--- a/AsbCloudApp/Data/FileMarkDto.cs
+++ b/AsbCloudApp/Data/FileMarkDto.cs
@@ -10,11 +10,13 @@ namespace AsbCloudApp.Data
public class FileMarkDto: IId
{
///
+ [Required]
public int Id { get; set; }
///
/// id
///
+ [Required]
[Range(1, int.MaxValue, ErrorMessage = "Id 1")]
public int IdFile { get; set; }
@@ -22,13 +24,15 @@ namespace AsbCloudApp.Data
/// 0 -
/// 1 -
///
+ [Required]
[Range(0, int.MaxValue, ErrorMessage = "Id 1")]
public int IdMarkType { get; set; }
-
+
///
/// / .
/// .
///
+ [Required]
public DateTime DateCreated { get; set; }
///
@@ -40,6 +44,7 @@ namespace AsbCloudApp.Data
///
///
///
+ [Required]
public bool IsDeleted { get; set; }
///
diff --git a/AsbCloudApp/Data/JobDto.cs b/AsbCloudApp/Data/JobDto.cs
index ea5a8e24..b55a9467 100644
--- a/AsbCloudApp/Data/JobDto.cs
+++ b/AsbCloudApp/Data/JobDto.cs
@@ -1,4 +1,5 @@
using System.Collections;
+using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data
{
@@ -33,11 +34,13 @@ namespace AsbCloudApp.Data
///
/// идентификатор
///
+ [Required]
public int Id { get; set; }
///
/// Состояние
///
+ [Required]
public JobState State { get; set; }
///
diff --git a/AsbCloudApp/Data/LimitingParameterDto.cs b/AsbCloudApp/Data/LimitingParameterDto.cs
index 45a3da74..b4f43a09 100644
--- a/AsbCloudApp/Data/LimitingParameterDto.cs
+++ b/AsbCloudApp/Data/LimitingParameterDto.cs
@@ -1,4 +1,5 @@
using System;
+using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data
{
@@ -10,31 +11,37 @@ namespace AsbCloudApp.Data
///
/// Идентификатор скважины
///
+ [Required]
public int IdWell { get; set; }
///
/// Время бурения
///
+ [Required]
public float TotalMinutes { get; set; }
///
/// Глубина бурения
///
+ [Required]
public float Depth { get; set; }
///
/// Идентификатор критерия бурения
///
+ [Required]
public short IdFeedRegulator { get; set; }
///
/// Наименование критерия бурения
///
+ [Required]
public string NameFeedRegulator { get; set; } = string.Empty;
///
/// Количество включений
///
+ [Required]
public int NumberInclusions { get; set; }
}
}
diff --git a/AsbCloudApp/Data/MeasureDto.cs b/AsbCloudApp/Data/MeasureDto.cs
index 3be34bd9..9f823a91 100644
--- a/AsbCloudApp/Data/MeasureDto.cs
+++ b/AsbCloudApp/Data/MeasureDto.cs
@@ -10,32 +10,38 @@ namespace AsbCloudApp.Data
public class MeasureDto : IId, IWellRelated
{
///
+ [Required]
public int Id { get; set; }
///
+ [Required]
[Range(1, int.MaxValue, ErrorMessage = "Id скважины не может быть меньше 1")]
public int IdWell { get; set; }
///
/// Id категории замера
///
+ [Required]
[Range(1, int.MaxValue, ErrorMessage = "Id категории не может быть меньше 1")]
public int IdCategory { get; set; }
///
/// название категории замера
///
+ [Required]
[StringLength(120, MinimumLength = 1, ErrorMessage = "Название категории не может быть больше 120 символов")]
public string CategoryName { get; set; } = string.Empty;
///
/// отметка времени замера
///
+ [Required]
public DateTime Timestamp { get; set; }
///
/// данные замера
///
+ [Required]
public Dictionary Data { get; set; } = new();
}
}
diff --git a/AsbCloudApp/Data/MessageDto.cs b/AsbCloudApp/Data/MessageDto.cs
index 6f2036be..071967d9 100644
--- a/AsbCloudApp/Data/MessageDto.cs
+++ b/AsbCloudApp/Data/MessageDto.cs
@@ -9,22 +9,26 @@ namespace AsbCloudApp.Data
public class MessageDto : IId
{
///
+ [Required]
public int Id { get; set; }
///
/// дата появления события
///
+ [Required]
public DateTime DateTime { get; set; }
///
/// категория события
///
+ [Required]
[Range(1, int.MaxValue, ErrorMessage = "Id категории не может быть ниже 1")]
public int CategoryId { get; set; }
///
/// глубина забоя, при котором событие возникло
///
+ [Required]
[Range(-1, int.MaxValue, ErrorMessage = "Id скважины не может быть ниже 1")]
public double WellDepth { get; set; }
@@ -36,6 +40,7 @@ namespace AsbCloudApp.Data
///
/// текст сообщения
///
+ [Required]
[StringLength(400, MinimumLength = 1, ErrorMessage = "Допустимая длина текста сообщения от 1 до 400 символов")]
public string Message { get; set; } = string.Empty;
}
diff --git a/AsbCloudApp/Data/NotificationCategoryDto.cs b/AsbCloudApp/Data/NotificationCategoryDto.cs
index f58b1115..274366e4 100644
--- a/AsbCloudApp/Data/NotificationCategoryDto.cs
+++ b/AsbCloudApp/Data/NotificationCategoryDto.cs
@@ -1,3 +1,5 @@
+using System.ComponentModel.DataAnnotations;
+
namespace AsbCloudApp.Data;
///
@@ -8,10 +10,12 @@ public class NotificationCategoryDto : IId
///
/// Id категории
///
+ [Required]
public int Id { get; set; }
- ///
- /// Название категории
- ///
- public string Name { get; set; } = null!;
+ ///
+ /// Название категории
+ ///
+ [Required]
+ public string Name { get; set; } = null!;
}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/NotificationDto.cs b/AsbCloudApp/Data/NotificationDto.cs
index ba6c5bce..ee42f8d7 100644
--- a/AsbCloudApp/Data/NotificationDto.cs
+++ b/AsbCloudApp/Data/NotificationDto.cs
@@ -11,17 +11,20 @@ public class NotificationDto : IId
///
/// Id уведомления
///
+ [Required]
public int Id { get; set; }
-
- ///
- /// Id получателя уведомления
- ///
- public int IdUser { get; set; }
- ///
- /// Id категории уведомления
- ///
- public int IdNotificationCategory { get; set; }
+ ///
+ /// Id получателя уведомления
+ ///
+ [Required]
+ public int IdUser { get; set; }
+
+ ///
+ /// Id категории уведомления
+ ///
+ [Required]
+ public int IdNotificationCategory { get; set; }
///
/// Заголовок уведомления
@@ -35,10 +38,11 @@ public class NotificationDto : IId
[Required, StringLength(2048, MinimumLength = 1, ErrorMessage = "Заголовок должен мыть не меньше 1-го знака и не больше 2048")]
public string Message { get; set; } = null!;
- ///
- /// Дата регистрации уведомления
- ///
- public DateTime RegistrationDate { get; set; }
+ ///
+ /// Дата регистрации уведомления
+ ///
+ [Required]
+ public DateTime RegistrationDate { get; set; }
///
/// Дата отправки уведомления
@@ -50,13 +54,14 @@ public class NotificationDto : IId
///
public DateTime? ReadDate { get; set; }
- ///
- /// Состояние уведомления
- /// 0 - Зарегистрировано,
- /// 1 - Отправлено,
- /// 2 - Прочитано
- ///
- public int IdState
+ ///
+ /// Состояние уведомления
+ /// 0 - Зарегистрировано,
+ /// 1 - Отправлено,
+ /// 2 - Прочитано
+ ///
+ [Required]
+ public int IdState
{
get
{
@@ -88,16 +93,18 @@ public class NotificationDto : IId
}
}
- ///
- /// Id типа доставки уведомления
- /// 0 - SignalR
- /// 1 - Email
- ///
- [Range(0,1)]
+ ///
+ /// Id типа доставки уведомления
+ /// 0 - SignalR
+ /// 1 - Email
+ ///
+ [Required]
+ [Range(0,1)]
public int IdTransportType { get; set; }
-
- ///
- /// DTO категории уведомления
- ///
- public NotificationCategoryDto NotificationCategory { get; set; } = null!;
+
+ ///
+ /// DTO категории уведомления
+ ///
+ [Required]
+ public NotificationCategoryDto NotificationCategory { get; set; } = null!;
}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/OperationValueDto.cs b/AsbCloudApp/Data/OperationValueDto.cs
index 14715213..f7d9edcf 100644
--- a/AsbCloudApp/Data/OperationValueDto.cs
+++ b/AsbCloudApp/Data/OperationValueDto.cs
@@ -1,4 +1,6 @@
-namespace AsbCloudApp.Data
+using System.ComponentModel.DataAnnotations;
+
+namespace AsbCloudApp.Data
{
///
/// Описание целевых/нормативных показателей операций
@@ -8,36 +10,43 @@
///
/// Идентификатор в БД
///
+ [Required]
public int Id { get; set; }
///
/// Идентификатор скважины
///
+ [Required]
public int IdWell { get; set; }
///
/// Идентификатор категории операции
///
+ [Required]
public int IdOperationCategory { get; set; }
///
/// Целевой показатель
///
+ [Required]
public double TargetValue { get; set; }
///
/// Нормативный показатель
///
+ [Required]
public double StandardValue { get; set; }
///
/// Стартовая глубина
///
+ [Required]
public double DepthStart { get; set; }
///
/// Конечная глубина
///
+ [Required]
public double DepthEnd { get; set; }
}
diff --git a/AsbCloudApp/Data/PermissionDto.cs b/AsbCloudApp/Data/PermissionDto.cs
index d3fcf359..62aad5c4 100644
--- a/AsbCloudApp/Data/PermissionDto.cs
+++ b/AsbCloudApp/Data/PermissionDto.cs
@@ -9,11 +9,13 @@ namespace AsbCloudApp.Data
public class PermissionDto : IId
{
///
+ [Required]
public int Id { get; set; }
///
/// Название
///
+ [Required]
[StringLength(50, MinimumLength = 1, ErrorMessage = "Допустимая длина названия разрешения от 1 до 50 символов")]
public string Name { get; set; } = string.Empty;
diff --git a/AsbCloudApp/Data/PlanLimitDto.cs b/AsbCloudApp/Data/PlanLimitDto.cs
index ec597292..aa32408a 100644
--- a/AsbCloudApp/Data/PlanLimitDto.cs
+++ b/AsbCloudApp/Data/PlanLimitDto.cs
@@ -1,4 +1,6 @@
-namespace AsbCloudApp.Data
+using System.ComponentModel.DataAnnotations;
+
+namespace AsbCloudApp.Data
{
///
/// Плановое значение и максимально допустимое ограничение
@@ -8,11 +10,13 @@
///
/// План
///
+ [Required]
public double Plan { get; set; }
///
/// Максимальное ограничение
///
+ [Required]
public double LimitMax { get; set; }
}
diff --git a/AsbCloudApp/Data/ProcessMaps/ProcessMapPlanBaseDto.cs b/AsbCloudApp/Data/ProcessMaps/ProcessMapPlanBaseDto.cs
index 73e08a58..6bc073ea 100644
--- a/AsbCloudApp/Data/ProcessMaps/ProcessMapPlanBaseDto.cs
+++ b/AsbCloudApp/Data/ProcessMaps/ProcessMapPlanBaseDto.cs
@@ -7,11 +7,13 @@ namespace AsbCloudApp.Data.ProcessMaps;
public abstract class ProcessMapPlanBaseDto : IId, IWellRelated
{
///
+ [Required]
public int Id { get; set; }
///
/// Id скважины
///
+ [Required]
[Range(1, int.MaxValue, ErrorMessage = "Id скважины не может быть меньше 1")]
public int IdWell { get; set; }
@@ -23,6 +25,7 @@ public abstract class ProcessMapPlanBaseDto : IId, IWellRelated
///
/// Тип секции
///
+ [Required]
[Range(1, int.MaxValue, ErrorMessage = "Id секции скважины не может быть меньше 1")]
public int IdWellSectionType { get; set; }
@@ -37,6 +40,7 @@ public abstract class ProcessMapPlanBaseDto : IId, IWellRelated
/// на начало интервала
///
///
+ [Required]
[Range(0, 99999.9, ErrorMessage = "Глубина не может быть отрицательной")]
public double DepthStart { get; set; }
@@ -46,6 +50,7 @@ public abstract class ProcessMapPlanBaseDto : IId, IWellRelated
/// на конец интервала
///
///
+ [Required]
[Range(0, 99999.9, ErrorMessage = "Глубина не может быть отрицательной")]
public double DepthEnd { get; set; }
diff --git a/AsbCloudApp/Data/ProcessMaps/ProcessMapPlanWellDrillingDto.cs b/AsbCloudApp/Data/ProcessMaps/ProcessMapPlanWellDrillingDto.cs
index 1f9dd844..4e6a22b2 100644
--- a/AsbCloudApp/Data/ProcessMaps/ProcessMapPlanWellDrillingDto.cs
+++ b/AsbCloudApp/Data/ProcessMaps/ProcessMapPlanWellDrillingDto.cs
@@ -10,49 +10,58 @@ public class ProcessMapPlanWellDrillingDto : ProcessMapPlanBaseDto
///
/// Id режима 0-ручной, 1-ротор, 2 - слайд
///
+ [Required]
[Range(0, 2, ErrorMessage = "Id режима должен быть либо 0-ручной либо, 1-ротор либо 2-слайд")]
public int IdMode { get; set; }
///
/// Нагрузка
///
+ [Required]
public PlanLimitDto AxialLoad { get; set; } = null!;
///
/// Перепад давления
///
+ [Required]
public PlanLimitDto Pressure { get; set; } = null!;
///
/// Момент на ВСП
///
+ [Required]
public PlanLimitDto TopDriveTorque { get; set; } = null!;
///
/// Обороты на ВСП
///
+ [Required]
public PlanLimitDto TopDriveSpeed { get; set; } = null!;
///
/// Расход
///
+ [Required]
public PlanLimitDto Flow { get; set; } = null!;
///
/// Плановая механическая скорость, м/ч
///
+ [Required]
[Range(0, 99999.9, ErrorMessage = "Плановая механическая скорость должно быть в пределах от 0 до 99999.9")]
public double RopPlan { get; set; }
///
/// Плановый процент использования АКБ
///
+ [Required]
[Range(0, 100, ErrorMessage = "Процент использования АКБ должен быть в пределах от 0 до 100")]
public double UsageSaub { get; set; }
///
/// Плановый процент использования spin master
///
+ [Required]
[Range(0, 100, ErrorMessage = "Процент использования spin master должен быть в пределах от 0 до 100")]
public double UsageSpin { get; set; }
}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/ProcessMaps/ProcessMapPlanWellReamDto.cs b/AsbCloudApp/Data/ProcessMaps/ProcessMapPlanWellReamDto.cs
index 264d3b8b..e577ff86 100644
--- a/AsbCloudApp/Data/ProcessMaps/ProcessMapPlanWellReamDto.cs
+++ b/AsbCloudApp/Data/ProcessMaps/ProcessMapPlanWellReamDto.cs
@@ -11,54 +11,63 @@ public class ProcessMapPlanWellReamDto : ProcessMapPlanBaseDto, IValidatableObje
///
/// Количество повторений
///
+ [Required]
[Range(0, 100, ErrorMessage = "Количество повторений должно быть в пределах от 0 до 100")]
public double Repeats { get; set; }
///
/// Вращение при движении вверх, об/мин
///
+ [Required]
[Range(0, 99999.9, ErrorMessage = "Количество вращений вверх должно быть в пределах от 0 до 99999.9")]
public double SpinUpward { get; set; }
///
/// Вращение при движении вниз, об/мин
///
+ [Required]
[Range(0, 99999.9, ErrorMessage = "Количество вращений вниз должно быть в пределах от 0 до 99999.9")]
public double SpinDownward { get; set; }
///
/// Скорость подъёма, м/ч
///
+ [Required]
[Range(0, 99999.9, ErrorMessage = "Скорость подъёма должна быть в пределах от 0 до 99999.9")]
public double SpeedUpward { get; set; }
///
/// Скорость спуска, м/ч
///
+ [Required]
[Range(0, 99999.9, ErrorMessage = "Скорость спуска должна быть в пределах от 0 до 99999.9")]
public double SpeedDownward { get; set; }
///
/// Уставка зятяжки, т
///
+ [Required]
[Range(0, 99999.9, ErrorMessage = "Значение затяжек уставки должно быть в пределах от 0 до 99999.9")]
public double SetpointDrag { get; set; }
///
/// Уставка посадки, т
///
+ [Required]
[Range(0, 99999.9, ErrorMessage = "Значение посадки уставки должно быть в пределах от 0 до 99999.9")]
public double SetpointTight { get; set; }
///
/// Давление, атм
///
+ [Required]
[Range(0, 99999.9, ErrorMessage = "Давление должно быть в пределах от 0 до 99999.9")]
public double Pressure { get; set; }
///
/// Момент, кН*м
///
+ [Required]
[Range(0, 99999.9, ErrorMessage = "Крутящий момент должен быть в пределах от 0 до 99999.9")]
public double Torque { get; set; }
diff --git a/AsbCloudApp/Data/RequestLogUserDto.cs b/AsbCloudApp/Data/RequestLogUserDto.cs
index 935e9f43..a1149653 100644
--- a/AsbCloudApp/Data/RequestLogUserDto.cs
+++ b/AsbCloudApp/Data/RequestLogUserDto.cs
@@ -1,4 +1,5 @@
using System;
+using System.ComponentModel.DataAnnotations;
using AsbCloudApp.Data.User;
namespace AsbCloudApp.Data
@@ -11,11 +12,13 @@ namespace AsbCloudApp.Data
///
/// Id пользователя
///
+ [Required]
public int UserId { get; set; }
///
/// логин
///
+ [Required]
public string Login { get; set; } = string.Empty;
///
@@ -26,26 +29,31 @@ namespace AsbCloudApp.Data
///
/// время выполнения запроса
///
+ [Required]
public long ElapsedMs { get; set; }
///
/// метка времени последнего запроса
///
+ [Required]
public DateTime LastDate { get; set; }
///
/// кол-во запросов
///
+ [Required]
public long Requests { get; set; }
-
+
///
/// кол-во ошибок
///
+ [Required]
public long Errors { get; set; }
///
/// DTO пользователя
///
+ [Required]
public UserDto User { get; set; } = null!;
}
}
diff --git a/AsbCloudApp/Data/SAUB/DrillTestDto.cs b/AsbCloudApp/Data/SAUB/DrillTestDto.cs
index 03f344c2..05e0aa09 100644
--- a/AsbCloudApp/Data/SAUB/DrillTestDto.cs
+++ b/AsbCloudApp/Data/SAUB/DrillTestDto.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
using System.Linq;
namespace AsbCloudApp.Data.SAUB
@@ -12,16 +13,19 @@ namespace AsbCloudApp.Data.SAUB
///
/// Идентификатор drill test
///
+ [Required]
public int Id { get; set; }
///
/// Время начала drill test
///
+ [Required]
public DateTimeOffset TimeStampStart { get; set; }
///
/// Глубина начала drill test
///
+ [Required]
public float DepthStart { get; set; }
///
@@ -32,6 +36,7 @@ namespace AsbCloudApp.Data.SAUB
///
/// Параметры теста
///
+ [Required]
public IEnumerable Params { get; set; } = Enumerable.Empty();
}
}
diff --git a/AsbCloudApp/Data/SAUB/DrillTestParamsDto.cs b/AsbCloudApp/Data/SAUB/DrillTestParamsDto.cs
index f8d9d168..2e6920f3 100644
--- a/AsbCloudApp/Data/SAUB/DrillTestParamsDto.cs
+++ b/AsbCloudApp/Data/SAUB/DrillTestParamsDto.cs
@@ -1,4 +1,6 @@
-namespace AsbCloudApp.Data.SAUB
+using System.ComponentModel.DataAnnotations;
+
+namespace AsbCloudApp.Data.SAUB
{
///
/// Параметры Drill Test
@@ -8,6 +10,7 @@
///
/// Шаг
///
+ [Required]
public int Step { get; set; }
///
diff --git a/AsbCloudApp/Data/SAUB/EventDto.cs b/AsbCloudApp/Data/SAUB/EventDto.cs
index f426c4eb..302ad145 100644
--- a/AsbCloudApp/Data/SAUB/EventDto.cs
+++ b/AsbCloudApp/Data/SAUB/EventDto.cs
@@ -10,17 +10,20 @@ namespace AsbCloudApp.Data.SAUB
///
/// id события
///
+ [Required]
public int Id { get; set; }
///
/// шаблон текста сообщения
///
+ [Required]
public string Message { get; set; } = string.Empty;
///
/// id категории события
///
+ [Required]
[Range(0, int.MaxValue, ErrorMessage = "Id категории события не может быть отрицательным")]
public int IdCategory { get; set; }
@@ -28,16 +31,18 @@ namespace AsbCloudApp.Data.SAUB
/// переменная сервера обмена информацией с полевым оборудованием
///
public string Tag { get; set; } = string.Empty;
-
+
///
/// тип определения наступления события
///
+ [Required]
[Range(0, int.MaxValue, ErrorMessage = "Id типа события не может быть отрицательным")]
public int EventType { get; set; }
///
/// флаг, следует ли воспроизводить звук при наступлении события
///
+ [Required]
public int IdSound { get; set; }
}
}
diff --git a/AsbCloudApp/Data/SAUB/SetpointInfoDto.cs b/AsbCloudApp/Data/SAUB/SetpointInfoDto.cs
index f5d08608..b704d0a5 100644
--- a/AsbCloudApp/Data/SAUB/SetpointInfoDto.cs
+++ b/AsbCloudApp/Data/SAUB/SetpointInfoDto.cs
@@ -1,4 +1,6 @@
-namespace AsbCloudApp.Data.SAUB
+using System.ComponentModel.DataAnnotations;
+
+namespace AsbCloudApp.Data.SAUB
{
///
/// DTO рекомендации уставок передаваемых на панель оператора
@@ -13,6 +15,7 @@
///
/// настоящее название уставки (имя переменной в панели оператора)
///
+ [Required]
public string Name { get; set; } = null!;
///
@@ -28,11 +31,13 @@
///
/// макс. значение
///
+ [Required]
public double Max { get; set; } = double.MaxValue;
///
/// мин значение
///
+ [Required]
public double Min { get; set; } = double.MinValue;
}
}
diff --git a/AsbCloudApp/Data/SAUB/SetpointsRequestDto.cs b/AsbCloudApp/Data/SAUB/SetpointsRequestDto.cs
index cfb8212f..5ecb4932 100644
--- a/AsbCloudApp/Data/SAUB/SetpointsRequestDto.cs
+++ b/AsbCloudApp/Data/SAUB/SetpointsRequestDto.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
using AsbCloudApp.Data.User;
namespace AsbCloudApp.Data.SAUB
@@ -10,19 +11,23 @@ namespace AsbCloudApp.Data.SAUB
public class SetpointsRequestDto : IId, IWellRelated
{
///
+ [Required]
public int Id { get; set; }
///
+ [Required]
public int IdWell { get; set; }
///
/// Id автора запроса
///
+ [Required]
public int IdAuthor { get; set; }
///
/// текущее состояние запроса 0: неизвестно, 1:ожидает отправки, 2: отправлено, 3: принято оператором, 4: отклонено оператором, 5: устарело
///
+ [Required]
public int IdState { get; set; }
///
@@ -33,11 +38,13 @@ namespace AsbCloudApp.Data.SAUB
///
/// время в секундах актуальности этого запроса
///
+ [Required]
public int ObsolescenceSec { get; set; }
///
/// набор уставок: {"название переменной панели"; "рекомендуемое значение"}
///
+ [Required]
public Dictionary Setpoints { get; set; } = new();
///
diff --git a/AsbCloudApp/Data/SAUB/TelemetryDataSaubDto.cs b/AsbCloudApp/Data/SAUB/TelemetryDataSaubDto.cs
index c2a7944b..e1e7cf96 100644
--- a/AsbCloudApp/Data/SAUB/TelemetryDataSaubDto.cs
+++ b/AsbCloudApp/Data/SAUB/TelemetryDataSaubDto.cs
@@ -11,6 +11,7 @@ namespace AsbCloudApp.Data.SAUB
///
/// метка времени данных
///
+ [Required]
public DateTime DateTime { get; set; }
///
diff --git a/AsbCloudApp/Data/SAUB/TelemetryDataSpinDto.cs b/AsbCloudApp/Data/SAUB/TelemetryDataSpinDto.cs
index e4a5ed3e..bf575e5d 100644
--- a/AsbCloudApp/Data/SAUB/TelemetryDataSpinDto.cs
+++ b/AsbCloudApp/Data/SAUB/TelemetryDataSpinDto.cs
@@ -1,4 +1,5 @@
using System;
+using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data.SAUB
{
@@ -15,6 +16,7 @@ namespace AsbCloudApp.Data.SAUB
///
/// Дата
///
+ [Required]
public DateTime DateTime { get; set; }
///
@@ -70,11 +72,13 @@ namespace AsbCloudApp.Data.SAUB
///
/// Осцилляция включена
///
+ [Required]
public bool IsOscillating => State != 0 & State != 6 & State != 7;
///
/// Демпфирование включено
///
+ [Required]
public bool IsDampening => State == 7 && (Mode & 2) > 0;
}
}
diff --git a/AsbCloudApp/Data/ScheduleDto.cs b/AsbCloudApp/Data/ScheduleDto.cs
index cd0175b1..ea6d54b0 100644
--- a/AsbCloudApp/Data/ScheduleDto.cs
+++ b/AsbCloudApp/Data/ScheduleDto.cs
@@ -1,4 +1,5 @@
using System;
+using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data
{
@@ -8,34 +9,41 @@ namespace AsbCloudApp.Data
public class ScheduleDto : IId, IWellRelated
{
///
+ [Required]
public int Id { get; set; }
///
+ [Required]
public int IdWell { get; set; }
///
/// Идентификатор бурильщика
///
+ [Required]
public int IdDriller { get; set; }
///
/// Начало смены
///
+ [Required]
public TimeDto ShiftStart { get; set; } = null!;
///
/// Конец смены
///
+ [Required]
public TimeDto ShiftEnd { get; set; } = null!;
///
/// Начало бурения
///
+ [Required]
public DateTime DrillStart { get; set; }
///
/// Конец бурения
///
+ [Required]
public DateTime DrillEnd { get; set; }
///
diff --git a/AsbCloudApp/Data/SectionByOperationsDto.cs b/AsbCloudApp/Data/SectionByOperationsDto.cs
index 80b1fc3f..5c353dd5 100644
--- a/AsbCloudApp/Data/SectionByOperationsDto.cs
+++ b/AsbCloudApp/Data/SectionByOperationsDto.cs
@@ -11,42 +11,50 @@ public class SectionByOperationsDto
///
/// Id скважины
///
+ [Required]
public int IdWell { get; set; }
///
/// 0 = план или 1 = факт или прогноз = 2
///
+ [Required]
public int IdType { get; set; }
///
/// id секции скважины
///
+ [Required]
public int IdWellSectionType { get; set; }
///
/// Глубина начала первой операции в секции, м
///
+ [Required]
[Range(0, 50_000)]
public double DepthStart { get; set; }
///
/// Дата начала первой операции в секции
///
+ [Required]
public DateTimeOffset DateStart { get; set; }
///
/// Глубина после завершения последней операции в секции, м
///
+ [Required]
[Range(0, 50_000)]
public double DepthEnd { get; set; }
///
/// Дата после завершения последней операции в секции
///
+ [Required]
public DateTimeOffset DateEnd { get; set; }
///
/// Название
///
+ [Required]
public string Caption { get; set; } = string.Empty;
}
diff --git a/AsbCloudApp/Data/StatClusterDto.cs b/AsbCloudApp/Data/StatClusterDto.cs
index db768ab1..ce3c3c06 100644
--- a/AsbCloudApp/Data/StatClusterDto.cs
+++ b/AsbCloudApp/Data/StatClusterDto.cs
@@ -1,4 +1,5 @@
using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
using System.Linq;
namespace AsbCloudApp.Data
@@ -9,16 +10,19 @@ namespace AsbCloudApp.Data
public class StatClusterDto : IId
{
///
+ [Required]
public int Id { get; set; }
///
/// название куста
///
+ [Required]
public string Caption { get; set; } = string.Empty;
///
/// список статистик скважин куста
///
+ [Required]
public IEnumerable StatsWells { get; set; } = Enumerable.Empty();
}
}
diff --git a/AsbCloudApp/Data/StatOperationsDto.cs b/AsbCloudApp/Data/StatOperationsDto.cs
index e488e37c..7d082648 100644
--- a/AsbCloudApp/Data/StatOperationsDto.cs
+++ b/AsbCloudApp/Data/StatOperationsDto.cs
@@ -1,4 +1,5 @@
using System;
+using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data
{
@@ -20,41 +21,49 @@ namespace AsbCloudApp.Data
///
/// Глубина, м
///
+ [Required]
public double WellDepthStart { get; set; }
///
/// Глубина, м
///
+ [Required]
public double WellDepthEnd { get; set; }
///
/// Рейсовая скорость, м/час
///
+ [Required]
public double RouteSpeed { get; set; }
///
/// Механическая скорость проходки, м/час
///
+ [Required]
public double Rop { get; set; }
///
/// Скорость подъема КНБК
///
+ [Required]
public double BhaUpSpeed { get; set; }
///
/// Скорость спуска КНБК
///
+ [Required]
public double BhaDownSpeed { get; set; }
///
/// Скорость спуска обсадной колонны
///
+ [Required]
public double CasingDownSpeed { get; set; }
///
/// Непроизводительное время
///
+ [Required]
public double NonProductiveHours { get; set; }
}
}
diff --git a/AsbCloudApp/Data/StatSectionDto.cs b/AsbCloudApp/Data/StatSectionDto.cs
index 735522f4..19a82518 100644
--- a/AsbCloudApp/Data/StatSectionDto.cs
+++ b/AsbCloudApp/Data/StatSectionDto.cs
@@ -1,4 +1,6 @@
-namespace AsbCloudApp.Data
+using System.ComponentModel.DataAnnotations;
+
+namespace AsbCloudApp.Data
{
///
/// План-факт статистики по операциям за секцию скважины
@@ -6,11 +8,13 @@
public class StatSectionDto : PlanFactDto, IId
{
///
+ [Required]
public int Id { get; set; }
///
/// название секции
///
+ [Required]
public string Caption { get; set; } = string.Empty;
}
}
diff --git a/AsbCloudApp/Data/StatWellDto.cs b/AsbCloudApp/Data/StatWellDto.cs
index af5323f6..ece9756c 100644
--- a/AsbCloudApp/Data/StatWellDto.cs
+++ b/AsbCloudApp/Data/StatWellDto.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
using System.Linq;
namespace AsbCloudApp.Data
@@ -10,46 +11,55 @@ namespace AsbCloudApp.Data
public class StatWellDto : IId
{
///
+ [Required]
public int Id { get; set; }
///
/// название
///
+ [Required]
public string Caption { get; set; } = string.Empty;
///
/// тип скважины
///
+ [Required]
public string WellType { get; set; } = string.Empty;
///
/// ИД состояния скважины
///
+ [Required]
public int IdState { get; set; }
///
/// текст состояния скважины
///
+ [Required]
public string State { get; set; } = string.Empty;
///
/// дата прихода последней телеметрии
///
+ [Required]
public DateTime LastTelemetryDate { get; set; }
///
/// Статистика по секциям
///
+ [Required]
public IEnumerable Sections { get; set; } = Enumerable.Empty();
///
/// статистика за всю скважину
///
+ [Required]
public PlanFactDto Total { get; set; } = new();
///
/// компании участвующие в строительстве скважины
///
+ [Required]
public IEnumerable Companies { get; set; } = Enumerable.Empty();
///
diff --git a/AsbCloudApp/Data/Subsystems/SubsystemActiveWellStatDto.cs b/AsbCloudApp/Data/Subsystems/SubsystemActiveWellStatDto.cs
index 04a7bce1..774ebfe6 100644
--- a/AsbCloudApp/Data/Subsystems/SubsystemActiveWellStatDto.cs
+++ b/AsbCloudApp/Data/Subsystems/SubsystemActiveWellStatDto.cs
@@ -1,4 +1,6 @@
-namespace AsbCloudApp.Data.Subsystems;
+using System.ComponentModel.DataAnnotations;
+
+namespace AsbCloudApp.Data.Subsystems;
///
/// Статистика наработки подсистем по активным скважинам
@@ -8,6 +10,7 @@ public class SubsystemActiveWellStatDto
///
/// Активная скважина
///
+ [Required]
public WellInfoDto Well { get; set; } = null!;
///
/// Наработки подсистемы АПД
diff --git a/AsbCloudApp/Data/Subsystems/SubsystemDto.cs b/AsbCloudApp/Data/Subsystems/SubsystemDto.cs
index bfb7f9d2..0e648de5 100644
--- a/AsbCloudApp/Data/Subsystems/SubsystemDto.cs
+++ b/AsbCloudApp/Data/Subsystems/SubsystemDto.cs
@@ -1,4 +1,6 @@
-namespace AsbCloudApp.Data.Subsystems
+using System.ComponentModel.DataAnnotations;
+
+namespace AsbCloudApp.Data.Subsystems
{
///
/// Описание параметров подсистемы
@@ -8,14 +10,17 @@
///
/// Идентификатор подсистемы
///
+ [Required]
public int Id { get; set; }
///
/// Наименование подсистемы
///
+ [Required]
public string Name { get; set; } = null!;
///
/// Детальное описание подсистемы
///
+ [Required]
public string Description { get; set; } = string.Empty;
}
}
diff --git a/AsbCloudApp/Data/Subsystems/SubsystemStatDto.cs b/AsbCloudApp/Data/Subsystems/SubsystemStatDto.cs
index da9c98cb..fa83bdfd 100644
--- a/AsbCloudApp/Data/Subsystems/SubsystemStatDto.cs
+++ b/AsbCloudApp/Data/Subsystems/SubsystemStatDto.cs
@@ -1,42 +1,52 @@
using System;
+using System.ComponentModel.DataAnnotations;
+
namespace AsbCloudApp.Data.Subsystems
{
///
/// Статистика подсистемы
///
public class SubsystemStatDto
- {
+ {
///
/// Идентификатор подсистемы
///
+ [Required]
public int IdSubsystem { get; set; }
///
/// Название подсистемы
///
+ [Required]
public string SubsystemName { get; set; } = null!;
///
/// наработка подсистемы
///
+ [Required]
public double UsedTimeHours { get; set; }
///
/// коэффициент использования
///
+ [Required]
public double KUsage { get; set; }
///
/// сумма изменения глубин при включеной подсистеме
///
+ [Required]
public double SumDepthInterval { get; set; }
///
/// сумма проходок автоопределенных операций выполняемых подсистемой
///
+ [Required]
public double SumOperationDepthInterval { get; set; }
///
/// сумма продолжительности автоопределенных операций выполняемых подсистемой
///
+ [Required]
public double SumOperationDurationHours { get; set; }
///
/// количество включений подсистемы
///
+ [Required]
public int OperationCount { get; set; }
}
}
diff --git a/AsbCloudApp/Data/WITS/RecordBaseDto.cs b/AsbCloudApp/Data/WITS/RecordBaseDto.cs
index 03d77f47..34cd0f5b 100644
--- a/AsbCloudApp/Data/WITS/RecordBaseDto.cs
+++ b/AsbCloudApp/Data/WITS/RecordBaseDto.cs
@@ -1,4 +1,5 @@
using System;
+using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data.WITS
{
@@ -8,17 +9,20 @@ namespace AsbCloudApp.Data.WITS
public abstract class RecordBaseDto : IId, ITelemetryData
{
///
+ [Required]
public int Id { get; set; }
///
public int IdTelemetry { get; set; }
///
+ [Required]
public DateTime DateTime { get; set; }
///
///
///
+ [Required]
public int TimeStamp { get; set; }
///
@@ -33,7 +37,7 @@ namespace AsbCloudApp.Data.WITS
/// Length = 16,
/// ValueType = "A"
///
-
+ [Required]
public string Wellid { get; set; } = string.Empty;
///