diff --git a/.gitignore b/.gitignore
index fc614d65..ca13ffd6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -339,4 +339,5 @@ ASALocalRun/
.localhistory/
# BeatPulse healthcheck temp database
-healthchecksdb
\ No newline at end of file
+healthchecksdb
+data/
\ No newline at end of file
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/Blocks/WellOperation/WellOperationBlockDto.cs b/AsbCloudApp/Data/DailyReport/Blocks/WellOperation/WellOperationBlockDto.cs
index f12fd6f3..1030a826 100644
--- a/AsbCloudApp/Data/DailyReport/Blocks/WellOperation/WellOperationBlockDto.cs
+++ b/AsbCloudApp/Data/DailyReport/Blocks/WellOperation/WellOperationBlockDto.cs
@@ -1,4 +1,5 @@
using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
using System.Linq;
namespace AsbCloudApp.Data.DailyReport.Blocks.WellOperation;
@@ -8,13 +9,15 @@ namespace AsbCloudApp.Data.DailyReport.Blocks.WellOperation;
///
public class WellOperationBlockDto
{
- ///
- /// Продолжительность бурения за секцию
- ///
+ ///
+ /// Продолжительность бурения за секцию
+ ///
+ [Required]
public double SectionDrillingHours { get; set; }
///
/// Операции проводимые на скважине
///
+ [Required]
public IEnumerable WellOperations { get; set; } = Enumerable.Empty();
}
\ No newline at end of file
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/GTR/WitsItemRecordDto.cs b/AsbCloudApp/Data/GTR/WitsItemRecordDto.cs
index 46d82e6b..0137754e 100644
--- a/AsbCloudApp/Data/GTR/WitsItemRecordDto.cs
+++ b/AsbCloudApp/Data/GTR/WitsItemRecordDto.cs
@@ -1,4 +1,5 @@
using System;
+using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data.GTR
{
@@ -10,21 +11,25 @@ namespace AsbCloudApp.Data.GTR
///
/// Record Id
///
+ [Required]
public int IdRecord { get; set; }
///
/// Item Id
///
+ [Required]
public int IdItem { get; set; }
///
/// Дата создания записи
///
+ [Required]
public DateTime Date { get; set; }
///
/// Значение
///
+ [Required]
public JsonValue Value { get; set; } = default!;
}
}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/GTR/WitsRecordDto.cs b/AsbCloudApp/Data/GTR/WitsRecordDto.cs
index 28e6ba81..4e5da733 100644
--- a/AsbCloudApp/Data/GTR/WitsRecordDto.cs
+++ b/AsbCloudApp/Data/GTR/WitsRecordDto.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data.GTR
{
@@ -11,16 +12,19 @@ namespace AsbCloudApp.Data.GTR
///
/// Id записи
///
+ [Required]
public int Id { get; set; }
///
/// Дата создания записи
///
+ [Required]
public DateTime Date { get; set; }
///
/// Параметры. Ключ - id_item. ValueContainer содержит значение.
///
+ [Required]
public Dictionary Items { get; set; } = new();
}
}
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 a36f6ea5..e0559de8 100644
--- a/AsbCloudApp/Data/PlanLimitDto.cs
+++ b/AsbCloudApp/Data/PlanLimitDto.cs
@@ -12,11 +12,13 @@ namespace AsbCloudApp.Data
///
/// План
///
+ [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/ProcessMaps/WellSectionPlanDto.cs b/AsbCloudApp/Data/ProcessMaps/WellSectionPlanDto.cs
index ba4fc8fb..35a99e7c 100644
--- a/AsbCloudApp/Data/ProcessMaps/WellSectionPlanDto.cs
+++ b/AsbCloudApp/Data/ProcessMaps/WellSectionPlanDto.cs
@@ -14,7 +14,8 @@ public class WellSectionPlanDto : ItemInfoDto,
///
public int Id { get; set; }
- ///
+ ///
+ [Required]
public int IdWell { 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 56433c36..e1e7cf96 100644
--- a/AsbCloudApp/Data/SAUB/TelemetryDataSaubDto.cs
+++ b/AsbCloudApp/Data/SAUB/TelemetryDataSaubDto.cs
@@ -1,4 +1,5 @@
using System;
+using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data.SAUB
{
@@ -10,6 +11,7 @@ namespace AsbCloudApp.Data.SAUB
///
/// метка времени данных
///
+ [Required]
public DateTime DateTime { get; set; }
///
@@ -23,7 +25,8 @@ namespace AsbCloudApp.Data.SAUB
/// 6 - "ПОДЪЕМ С ПРОРАБОТКОЙ"
/// 10 - "БЛОКИРОВКА"
///
- public short? Mode { get; set; }
+ [Required]
+ public short Mode { get; set; }
///
/// telemetry id
@@ -38,17 +41,17 @@ namespace AsbCloudApp.Data.SAUB
///
/// Глубина забоя, м
///
- public float? WellDepth { get; set; }
+ public float WellDepth { get; set; }
///
/// Глубина долота, м
///
- public float? BitDepth { get; set; }
+ public float BitDepth { get; set; }
///
/// Талевый блок. Положение, м
///
- public float? BlockPosition { get; set; }
+ public float BlockPosition { get; set; }
///
/// Талевый блок. Мин положение, м
@@ -88,7 +91,7 @@ namespace AsbCloudApp.Data.SAUB
///
/// Давление, атм
///
- public float? Pressure { get; set; }
+ public float Pressure { get; set; }
///
/// Давление при холостом ходе, атм
@@ -123,7 +126,7 @@ namespace AsbCloudApp.Data.SAUB
///
/// осевая нагрузка, т
///
- public float? AxialLoad { get; set; }
+ public float AxialLoad { get; set; }
///
/// задание осевой нагрузки, т
@@ -138,7 +141,7 @@ namespace AsbCloudApp.Data.SAUB
///
/// Вес на крюке, т
///
- public float? HookWeight { get; set; }
+ public float HookWeight { get; set; }
///
/// Вес на крюке на х.х., т
@@ -158,7 +161,7 @@ namespace AsbCloudApp.Data.SAUB
///
/// момент ротора, кН*м
///
- public float? RotorTorque { get; set; }
+ public float RotorTorque { get; set; }
///
/// момент ротора на х.х., кН*м
@@ -178,7 +181,7 @@ namespace AsbCloudApp.Data.SAUB
///
/// скорость ротора, об/мин
///
- public float? RotorSpeed { get; set; }
+ public float RotorSpeed { get; set; }
///
/// расход, л/с
diff --git a/AsbCloudApp/Data/SAUB/TelemetryDataSpinDto.cs b/AsbCloudApp/Data/SAUB/TelemetryDataSpinDto.cs
index 46b9cf28..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,17 +16,9 @@ namespace AsbCloudApp.Data.SAUB
///
/// Дата
///
+ [Required]
public DateTime DateTime { get; set; }
- ///
- /// Дата
- ///
- public DateTime Date
- {
- get { return DateTime; }
- set { DateTime = value; }
- }
-
///
/// Ограничение числа оборотов вправо
///
@@ -79,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;
///
diff --git a/AsbCloudApp/Data/WellCaseDto.cs b/AsbCloudApp/Data/WellCaseDto.cs
index 867d4426..0241faf6 100644
--- a/AsbCloudApp/Data/WellCaseDto.cs
+++ b/AsbCloudApp/Data/WellCaseDto.cs
@@ -1,4 +1,5 @@
using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
using System.Linq;
namespace AsbCloudApp.Data
@@ -11,16 +12,19 @@ namespace AsbCloudApp.Data
///
/// Скважина
///
+ [Required]
public int IdWell { get; set; }
///
/// Разрешение для текущего пользователя добавлять ответственных
///
+ [Required]
public bool PermissionToSetPubliher { get; set; } = true;
///
/// Документ дела скважины
///
+ [Required]
public IEnumerable WellFinalDocuments { get; set; } = Enumerable.Empty();
}
diff --git a/AsbCloudApp/Data/WellCompositeDto.cs b/AsbCloudApp/Data/WellCompositeDto.cs
index 4f5966b2..6fe39a40 100644
--- a/AsbCloudApp/Data/WellCompositeDto.cs
+++ b/AsbCloudApp/Data/WellCompositeDto.cs
@@ -1,4 +1,6 @@
-namespace AsbCloudApp.Data
+using System.ComponentModel.DataAnnotations;
+
+namespace AsbCloudApp.Data
{
///
/// DTO элемент композитной скважины
@@ -6,16 +8,19 @@
public class WellCompositeDto : IWellRelated
{
///
+ [Required]
public int IdWell { get; set; }
///
/// id скважины входящей в композитную для этой
///
+ [Required]
public int IdWellSrc { get; set; }
///
/// id секции скважины входящей в композитную для этой
///
+ [Required]
public int IdWellSectionType { get; set; }
}
}
diff --git a/AsbCloudApp/Data/WellDto.cs b/AsbCloudApp/Data/WellDto.cs
index 979d6885..30f524c2 100644
--- a/AsbCloudApp/Data/WellDto.cs
+++ b/AsbCloudApp/Data/WellDto.cs
@@ -19,6 +19,7 @@ namespace AsbCloudApp.Data
/// 1 - в работе,
/// 2 - завершена
///
+ [Required]
public int IdState { get; set; }
}
diff --git a/AsbCloudApp/Data/WellFinalDocumentDto.cs b/AsbCloudApp/Data/WellFinalDocumentDto.cs
index 1dab3ac0..a60afd6c 100644
--- a/AsbCloudApp/Data/WellFinalDocumentDto.cs
+++ b/AsbCloudApp/Data/WellFinalDocumentDto.cs
@@ -1,4 +1,5 @@
using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
using System.Linq;
using AsbCloudApp.Data.User;
@@ -12,6 +13,7 @@ namespace AsbCloudApp.Data
///
/// Идентификатор категории файла
///
+ [Required]
public int IdCategory { get; set; }
///
@@ -22,16 +24,19 @@ namespace AsbCloudApp.Data
///
/// Разрешение для текущего пользователя загружать документ
///
+ [Required]
public bool PermissionToUpload { get; set; } = false;
///
/// Список ответственных
///
+ [Required]
public IEnumerable Publishers { get; set; } = Enumerable.Empty();
///
/// Количество файлов этой категории загруженных ранее
///
+ [Required]
public int FilesCount { get; set; }
///
diff --git a/AsbCloudApp/Data/WellFinalDocumentInputDto.cs b/AsbCloudApp/Data/WellFinalDocumentInputDto.cs
index 80052e5c..75cb0ca3 100644
--- a/AsbCloudApp/Data/WellFinalDocumentInputDto.cs
+++ b/AsbCloudApp/Data/WellFinalDocumentInputDto.cs
@@ -1,4 +1,5 @@
using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
using System.Linq;
namespace AsbCloudApp.Data
@@ -11,11 +12,13 @@ namespace AsbCloudApp.Data
///
/// Идентификатор категории файла
///
+ [Required]
public int IdCategory { get; set; }
///
/// Список ответственных
///
+ [Required]
public IEnumerable IdsPublishers { get; set; } = Enumerable.Empty();
}
}
diff --git a/AsbCloudApp/Data/WellFinalDocumentsHistoryDto.cs b/AsbCloudApp/Data/WellFinalDocumentsHistoryDto.cs
index 789dc9c0..f08c67e3 100644
--- a/AsbCloudApp/Data/WellFinalDocumentsHistoryDto.cs
+++ b/AsbCloudApp/Data/WellFinalDocumentsHistoryDto.cs
@@ -1,4 +1,5 @@
using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data
{
@@ -10,16 +11,19 @@ namespace AsbCloudApp.Data
///
/// Вышка
///
+ [Required]
public int IdWell { get; set; }
///
/// Наименование категории файла
///
+ [Required]
public int IdCategory { get; set; }
///
/// Файлы
///
+ [Required]
public IEnumerable Files { get; set; } = null!;
}
}
diff --git a/AsbCloudApp/Data/WellGroupOpertionDto.cs b/AsbCloudApp/Data/WellGroupOpertionDto.cs
index 0839045c..acd8221d 100644
--- a/AsbCloudApp/Data/WellGroupOpertionDto.cs
+++ b/AsbCloudApp/Data/WellGroupOpertionDto.cs
@@ -1,4 +1,5 @@
using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
using System.Text.Json.Serialization;
namespace AsbCloudApp.Data;
@@ -10,6 +11,7 @@ public class WellGroupOpertionDto
///
/// Id категории
///
+ [Required]
public int IdCategory { get; set; }
///
@@ -26,11 +28,13 @@ public class WellGroupOpertionDto
///
/// Количество операций
///
+ [Required]
public int Count { get; set; }
///
/// Суммарное время операций, мин
///
+ [Required]
public double TotalMinutes { get; set; }
///
@@ -51,6 +55,7 @@ public class WellGroupOpertionDto
///
/// Общая глубина забоя
///
+ [Required]
public double DeltaDepth { get; set; }
///
diff --git a/AsbCloudApp/Data/WellOperationCategoryDto.cs b/AsbCloudApp/Data/WellOperationCategoryDto.cs
index 37a5178b..108a31f0 100644
--- a/AsbCloudApp/Data/WellOperationCategoryDto.cs
+++ b/AsbCloudApp/Data/WellOperationCategoryDto.cs
@@ -8,6 +8,7 @@ namespace AsbCloudApp.Data
public class WellOperationCategoryDto : IId
{
///
+ [Required]
public int Id { get; set; }
///
diff --git a/AsbCloudApp/Data/WellOperationPlanDto.cs b/AsbCloudApp/Data/WellOperationPlanDto.cs
index be469948..5c1bac9f 100644
--- a/AsbCloudApp/Data/WellOperationPlanDto.cs
+++ b/AsbCloudApp/Data/WellOperationPlanDto.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
using System.Linq;
namespace AsbCloudApp.Data
@@ -14,6 +15,7 @@ namespace AsbCloudApp.Data
///
/// коллекция плановых операций
///
+ [Required]
public IEnumerable WellOperationsPlan { get; set; } = Enumerable.Empty();
///
diff --git a/AsbCloudApp/Data/WellSectionTypeDto.cs b/AsbCloudApp/Data/WellSectionTypeDto.cs
index 28e9ba68..f8eef939 100644
--- a/AsbCloudApp/Data/WellSectionTypeDto.cs
+++ b/AsbCloudApp/Data/WellSectionTypeDto.cs
@@ -1,3 +1,5 @@
+using System.ComponentModel.DataAnnotations;
+
namespace AsbCloudApp.Data;
///
@@ -5,18 +7,21 @@ namespace AsbCloudApp.Data;
///
public class WellSectionTypeDto : IId
{
- ///
- /// Id секции
- ///
+ ///
+ /// Id секции
+ ///
+ [Required]
public int Id { get; set; }
///
/// Название типа секции
///
+ [Required]
public string Caption { get; set; } = null!;
///
/// Порядок
///
+ [Required]
public float Order { get; set; }
}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/WellboreDto.cs b/AsbCloudApp/Data/WellboreDto.cs
index 68c5695b..4edf6256 100644
--- a/AsbCloudApp/Data/WellboreDto.cs
+++ b/AsbCloudApp/Data/WellboreDto.cs
@@ -1,4 +1,5 @@
using System;
+using System.ComponentModel.DataAnnotations;
namespace AsbCloudApp.Data;
@@ -15,30 +16,36 @@ public class WellboreDto
///
/// Идентификатор
///
+ [Required]
public int Id { get; set; }
///
/// Название
///
+ [Required]
public string Name { get; set; } = null!;
-
+
///
/// Начальная глубина ствола
///
+ [Required]
public double DepthStart { get; set; }
-
+
///
/// Конечная глубина скважины
///
+ [Required]
public double DepthEnd { get; set; }
-
+
///
/// Дата начала первой операции
///
+ [Required]
public DateTimeOffset DateStart { get; set; }
-
+
///
/// Дата завершения последней операции
///
+ [Required]
public DateTimeOffset DateEnd { get; set; }
}
\ No newline at end of file
diff --git a/AsbCloudInfrastructure/Repository/FileStorageRepository.cs b/AsbCloudInfrastructure/Repository/FileStorageRepository.cs
index 7fad445b..50e9bff5 100644
--- a/AsbCloudInfrastructure/Repository/FileStorageRepository.cs
+++ b/AsbCloudInfrastructure/Repository/FileStorageRepository.cs
@@ -6,6 +6,8 @@ using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
+using Microsoft.Extensions.Configuration;
+
namespace AsbCloudInfrastructure.Repository;
@@ -14,10 +16,13 @@ public class FileStorageRepository : IFileStorageRepository
///
/// Директория хранения файлов
///
- private readonly string RootPath = "files";
- public FileStorageRepository()
+ public string RootPath { get; }
+
+
+ public FileStorageRepository(IConfiguration configuration)
{
+ RootPath = configuration.GetValue("ContentPath") ?? "../data";
}
public async Task SaveFileAsync(string filePathRec, Stream fileStreamSrc, CancellationToken token)
diff --git a/AsbCloudInfrastructure/Services/WellboreService.cs b/AsbCloudInfrastructure/Services/WellboreService.cs
index 4cbf06fa..92a94b5d 100644
--- a/AsbCloudInfrastructure/Services/WellboreService.cs
+++ b/AsbCloudInfrastructure/Services/WellboreService.cs
@@ -7,7 +7,6 @@ using AsbCloudApp.Data.SAUB;
using AsbCloudApp.Repositories;
using AsbCloudApp.Requests;
using AsbCloudApp.Services;
-using AsbCloudInfrastructure.Services.SAUB;
namespace AsbCloudInfrastructure.Services;
@@ -68,10 +67,10 @@ public class WellboreService : IWellboreService
if (dataCache is not null)
{
wellbore.DateStart = dataCache.Value.First.DateTime;
- wellbore.DepthStart = dataCache.Value.First.WellDepth!.Value;
+ wellbore.DepthStart = dataCache.Value.First.WellDepth;
wellbore.DateEnd = dataCache.Value.Last.DateTime;
- wellbore.DepthEnd = dataCache.Value.Last.WellDepth!.Value;
+ wellbore.DepthEnd = dataCache.Value.Last.WellDepth;
}
}
@@ -124,7 +123,7 @@ public class WellboreService : IWellboreService
if (dataCache is not null)
{
wellbore.DateEnd = dataCache.Value.Last.DateTime;
- wellbore.DepthEnd = dataCache.Value.Last.WellDepth!.Value;
+ wellbore.DepthEnd = dataCache.Value.Last.WellDepth;
}
}
}
diff --git a/AsbCloudWebApi/appsettings.json b/AsbCloudWebApi/appsettings.json
index 96a3f3bf..72d50f57 100644
--- a/AsbCloudWebApi/appsettings.json
+++ b/AsbCloudWebApi/appsettings.json
@@ -13,9 +13,7 @@
"LocalConnection": "Host=localhost;Database=postgres;Username=postgres;Password=q;Persist Security Info=True"
},
"AllowedHosts": "*",
- //"userLimits": {
- // "parallelRequestsToController": 5
- //},
+ "ContentPath": "../data",
"email": {
"smtpServer": "smtp.timeweb.ru",
"sender": "bot@digitaldrilling.ru",
@@ -28,28 +26,5 @@
},
"DirectoryNameHelpPageFiles": "helpPages",
"DirectoryManualFiles": "manuals",
- "Urls": "http://0.0.0.0:5000" //;https://0.0.0.0:5001" //,
- // See https man: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel/endpoints?view=aspnetcore-6.0
- //"Kestrel": {
- // "Endpoints": {
- // "Http": {
- // "Url": "http://0.0.0.0:5000"
- // },
- // "Https": {
- // "Url": "https://0.0.0.0:5001",
- // "Certificate": {
- // // use store
- // "Subject": "localhost",
- // "Store": "My",
- // "Location": "CurrentUser",
- // "AllowInvalid": true
-
- // // use file
- // "Path": "",
- // "KeyPath": "",
- // "Password": ""
- // }
- // }
- // }
- //}
+ "Urls": "http://0.0.0.0:5000"
}