diff --git a/AsbCloudApp/Data/CompanyDto.cs b/AsbCloudApp/Data/CompanyDto.cs
index fd0150e2..9ca4bcc4 100644
--- a/AsbCloudApp/Data/CompanyDto.cs
+++ b/AsbCloudApp/Data/CompanyDto.cs
@@ -32,15 +32,4 @@ namespace AsbCloudApp.Data
public string? CompanyTypeCaption { get; set; } = null!;
}
-
- ///
- /// DTO компании с пользователями
- ///
- public class CompanyWithUsersDto: CompanyDto
- {
- ///
- /// Пользователи компании
- ///
- public IEnumerable Users { get; set; } = Enumerable.Empty();
- }
}
diff --git a/AsbCloudApp/Data/ProcessMap/ProcessMapPlanDto.cs b/AsbCloudApp/Data/ProcessMap/ProcessMapPlanDto.cs
deleted file mode 100644
index 0a4c1044..00000000
--- a/AsbCloudApp/Data/ProcessMap/ProcessMapPlanDto.cs
+++ /dev/null
@@ -1,91 +0,0 @@
-using System;
-using System.ComponentModel.DataAnnotations;
-
-namespace AsbCloudApp.Data.ProcessMap
-{
- ///
- /// РТК
- ///
- public class ProcessMapPlanDto : IId, IWellRelated
- {
- ///
- public int Id { get; set; }
-
- ///
- [Range(1, int.MaxValue, ErrorMessage = "Id скважины не может быть меньше 1")]
- public int IdWell { get; set; }
-
- ///
- /// Id пользователя, поле заполнять не нужно, подставляется автоматически
- ///
- public int? IdUser { get; set; }
-
- ///
- /// Id режима 0-ручной, 1-ротор, 2 - слайд
- ///
- [Range(0, 2, ErrorMessage = "Id режима должен быть либо 0-ручной либо, 1-ротор либо 2-слайд")]
- public int IdMode { get; set; }
-
- ///
- /// Тип секции
- ///
- public int IdWellSectionType { get; set; }
-
- ///
- /// Дата последнего изменения
- ///
- public DateTimeOffset LastUpdate { get; set; }
-
- ///
- /// Стартовая глубина
- ///
- [Range(0, 50000, ErrorMessage = "Глубина не может быть отрицательной")]
- public double DepthStart { get; set; }
-
- ///
- /// Глубина окончания интервала
- ///
- [Range(0, 50000, ErrorMessage = "Глубина не может быть отрицательной")]
- public double DepthEnd { get; set; }
-
- ///
- /// Нагрузка
- ///
- public PlanLimitDto AxialLoad { get; set; } = null!;
-
- ///
- /// Перепад давления
- ///
- public PlanLimitDto Pressure { get; set; } = null!;
-
- ///
- /// Момент на ВСП
- ///
- public PlanLimitDto TopDriveTorque { get; set; } = null!;
-
- ///
- /// Обороты на ВСП
- ///
- public PlanLimitDto TopDriveSpeed { get; set; } = null!;
-
- ///
- /// Расход
- ///
- public PlanLimitDto Flow { get; set; } = null!;
-
- ///
- /// Плановая механическая скорость, м/ч
- ///
- public double RopPlan { get; set; }
-
- ///
- /// Плановый процент использования АКБ
- ///
- public double UsageSaub { get; set; }
-
- ///
- /// Плановый процент использования spin master
- ///
- public double UsageSpin { get; set; }
- }
-}
diff --git a/AsbCloudApp/Data/ProcessMap/ProcessMapReportDto.cs b/AsbCloudApp/Data/ProcessMap/ProcessMapReportDto.cs
deleted file mode 100644
index cc7f950a..00000000
--- a/AsbCloudApp/Data/ProcessMap/ProcessMapReportDto.cs
+++ /dev/null
@@ -1,99 +0,0 @@
-using System;
-
-namespace AsbCloudApp.Data.ProcessMap
-{
- ///
- /// Модель РТК
- ///
- public class ProcessMapReportDto
- {
- ///
- /// Идентификатор скважины
- ///
- public int IdWell { get; set; }
-
- ///
- /// название секции скважины
- ///
- public int IdWellSectionType { get; set; }
-
- ///
- /// название секции скважины
- ///
- public string WellSectionTypeName { get; set; } = null!;
-
- ///
- /// Глубина по стволу от, м
- ///
- /// на начало интервала
- ///
- ///
- public double DepthStart { get; set; }
-
- ///
- /// Глубина по стволу до, м
- ///
- /// на конец интервала
- ///
- ///
- public double DepthEnd { get; set; }
-
- ///
- /// Дата/ время
- ///
- /// на начало интервала
- ///
- ///
- public DateTime DateStart { get; set; }
-
- ///
- /// Время мех бурения, ч
- ///
- public double MechDrillingHours { get; set; }
-
- ///
- /// Режим бурения (Ротор/слайд/ручной)
- ///
- public string DrillingMode { get; set; } = null!;
-
- ///
- /// Проходка, м
- ///
- public double? DeltaDepth { get; set; }
-
- ///
- /// Перепад давления, атм
- ///
- public ProcessMapReportParamsDto PressureDiff { get; set; } = new();
-
- ///
- /// Нагрузка, т
- ///
- public ProcessMapReportParamsDto AxialLoad { get; set; } = new();
-
- ///
- /// Момент на ВСП, кНхМ
- ///
- public ProcessMapReportParamsDto TopDriveTorque { get; set; } = new();
-
- ///
- /// Ограничение скорости, м/ч
- ///
- public ProcessMapReportParamsDto SpeedLimit { get; set; } = new();
-
- ///
- /// Процент использования системы АПД план, %
- ///
- public double UsagePlan { get; set; }
-
- ///
- /// Процент использования системы АПД факт, %
- ///
- public double UsageFact { get; set; }
-
- ///
- /// Фактическая механическая скорость, м/ч
- ///
- public double? Rop { get; set; }
- }
-}
diff --git a/AsbCloudApp/Data/ProcessMap/ProcessMapReportParamsDto.cs b/AsbCloudApp/Data/ProcessMap/ProcessMapReportParamsDto.cs
deleted file mode 100644
index 175de955..00000000
--- a/AsbCloudApp/Data/ProcessMap/ProcessMapReportParamsDto.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-namespace AsbCloudApp.Data.ProcessMap
-{
- ///
- /// Параметры РТК
- ///
- public class ProcessMapReportParamsDto
- {
- ///
- /// Уставка план
- ///
- public double? SetpointPlan { get; set; }
-
- ///
- /// Уставка факт
- ///
- public double? SetpointFact { get; set; }
-
- ///
- /// Факт
- ///
- public double? Fact { get; set; }
-
- ///
- /// Ограничение
- ///
- public double? Limit { get; set; }
-
- ///
- /// Процент бурения по уставке, %
- ///
- public double? SetpointUsage { get; set; }
- }
-}
diff --git a/AsbCloudApp/Data/ProcessMap/ProcessMapWellboreDevelopmentDto.cs b/AsbCloudApp/Data/ProcessMap/ProcessMapWellboreDevelopmentDto.cs
deleted file mode 100644
index 08fb9b50..00000000
--- a/AsbCloudApp/Data/ProcessMap/ProcessMapWellboreDevelopmentDto.cs
+++ /dev/null
@@ -1,107 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.DataAnnotations;
-
-namespace AsbCloudApp.Data.ProcessMap;
-
-///
-/// РТК план проработка скважины
-///
-public class ProcessMapWellboreDevelopmentDto : IId, IWellRelated, IValidatableObject
-{
- ///
- public int Id { get; set; }
-
- ///
- public int IdWell { get; set; }
-
- ///
- /// Id пользователя
- ///
- public int IdUser { get; set; }
-
- ///
- /// Дата последнего изменения
- ///
- public DateTimeOffset LastUpdate { get; set; }
-
- ///
- /// Стартовая глубина, м
- ///
- [Range(0, 99999.9, ErrorMessage = "Значение стартовой глубины должно быть в пределах от 0 до 99999.9")]
- public double DepthStart { get; set; }
-
- ///
- /// Окончательная глубина, м
- ///
- [Range(0, 99999.9, ErrorMessage = "Значение окончательной глубины должно быть в пределах от 0 до 99999.9")]
- public double DepthEnd { get; set; }
-
- ///
- /// Количество повторений
- ///
- [Range(0, 100, ErrorMessage = "Значение количества повторений должно быть в пределах от 0 до 100")]
- public double Repeats { get; set; }
-
- ///
- /// Вращение при движении вверх, об/мин
- ///
- [Range(0, 99999.9, ErrorMessage = "Значение количества вращений вверх должно быть в пределах от 0 до 99999.9")]
- public double SpinUpward { get; set; }
-
- ///
- /// Вращение при движении вниз, об/мин
- ///
- [Range(0, 99999.9, ErrorMessage = "Значение количества вращений вниз должно быть в пределах от 0 до 99999.9")]
- public double SpinDownward { get; set; }
-
- ///
- /// Скорость подъёма, м/ч
- ///
- [Range(0, 99999.9, ErrorMessage = "Значение скорости подъёма должно быть в пределах от 0 до 99999.9")]
- public double SpeedUpward { get; set; }
-
- ///
- /// Скорость спуска, м/ч
- ///
- [Range(0, 99999.9, ErrorMessage = "Значение скорости спуска должно быть в пределах от 0 до 99999.9")]
- public double SpeedDownward { get; set; }
-
- ///
- /// Уставка зятяжки, т
- ///
- [Range(0, 99999.9, ErrorMessage = "Значение затяжек уставки должно быть в пределах от 0 до 99999.9")]
- public double SetpointDrag { get; set; }
-
- ///
- /// Уставка посадки, т
- ///
- [Range(0, 99999.9, ErrorMessage = "Значение посадки уставки должно быть в пределах от 0 до 99999.9")]
- public double SetpointTight { get; set; }
-
- ///
- /// Давление, атм
- ///
- [Range(0, 99999.9, ErrorMessage = "Значение давления должно быть в пределах от 0 до 99999.9")]
- public double Pressure { get; set; }
-
- ///
- /// Момент, кН*м
- ///
- [Range(0, 99999.9, ErrorMessage = "Значение крутящего момента должно быть в пределах от 0 до 99999.9")]
- public double Torque { get; set; }
-
- ///
- /// Комментарий
- ///
- public string? Comment { get; set; }
-
- ///
- public IEnumerable Validate(ValidationContext validationContext)
- {
- if (DepthEnd < DepthStart)
- yield return new ValidationResult($"{nameof(DepthEnd)}:{DepthEnd:#0.0} меньше {nameof(DepthStart)}:{DepthStart:#0.0}", new[] { nameof(DepthEnd), nameof(DepthStart) });
-
- yield break;
- }
-}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/ProcessMaps/ProcessMapPlanBaseDto.cs b/AsbCloudApp/Data/ProcessMaps/ProcessMapPlanBaseDto.cs
new file mode 100644
index 00000000..73e08a58
--- /dev/null
+++ b/AsbCloudApp/Data/ProcessMaps/ProcessMapPlanBaseDto.cs
@@ -0,0 +1,56 @@
+using System;
+using System.ComponentModel.DataAnnotations;
+
+namespace AsbCloudApp.Data.ProcessMaps;
+
+///
+public abstract class ProcessMapPlanBaseDto : IId, IWellRelated
+{
+ ///
+ public int Id { get; set; }
+
+ ///
+ /// Id скважины
+ ///
+ [Range(1, int.MaxValue, ErrorMessage = "Id скважины не может быть меньше 1")]
+ public int IdWell { get; set; }
+
+ ///
+ /// Id пользователя
+ ///
+ public int IdUser { get; set; }
+
+ ///
+ /// Тип секции
+ ///
+ [Range(1, int.MaxValue, ErrorMessage = "Id секции скважины не может быть меньше 1")]
+ public int IdWellSectionType { get; set; }
+
+ ///
+ /// Дата последнего изменения
+ ///
+ public DateTimeOffset LastUpdate { get; set; }
+
+ ///
+ /// Глубина по стволу от, м
+ ///
+ /// на начало интервала
+ ///
+ ///
+ [Range(0, 99999.9, ErrorMessage = "Глубина не может быть отрицательной")]
+ public double DepthStart { get; set; }
+
+ ///
+ /// Глубина по стволу до, м
+ ///
+ /// на конец интервала
+ ///
+ ///
+ [Range(0, 99999.9, ErrorMessage = "Глубина не может быть отрицательной")]
+ public double DepthEnd { get; set; }
+
+ ///
+ /// Комментарий
+ ///
+ public string? Comment { get; set; }
+}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/ProcessMaps/ProcessMapPlanWellDrillingDto.cs b/AsbCloudApp/Data/ProcessMaps/ProcessMapPlanWellDrillingDto.cs
new file mode 100644
index 00000000..1f9dd844
--- /dev/null
+++ b/AsbCloudApp/Data/ProcessMaps/ProcessMapPlanWellDrillingDto.cs
@@ -0,0 +1,58 @@
+using System.ComponentModel.DataAnnotations;
+
+namespace AsbCloudApp.Data.ProcessMaps;
+
+///
+/// РТК план бурение скважины
+///
+public class ProcessMapPlanWellDrillingDto : ProcessMapPlanBaseDto
+{
+ ///
+ /// Id режима 0-ручной, 1-ротор, 2 - слайд
+ ///
+ [Range(0, 2, ErrorMessage = "Id режима должен быть либо 0-ручной либо, 1-ротор либо 2-слайд")]
+ public int IdMode { get; set; }
+
+ ///
+ /// Нагрузка
+ ///
+ public PlanLimitDto AxialLoad { get; set; } = null!;
+
+ ///
+ /// Перепад давления
+ ///
+ public PlanLimitDto Pressure { get; set; } = null!;
+
+ ///
+ /// Момент на ВСП
+ ///
+ public PlanLimitDto TopDriveTorque { get; set; } = null!;
+
+ ///
+ /// Обороты на ВСП
+ ///
+ public PlanLimitDto TopDriveSpeed { get; set; } = null!;
+
+ ///
+ /// Расход
+ ///
+ public PlanLimitDto Flow { get; set; } = null!;
+
+ ///
+ /// Плановая механическая скорость, м/ч
+ ///
+ [Range(0, 99999.9, ErrorMessage = "Плановая механическая скорость должно быть в пределах от 0 до 99999.9")]
+ public double RopPlan { get; set; }
+
+ ///
+ /// Плановый процент использования АКБ
+ ///
+ [Range(0, 100, ErrorMessage = "Процент использования АКБ должен быть в пределах от 0 до 100")]
+ public double UsageSaub { get; set; }
+
+ ///
+ /// Плановый процент использования spin master
+ ///
+ [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
new file mode 100644
index 00000000..264d3b8b
--- /dev/null
+++ b/AsbCloudApp/Data/ProcessMaps/ProcessMapPlanWellReamDto.cs
@@ -0,0 +1,73 @@
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+
+namespace AsbCloudApp.Data.ProcessMaps;
+
+///
+/// РТК план проработка скважины
+///
+public class ProcessMapPlanWellReamDto : ProcessMapPlanBaseDto, IValidatableObject
+{
+ ///
+ /// Количество повторений
+ ///
+ [Range(0, 100, ErrorMessage = "Количество повторений должно быть в пределах от 0 до 100")]
+ public double Repeats { get; set; }
+
+ ///
+ /// Вращение при движении вверх, об/мин
+ ///
+ [Range(0, 99999.9, ErrorMessage = "Количество вращений вверх должно быть в пределах от 0 до 99999.9")]
+ public double SpinUpward { get; set; }
+
+ ///
+ /// Вращение при движении вниз, об/мин
+ ///
+ [Range(0, 99999.9, ErrorMessage = "Количество вращений вниз должно быть в пределах от 0 до 99999.9")]
+ public double SpinDownward { get; set; }
+
+ ///
+ /// Скорость подъёма, м/ч
+ ///
+ [Range(0, 99999.9, ErrorMessage = "Скорость подъёма должна быть в пределах от 0 до 99999.9")]
+ public double SpeedUpward { get; set; }
+
+ ///
+ /// Скорость спуска, м/ч
+ ///
+ [Range(0, 99999.9, ErrorMessage = "Скорость спуска должна быть в пределах от 0 до 99999.9")]
+ public double SpeedDownward { get; set; }
+
+ ///
+ /// Уставка зятяжки, т
+ ///
+ [Range(0, 99999.9, ErrorMessage = "Значение затяжек уставки должно быть в пределах от 0 до 99999.9")]
+ public double SetpointDrag { get; set; }
+
+ ///
+ /// Уставка посадки, т
+ ///
+ [Range(0, 99999.9, ErrorMessage = "Значение посадки уставки должно быть в пределах от 0 до 99999.9")]
+ public double SetpointTight { get; set; }
+
+ ///
+ /// Давление, атм
+ ///
+ [Range(0, 99999.9, ErrorMessage = "Давление должно быть в пределах от 0 до 99999.9")]
+ public double Pressure { get; set; }
+
+ ///
+ /// Момент, кН*м
+ ///
+ [Range(0, 99999.9, ErrorMessage = "Крутящий момент должен быть в пределах от 0 до 99999.9")]
+ public double Torque { get; set; }
+
+ ///
+ public IEnumerable Validate(ValidationContext validationContext)
+ {
+ if (DepthEnd < DepthStart)
+ yield return new ValidationResult(
+ $"{nameof(DepthEnd)}:{DepthEnd:#0.0} меньше {nameof(DepthStart)}:{DepthStart:#0.0}",
+ new[] { nameof(DepthEnd), nameof(DepthStart) });
+ }
+}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/ProcessMaps/Report/ProcessMapReportWellDrillingDto.cs b/AsbCloudApp/Data/ProcessMaps/Report/ProcessMapReportWellDrillingDto.cs
new file mode 100644
index 00000000..49a96faf
--- /dev/null
+++ b/AsbCloudApp/Data/ProcessMaps/Report/ProcessMapReportWellDrillingDto.cs
@@ -0,0 +1,98 @@
+using System;
+
+namespace AsbCloudApp.Data.ProcessMaps.Report;
+
+///
+/// Модель РТК
+///
+public class ProcessMapReportWellDrillingDto
+{
+ ///
+ /// Идентификатор скважины
+ ///
+ public int IdWell { get; set; }
+
+ ///
+ /// Id секции скважины
+ ///
+ public int IdWellSectionType { get; set; }
+
+ ///
+ /// Название секции скважины
+ ///
+ public string WellSectionTypeName { get; set; } = null!;
+
+ ///
+ /// Глубина по стволу от, м
+ ///
+ /// на начало интервала
+ ///
+ ///
+ public double DepthStart { get; set; }
+
+ ///
+ /// Глубина по стволу до, м
+ ///
+ /// на конец интервала
+ ///
+ ///
+ public double DepthEnd { get; set; }
+
+ ///
+ /// Дата/ время
+ ///
+ /// на начало интервала
+ ///
+ ///
+ public DateTime DateStart { get; set; }
+
+ ///
+ /// Время мех бурения, ч
+ ///
+ public double MechDrillingHours { get; set; }
+
+ ///
+ /// Режим бурения (Ротор/слайд/ручной)
+ ///
+ public string DrillingMode { get; set; } = null!;
+
+ ///
+ /// Проходка, м
+ ///
+ public double? DeltaDepth { get; set; }
+
+ ///
+ /// Перепад давления, атм
+ ///
+ public ProcessMapReportWellDrillingParamsDto PressureDiff { get; set; } = new();
+
+ ///
+ /// Нагрузка, т
+ ///
+ public ProcessMapReportWellDrillingParamsDto AxialLoad { get; set; } = new();
+
+ ///
+ /// Момент на ВСП, кНхМ
+ ///
+ public ProcessMapReportWellDrillingParamsDto TopDriveTorque { get; set; } = new();
+
+ ///
+ /// Ограничение скорости, м/ч
+ ///
+ public ProcessMapReportWellDrillingParamsDto SpeedLimit { get; set; } = new();
+
+ ///
+ /// Процент использования системы АПД план, %
+ ///
+ public double UsagePlan { get; set; }
+
+ ///
+ /// Процент использования системы АПД факт, %
+ ///
+ public double UsageFact { get; set; }
+
+ ///
+ /// Фактическая механическая скорость, м/ч
+ ///
+ public double? Rop { get; set; }
+}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/ProcessMaps/Report/ProcessMapReportWellDrillingParamsDto.cs b/AsbCloudApp/Data/ProcessMaps/Report/ProcessMapReportWellDrillingParamsDto.cs
new file mode 100644
index 00000000..cc3dc899
--- /dev/null
+++ b/AsbCloudApp/Data/ProcessMaps/Report/ProcessMapReportWellDrillingParamsDto.cs
@@ -0,0 +1,32 @@
+namespace AsbCloudApp.Data.ProcessMaps.Report;
+
+///
+/// Параметры РТК
+///
+public class ProcessMapReportWellDrillingParamsDto
+{
+ ///
+ /// Уставка план
+ ///
+ public double? SetpointPlan { get; set; }
+
+ ///
+ /// Уставка факт
+ ///
+ public double? SetpointFact { get; set; }
+
+ ///
+ /// Факт
+ ///
+ public double? Fact { get; set; }
+
+ ///
+ /// Ограничение
+ ///
+ public double? Limit { get; set; }
+
+ ///
+ /// Процент бурения по уставке, %
+ ///
+ public double? SetpointUsage { get; set; }
+}
\ No newline at end of file
diff --git a/AsbCloudApp/Data/User/ContactDto.cs b/AsbCloudApp/Data/User/ContactDto.cs
new file mode 100644
index 00000000..8913df5b
--- /dev/null
+++ b/AsbCloudApp/Data/User/ContactDto.cs
@@ -0,0 +1,63 @@
+using System;
+using System.ComponentModel.DataAnnotations;
+
+namespace AsbCloudApp.Data.User
+{
+ ///
+ /// Контакт
+ ///
+
+ public class ContactDto : IId
+ {
+ ///
+ public int Id { get; set; }
+
+ ///
+ /// ключ типа компании
+ ///
+ [Required]
+ public int IdCompanyType { get; set; }
+
+ ///
+ /// ключ скважины
+ ///
+ [Required]
+ public int IdWell { get; set; }
+
+ ///
+ /// ФИО
+ ///
+ [Required]
+ [StringLength(260, MinimumLength = 0, ErrorMessage = "Допустимая длина ФИО от 1 до 260 символов")]
+ public string FullName { get; set; } = null!;
+
+ ///
+ /// Email
+ ///
+ [Required]
+ [RegularExpression(@"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$", ErrorMessage = "Некорректный email")]
+ public string Email { get; set; } = null!;
+
+ ///
+ /// Phone
+ ///
+ [Required]
+ [RegularExpression(@"^(?:\+7|8)\s?(?:\(\d{3}\)|\d{3})\s?\d{3}-?\d{2}-?\d{2}$", ErrorMessage = "Некорректный номер телефона")]
+ public string Phone { get; set; } = null!;
+
+ ///
+ /// Должность
+ ///
+ [Required]
+ [StringLength(260, MinimumLength = 1, ErrorMessage = "Допустимая длина должности от 1 до 260 символов")]
+ public string Position { get; set; } = null!;
+
+ ///
+ /// Компания
+ ///
+ [Required]
+ [StringLength(260, MinimumLength = 3, ErrorMessage = "Допустимая длина должности от 3 до 260 символов")]
+ public string Company { get; set; } = null!;
+
+ }
+}
diff --git a/AsbCloudApp/Data/User/UserContactDto.cs b/AsbCloudApp/Data/User/UserContactDto.cs
deleted file mode 100644
index 758e79ff..00000000
--- a/AsbCloudApp/Data/User/UserContactDto.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-namespace AsbCloudApp.Data.User
-{
- ///
- /// Пользователь - контакт
- ///
-
- public class UserContactDto : UserDto
- {
- ///
- /// является ли пользователь контактом
- ///
- public bool IsContact { get; set; }
- }
-}
diff --git a/AsbCloudApp/Repositories/IProcessMapPlanRepository.cs b/AsbCloudApp/Repositories/IProcessMapPlanRepository.cs
new file mode 100644
index 00000000..1828b3ed
--- /dev/null
+++ b/AsbCloudApp/Repositories/IProcessMapPlanRepository.cs
@@ -0,0 +1,30 @@
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using System.Threading;
+using AsbCloudApp.Data.ProcessMaps;
+using AsbCloudApp.Requests;
+using AsbCloudApp.Services;
+
+namespace AsbCloudApp.Repositories;
+
+///
+/// РТК план
+///
+public interface IProcessMapPlanRepository : IRepositoryWellRelated
+ where TDto : ProcessMapPlanBaseDto
+{
+ ///
+ /// Получить РТК по коллекции параметров
+ ///
+ ///
+ ///
+ ///
+ Task> GetAsync(IEnumerable requests, CancellationToken cancellationToken);
+
+ ///
+ /// Удалить РТК по скважине
+ ///
+ ///
+ ///
+ Task RemoveByWellAsync(int idWell);
+}
diff --git a/AsbCloudApp/Repositories/IProcessMapRepository.cs b/AsbCloudApp/Repositories/IProcessMapRepository.cs
deleted file mode 100644
index f6dbe6b4..00000000
--- a/AsbCloudApp/Repositories/IProcessMapRepository.cs
+++ /dev/null
@@ -1,43 +0,0 @@
-using AsbCloudApp.Data.ProcessMap;
-using AsbCloudApp.Requests;
-using AsbCloudApp.Services;
-using System;
-using System.Collections.Generic;
-using System.Threading;
-using System.Threading.Tasks;
-
-namespace AsbCloudApp.Repositories
-{
- ///
- /// РТК-план
- ///
- public interface IProcessMapPlanRepository : IRepositoryWellRelated
- {
- ///
- /// Получить РТК-план начиная с даты.
- ///
- ///
- ///
- ///
- ///
- Task> GetAllAsync(int idWell,
- DateTime? updateFrom, CancellationToken token = default);
-
- ///
- /// Получить РТК-план
- ///
- ///
- ///
- ///
- Task> GetProcessMapAsync(IEnumerable requests,
- CancellationToken token);
-
- ///
- /// Удалить РТК-план по скважине
- ///
- ///
- ///
- ///
- Task RemoveByWellAsync(int idWell, CancellationToken cancellationToken);
- }
-}
\ No newline at end of file
diff --git a/AsbCloudApp/Repositories/IProcessMapWellboreDevelopmentRepository.cs b/AsbCloudApp/Repositories/IProcessMapWellboreDevelopmentRepository.cs
deleted file mode 100644
index 11e8607e..00000000
--- a/AsbCloudApp/Repositories/IProcessMapWellboreDevelopmentRepository.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Threading;
-using System.Threading.Tasks;
-using AsbCloudApp.Data.ProcessMap;
-using AsbCloudApp.Services;
-
-namespace AsbCloudApp.Repositories;
-
-///
-/// Репозиторий для проработки скважины
-///
-public interface IProcessMapWellboreDevelopmentRepository : IRepositoryWellRelated
-{
- ///
- /// Получить проработку начиная с даты
- ///
- ///
- ///
- ///
- ///
- Task> GetAllAsync(int idWell, DateTime? updateFrom, CancellationToken cancellationToken);
-}
\ No newline at end of file
diff --git a/AsbCloudApp/Repositories/IWellCompositeRepository.cs b/AsbCloudApp/Repositories/IWellCompositeRepository.cs
index c54c7e27..5354a587 100644
--- a/AsbCloudApp/Repositories/IWellCompositeRepository.cs
+++ b/AsbCloudApp/Repositories/IWellCompositeRepository.cs
@@ -1,8 +1,8 @@
using AsbCloudApp.Data;
-using AsbCloudApp.Data.ProcessMap;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
+using AsbCloudApp.Data.ProcessMaps;
namespace AsbCloudApp.Repositories
{
@@ -29,11 +29,11 @@ namespace AsbCloudApp.Repositories
Task SaveAsync(int idWell, IEnumerable wellComposites, CancellationToken token);
///
- /// Получение РТК по композитной скважине
+ /// Получение РТК-план бурение по композитной скважине
///
///
///
///
- Task> GetCompositeProcessMap(int idWell, CancellationToken token);
+ Task> GetCompositeProcessMap(int idWell, CancellationToken token);
}
}
diff --git a/AsbCloudApp/Requests/ProcessMapPlanRequest.cs b/AsbCloudApp/Requests/ProcessMapPlanRequest.cs
new file mode 100644
index 00000000..b614b8c3
--- /dev/null
+++ b/AsbCloudApp/Requests/ProcessMapPlanRequest.cs
@@ -0,0 +1,24 @@
+using System;
+
+namespace AsbCloudApp.Requests;
+
+///
+/// Запрос для получения РТК план
+///
+public class ProcessMapPlanRequest
+{
+ ///
+ /// Идентификатор скважины
+ ///
+ public int IdWell { get; set; }
+
+ ///
+ /// Тип секции
+ ///
+ public int? IdWellSectionType { get; set; }
+
+ ///
+ /// Дата обновления
+ ///
+ public DateTime? UpdateFrom { get; set; }
+}
\ No newline at end of file
diff --git a/AsbCloudApp/Requests/ProcessMapRequest.cs b/AsbCloudApp/Requests/ProcessMapRequest.cs
deleted file mode 100644
index 8fc481e4..00000000
--- a/AsbCloudApp/Requests/ProcessMapRequest.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-using System;
-
-namespace AsbCloudApp.Requests
-{
- ///
- /// Параметры для запроса получения РТК
- ///
- public class ProcessMapRequest
- {
- ///
- /// Идентификатор скважины
- ///
- public int IdWell { get; set; }
-
- ///
- /// Тип секции
- ///
- public int? IdWellSectionType { get; set; }
-
- ///
- /// Дата обновления
- ///
- public DateTime? UpdateFrom { get; set; }
- }
-}
diff --git a/AsbCloudApp/Services/IProcessMapPlanImportService.cs b/AsbCloudApp/Services/IProcessMapPlanImportService.cs
deleted file mode 100644
index c5daa587..00000000
--- a/AsbCloudApp/Services/IProcessMapPlanImportService.cs
+++ /dev/null
@@ -1,37 +0,0 @@
-using System.IO;
-using System.Threading;
-using System.Threading.Tasks;
-
-namespace AsbCloudApp.Services;
-
-///
-/// Сервис импорта/экспорта для РТК вводимых вручную
-///
-public interface IProcessMapPlanImportService
-{
- ///
- /// Загрузить данные из файла
- ///
- ///
- ///
- ///
- ///
- ///
- ///
- Task ImportAsync(int idWell, int idUser, bool deleteProcessMapPlansBeforeImport, Stream stream,
- CancellationToken cancellationToken);
-
- ///
- /// Сформировать файл с данными
- ///
- ///
- ///
- ///
- Task ExportAsync(int idWell, CancellationToken cancellationToken);
-
- ///
- /// Получение шаблона для заполнения
- ///
- ///
- Task GetExcelTemplateStreamAsync(CancellationToken cancellationToken);
-}
\ No newline at end of file
diff --git a/AsbCloudApp/Services/IProcessMapReportMakerService.cs b/AsbCloudApp/Services/IProcessMapReportMakerService.cs
deleted file mode 100644
index 0fea6d7b..00000000
--- a/AsbCloudApp/Services/IProcessMapReportMakerService.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-using System.IO;
-using System.Threading;
-using System.Threading.Tasks;
-
-namespace AsbCloudApp.Services
-{
- ///
- /// Сервис формирования РТК.
- ///
- public interface IProcessMapReportMakerService
- {
- ///
- /// Сформировать.
- ///
- ///
- ///
- ///
- Task MakeReportAsync(int idWell, CancellationToken token = default);
- }
-}
diff --git a/AsbCloudApp/Services/IProcessMapService.cs b/AsbCloudApp/Services/IProcessMapService.cs
deleted file mode 100644
index 3534b2e2..00000000
--- a/AsbCloudApp/Services/IProcessMapService.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-using AsbCloudApp.Data.ProcessMap;
-using System.Collections.Generic;
-using System.Threading;
-using System.Threading.Tasks;
-
-namespace AsbCloudApp.Services
-{
- ///
- /// Сервис РТК
- ///
- public interface IProcessMapService
- {
- ///
- /// Получение моделей РТК
- ///
- ///
- ///
- ///
- Task> GetProcessMapReportAsync(int idWell, CancellationToken token);
- }
-}
diff --git a/AsbCloudApp/Services/IProcessMapWellboreDevelopmentService.cs b/AsbCloudApp/Services/IProcessMapWellboreDevelopmentService.cs
deleted file mode 100644
index 6a03e957..00000000
--- a/AsbCloudApp/Services/IProcessMapWellboreDevelopmentService.cs
+++ /dev/null
@@ -1,39 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Threading;
-using System.Threading.Tasks;
-using AsbCloudApp.Data.ProcessMap;
-
-namespace AsbCloudApp.Services;
-
-///
-/// Сервис для проработок скважины
-///
-public interface IProcessMapWellboreDevelopmentService
-{
- ///
- /// Добавить запись проработки
- ///
- ///
- ///
- ///
- Task InsertAsync(ProcessMapWellboreDevelopmentDto processMapWellboreDevelopment, CancellationToken cancellationToken);
-
- ///
- /// Обновить запись проработки
- ///
- ///
- ///
- ///
- Task UpdateAsync(ProcessMapWellboreDevelopmentDto processMapWellboreDevelopment, CancellationToken cancellationToken);
-
- ///
- /// Получить записи проработок по уникальному ключу телеметрии
- ///
- ///
- ///
- ///
- ///
- Task> GetByTelemetryAsync(string uid, DateTime updateFrom,
- CancellationToken cancellationToken);
-}
\ No newline at end of file
diff --git a/AsbCloudApp/Services/IWellContactService.cs b/AsbCloudApp/Services/IWellContactService.cs
index e12ec26a..2c4026e1 100644
--- a/AsbCloudApp/Services/IWellContactService.cs
+++ b/AsbCloudApp/Services/IWellContactService.cs
@@ -1,4 +1,5 @@
using AsbCloudApp.Data;
+using AsbCloudApp.Data.User;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
@@ -11,30 +12,53 @@ namespace AsbCloudApp.Services
public interface IWellContactService
{
///
- /// Полуение пользователей по ключу скважины и типу контакта
+ /// Получение контактов по ключу скважины и типу контакта
///
- /// ключ скважины
+ /// ключ скважины
/// тип контакта
///
///
- Task> GetAsync(int wellId, int contactTypeId, CancellationToken token);
+ Task> GetAllAsync(int idWell, int contactTypeId, CancellationToken token);
///
- /// Получение типов контаков
+ /// Получение контакта по ключу
///
/// ключ скважины
+ /// ключ пользователя
///
///
- Task> GetTypesAsync(int idWell, CancellationToken token);
+ Task GetAsync(int idWell, int id, CancellationToken token);
///
- /// Обновление контактов по ключу скважины, типу контакта и ключам пользователей
+ /// Получение типов контактов
///
- /// ключ скважины
- /// ключ типа контакта
- /// ключи пользователей
///
///
- Task UpdateRangeAsync(int idWell, int contactTypeId, IEnumerable userIds, CancellationToken token);
+ Task> GetTypesAsync(CancellationToken token);
+
+ ///
+ /// Добавление контакта
+ ///
+ ///
+ ///
+ ///
+ Task InsertAsync(ContactDto contactDto, CancellationToken token);
+
+ ///
+ /// Изменение контакта
+ ///
+ ///
+ ///
+ ///
+ Task UpdateAsync(ContactDto contactDto, CancellationToken token);
+
+ ///
+ /// Удаление контакта
+ ///
+ /// ключ скважины
+ /// ключ скважины
+ ///
+ ///
+ Task DeleteAsync(int idWell, int id, CancellationToken token);
}
}
diff --git a/AsbCloudApp/Services/ProcessMaps/IProcessMapPlanImportService.cs b/AsbCloudApp/Services/ProcessMaps/IProcessMapPlanImportService.cs
new file mode 100644
index 00000000..7b30b80d
--- /dev/null
+++ b/AsbCloudApp/Services/ProcessMaps/IProcessMapPlanImportService.cs
@@ -0,0 +1,37 @@
+using System.IO;
+using System.Threading.Tasks;
+using System.Threading;
+
+namespace AsbCloudApp.Services.ProcessMaps;
+
+///
+/// Сервис импорта РТК
+///
+public interface IProcessMapPlanImportService
+{
+ ///
+ /// Загрузить данные из файла
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ Task ImportAsync(int idWell, int idUser, bool deleteBeforeImport, Stream stream,
+ CancellationToken cancellationToken);
+
+ ///
+ /// Сформировать файл с данными
+ ///
+ ///
+ ///
+ ///
+ Task<(string Name, Stream File)> ExportAsync(int idWell, CancellationToken cancellationToken);
+
+ ///
+ /// Получение шаблона для заполнения
+ ///
+ ///
+ Task<(string Name, Stream File)> GetExcelTemplateStreamAsync(CancellationToken cancellationToken);
+}
\ No newline at end of file
diff --git a/AsbCloudApp/Services/ProcessMaps/WellDrilling/IProcessMapReportWellDrillingExportService.cs b/AsbCloudApp/Services/ProcessMaps/WellDrilling/IProcessMapReportWellDrillingExportService.cs
new file mode 100644
index 00000000..4a262fa8
--- /dev/null
+++ b/AsbCloudApp/Services/ProcessMaps/WellDrilling/IProcessMapReportWellDrillingExportService.cs
@@ -0,0 +1,19 @@
+using System.IO;
+using System.Threading.Tasks;
+using System.Threading;
+
+namespace AsbCloudApp.Services.ProcessMaps.WellDrilling;
+
+///
+/// Сервис экспорт РТК
+///
+public interface IProcessMapReportWellDrillingExportService
+{
+ ///
+ /// Сформировать файл с данными
+ ///
+ ///
+ ///
+ ///
+ Task<(string Name, Stream File)?> ExportAsync(int idWell, CancellationToken cancellationToken);
+}
\ No newline at end of file
diff --git a/AsbCloudApp/Services/ProcessMaps/WellDrilling/IProcessMapReportWellDrillingService.cs b/AsbCloudApp/Services/ProcessMaps/WellDrilling/IProcessMapReportWellDrillingService.cs
new file mode 100644
index 00000000..52079d92
--- /dev/null
+++ b/AsbCloudApp/Services/ProcessMaps/WellDrilling/IProcessMapReportWellDrillingService.cs
@@ -0,0 +1,20 @@
+using System.Collections.Generic;
+using System.Threading;
+using System.Threading.Tasks;
+using AsbCloudApp.Data.ProcessMaps.Report;
+
+namespace AsbCloudApp.Services.ProcessMaps.WellDrilling;
+
+///
+/// Сервис формирования отчёта РТК бурение
+///
+public interface IProcessMapReportWellDrillingService
+{
+ ///
+ /// Получить отчёт РТК по бурению
+ ///
+ ///
+ ///
+ ///
+ Task> GetAsync(int idWell, CancellationToken token);
+}
\ No newline at end of file
diff --git a/AsbCloudDb/Migrations/20231012063505_Add_Contacts.Designer.cs b/AsbCloudDb/Migrations/20231012063505_Add_Contacts.Designer.cs
new file mode 100644
index 00000000..f615832f
--- /dev/null
+++ b/AsbCloudDb/Migrations/20231012063505_Add_Contacts.Designer.cs
@@ -0,0 +1,8731 @@
+//
+using System;
+using System.Text.Json;
+using AsbCloudDb.Model;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
+
+#nullable disable
+
+namespace AsbCloudDb.Migrations
+{
+ [DbContext(typeof(AsbCloudDbContext))]
+ [Migration("20231012063505_Add_Contacts")]
+ partial class Add_Contacts
+ {
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .UseCollation("Russian_Russia.1251")
+ .HasAnnotation("ProductVersion", "6.0.7")
+ .HasAnnotation("Relational:MaxIdentifierLength", 63);
+
+ NpgsqlModelBuilderExtensions.HasPostgresExtension(modelBuilder, "adminpack");
+ NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
+
+ modelBuilder.Entity("AsbCloudDb.Model.Cluster", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Caption")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("caption")
+ .HasComment("Название");
+
+ b.Property("IdDeposit")
+ .HasColumnType("integer")
+ .HasColumnName("id_deposit");
+
+ b.Property("Latitude")
+ .HasColumnType("double precision")
+ .HasColumnName("latitude");
+
+ b.Property("Longitude")
+ .HasColumnType("double precision")
+ .HasColumnName("longitude");
+
+ b.Property("Timezone")
+ .IsRequired()
+ .HasColumnType("jsonb")
+ .HasColumnName("timezone")
+ .HasComment("Смещение часового пояса от UTC");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IdDeposit");
+
+ b.ToTable("t_cluster");
+
+ b.HasComment("Кусты");
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.Company", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Caption")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("caption");
+
+ b.Property("IdCompanyType")
+ .HasMaxLength(255)
+ .HasColumnType("integer")
+ .HasColumnName("id_company_type")
+ .HasComment("вид деятельности");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IdCompanyType");
+
+ b.ToTable("t_company");
+
+ b.HasData(
+ new
+ {
+ Id = 1,
+ Caption = "ООО \"АСБ\"",
+ IdCompanyType = 3
+ });
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.CompanyType", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Caption")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("caption");
+
+ b.Property("IsContact")
+ .HasColumnType("boolean");
+
+ b.Property("Order")
+ .HasColumnType("integer")
+ .HasColumnName("order");
+
+ b.HasKey("Id");
+
+ b.ToTable("t_company_type");
+
+ b.HasData(
+ new
+ {
+ Id = 1,
+ Caption = "Недрапользователь",
+ IsContact = false,
+ Order = 1
+ },
+ new
+ {
+ Id = 2,
+ Caption = "Буровой подрядчик",
+ IsContact = false,
+ Order = 2
+ },
+ new
+ {
+ Id = 3,
+ Caption = "Сервис автоматизации бурения",
+ IsContact = false,
+ Order = 0
+ });
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.Contact", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Company")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("company")
+ .HasComment("компания");
+
+ b.Property("Email")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("email")
+ .HasComment("email");
+
+ b.Property("FIO")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("fio")
+ .HasComment("ФИО");
+
+ b.Property("IdCompanyType")
+ .HasMaxLength(255)
+ .HasColumnType("integer")
+ .HasColumnName("id_company_type")
+ .HasComment("вид деятельности");
+
+ b.Property("Phone")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("character varying(50)")
+ .HasColumnName("phone")
+ .HasComment("номер телефона");
+
+ b.Property("Position")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("position")
+ .HasComment("должность");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IdCompanyType");
+
+ b.ToTable("t_contact");
+
+ b.HasComment("Контакты");
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.DailyReport.DailyReport", b =>
+ {
+ b.Property("IdWell")
+ .HasColumnType("integer")
+ .HasColumnName("id_well")
+ .HasComment("ID скважины");
+
+ b.Property("StartDate")
+ .HasColumnType("date")
+ .HasColumnName("start_date")
+ .HasComment("Дата отчёта");
+
+ b.Property("Info")
+ .IsRequired()
+ .HasColumnType("jsonb")
+ .HasColumnName("info")
+ .HasComment("Список параметров для отчёта");
+
+ b.HasKey("IdWell", "StartDate")
+ .HasName("t_id_well_date_start_pk");
+
+ b.ToTable("t_daily_report");
+
+ b.HasComment("Ежедневные отчёты");
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.Deposit", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Caption")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("caption");
+
+ b.Property("Latitude")
+ .HasColumnType("double precision")
+ .HasColumnName("latitude");
+
+ b.Property("Longitude")
+ .HasColumnType("double precision")
+ .HasColumnName("longitude");
+
+ b.Property("Timezone")
+ .IsRequired()
+ .HasColumnType("jsonb")
+ .HasColumnName("timezone")
+ .HasComment("Смещение часового пояса от UTC");
+
+ b.HasKey("Id");
+
+ b.ToTable("t_deposit");
+
+ b.HasComment("Месторождение");
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.DetectedOperation", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("DateEnd")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_end")
+ .HasComment("Дата начала операции");
+
+ b.Property("DateStart")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_start")
+ .HasComment("Дата начала операции");
+
+ b.Property("DepthEnd")
+ .HasColumnType("double precision")
+ .HasColumnName("depth_end")
+ .HasComment("Глубина после завершения операции, м");
+
+ b.Property("DepthStart")
+ .HasColumnType("double precision")
+ .HasColumnName("depth_start")
+ .HasComment("Глубина на начало операции, м");
+
+ b.Property("IdCategory")
+ .HasColumnType("integer")
+ .HasColumnName("id_category")
+ .HasComment("Id категории операции");
+
+ b.Property("IdReasonOfEnd")
+ .HasColumnType("integer")
+ .HasColumnName("id_reason_of_end")
+ .HasComment("Код признака окончания операции");
+
+ b.Property("IdTelemetry")
+ .HasColumnType("integer")
+ .HasColumnName("id_telemetry");
+
+ b.Property("IdUsersAtStart")
+ .HasColumnType("integer")
+ .HasColumnName("id_user")
+ .HasComment("Id пользователя по телеметрии на момент начала операции");
+
+ b.Property("Value")
+ .HasColumnType("double precision")
+ .HasColumnName("value")
+ .HasComment("Ключевой показатель операции");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IdCategory");
+
+ b.HasIndex("IdTelemetry");
+
+ b.ToTable("t_detected_operation");
+
+ b.HasComment("автоматически определенные операции по телеметрии");
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.Driller", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id")
+ .HasComment("Идентификатор");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("name")
+ .HasComment("Имя");
+
+ b.Property("Patronymic")
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("patronymic")
+ .HasComment("Отчество");
+
+ b.Property("Surname")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("surname")
+ .HasComment("Фамилия");
+
+ b.HasKey("Id");
+
+ b.ToTable("t_driller");
+
+ b.HasComment("Бурильщик");
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.DrillingProgramPart", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("IdFileCategory")
+ .HasColumnType("integer")
+ .HasColumnName("id_file_category");
+
+ b.Property("IdWell")
+ .HasColumnType("integer")
+ .HasColumnName("id_well");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IdFileCategory");
+
+ b.HasIndex("IdWell", "IdFileCategory")
+ .IsUnique();
+
+ b.ToTable("t_drilling_program_part");
+
+ b.HasComment("части программ бурения");
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.Faq", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id")
+ .HasComment("Идентификатор");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Answer")
+ .HasColumnType("text")
+ .HasColumnName("answer")
+ .HasComment("Текст ответа");
+
+ b.Property("CounterQuestion")
+ .HasColumnType("integer")
+ .HasColumnName("counter_question")
+ .HasComment("Счетчик повторений вопроса");
+
+ b.Property("DateAnswer")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_answer")
+ .HasComment("Дата ответа");
+
+ b.Property("DateCreatedQuestion")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_created_question")
+ .HasComment("Дата создания вопроса");
+
+ b.Property("DateLastEditedQuestion")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_last_edited_question")
+ .HasComment("Дата последнего редактирования вопроса");
+
+ b.Property("IdAuthorAnswer")
+ .HasColumnType("integer")
+ .HasColumnName("id_author_answer")
+ .HasComment("id автора ответа");
+
+ b.Property("IdAuthorQuestion")
+ .HasColumnType("integer")
+ .HasColumnName("id_author_question")
+ .HasComment("id автора вопроса");
+
+ b.Property("IdReplacementQuestion")
+ .HasColumnType("integer")
+ .HasColumnName("id_replacement_question")
+ .HasComment("Ключ заменяющего вопроса");
+
+ b.Property("IsFrequently")
+ .HasColumnType("boolean")
+ .HasColumnName("is_frequently")
+ .HasComment("Частый вопрос");
+
+ b.Property("Question")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("question")
+ .HasComment("Текст вопроса");
+
+ b.Property("State")
+ .HasColumnType("integer")
+ .HasColumnName("state")
+ .HasComment("Статус вопроса");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IdAuthorAnswer");
+
+ b.HasIndex("IdAuthorQuestion");
+
+ b.ToTable("t_faq");
+
+ b.HasComment("вопросы пользователей");
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.FileCategory", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("name")
+ .HasComment("Название категории");
+
+ b.Property("ShortName")
+ .HasColumnType("text")
+ .HasColumnName("short_name")
+ .HasComment("Короткое название категории");
+
+ b.HasKey("Id");
+
+ b.ToTable("t_file_category");
+
+ b.HasComment("Категории файлов");
+
+ b.HasData(
+ new
+ {
+ Id = 1,
+ Name = "Растворный сервис",
+ ShortName = "fluidService"
+ },
+ new
+ {
+ Id = 2,
+ Name = "Цементирование",
+ ShortName = "cement"
+ },
+ new
+ {
+ Id = 3,
+ Name = "ННБ",
+ ShortName = "nnb"
+ },
+ new
+ {
+ Id = 4,
+ Name = "ГТИ",
+ ShortName = "gti"
+ },
+ new
+ {
+ Id = 5,
+ Name = "Документы по скважине",
+ ShortName = "wellDocuments"
+ },
+ new
+ {
+ Id = 6,
+ Name = "Супервайзер",
+ ShortName = "supervisor"
+ },
+ new
+ {
+ Id = 7,
+ Name = "Мастер",
+ ShortName = "master"
+ },
+ new
+ {
+ Id = 8,
+ Name = "Долотный сервис",
+ ShortName = "toolService"
+ },
+ new
+ {
+ Id = 9,
+ Name = "Буровой подрядчик",
+ ShortName = "drillService"
+ },
+ new
+ {
+ Id = 10,
+ Name = "Сервис по заканчиванию скважины",
+ ShortName = "closingService"
+ },
+ new
+ {
+ Id = 12,
+ Name = "Рапорт",
+ ShortName = "report"
+ },
+ new
+ {
+ Id = 1000,
+ Name = "Программа бурения"
+ },
+ new
+ {
+ Id = 1001,
+ Name = "Задание от геологов"
+ },
+ new
+ {
+ Id = 1002,
+ Name = "Профиль ствола скважины (ННБ)"
+ },
+ new
+ {
+ Id = 1003,
+ Name = "Технологические расчеты (ННБ)"
+ },
+ new
+ {
+ Id = 1004,
+ Name = "Долотная программа"
+ },
+ new
+ {
+ Id = 1005,
+ Name = "Программа по растворам"
+ },
+ new
+ {
+ Id = 1006,
+ Name = "Программа геофизических исследований"
+ },
+ new
+ {
+ Id = 1007,
+ Name = "Планы спусков обсадных колонн"
+ },
+ new
+ {
+ Id = 1008,
+ Name = "Программы цементирования обсадных колонн"
+ },
+ new
+ {
+ Id = 10000,
+ Name = "Проект на бурение транспортного и горизонтального участков скважины"
+ },
+ new
+ {
+ Id = 10001,
+ Name = "Программа на бурение транспортного и горизонтального участков скважины"
+ },
+ new
+ {
+ Id = 10002,
+ Name = "Акт о начале бурения"
+ },
+ new
+ {
+ Id = 10003,
+ Name = "План работ спуска и цементирования направления"
+ },
+ new
+ {
+ Id = 10004,
+ Name = "Программа цементирования направления"
+ },
+ new
+ {
+ Id = 10005,
+ Name = "Мера обсадных труб (направление)"
+ },
+ new
+ {
+ Id = 10006,
+ Name = "Акт на выполненные работы по цементированию направления"
+ },
+ new
+ {
+ Id = 10007,
+ Name = "Отчет по цементированию направления (график)"
+ },
+ new
+ {
+ Id = 10008,
+ Name = "План работ спуска и цементирования кондуктора"
+ },
+ new
+ {
+ Id = 10009,
+ Name = "Программа цементирования (кондуктор)"
+ },
+ new
+ {
+ Id = 10010,
+ Name = "Мера обсадных труб (кондуктор)"
+ },
+ new
+ {
+ Id = 10011,
+ Name = "Карта крепления кондуктора"
+ },
+ new
+ {
+ Id = 10012,
+ Name = "Акт на выполненные работы по цементированию кондуктора"
+ },
+ new
+ {
+ Id = 10013,
+ Name = "Отчет по цементированию кондуктора (график)"
+ },
+ new
+ {
+ Id = 10014,
+ Name = "Акт о замере расстояния от стола ротора до муфты кондуктора"
+ },
+ new
+ {
+ Id = 10015,
+ Name = "Акт опресовки цементного кольца за кондуктором"
+ },
+ new
+ {
+ Id = 10016,
+ Name = "Акт опресовки ППГ с глухими плашками совместно с кондуктором"
+ },
+ new
+ {
+ Id = 10017,
+ Name = "Акт опресовки ПУГ, ППГ с трубными плашками совместно с кондуктором"
+ },
+ new
+ {
+ Id = 10018,
+ Name = "План работ на крепление обсадной колонны (эк. колонна)"
+ },
+ new
+ {
+ Id = 10019,
+ Name = "Программа цементирования (эк. колонна)"
+ },
+ new
+ {
+ Id = 10020,
+ Name = "Мера труб эксплуатационной колонны"
+ },
+ new
+ {
+ Id = 10021,
+ Name = "Карта по креплению скважины (эк. колонна)"
+ },
+ new
+ {
+ Id = 10022,
+ Name = "Акт на установку пружинных центраторов"
+ },
+ new
+ {
+ Id = 10023,
+ Name = "Отчет по цементированию эксплуатационной колонны (график)"
+ },
+ new
+ {
+ Id = 10024,
+ Name = "Акт на выполненные работы по цементированию эксплуатационной колонны"
+ },
+ new
+ {
+ Id = 10025,
+ Name = "Акт об испытании эк. колонны на герметичность (СТОП)"
+ },
+ new
+ {
+ Id = 10026,
+ Name = "Акт опресовки ППГ с глухими плашками совместно с э/колонной"
+ },
+ new
+ {
+ Id = 10027,
+ Name = "Акт опресовки ПУГ, ППГ с трубными плашками совместно с э/колонной"
+ },
+ new
+ {
+ Id = 10028,
+ Name = "Акт на вскрытие продуктивного пласта"
+ },
+ new
+ {
+ Id = 10029,
+ Name = "Акт замера параметров раствора при бурении горизонтального участка"
+ },
+ new
+ {
+ Id = 10030,
+ Name = "Разрешение на спуск «хвостовика» (телефонограмма)"
+ },
+ new
+ {
+ Id = 10031,
+ Name = "План работ на спуск «хвостовика»"
+ },
+ new
+ {
+ Id = 10032,
+ Name = "Акт готовности бурового и энергетического оборудования к спуску «хвостовика»"
+ },
+ new
+ {
+ Id = 10033,
+ Name = "Акт шаблонировки ствола скважины перед спуском «хвостовика»"
+ },
+ new
+ {
+ Id = 10034,
+ Name = "Мера обсадных труб (хвостовик)"
+ },
+ new
+ {
+ Id = 10035,
+ Name = "Акт выполненных работ по спуску хвостовика с закачкой (нефти, солевого раствора"
+ },
+ new
+ {
+ Id = 10036,
+ Name = "Акт о переводе скважины на тех. воду"
+ },
+ new
+ {
+ Id = 10037,
+ Name = "Акт об окончании бурения"
+ },
+ new
+ {
+ Id = 10038,
+ Name = "Акт на передачу скважины в освоение (КРС)"
+ },
+ new
+ {
+ Id = 10039,
+ Name = "Акт на опресовку межколонного пространства с КРС"
+ },
+ new
+ {
+ Id = 10040,
+ Name = "Акт на сдачу скважины в ЦДНГ"
+ },
+ new
+ {
+ Id = 10041,
+ Name = "Паспорт ОУС (заполняется геологами)"
+ },
+ new
+ {
+ Id = 10042,
+ Name = "Паспорт скважины (заполняется геологами)"
+ },
+ new
+ {
+ Id = 10043,
+ Name = "Фактические данные бурения (вставляются в паспорт скважины)"
+ },
+ new
+ {
+ Id = 20000,
+ Name = "Справки по страницам"
+ },
+ new
+ {
+ Id = 30000,
+ Name = "Инструкции"
+ });
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.FileInfo", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("IdAuthor")
+ .HasColumnType("integer")
+ .HasColumnName("id_author")
+ .HasComment("Id пользователя, загрузившего файл");
+
+ b.Property("IdCategory")
+ .HasColumnType("integer")
+ .HasColumnName("id_category")
+ .HasComment("id категории файла");
+
+ b.Property("IdWell")
+ .HasColumnType("integer")
+ .HasColumnName("id_well")
+ .HasComment("id скважины");
+
+ b.Property("IsDeleted")
+ .HasColumnType("boolean")
+ .HasColumnName("is_deleted")
+ .HasComment("Удален ли файл");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("name")
+ .HasComment("Название файла");
+
+ b.Property("Size")
+ .HasColumnType("bigint")
+ .HasColumnName("file_size")
+ .HasComment("Размер файла");
+
+ b.Property("UploadDate")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IdAuthor");
+
+ b.HasIndex("IdCategory");
+
+ b.HasIndex("IdWell");
+
+ b.ToTable("t_file_info");
+
+ b.HasComment("Файлы всех категорий");
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.FileMark", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Comment")
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("comment")
+ .HasComment("Комментарий");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_created")
+ .HasComment("Дата совершенного действия");
+
+ b.Property("IdFile")
+ .HasColumnType("integer")
+ .HasColumnName("id_file")
+ .HasComment("id файла");
+
+ b.Property("IdMarkType")
+ .HasColumnType("integer")
+ .HasColumnName("id_mark_type")
+ .HasComment("0 - отклонен, 1 - согласован");
+
+ b.Property("IdUser")
+ .HasColumnType("integer")
+ .HasColumnName("id_user")
+ .HasComment("id пользователя");
+
+ b.Property("IsDeleted")
+ .HasColumnType("boolean")
+ .HasColumnName("is_deleted")
+ .HasComment("Помечен ли файл как удаленный");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IdFile");
+
+ b.HasIndex("IdUser");
+
+ b.ToTable("t_file_mark");
+
+ b.HasComment("Действия с файлами.");
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemFloat", b =>
+ {
+ b.Property("IdTelemetry")
+ .HasColumnType("integer")
+ .HasColumnName("id_telemetry");
+
+ b.Property("IdRecord")
+ .HasColumnType("integer")
+ .HasColumnName("id_record");
+
+ b.Property("IdItem")
+ .HasColumnType("integer")
+ .HasColumnName("id_item");
+
+ b.Property("DateTime")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date");
+
+ b.Property("Value")
+ .HasColumnType("real")
+ .HasColumnName("value");
+
+ b.HasKey("IdTelemetry", "IdRecord", "IdItem", "DateTime");
+
+ b.ToTable("t_wits_float");
+
+ b.HasComment("таблица данных ГТИ с типом значения float");
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemInt", b =>
+ {
+ b.Property("IdTelemetry")
+ .HasColumnType("integer")
+ .HasColumnName("id_telemetry");
+
+ b.Property("IdRecord")
+ .HasColumnType("integer")
+ .HasColumnName("id_record");
+
+ b.Property("IdItem")
+ .HasColumnType("integer")
+ .HasColumnName("id_item");
+
+ b.Property("DateTime")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date");
+
+ b.Property("Value")
+ .HasColumnType("integer")
+ .HasColumnName("value");
+
+ b.HasKey("IdTelemetry", "IdRecord", "IdItem", "DateTime");
+
+ b.ToTable("t_wits_int");
+
+ b.HasComment("таблица данных ГТИ с типом значения int");
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemString", b =>
+ {
+ b.Property("IdTelemetry")
+ .HasColumnType("integer")
+ .HasColumnName("id_telemetry");
+
+ b.Property("IdRecord")
+ .HasColumnType("integer")
+ .HasColumnName("id_record");
+
+ b.Property("IdItem")
+ .HasColumnType("integer")
+ .HasColumnName("id_item");
+
+ b.Property("DateTime")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date");
+
+ b.Property("Value")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("value");
+
+ b.HasKey("IdTelemetry", "IdRecord", "IdItem", "DateTime");
+
+ b.ToTable("t_wits_string");
+
+ b.HasComment("таблица данных ГТИ с типом значения string");
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.HelpPage", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("IdCategory")
+ .HasColumnType("integer")
+ .HasColumnName("id_category")
+ .HasComment("Id категории файла");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("name")
+ .HasComment("Название файла");
+
+ b.Property("Size")
+ .HasColumnType("bigint")
+ .HasColumnName("file_size")
+ .HasComment("Размер файла");
+
+ b.Property("UrlPage")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("url_page")
+ .HasComment("Url страницы");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IdCategory");
+
+ b.ToTable("t_help_page");
+
+ b.HasComment("Справки");
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.LimitingParameter", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("DateEnd")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_end");
+
+ b.Property("DateStart")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_start");
+
+ b.Property("DepthEnd")
+ .HasColumnType("real")
+ .HasColumnName("depth_end");
+
+ b.Property("DepthStart")
+ .HasColumnType("real")
+ .HasColumnName("depth_start");
+
+ b.Property("IdFeedRegulator")
+ .HasColumnType("smallint")
+ .HasColumnName("id_feed_regulator");
+
+ b.Property("IdTelemetry")
+ .HasColumnType("integer")
+ .HasColumnName("id_telemetry");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IdTelemetry");
+
+ b.ToTable("t_limiting_parameter");
+
+ b.HasComment("Ограничения по параметрам телеметрии");
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.Manuals.Manual", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("DateDownload")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_download")
+ .HasComment("Дата загрузки");
+
+ b.Property("IdAuthor")
+ .HasColumnType("integer")
+ .HasColumnName("id_author")
+ .HasComment("Id автора");
+
+ b.Property("IdCategory")
+ .HasColumnType("integer")
+ .HasColumnName("id_category")
+ .HasComment("Id категории файла");
+
+ b.Property("IdDirectory")
+ .HasColumnType("integer")
+ .HasColumnName("id_directory")
+ .HasComment("Id директории");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("name")
+ .HasComment("Название");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IdAuthor");
+
+ b.HasIndex("IdCategory");
+
+ b.HasIndex("IdDirectory");
+
+ b.ToTable("t_manual");
+
+ b.HasComment("Инструкции");
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.Manuals.ManualDirectory", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("IdParent")
+ .HasColumnType("integer")
+ .HasColumnName("id_parent")
+ .HasComment("Id родительской директории");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("name")
+ .HasComment("Название");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IdParent");
+
+ b.ToTable("t_manual_directory");
+
+ b.HasComment("Директория для инструкций");
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.Measure", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Data")
+ .IsRequired()
+ .HasColumnType("jsonb")
+ .HasColumnName("data")
+ .HasComment("Данные таблицы последних данных");
+
+ b.Property("IdCategory")
+ .HasColumnType("integer")
+ .HasColumnName("id_category")
+ .HasComment("id категории");
+
+ b.Property("IdWell")
+ .HasColumnType("integer")
+ .HasColumnName("id_well")
+ .HasComment("id скважины");
+
+ b.Property("IsDeleted")
+ .HasColumnType("boolean")
+ .HasColumnName("is_deleted")
+ .HasComment("Пометка удаленным");
+
+ b.Property("Timestamp")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("timestamp")
+ .HasComment("время добавления");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IdCategory");
+
+ b.HasIndex("IdWell");
+
+ b.ToTable("t_measure");
+
+ b.HasComment("Таблица c данными для вкладки 'Последние данные'");
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.MeasureCategory", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("name")
+ .HasComment("Название категории");
+
+ b.Property("ShortName")
+ .HasColumnType("text")
+ .HasColumnName("short_name")
+ .HasComment("Короткое название категории");
+
+ b.HasKey("Id");
+
+ b.ToTable("t_measure_category");
+
+ b.HasComment("Категория последних данных");
+
+ b.HasData(
+ new
+ {
+ Id = 1,
+ Name = "Показатели бурового раствора",
+ ShortName = "Раствор"
+ },
+ new
+ {
+ Id = 2,
+ Name = "Шламограмма",
+ ShortName = "Шламограмма"
+ },
+ new
+ {
+ Id = 3,
+ Name = "ННБ",
+ ShortName = "ННБ"
+ });
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.Notification", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("IdNotificationCategory")
+ .HasColumnType("integer")
+ .HasColumnName("id_notification_category")
+ .HasComment("Id категории уведомления");
+
+ b.Property("IdTransportType")
+ .HasColumnType("integer")
+ .HasColumnName("id_transport_type")
+ .HasComment("Id типа доставки уведомления");
+
+ b.Property("IdUser")
+ .HasColumnType("integer")
+ .HasColumnName("id_user")
+ .HasComment("Id получателя");
+
+ b.Property("Message")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("message")
+ .HasComment("Сообщение уведомления");
+
+ b.Property("ReadDate")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("read_date")
+ .HasComment("Дата прочтения уведомления");
+
+ b.Property("RegistrationDate")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("registration_date")
+ .HasComment("Дата регистрации уведомления");
+
+ b.Property("SentDate")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("sent_date")
+ .HasComment("Дата отправки уведомления");
+
+ b.Property("Title")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("title")
+ .HasComment("Заголовок уведомления");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IdNotificationCategory");
+
+ b.HasIndex("IdUser");
+
+ b.ToTable("t_notification");
+
+ b.HasComment("Уведомления");
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.NotificationCategory", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("name");
+
+ b.HasKey("Id");
+
+ b.ToTable("t_notification_category");
+
+ b.HasComment("Категории уведомлений");
+
+ b.HasData(
+ new
+ {
+ Id = 1,
+ Name = "Системные уведомления"
+ });
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.OperationValue", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id")
+ .HasComment("Идентификатор");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("DepthEnd")
+ .HasColumnType("double precision")
+ .HasColumnName("depth_end")
+ .HasComment("Конечная глубина");
+
+ b.Property("DepthStart")
+ .HasColumnType("double precision")
+ .HasColumnName("depth_start")
+ .HasComment("Старотовая глубина");
+
+ b.Property("IdOperationCategory")
+ .HasColumnType("integer")
+ .HasColumnName("id_operation_category")
+ .HasComment("Ид категории операции");
+
+ b.Property("IdWell")
+ .HasColumnType("integer")
+ .HasColumnName("id_well")
+ .HasComment("Ид скважины");
+
+ b.Property("StandardValue")
+ .HasColumnType("double precision")
+ .HasColumnName("standard_value")
+ .HasComment("Нормативный показатель");
+
+ b.Property("TargetValue")
+ .HasColumnType("double precision")
+ .HasColumnName("target_value")
+ .HasComment("Целевой показатель");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IdOperationCategory");
+
+ b.HasIndex("IdWell");
+
+ b.ToTable("t_operationvalue");
+
+ b.HasComment("Целевые/нормативные показатели операции");
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.Permission", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Description")
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("description")
+ .HasComment("Краткое описание");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("name")
+ .HasComment("Название");
+
+ b.HasKey("Id");
+
+ b.ToTable("t_permission");
+
+ b.HasComment("Разрешения на доступ к данным");
+
+ b.HasData(
+ new
+ {
+ Id = 100,
+ Description = "Разрешение удалять админ. Кусты",
+ Name = "AdminCluster.delete"
+ },
+ new
+ {
+ Id = 101,
+ Description = "Разрешение редактировать админ. Кусты",
+ Name = "AdminCluster.edit"
+ },
+ new
+ {
+ Id = 102,
+ Description = "Разрешение просматривать админ. Кусты",
+ Name = "AdminCluster.get"
+ },
+ new
+ {
+ Id = 103,
+ Description = "Разрешение удалять админ. Компании",
+ Name = "AdminCompany.delete"
+ },
+ new
+ {
+ Id = 104,
+ Description = "Разрешение редактировать админ. Компании",
+ Name = "AdminCompany.edit"
+ },
+ new
+ {
+ Id = 105,
+ Description = "Разрешение просматривать админ. Компании",
+ Name = "AdminCompany.get"
+ },
+ new
+ {
+ Id = 106,
+ Description = "Разрешение удалять админ. Типы компаний",
+ Name = "AdminCompanyType.delete"
+ },
+ new
+ {
+ Id = 107,
+ Description = "Разрешение редактировать админ. Типы компаний",
+ Name = "AdminCompanyType.edit"
+ },
+ new
+ {
+ Id = 108,
+ Description = "Разрешение просматривать админ. Типы компаний",
+ Name = "AdminCompanyType.get"
+ },
+ new
+ {
+ Id = 109,
+ Description = "Разрешение удалять админ. Месторождения",
+ Name = "AdminDeposit.delete"
+ },
+ new
+ {
+ Id = 110,
+ Description = "Разрешение редактировать админ. Месторождения",
+ Name = "AdminDeposit.edit"
+ },
+ new
+ {
+ Id = 111,
+ Description = "Разрешение просматривать админ. Месторождения",
+ Name = "AdminDeposit.get"
+ },
+ new
+ {
+ Id = 112,
+ Description = "Разрешение удалять админ. Разрешения",
+ Name = "AdminPermission.delete"
+ },
+ new
+ {
+ Id = 113,
+ Description = "Разрешение редактировать админ. Разрешения",
+ Name = "AdminPermission.edit"
+ },
+ new
+ {
+ Id = 114,
+ Description = "Разрешение просматривать админ. Разрешения",
+ Name = "AdminPermission.get"
+ },
+ new
+ {
+ Id = 115,
+ Description = "Разрешение удалять админ. Телеметрию",
+ Name = "AdminTelemetry.delete"
+ },
+ new
+ {
+ Id = 116,
+ Description = "Разрешение редактировать админ. Телеметрию",
+ Name = "AdminTelemetry.edit"
+ },
+ new
+ {
+ Id = 117,
+ Description = "Разрешение просматривать админ. Телеметрию",
+ Name = "AdminTelemetry.get"
+ },
+ new
+ {
+ Id = 118,
+ Description = "Разрешение удалять админ. Пользователей",
+ Name = "AdminUser.delete"
+ },
+ new
+ {
+ Id = 119,
+ Description = "Разрешение редактировать админ. Пользователей",
+ Name = "AdminUser.edit"
+ },
+ new
+ {
+ Id = 120,
+ Description = "Разрешение просматривать админ. Пользователей",
+ Name = "AdminUser.get"
+ },
+ new
+ {
+ Id = 121,
+ Description = "Разрешение удалять админ. Роли пользователей",
+ Name = "AdminUserRole.delete"
+ },
+ new
+ {
+ Id = 122,
+ Description = "Разрешение редактировать админ. Роли пользователей",
+ Name = "AdminUserRole.edit"
+ },
+ new
+ {
+ Id = 123,
+ Description = "Разрешение просматривать админ. Роли пользователей",
+ Name = "AdminUserRole.get"
+ },
+ new
+ {
+ Id = 124,
+ Description = "Разрешение удалять админ. Скважины",
+ Name = "AdminWell.delete"
+ },
+ new
+ {
+ Id = 125,
+ Description = "Разрешение редактировать админ. Скважины",
+ Name = "AdminWell.edit"
+ },
+ new
+ {
+ Id = 126,
+ Description = "Разрешение просматривать админ. Скважины",
+ Name = "AdminWell.get"
+ },
+ new
+ {
+ Id = 127,
+ Description = "Разрешение удалять админ. Подсистемы",
+ Name = "AdminSubsytem.delete"
+ },
+ new
+ {
+ Id = 128,
+ Description = "Разрешение редактировать админ. Подсистемы",
+ Name = "AdminSubsytem.edit"
+ },
+ new
+ {
+ Id = 129,
+ Description = "Разрешение просматривать админ. Подсистемы",
+ Name = "AdminSubsytem.get"
+ },
+ new
+ {
+ Id = 200,
+ Description = "Разрешение редактировать 0",
+ Name = "Auth.edit"
+ },
+ new
+ {
+ Id = 201,
+ Description = "Разрешение просматривать 0",
+ Name = "Auth.get"
+ },
+ new
+ {
+ Id = 202,
+ Description = "Разрешение просматривать Кусты",
+ Name = "Cluster.get"
+ },
+ new
+ {
+ Id = 203,
+ Description = "Разрешение просматривать Месторождения",
+ Name = "Deposit.get"
+ },
+ new
+ {
+ Id = 204,
+ Description = "Разрешение удалять РТК",
+ Name = "DrillFlowChart.delete"
+ },
+ new
+ {
+ Id = 205,
+ Description = "Разрешение редактировать РТК",
+ Name = "DrillFlowChart.edit"
+ },
+ new
+ {
+ Id = 206,
+ Description = "Разрешение просматривать РТК",
+ Name = "DrillFlowChart.get"
+ },
+ new
+ {
+ Id = 207,
+ Description = "Разрешение удалять Программу бурения",
+ Name = "DrillingProgram.delete"
+ },
+ new
+ {
+ Id = 208,
+ Description = "Разрешение редактировать Программу бурения",
+ Name = "DrillingProgram.edit"
+ },
+ new
+ {
+ Id = 209,
+ Description = "Разрешение просматривать Программу бурения",
+ Name = "DrillingProgram.get"
+ },
+ new
+ {
+ Id = 210,
+ Description = "Разрешение удалять Режимы бурения",
+ Name = "DrillParams.delete"
+ },
+ new
+ {
+ Id = 211,
+ Description = "Разрешение редактировать Режимы бурения",
+ Name = "DrillParams.edit"
+ },
+ new
+ {
+ Id = 212,
+ Description = "Разрешение просматривать Режимы бурения",
+ Name = "DrillParams.get"
+ },
+ new
+ {
+ Id = 213,
+ Description = "Разрешение удалять Файлы",
+ Name = "File.delete"
+ },
+ new
+ {
+ Id = 214,
+ Description = "Разрешение редактировать Файлы",
+ Name = "File.edit"
+ },
+ new
+ {
+ Id = 215,
+ Description = "Разрешение просматривать Файлы",
+ Name = "File.get"
+ },
+ new
+ {
+ Id = 216,
+ Description = "Разрешение удалять Измерения",
+ Name = "Measure.delete"
+ },
+ new
+ {
+ Id = 217,
+ Description = "Разрешение редактировать Измерения",
+ Name = "Measure.edit"
+ },
+ new
+ {
+ Id = 218,
+ Description = "Разрешение просматривать Измерения",
+ Name = "Measure.get"
+ },
+ new
+ {
+ Id = 219,
+ Description = "Разрешение просматривать Сообщения телеметрии",
+ Name = "Message.get"
+ },
+ new
+ {
+ Id = 220,
+ Description = "Разрешение просматривать Статистику по операциям",
+ Name = "OperationStat.get"
+ },
+ new
+ {
+ Id = 221,
+ Description = "Разрешение редактировать Рапорта",
+ Name = "Report.edit"
+ },
+ new
+ {
+ Id = 222,
+ Description = "Разрешение просматривать Рапорта",
+ Name = "Report.get"
+ },
+ new
+ {
+ Id = 223,
+ Description = "Разрешение просматривать админ. Системная статистика",
+ Name = "RequestTracker.get"
+ },
+ new
+ {
+ Id = 224,
+ Description = "Разрешение удалять Рекомендации уставок",
+ Name = "Setpoints.delete"
+ },
+ new
+ {
+ Id = 225,
+ Description = "Разрешение редактировать Рекомендации уставок",
+ Name = "Setpoints.edit"
+ },
+ new
+ {
+ Id = 226,
+ Description = "Разрешение просматривать Рекомендации уставок",
+ Name = "Setpoints.get"
+ },
+ new
+ {
+ Id = 227,
+ Description = "Разрешение редактировать Телеметрии",
+ Name = "Telemetry.edit"
+ },
+ new
+ {
+ Id = 228,
+ Description = "Разрешение просматривать Анализ телеметрии",
+ Name = "TelemetryAnalytics.get"
+ },
+ new
+ {
+ Id = 229,
+ Description = "Разрешение редактировать Данные телеметрии по САУБ",
+ Name = "TelemetryDataSaub.edit"
+ },
+ new
+ {
+ Id = 230,
+ Description = "Разрешение просматривать Данные телеметрии по САУБ",
+ Name = "TelemetryDataSaub.get"
+ },
+ new
+ {
+ Id = 231,
+ Description = "Разрешение редактировать Данные телеметрии по SpinMaster",
+ Name = "TelemetryDataSpin.edit"
+ },
+ new
+ {
+ Id = 232,
+ Description = "Разрешение просматривать Данные телеметрии по SpinMaster",
+ Name = "TelemetryDataSpin.get"
+ },
+ new
+ {
+ Id = 233,
+ Description = "Разрешение редактировать Скважины",
+ Name = "Well.edit"
+ },
+ new
+ {
+ Id = 234,
+ Description = "Разрешение просматривать Скважины",
+ Name = "Well.get"
+ },
+ new
+ {
+ Id = 235,
+ Description = "Разрешение редактировать Композитные скважины",
+ Name = "WellComposite.edit"
+ },
+ new
+ {
+ Id = 236,
+ Description = "Разрешение просматривать Композитные скважины",
+ Name = "WellComposite.get"
+ },
+ new
+ {
+ Id = 237,
+ Description = "Разрешение удалять Операции по скважинам",
+ Name = "WellOperation.delete"
+ },
+ new
+ {
+ Id = 238,
+ Description = "Разрешение редактировать Операции по скважинам",
+ Name = "WellOperation.edit"
+ },
+ new
+ {
+ Id = 239,
+ Description = "Разрешение просматривать Операции по скважинам",
+ Name = "WellOperation.get"
+ },
+ new
+ {
+ Id = 240,
+ Description = "Разрешение редактировать Файлы категории 1 (Растворный сервис)",
+ Name = "File.edit1"
+ },
+ new
+ {
+ Id = 241,
+ Description = "Разрешение редактировать Файлы категории 2 (Цементирование)",
+ Name = "File.edit2"
+ },
+ new
+ {
+ Id = 242,
+ Description = "Разрешение редактировать Файлы категории 3 (ННБ)",
+ Name = "File.edit3"
+ },
+ new
+ {
+ Id = 243,
+ Description = "Разрешение редактировать Файлы категории 4 (ГТИ)",
+ Name = "File.edit4"
+ },
+ new
+ {
+ Id = 244,
+ Description = "Разрешение редактировать Файлы категории 5 (Документы по скважине)",
+ Name = "File.edit5"
+ },
+ new
+ {
+ Id = 245,
+ Description = "Разрешение редактировать Файлы категории 6 (Супервайзер)",
+ Name = "File.edit6"
+ },
+ new
+ {
+ Id = 246,
+ Description = "Разрешение редактировать Файлы категории 7 (Мастер)",
+ Name = "File.edit7"
+ },
+ new
+ {
+ Id = 247,
+ Description = "Разрешение редактировать Файлы категории 8 (Долотный сервис)",
+ Name = "File.edit8"
+ },
+ new
+ {
+ Id = 248,
+ Description = "Разрешение редактировать Файлы категории 9 (Буровой подрядчик)",
+ Name = "File.edit9"
+ },
+ new
+ {
+ Id = 249,
+ Description = "Разрешение редактировать Файлы категории 10 (Сервис по заканчиванию скважины)",
+ Name = "File.edit10"
+ },
+ new
+ {
+ Id = 250,
+ Description = "Разрешение редактировать Файлы категории 11 (Рапорт)",
+ Name = "File.edit11"
+ },
+ new
+ {
+ Id = 251,
+ Description = "Разрешение редактировать Файлы категории 12",
+ Name = "File.edit12"
+ },
+ new
+ {
+ Id = 252,
+ Description = "Разрешение редактировать Файлы категории 12",
+ Name = "File.edit13"
+ },
+ new
+ {
+ Id = 253,
+ Description = "Разрешение редактировать Файлы категории 13",
+ Name = "File.edit14"
+ },
+ new
+ {
+ Id = 254,
+ Description = "Разрешение редактировать Файлы категории 14",
+ Name = "File.edit15"
+ },
+ new
+ {
+ Id = 255,
+ Description = "Разрешение редактировать Файлы категории 15",
+ Name = "File.edit16"
+ },
+ new
+ {
+ Id = 256,
+ Description = "Разрешение редактировать Файлы категории 16",
+ Name = "File.edit17"
+ },
+ new
+ {
+ Id = 257,
+ Description = "Разрешение редактировать Файлы категории 17",
+ Name = "File.edit18"
+ },
+ new
+ {
+ Id = 258,
+ Description = "Разрешение редактировать Файлы категории 18",
+ Name = "File.edit19"
+ },
+ new
+ {
+ Id = 259,
+ Description = "Разрешение редактировать Файлы категории 19",
+ Name = "File.edit20"
+ },
+ new
+ {
+ Id = 260,
+ Description = "Разрешение редактировать Файлы категории 20",
+ Name = "File.edit21"
+ },
+ new
+ {
+ Id = 261,
+ Description = "Разрешение редактировать Файлы категории 21",
+ Name = "File.edit22"
+ },
+ new
+ {
+ Id = 262,
+ Description = "Разрешение редактировать Файлы категории 22",
+ Name = "File.edit23"
+ },
+ new
+ {
+ Id = 263,
+ Description = "Разрешение редактировать Файлы категории 23",
+ Name = "File.edit24"
+ },
+ new
+ {
+ Id = 264,
+ Description = "Разрешение редактировать Файлы категории 24",
+ Name = "File.edit25"
+ },
+ new
+ {
+ Id = 265,
+ Description = "Разрешение редактировать Файлы категории 25",
+ Name = "File.edit26"
+ },
+ new
+ {
+ Id = 266,
+ Description = "Разрешение редактировать Файлы категории 26",
+ Name = "File.edit27"
+ },
+ new
+ {
+ Id = 267,
+ Description = "Разрешение редактировать Файлы категории 27",
+ Name = "File.edit28"
+ },
+ new
+ {
+ Id = 268,
+ Description = "Разрешение редактировать Файлы категории 28",
+ Name = "File.edit29"
+ },
+ new
+ {
+ Id = 269,
+ Description = "Разрешение редактировать Файлы категории 29",
+ Name = "File.edit30"
+ },
+ new
+ {
+ Id = 380,
+ Description = "Разрешение просматривать список бурильщиков",
+ Name = "Driller.get"
+ },
+ new
+ {
+ Id = 381,
+ Description = "Разрешение редактировать бурильщика",
+ Name = "Driller.edit"
+ },
+ new
+ {
+ Id = 382,
+ Description = "Разрешение удалять бурильщик",
+ Name = "Driller.delete"
+ },
+ new
+ {
+ Id = 383,
+ Description = "Разрешение просматривать графики бурильщиков",
+ Name = "Schedule.get"
+ },
+ new
+ {
+ Id = 384,
+ Description = "Разрешение редактировать график бурильщика",
+ Name = "Schedule.edit"
+ },
+ new
+ {
+ Id = 385,
+ Description = "Разрешение удалять график бурильщика",
+ Name = "Schedule.delete"
+ },
+ new
+ {
+ Id = 386,
+ Description = "Разрешение просматривать суточный рапорт",
+ Name = "DailyReport.get"
+ },
+ new
+ {
+ Id = 387,
+ Description = "Разрешение редактировать суточный рапорт",
+ Name = "DailyReport.edit"
+ },
+ new
+ {
+ Id = 388,
+ Description = "Разрешение просматривать авто. определенные операции",
+ Name = "DetectedOperation.get"
+ },
+ new
+ {
+ Id = 389,
+ Description = "Разрешение просматривать целевые значения",
+ Name = "OperationValue.get"
+ },
+ new
+ {
+ Id = 390,
+ Description = "Разрешение редактировать целевые значения",
+ Name = "OperationValue.edit"
+ },
+ new
+ {
+ Id = 391,
+ Description = "Разрешение удалять целевые значения",
+ Name = "OperationValue.delete"
+ },
+ new
+ {
+ Id = 400,
+ Description = "Разрешение просматривать инфо по wits параметрам",
+ Name = "WitsInfo.get"
+ },
+ new
+ {
+ Id = 401,
+ Description = "Разрешение просматривать WITS record 1",
+ Name = "WitsRecord1.get"
+ },
+ new
+ {
+ Id = 407,
+ Description = "Разрешение просматривать WITS record 7",
+ Name = "WitsRecord7.get"
+ },
+ new
+ {
+ Id = 408,
+ Description = "Разрешение просматривать WITS record 8",
+ Name = "WitsRecord8.get"
+ },
+ new
+ {
+ Id = 450,
+ Description = "Разрешение просматривать WITS record 50",
+ Name = "WitsRecord50.get"
+ },
+ new
+ {
+ Id = 460,
+ Description = "Разрешение просматривать WITS record 60",
+ Name = "WitsRecord60.get"
+ },
+ new
+ {
+ Id = 461,
+ Description = "Разрешение просматривать WITS record 61",
+ Name = "WitsRecord61.get"
+ },
+ new
+ {
+ Id = 500,
+ Description = "Разрешение удалять Категорий документов файлов",
+ Name = "FileCategory.delete"
+ },
+ new
+ {
+ Id = 501,
+ Description = "Разрешение редактировать Категорий документов файлов",
+ Name = "FileCategory.edit"
+ },
+ new
+ {
+ Id = 502,
+ Description = "Разрешение просматривать Категорий документов файлов",
+ Name = "FileCategory.get"
+ },
+ new
+ {
+ Id = 503,
+ Description = "Разрешение удалять Дело скважины",
+ Name = "WellFinalDocuments.delete"
+ },
+ new
+ {
+ Id = 504,
+ Description = "Разрешение редактировать Дело скважины",
+ Name = "WellFinalDocuments.edit"
+ },
+ new
+ {
+ Id = 505,
+ Description = "Разрешение просматривать Дело скважины",
+ Name = "WellFinalDocuments.get"
+ },
+ new
+ {
+ Id = 506,
+ Description = "Разрешение редактировать ответственных за загрузку файла Дело скважины",
+ Name = "WellFinalDocuments.editPublisher"
+ },
+ new
+ {
+ Id = 507,
+ Description = "Разрешение просматривать наработка талевого каната",
+ Name = "TelemetryWirelineRunOut.get"
+ },
+ new
+ {
+ Id = 510,
+ Description = "Разрешение просматривать плановая траектория",
+ Name = "PlannedTrajectory.get"
+ },
+ new
+ {
+ Id = 511,
+ Description = "Разрешение редактировать плановая траектория",
+ Name = "PlannedTrajectory.edit"
+ },
+ new
+ {
+ Id = 512,
+ Description = "Разрешение удалять плановая траектория",
+ Name = "PlannedTrajectory.delete"
+ },
+ new
+ {
+ Id = 513,
+ Description = "Разрешение просматривать РТК",
+ Name = "ProcessMap.get"
+ },
+ new
+ {
+ Id = 514,
+ Description = "Разрешение редактировать РТК",
+ Name = "ProcessMap.edit"
+ },
+ new
+ {
+ Id = 515,
+ Description = "Разрешение удалять РТК",
+ Name = "ProcessMap.delete"
+ },
+ new
+ {
+ Id = 516,
+ Description = "Разрешение просматривать статистику вопросов",
+ Name = "FaqStatistics.get"
+ },
+ new
+ {
+ Id = 517,
+ Description = "Разрешение редактировать вопрос",
+ Name = "FaqStatistics.edit"
+ },
+ new
+ {
+ Id = 518,
+ Description = "Разрешение удалять вопрос",
+ Name = "FaqStatistics.delete"
+ },
+ new
+ {
+ Id = 519,
+ Description = "Разрешение просматривать список контактов",
+ Name = "WellContact.get"
+ },
+ new
+ {
+ Id = 520,
+ Description = "Разрешение редактировать список контактов",
+ Name = "WellContact.edit"
+ },
+ new
+ {
+ Id = 521,
+ Description = "Разрешить создание справок по страницам",
+ Name = "HelpPage.edit"
+ },
+ new
+ {
+ Id = 522,
+ Description = "Разрешить удаление всех настроек пользователя",
+ Name = "UserSettings.delete"
+ },
+ new
+ {
+ Id = 523,
+ Description = "Разрешить редактирование инструкций",
+ Name = "Manual.edit"
+ },
+ new
+ {
+ Id = 524,
+ Description = "Разрешить получение инструкций",
+ Name = "Manual.get"
+ },
+ new
+ {
+ Id = 525,
+ Description = "Разрешение на редактирование РТК у завершенной скважины",
+ Name = "ProcessMap.editCompletedWell"
+ },
+ new
+ {
+ Id = 526,
+ Description = "Разрешение на редактирование операций у завершенной скважины",
+ Name = "WellOperation.editCompletedWell"
+ },
+ new
+ {
+ Id = 527,
+ Description = "Разрешение на удаление инструкций",
+ Name = "Manual.delete"
+ });
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.PlannedTrajectory", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("AzimuthGeo")
+ .HasColumnType("double precision")
+ .HasColumnName("azimuth_geo")
+ .HasComment("Азимут Географ.");
+
+ b.Property("AzimuthMagnetic")
+ .HasColumnType("double precision")
+ .HasColumnName("azimuth_magnetic")
+ .HasComment("Азимут Магнитный");
+
+ b.Property("Comment")
+ .HasColumnType("text")
+ .HasColumnName("comment")
+ .HasComment("Комментарии");
+
+ b.Property("IdUser")
+ .HasColumnType("integer")
+ .HasColumnName("id_user")
+ .HasComment("ID пользователя который внес/изменил запись");
+
+ b.Property("IdWell")
+ .HasColumnType("integer")
+ .HasColumnName("id_well")
+ .HasComment("ID скважины");
+
+ b.Property("Radius")
+ .HasColumnType("double precision")
+ .HasColumnName("radius")
+ .HasComment("Радиус цели");
+
+ b.Property("UpdateDate")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("update_date")
+ .HasComment("Дата загрузки траектории");
+
+ b.Property("VerticalDepth")
+ .HasColumnType("double precision")
+ .HasColumnName("vertical_depth")
+ .HasComment("Глубина вертикальная");
+
+ b.Property("WellboreDepth")
+ .HasColumnType("double precision")
+ .HasColumnName("wellbore_depth")
+ .HasComment("Глубина по стволу");
+
+ b.Property("ZenithAngle")
+ .HasColumnType("double precision")
+ .HasColumnName("zenith_angle")
+ .HasComment("Угол зенитный");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IdUser");
+
+ b.HasIndex("IdWell");
+
+ b.ToTable("t_planned_trajectory");
+
+ b.HasComment("Загрузка плановой траектории");
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.ProcessMap", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("AxialLoadLimitMax")
+ .HasColumnType("double precision")
+ .HasColumnName("axial_load_limit_max")
+ .HasComment("Нагрузка, допустимый максимум");
+
+ b.Property("AxialLoadPlan")
+ .HasColumnType("double precision")
+ .HasColumnName("axial_load_plan")
+ .HasComment("Нагрузка, план");
+
+ b.Property("DepthEnd")
+ .HasColumnType("double precision")
+ .HasColumnName("depth_end")
+ .HasComment("Глубина окончания интервала");
+
+ b.Property("DepthStart")
+ .HasColumnType("double precision")
+ .HasColumnName("depth_start")
+ .HasComment("Стартовая глубина");
+
+ b.Property("FlowLimitMax")
+ .HasColumnType("double precision")
+ .HasColumnName("flow_limit_max")
+ .HasComment("Расход, допустимый максимум");
+
+ b.Property("FlowPlan")
+ .HasColumnType("double precision")
+ .HasColumnName("flow_plan")
+ .HasComment("Расход, план");
+
+ b.Property("IdMode")
+ .HasColumnType("integer")
+ .HasColumnName("id_mode")
+ .HasComment("Id режима (1- ротор, 2 слайд)");
+
+ b.Property("IdUser")
+ .HasColumnType("integer")
+ .HasColumnName("id_user")
+ .HasComment("Id пользователя");
+
+ b.Property("IdWell")
+ .HasColumnType("integer")
+ .HasColumnName("well_id")
+ .HasComment("Id скважины");
+
+ b.Property("IdWellSectionType")
+ .HasColumnType("integer")
+ .HasColumnName("id_wellsection_type")
+ .HasComment("Тип секции");
+
+ b.Property("LastUpdate")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("last_update")
+ .HasComment("Дата последнего изменения");
+
+ b.Property("PressureLimitMax")
+ .HasColumnType("double precision")
+ .HasColumnName("pressure_limit_max")
+ .HasComment("Перепад давления, допустимый максимум");
+
+ b.Property("PressurePlan")
+ .HasColumnType("double precision")
+ .HasColumnName("pressure_plan")
+ .HasComment("Перепад давления, план");
+
+ b.Property("RopPlan")
+ .HasColumnType("double precision")
+ .HasColumnName("rop_plan")
+ .HasComment("Плановая механическая скорость, м/ч");
+
+ b.Property("TopDriveSpeedLimitMax")
+ .HasColumnType("double precision")
+ .HasColumnName("top_drive_speed_limit_max")
+ .HasComment("Обороты на ВСП, допустимый максимум");
+
+ b.Property("TopDriveSpeedPlan")
+ .HasColumnType("double precision")
+ .HasColumnName("top_drive_speed_plan")
+ .HasComment("Обороты на ВСП, план");
+
+ b.Property("TopDriveTorqueLimitMax")
+ .HasColumnType("double precision")
+ .HasColumnName("top_drive_torque_limit_max")
+ .HasComment("Момент на ВСП, допустимый максимум");
+
+ b.Property("TopDriveTorquePlan")
+ .HasColumnType("double precision")
+ .HasColumnName("top_drive_torque_plan")
+ .HasComment("Момент на ВСП, план");
+
+ b.Property("UsageSaub")
+ .HasColumnType("double precision")
+ .HasColumnName("usage_saub")
+ .HasComment("Плановый процент использования АКБ");
+
+ b.Property("UsageSpin")
+ .HasColumnType("double precision")
+ .HasColumnName("usage_spin")
+ .HasComment("Плановый процент использования spin master");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IdWell");
+
+ b.HasIndex("IdWellSectionType");
+
+ b.ToTable("t_process_map");
+
+ b.HasComment("Операции по скважине – РТК");
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.ProcessMapWellboreDevelopment", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Comment")
+ .HasColumnType("text")
+ .HasColumnName("comment")
+ .HasComment("Комментарий");
+
+ b.Property("DepthEnd")
+ .HasColumnType("double precision")
+ .HasColumnName("depth_end")
+ .HasComment("Окончательная глубина, м");
+
+ b.Property("DepthStart")
+ .HasColumnType("double precision")
+ .HasColumnName("depth_start")
+ .HasComment("Стартовая глубина, м");
+
+ b.Property("IdUser")
+ .HasColumnType("integer")
+ .HasColumnName("id_user")
+ .HasComment("Id пользователя");
+
+ b.Property("IdWell")
+ .HasColumnType("integer")
+ .HasColumnName("id_well")
+ .HasComment("Id скважины");
+
+ b.Property("LastUpdate")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("last_update")
+ .HasComment("Дата последнего изменения");
+
+ b.Property("Pressure")
+ .HasColumnType("double precision")
+ .HasColumnName("pressure")
+ .HasComment("Давление, атм");
+
+ b.Property("Repeats")
+ .HasColumnType("double precision")
+ .HasColumnName("repeats")
+ .HasComment("Количество повторений");
+
+ b.Property("SetpointDrag")
+ .HasColumnType("double precision")
+ .HasColumnName("setpoint_drag")
+ .HasComment("Уставка зятяжки, т");
+
+ b.Property("SetpointTight")
+ .HasColumnType("double precision")
+ .HasColumnName("setpoint_tight")
+ .HasComment("Уставка посадки, т");
+
+ b.Property("SpeedDownward")
+ .HasColumnType("double precision")
+ .HasColumnName("speed_downward")
+ .HasComment("Скорость спуска, м/ч");
+
+ b.Property("SpeedUpward")
+ .HasColumnType("double precision")
+ .HasColumnName("speed_upward")
+ .HasComment("Скорость подъёма, м/ч");
+
+ b.Property("SpinDownward")
+ .HasColumnType("double precision")
+ .HasColumnName("spin_downward")
+ .HasComment("Вращение при движении вниз, об/мин");
+
+ b.Property("SpinUpward")
+ .HasColumnType("double precision")
+ .HasColumnName("spin_upward")
+ .HasComment("Вращение при движении вверх, об/мин");
+
+ b.Property("Torque")
+ .HasColumnType("double precision")
+ .HasColumnName("torque")
+ .HasComment("Момент, кН*м");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IdUser");
+
+ b.HasIndex("IdWell");
+
+ b.ToTable("t_process_map_wellbore_development");
+
+ b.HasComment("РТК план проработка скважины");
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b =>
+ {
+ b.Property("IdCompany")
+ .HasColumnType("integer")
+ .HasColumnName("id_company");
+
+ b.Property("IdWell")
+ .HasColumnType("integer")
+ .HasColumnName("id_well");
+
+ b.HasKey("IdCompany", "IdWell");
+
+ b.HasIndex("IdWell");
+
+ b.ToTable("t_relation_company_well");
+
+ b.HasComment("отношение скважин и компаний");
+ });
+
+ modelBuilder.Entity("AsbCloudDb.Model.RelationContactWell", b =>
+ {
+ b.Property