diff --git a/AsbCloudApp/Comparators/ComparerIId.cs b/AsbCloudApp/Comparators/ComparerIId.cs index 4c02af80..b3fb0e15 100644 --- a/AsbCloudApp/Comparators/ComparerIId.cs +++ b/AsbCloudApp/Comparators/ComparerIId.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; diff --git a/AsbCloudApp/Comparators/TelemetryUserDtoComparer.cs b/AsbCloudApp/Comparators/TelemetryUserDtoComparer.cs index 2c8035ed..d993cc3d 100644 --- a/AsbCloudApp/Comparators/TelemetryUserDtoComparer.cs +++ b/AsbCloudApp/Comparators/TelemetryUserDtoComparer.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.SAUB; +using AsbCloudApp.Data.SAUB; using System.Collections.Generic; namespace AsbCloudApp.Comparators diff --git a/AsbCloudApp/CyclicArray.cs b/AsbCloudApp/CyclicArray.cs index 384b0fdd..b9a87956 100644 --- a/AsbCloudApp/CyclicArray.cs +++ b/AsbCloudApp/CyclicArray.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; namespace System.Collections.Generic { diff --git a/AsbCloudApp/Data/AuthDto.cs b/AsbCloudApp/Data/AuthDto.cs index 9369e4c1..f2e2c20d 100644 --- a/AsbCloudApp/Data/AuthDto.cs +++ b/AsbCloudApp/Data/AuthDto.cs @@ -1,4 +1,4 @@ -using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations; namespace AsbCloudApp.Data { diff --git a/AsbCloudApp/Data/BackgroundWorkDto.cs b/AsbCloudApp/Data/BackgroundWorkDto.cs index 500f818a..d0e15b50 100644 --- a/AsbCloudApp/Data/BackgroundWorkDto.cs +++ b/AsbCloudApp/Data/BackgroundWorkDto.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Diagnostics; namespace AsbCloudApp.Data diff --git a/AsbCloudApp/Data/ChangeLogAbstract.cs b/AsbCloudApp/Data/ChangeLogDto.cs similarity index 91% rename from AsbCloudApp/Data/ChangeLogAbstract.cs rename to AsbCloudApp/Data/ChangeLogDto.cs index 9e34c948..503e156d 100644 --- a/AsbCloudApp/Data/ChangeLogAbstract.cs +++ b/AsbCloudApp/Data/ChangeLogDto.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.User; +using AsbCloudApp.Data.User; using System; namespace AsbCloudApp.Data; @@ -6,12 +6,12 @@ namespace AsbCloudApp.Data; /// /// Часть записи описывающая изменение /// -public abstract class ChangeLogAbstract +public class ChangeLogDto where T: IId { /// - /// ИД записи + /// Запись /// - public int Id { get; set; } + public required T Item { get; set; } /// /// Автор diff --git a/AsbCloudApp/Data/ClusterDto.cs b/AsbCloudApp/Data/ClusterDto.cs index 38dd282f..80eedfe4 100644 --- a/AsbCloudApp/Data/ClusterDto.cs +++ b/AsbCloudApp/Data/ClusterDto.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; diff --git a/AsbCloudApp/Data/ClusterRopStatDto.cs b/AsbCloudApp/Data/ClusterRopStatDto.cs index c941c082..386614dc 100644 --- a/AsbCloudApp/Data/ClusterRopStatDto.cs +++ b/AsbCloudApp/Data/ClusterRopStatDto.cs @@ -3,18 +3,18 @@ using System.ComponentModel.DataAnnotations; namespace AsbCloudApp.Data { /// - /// () + /// Статистика механической скорости проходки (МСП) по кусту /// public class ClusterRopStatDto { /// - /// . + /// Макс. механическая скорость проходки по кусту /// [Required] public double RopMax { get; set; } /// - /// + /// Средняя механическая скорость проходки по кусту /// [Required] public double RopAverage { get; set; } diff --git a/AsbCloudApp/Data/CompanyDto.cs b/AsbCloudApp/Data/CompanyDto.cs index f394e40e..84ac8cb6 100644 --- a/AsbCloudApp/Data/CompanyDto.cs +++ b/AsbCloudApp/Data/CompanyDto.cs @@ -1,4 +1,4 @@ -using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations; namespace AsbCloudApp.Data { diff --git a/AsbCloudApp/Data/CompanyTypeDto.cs b/AsbCloudApp/Data/CompanyTypeDto.cs index dc29e85e..b543a1ae 100644 --- a/AsbCloudApp/Data/CompanyTypeDto.cs +++ b/AsbCloudApp/Data/CompanyTypeDto.cs @@ -1,4 +1,4 @@ -using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations; namespace AsbCloudApp.Data { diff --git a/AsbCloudApp/Data/DailyReport/Blocks/ProcessMapWellDrillingRecordDto.cs b/AsbCloudApp/Data/DailyReport/Blocks/ProcessMapWellDrillingRecordDto.cs index b5c85244..b2cf8345 100644 --- a/AsbCloudApp/Data/DailyReport/Blocks/ProcessMapWellDrillingRecordDto.cs +++ b/AsbCloudApp/Data/DailyReport/Blocks/ProcessMapWellDrillingRecordDto.cs @@ -7,22 +7,22 @@ namespace AsbCloudApp.Data.DailyReport.Blocks; /// public class ProcessMapWellDrillingRecordDto { - /// - /// Режим бурения - /// - [Required] - public string DrillingMode { get; set; } = null!; + /// + /// Режим бурения + /// + [Required] + public string DrillingMode { get; set; } = null!; /// /// Мех. скорость /// [Required] public PlanFactDto Rop { get; set; } = new(); - - /// - /// Глубина ствола - /// - public double? WellBoreDepth { get; set; } + + /// + /// Глубина ствола + /// + public double? WellBoreDepth { get; set; } /// /// Часы бурения diff --git a/AsbCloudApp/Data/DailyReport/Blocks/ScheduleRecordDto.cs b/AsbCloudApp/Data/DailyReport/Blocks/ScheduleRecordDto.cs index 91f11af4..72c9045f 100644 --- a/AsbCloudApp/Data/DailyReport/Blocks/ScheduleRecordDto.cs +++ b/AsbCloudApp/Data/DailyReport/Blocks/ScheduleRecordDto.cs @@ -5,28 +5,28 @@ namespace AsbCloudApp.Data.DailyReport.Blocks; /// public class ScheduleRecordDto { - /// - /// Начало смены - /// - public TimeDto? ShiftStart { get; set; } + /// + /// Начало смены + /// + public TimeDto? ShiftStart { get; set; } - /// - /// Конец смены - /// - public TimeDto? ShiftEnd { get; set; } + /// + /// Конец смены + /// + public TimeDto? ShiftEnd { get; set; } - /// - /// Имя бурильщика - /// - public string? Name { get; set; } + /// + /// Имя бурильщика + /// + public string? Name { get; set; } - /// - /// Фамилия бурильщика - /// - public string? Surname { get; set; } + /// + /// Фамилия бурильщика + /// + public string? Surname { get; set; } - /// - /// Отчество бурильщика - /// - public string? Patronymic { get; set; } + /// + /// Отчество бурильщика + /// + public string? Patronymic { get; set; } } \ No newline at end of file diff --git a/AsbCloudApp/Data/DailyReport/Blocks/Sign/SignBlockDto.cs b/AsbCloudApp/Data/DailyReport/Blocks/Sign/SignBlockDto.cs index d425f360..f35cd0cb 100644 --- a/AsbCloudApp/Data/DailyReport/Blocks/Sign/SignBlockDto.cs +++ b/AsbCloudApp/Data/DailyReport/Blocks/Sign/SignBlockDto.cs @@ -5,13 +5,13 @@ namespace AsbCloudApp.Data.DailyReport.Blocks.Sign; /// public class SignBlockDto : ItemInfoDto { - /// - /// Подпись мастера буровой - /// - public SignRecordDto? DrillingMaster { get; set; } + /// + /// Подпись мастера буровой + /// + public SignRecordDto? DrillingMaster { get; set; } - /// - /// Подпись супервайзера - /// - public SignRecordDto? Supervisor { get; set; } + /// + /// Подпись супервайзера + /// + public SignRecordDto? Supervisor { 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 b071a2fb..01475d70 100644 --- a/AsbCloudApp/Data/DailyReport/Blocks/Sign/SignRecordDto.cs +++ b/AsbCloudApp/Data/DailyReport/Blocks/Sign/SignRecordDto.cs @@ -7,11 +7,11 @@ namespace AsbCloudApp.Data.DailyReport.Blocks.Sign; /// public class SignRecordDto { - /// - /// Имя - /// - [Required] - public string Name { get; set; } = null!; + /// + /// Имя + /// + [Required] + public string Name { get; set; } = null!; /// /// Фамилия @@ -19,14 +19,14 @@ public class SignRecordDto [Required] public string Surname { get; set; } = null!; - /// - /// Отчество - /// - public string? Patronymic { get; set; } - - /// - public override string ToString() - { - return $"{Surname} {Name} {Patronymic}"; - } + /// + /// Отчество + /// + public string? Patronymic { get; set; } + + /// + public override string ToString() + { + return $"{Surname} {Name} {Patronymic}"; + } } \ No newline at end of file diff --git a/AsbCloudApp/Data/DailyReport/Blocks/Subsystems/SubsystemBlockDto.cs b/AsbCloudApp/Data/DailyReport/Blocks/Subsystems/SubsystemBlockDto.cs index 3e997cb5..5f4113ab 100644 --- a/AsbCloudApp/Data/DailyReport/Blocks/Subsystems/SubsystemBlockDto.cs +++ b/AsbCloudApp/Data/DailyReport/Blocks/Subsystems/SubsystemBlockDto.cs @@ -9,34 +9,34 @@ namespace AsbCloudApp.Data.DailyReport.Blocks.Subsystems; /// public class SubsystemBlockDto : ItemInfoDto { - /// - /// Длина ствола скважины - /// - public double? Wellbore { get; set; } + /// + /// Длина ствола скважины + /// + public double? Wellbore { get; set; } - /// - /// Кол-во замеров за сутки - /// - public double? MeasurementsPerDay { get; set; } + /// + /// Кол-во замеров за сутки + /// + public double? MeasurementsPerDay { get; set; } - /// - /// Общая плановая мех. скорость - /// - public double? TotalRopPlan { get; set; } - - /// - /// Отклонение по ГГД, сут - /// - public double? TvgLagDays { get; set; } + /// + /// Общая плановая мех. скорость + /// + public double? TotalRopPlan { get; set; } + + /// + /// Отклонение по ГГД, сут + /// + public double? TvgLagDays { get; set; } - /// - /// Рекомендации специалиста - /// - public string? Comment { get; set; } + /// + /// Рекомендации специалиста + /// + public string? Comment { get; set; } - /// - /// Подсистемы - /// - [Required] - public IEnumerable Subsystems { get; set; } = Enumerable.Empty(); + /// + /// Подсистемы + /// + [Required] + public IEnumerable Subsystems { get; set; } = Enumerable.Empty(); } \ No newline at end of file diff --git a/AsbCloudApp/Data/DailyReport/Blocks/Subsystems/SubsystemParametersDto.cs b/AsbCloudApp/Data/DailyReport/Blocks/Subsystems/SubsystemParametersDto.cs index e02d8714..2457f102 100644 --- a/AsbCloudApp/Data/DailyReport/Blocks/Subsystems/SubsystemParametersDto.cs +++ b/AsbCloudApp/Data/DailyReport/Blocks/Subsystems/SubsystemParametersDto.cs @@ -7,19 +7,19 @@ namespace AsbCloudApp.Data.DailyReport.Blocks.Subsystems; /// public class SubsystemParametersDto { - /// - /// Сумма изменения глубин при включенной подсистеме - /// - public double? SumDepthInterval { get; set; } - - /// - /// Наработка подсистемы - /// - public double? UsedTimeHours { get; set; } + /// + /// Сумма изменения глубин при включенной подсистеме + /// + public double? SumDepthInterval { get; set; } + + /// + /// Наработка подсистемы + /// + public double? UsedTimeHours { get; set; } - /// - /// Коэффициент использования - /// - [Range(0, 1)] - public double? KUsage { get; set; } + /// + /// Коэффициент использования + /// + [Range(0, 1)] + public double? KUsage { get; set; } } \ 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 99811775..aa16880c 100644 --- a/AsbCloudApp/Data/DailyReport/Blocks/Subsystems/SubsystemRecordDto.cs +++ b/AsbCloudApp/Data/DailyReport/Blocks/Subsystems/SubsystemRecordDto.cs @@ -7,19 +7,19 @@ namespace AsbCloudApp.Data.DailyReport.Blocks.Subsystems; /// public class SubsystemRecordDto { - /// - /// Название подсистемы - /// - [Required] - public string Name { get; set; } = null!; - - /// - /// Использование подсистемы за сутки - /// - public SubsystemParametersDto? UsagePerDay { get; set; } - - /// - /// Использование подсистемы за скважину - /// - public SubsystemParametersDto? UsagePerWell { get; set; } + /// + /// Название подсистемы + /// + [Required] + public string Name { get; set; } = null!; + + /// + /// Использование подсистемы за сутки + /// + public SubsystemParametersDto? UsagePerDay { get; set; } + + /// + /// Использование подсистемы за скважину + /// + public SubsystemParametersDto? UsagePerWell { get; set; } } \ No newline at end of file diff --git a/AsbCloudApp/Data/DailyReport/Blocks/TimeBalance/TimeBalanceBlockDto.cs b/AsbCloudApp/Data/DailyReport/Blocks/TimeBalance/TimeBalanceBlockDto.cs index f58ed0ac..d1a333e3 100644 --- a/AsbCloudApp/Data/DailyReport/Blocks/TimeBalance/TimeBalanceBlockDto.cs +++ b/AsbCloudApp/Data/DailyReport/Blocks/TimeBalance/TimeBalanceBlockDto.cs @@ -9,29 +9,29 @@ namespace AsbCloudApp.Data.DailyReport.Blocks.TimeBalance; /// public class TimeBalanceBlockDto : ItemInfoDto { - /// - /// Идентификатор секции - /// - [Range(1, int.MaxValue)] - public int IdSection { get; set; } - - /// - /// Название секции - /// - public string? SectionName { get; set; } - - /// - /// Проходка скважины - /// - public PlanFactDto WellDepth { get; set; } = new(); + /// + /// Идентификатор секции + /// + [Range(1, int.MaxValue)] + public int IdSection { get; set; } + + /// + /// Название секции + /// + public string? SectionName { get; set; } + + /// + /// Проходка скважины + /// + public PlanFactDto WellDepth { get; set; } = new(); - /// - /// Кол-во наращиваний за сутки - /// - public double? WellOperationSlipsTimeCount { get; set; } + /// + /// Кол-во наращиваний за сутки + /// + public double? WellOperationSlipsTimeCount { get; set; } - /// - /// Операции на скважине - /// - public IEnumerable WellOperations { get; set; } = Enumerable.Empty(); + /// + /// Операции на скважине + /// + public IEnumerable WellOperations { get; set; } = Enumerable.Empty(); } \ No newline at end of file diff --git a/AsbCloudApp/Data/DailyReport/Blocks/TimeBalance/TimeBalanceRecordDto.cs b/AsbCloudApp/Data/DailyReport/Blocks/TimeBalance/TimeBalanceRecordDto.cs index 5bdbec9a..9a7daf03 100644 --- a/AsbCloudApp/Data/DailyReport/Blocks/TimeBalance/TimeBalanceRecordDto.cs +++ b/AsbCloudApp/Data/DailyReport/Blocks/TimeBalance/TimeBalanceRecordDto.cs @@ -5,31 +5,31 @@ namespace AsbCloudApp.Data.DailyReport.Blocks.TimeBalance; /// public class TimeBalanceRecordDto { - /// - /// Мех. бурение - 1 - /// Снятие замера, ориентирование - 2 - /// Наращивание, выход на режим - 3 - /// Промывка, проработка - 4 - /// - public int IdWellOperation { get; set; } + /// + /// Мех. бурение - 1 + /// Снятие замера, ориентирование - 2 + /// Наращивание, выход на режим - 3 + /// Промывка, проработка - 4 + /// + public int IdWellOperation { get; set; } - /// - /// Продолжительность операции, ч - /// - public PlanFactDto DurationHours { get; set; } = new(); + /// + /// Продолжительность операции, ч + /// + public PlanFactDto DurationHours { get; set; } = new(); - /// - /// Отклонение за секцию - /// - public double? DrillingDeviationPerSection { get; set; } - - /// - /// Отклонение за сутки - /// - public double? DrillingDeviationPerDay { get; set; } - - /// - /// Причина отклонения - /// - public string? ReasonDeviation { get; set; } + /// + /// Отклонение за секцию + /// + public double? DrillingDeviationPerSection { get; set; } + + /// + /// Отклонение за сутки + /// + public double? DrillingDeviationPerDay { get; set; } + + /// + /// Причина отклонения + /// + public string? ReasonDeviation { get; set; } } \ No newline at end of file diff --git a/AsbCloudApp/Data/DailyReport/Blocks/TrajectoryBlockDto.cs b/AsbCloudApp/Data/DailyReport/Blocks/TrajectoryBlockDto.cs index 39e49b54..47255ace 100644 --- a/AsbCloudApp/Data/DailyReport/Blocks/TrajectoryBlockDto.cs +++ b/AsbCloudApp/Data/DailyReport/Blocks/TrajectoryBlockDto.cs @@ -5,23 +5,23 @@ namespace AsbCloudApp.Data.DailyReport.Blocks; /// public class TrajectoryBlockDto { - /// - /// Глубина по стволу - /// - public double? WellboreDepth { get; set; } - - /// - /// Глубина вертикальная - /// - public double? VerticalDepth { get; set; } - - /// - /// Угол зенитный - /// - public double? ZenithAngle { get; set; } + /// + /// Глубина по стволу + /// + public double? WellboreDepth { get; set; } + + /// + /// Глубина вертикальная + /// + public double? VerticalDepth { get; set; } + + /// + /// Угол зенитный + /// + public double? ZenithAngle { get; set; } - /// - /// Азимут Географ. - /// - public double? AzimuthGeo { get; set; } + /// + /// Азимут Географ. + /// + public double? AzimuthGeo { get; set; } } \ No newline at end of file diff --git a/AsbCloudApp/Data/DailyReport/Blocks/WellOperation/WellOperationBlockDto.cs b/AsbCloudApp/Data/DailyReport/Blocks/WellOperation/WellOperationBlockDto.cs index 1030a826..371a6a9a 100644 --- a/AsbCloudApp/Data/DailyReport/Blocks/WellOperation/WellOperationBlockDto.cs +++ b/AsbCloudApp/Data/DailyReport/Blocks/WellOperation/WellOperationBlockDto.cs @@ -13,11 +13,11 @@ public class WellOperationBlockDto /// Продолжительность бурения за секцию /// [Required] - public double SectionDrillingHours { get; set; } + public double SectionDrillingHours { get; set; } - /// - /// Операции проводимые на скважине - /// - [Required] - public IEnumerable WellOperations { get; set; } = Enumerable.Empty(); + /// + /// Операции проводимые на скважине + /// + [Required] + public IEnumerable WellOperations { get; set; } = Enumerable.Empty(); } \ No newline at end of file diff --git a/AsbCloudApp/Data/DailyReport/Blocks/WellOperation/WellOperationRecordDto.cs b/AsbCloudApp/Data/DailyReport/Blocks/WellOperation/WellOperationRecordDto.cs index 1d627282..a72b3021 100644 --- a/AsbCloudApp/Data/DailyReport/Blocks/WellOperation/WellOperationRecordDto.cs +++ b/AsbCloudApp/Data/DailyReport/Blocks/WellOperation/WellOperationRecordDto.cs @@ -5,13 +5,13 @@ namespace AsbCloudApp.Data.DailyReport.Blocks.WellOperation; /// public class WellOperationRecordDto { - /// - /// Название категории - /// - public string? CategoryName { get; set; } + /// + /// Название категории + /// + public string? CategoryName { get; set; } - /// - /// Продолжительность операции - /// - public double? DurationHours { get; set; } + /// + /// Продолжительность операции + /// + public double? DurationHours { get; set; } } \ No newline at end of file diff --git a/AsbCloudApp/Data/DailyReport/DailyReportDto.cs b/AsbCloudApp/Data/DailyReport/DailyReportDto.cs index c31dd73c..b651b628 100644 --- a/AsbCloudApp/Data/DailyReport/DailyReportDto.cs +++ b/AsbCloudApp/Data/DailyReport/DailyReportDto.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; @@ -14,15 +14,15 @@ namespace AsbCloudApp.Data.DailyReport; /// Суточный отчёт /// public class DailyReportDto : IId, - IWellRelated + IWellRelated { - /// - [Required] - public int Id { get; set; } + /// + [Required] + public int Id { get; set; } - /// - [Required] - public int IdWell { get; set; } + /// + [Required] + public int IdWell { get; set; } /// /// Название скважины @@ -30,51 +30,51 @@ public class DailyReportDto : IId, [Required] public string WellCaption { get; set; } = null!; - /// - /// Название типа скважины - /// - public string? WellType { get; set; } + /// + /// Название типа скважины + /// + public string? WellType { get; set; } - /// - /// Название куста - /// - public string? Cluster { get; set; } + /// + /// Название куста + /// + public string? Cluster { get; set; } - /// - /// Заказчик - /// - public string? Customer { get; set; } + /// + /// Заказчик + /// + public string? Customer { get; set; } - /// - /// Подрядчик - /// - public string? Contractor { get; set; } + /// + /// Подрядчик + /// + public string? Contractor { get; set; } - /// - /// Месторождение - /// - public string? Deposit { get; set; } + /// + /// Месторождение + /// + public string? Deposit { get; set; } - /// - /// Глубина забоя на дату начала интервала - /// - public double? DepthStart { get; set; } + /// + /// Глубина забоя на дату начала интервала + /// + public double? DepthStart { get; set; } - /// - /// Глубина забоя на дату окончания интервала - /// - public double? DepthEnd { get; set; } + /// + /// Глубина забоя на дату окончания интервала + /// + public double? DepthEnd { get; set; } /// /// Дата формирования отчёта /// [Required] public DateOnly Date { get; set; } - - /// - /// Дата последнего обновления - /// - public DateTimeOffset? DateLastUpdate { get; set; } + + /// + /// Дата последнего обновления + /// + public DateTimeOffset? DateLastUpdate { get; set; } /// /// Блок фактической траектории @@ -88,20 +88,20 @@ public class DailyReportDto : IId, [Required] public WellOperationBlockDto FactWellOperationBlock { get; set; } = null!; - /// - /// Баланс времени - /// - public TimeBalanceBlockDto? TimeBalanceBlock { get; set; } + /// + /// Баланс времени + /// + public TimeBalanceBlockDto? TimeBalanceBlock { get; set; } - /// - /// Наработка подсистем - /// - public SubsystemBlockDto? SubsystemBlock { get; set; } + /// + /// Наработка подсистем + /// + public SubsystemBlockDto? SubsystemBlock { get; set; } - /// - /// Подпись - /// - public SignBlockDto? SignBlock { get; set; } + /// + /// Подпись + /// + public SignBlockDto? SignBlock { get; set; } /// /// Блок расписания diff --git a/AsbCloudApp/Data/DataSaubStatDto.cs b/AsbCloudApp/Data/DataSaubStatDto.cs index ceae4f9d..b8e27b37 100644 --- a/AsbCloudApp/Data/DataSaubStatDto.cs +++ b/AsbCloudApp/Data/DataSaubStatDto.cs @@ -1,8 +1,11 @@ -using System; +using System; using AsbCloudApp.Data.WellOperation; namespace AsbCloudApp.Data { + /// + /// dto для хранения данных статистики сауб + /// public class DataSaubStatDto:IId { /// diff --git a/AsbCloudApp/Data/DatesRangeDto.cs b/AsbCloudApp/Data/DatesRangeDto.cs index a61034b6..0b0e5ef9 100644 --- a/AsbCloudApp/Data/DatesRangeDto.cs +++ b/AsbCloudApp/Data/DatesRangeDto.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.ComponentModel.DataAnnotations; namespace AsbCloudApp.Data diff --git a/AsbCloudApp/Data/DepositDto.cs b/AsbCloudApp/Data/DepositDto.cs index 6f39cc87..a0011022 100644 --- a/AsbCloudApp/Data/DepositDto.cs +++ b/AsbCloudApp/Data/DepositDto.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; diff --git a/AsbCloudApp/Data/DetectedOperation/DetectedOperationDrillersStatDto.cs b/AsbCloudApp/Data/DetectedOperation/DetectedOperationDrillersStatDto.cs index c0be17d8..122ad081 100644 --- a/AsbCloudApp/Data/DetectedOperation/DetectedOperationDrillersStatDto.cs +++ b/AsbCloudApp/Data/DetectedOperation/DetectedOperationDrillersStatDto.cs @@ -1,4 +1,4 @@ -using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations; namespace AsbCloudApp.Data.DetectedOperation { diff --git a/AsbCloudApp/Data/DetectedOperation/DetectedOperationDto.cs b/AsbCloudApp/Data/DetectedOperation/DetectedOperationDto.cs index 13af0e6e..20aa3a3c 100644 --- a/AsbCloudApp/Data/DetectedOperation/DetectedOperationDto.cs +++ b/AsbCloudApp/Data/DetectedOperation/DetectedOperationDto.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using AsbCloudApp.Data.WellOperation; @@ -10,82 +10,82 @@ namespace AsbCloudApp.Data.DetectedOperation; /// public class DetectedOperationDto : IId { - /// - [Required] - public int Id { get; set; } + /// + [Required] + public int Id { get; set; } - /// - /// Id телеметрии - /// - [Required] - public int IdTelemetry { get; set; } + /// + /// Id телеметрии + /// + [Required] + public int IdTelemetry { get; set; } - /// - /// Id названия/описания операции - /// - [Required] - public int IdCategory { get; set; } + /// + /// Id названия/описания операции + /// + [Required] + public int IdCategory { get; set; } - /// - /// Id пользователя панели на момент начала операции - /// - public int? IdUserAtStart { get; set; } - - /// - /// Id пользователя изменившего операцию - /// - public int? IdEditor { get; set; } + /// + /// Id пользователя панели на момент начала операции + /// + public int? IdUserAtStart { get; set; } + + /// + /// Id пользователя изменившего операцию + /// + public int? IdEditor { get; set; } - /// - /// Дата завершения операции в часовом поясе скважины - /// - [Required] - public DateTimeOffset DateEnd { get; set; } + /// + /// Дата завершения операции в часовом поясе скважины + /// + [Required] + public DateTimeOffset DateEnd { get; set; } - /// - /// Дата начала операции в часовом поясе скважины - /// - [Required] - public DateTimeOffset DateStart { get; set; } + /// + /// Дата начала операции в часовом поясе скважины + /// + [Required] + public DateTimeOffset DateStart { get; set; } - /// - /// глубина на завершения операции, м - /// - [Required] - public double DepthEnd { get; set; } + /// + /// глубина на завершения операции, м + /// + [Required] + public double DepthEnd { get; set; } - /// - /// глубина на начало операции, м - /// - [Required] - public double DepthStart { get; set; } + /// + /// глубина на начало операции, м + /// + [Required] + public double DepthStart { get; set; } - /// - /// Продолжительность операции в минутах - /// - [Required] - public double DurationMinutes => (DateEnd - DateStart).TotalMinutes; - - /// - /// название/описание операции - /// - [Required] - public WellOperationCategoryDto OperationCategory { get; set; } = null!; - - /// - /// Включенные подсистемы - /// - [Required] - public EnabledSubsystems EnabledSubsystems { get; set; } + /// + /// Продолжительность операции в минутах + /// + [Required] + public double DurationMinutes => (DateEnd - DateStart).TotalMinutes; + + /// + /// название/описание операции + /// + [Required] + public WellOperationCategoryDto OperationCategory { get; set; } = null!; + + /// + /// Включенные подсистемы + /// + [Required] + public EnabledSubsystems EnabledSubsystems { get; set; } - /// - /// Значение ключевой параметра операции - /// - [Required] - public double Value { get; set; } + /// + /// Значение ключевой параметра операции + /// + [Required] + public double Value { get; set; } - /// - /// Доп. инфо по операции - /// - public IDictionary ExtraData { get; set; } = new Dictionary(); + /// + /// Доп. инфо по операции + /// + public IDictionary ExtraData { get; set; } = new Dictionary(); } \ No newline at end of file diff --git a/AsbCloudApp/Data/DetectedOperation/DetectedOperationListDto.cs b/AsbCloudApp/Data/DetectedOperation/DetectedOperationListDto.cs index 32dd6040..08c6b108 100644 --- a/AsbCloudApp/Data/DetectedOperation/DetectedOperationListDto.cs +++ b/AsbCloudApp/Data/DetectedOperation/DetectedOperationListDto.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; diff --git a/AsbCloudApp/Data/DetectedOperation/DetectedOperationStatDto.cs b/AsbCloudApp/Data/DetectedOperation/DetectedOperationStatDto.cs index e922bf6c..b8007c85 100644 --- a/AsbCloudApp/Data/DetectedOperation/DetectedOperationStatDto.cs +++ b/AsbCloudApp/Data/DetectedOperation/DetectedOperationStatDto.cs @@ -1,4 +1,4 @@ -using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations; namespace AsbCloudApp.Data.DetectedOperation { diff --git a/AsbCloudApp/Data/DetectedOperation/DetectedOperationWithDrillerDto.cs b/AsbCloudApp/Data/DetectedOperation/DetectedOperationWithDrillerDto.cs index 612b079c..af5ff539 100644 --- a/AsbCloudApp/Data/DetectedOperation/DetectedOperationWithDrillerDto.cs +++ b/AsbCloudApp/Data/DetectedOperation/DetectedOperationWithDrillerDto.cs @@ -1,4 +1,4 @@ -namespace AsbCloudApp.Data.DetectedOperation +namespace AsbCloudApp.Data.DetectedOperation { /// /// Автоматически определяемая операция diff --git a/AsbCloudApp/Data/DetectedOperation/EnabledSubsystems.cs b/AsbCloudApp/Data/DetectedOperation/EnabledSubsystems.cs index ee3c3459..5f21e8ad 100644 --- a/AsbCloudApp/Data/DetectedOperation/EnabledSubsystems.cs +++ b/AsbCloudApp/Data/DetectedOperation/EnabledSubsystems.cs @@ -5,101 +5,101 @@ namespace AsbCloudApp.Data.DetectedOperation; /// public struct EnabledSubsystems { - private int value; + private int value; - private EnabledSubsystems(int value) - { - this.value = value; - } - - /// - public static implicit operator int(EnabledSubsystems param) => - param.value; + private EnabledSubsystems(int value) + { + this.value = value; + } + + /// + public static implicit operator int(EnabledSubsystems param) => + param.value; - /// - public static implicit operator EnabledSubsystems(int param) => - new(param); + /// + public static implicit operator EnabledSubsystems(int param) => + new(param); - /// - /// Бурение ротором - /// - public bool IsAutoRotor - { - get => IsEnabledSubsystem(EnabledSubsystemsFlags.AutoRotor); - set => UpdateEnabledSubsystems(value, EnabledSubsystemsFlags.AutoRotor); - } + /// + /// Бурение ротором + /// + public bool IsAutoRotor + { + get => IsEnabledSubsystem(EnabledSubsystemsFlags.AutoRotor); + set => UpdateEnabledSubsystems(value, EnabledSubsystemsFlags.AutoRotor); + } - /// - /// Бурение слайдом - /// - public bool IsAutoSlide - { - get => IsEnabledSubsystem(EnabledSubsystemsFlags.AutoSlide); - set => UpdateEnabledSubsystems(value, EnabledSubsystemsFlags.AutoSlide); - } + /// + /// Бурение слайдом + /// + public bool IsAutoSlide + { + get => IsEnabledSubsystem(EnabledSubsystemsFlags.AutoSlide); + set => UpdateEnabledSubsystems(value, EnabledSubsystemsFlags.AutoSlide); + } - /// - /// ПРОРАБОТКА - /// - public bool IsAutoConditionig - { - get => IsEnabledSubsystem(EnabledSubsystemsFlags.AutoConditionig); - set => UpdateEnabledSubsystems(value, EnabledSubsystemsFlags.AutoConditionig); - } + /// + /// ПРОРАБОТКА + /// + public bool IsAutoConditionig + { + get => IsEnabledSubsystem(EnabledSubsystemsFlags.AutoConditionig); + set => UpdateEnabledSubsystems(value, EnabledSubsystemsFlags.AutoConditionig); + } - /// - /// СПУСК СПО - /// - public bool IsAutoSinking - { - get => IsEnabledSubsystem(EnabledSubsystemsFlags.AutoSinking); - set => UpdateEnabledSubsystems(value, EnabledSubsystemsFlags.AutoSinking); - } + /// + /// СПУСК СПО + /// + public bool IsAutoSinking + { + get => IsEnabledSubsystem(EnabledSubsystemsFlags.AutoSinking); + set => UpdateEnabledSubsystems(value, EnabledSubsystemsFlags.AutoSinking); + } - /// - /// ПОДЪЕМ СПО - /// - public bool IsAutoLifting - { - get => IsEnabledSubsystem(EnabledSubsystemsFlags.AutoLifting); - set => UpdateEnabledSubsystems(value, EnabledSubsystemsFlags.AutoLifting); - } + /// + /// ПОДЪЕМ СПО + /// + public bool IsAutoLifting + { + get => IsEnabledSubsystem(EnabledSubsystemsFlags.AutoLifting); + set => UpdateEnabledSubsystems(value, EnabledSubsystemsFlags.AutoLifting); + } - /// - /// ПОДЪЕМ С ПРОРАБОТКОЙ - /// - public bool IsAutoLiftingWithConditionig - { - get => IsEnabledSubsystem(EnabledSubsystemsFlags.AutoLiftingWithConditionig); - set => UpdateEnabledSubsystems(value, EnabledSubsystemsFlags.AutoLiftingWithConditionig); - } + /// + /// ПОДЪЕМ С ПРОРАБОТКОЙ + /// + public bool IsAutoLiftingWithConditionig + { + get => IsEnabledSubsystem(EnabledSubsystemsFlags.AutoLiftingWithConditionig); + set => UpdateEnabledSubsystems(value, EnabledSubsystemsFlags.AutoLiftingWithConditionig); + } - /// - /// Блокировка - /// - public bool IsAutoBlocknig - { - get => IsEnabledSubsystem(EnabledSubsystemsFlags.AutoBlocknig); - set => UpdateEnabledSubsystems(value, EnabledSubsystemsFlags.AutoBlocknig); - } + /// + /// Блокировка + /// + public bool IsAutoBlocknig + { + get => IsEnabledSubsystem(EnabledSubsystemsFlags.AutoBlocknig); + set => UpdateEnabledSubsystems(value, EnabledSubsystemsFlags.AutoBlocknig); + } - /// - /// Осцилляция - /// - public bool IsAutoOscillation - { - get => IsEnabledSubsystem(EnabledSubsystemsFlags.AutoOscillation); - set => UpdateEnabledSubsystems(value, EnabledSubsystemsFlags.AutoOscillation); - } + /// + /// Осцилляция + /// + public bool IsAutoOscillation + { + get => IsEnabledSubsystem(EnabledSubsystemsFlags.AutoOscillation); + set => UpdateEnabledSubsystems(value, EnabledSubsystemsFlags.AutoOscillation); + } - private bool IsEnabledSubsystem(EnabledSubsystemsFlags flag) => - (value & (int)flag) > 0; + private bool IsEnabledSubsystem(EnabledSubsystemsFlags flag) => + (value & (int)flag) > 0; - private void UpdateEnabledSubsystems(bool isEnable, EnabledSubsystemsFlags flag) - { - if (isEnable) - value |= (int)flag; - else - value &= ~(int)flag; - } + private void UpdateEnabledSubsystems(bool isEnable, EnabledSubsystemsFlags flag) + { + if (isEnable) + value |= (int)flag; + else + value &= ~(int)flag; + } } \ No newline at end of file diff --git a/AsbCloudApp/Data/DetectedOperation/EnabledSubsystemsFlags.cs b/AsbCloudApp/Data/DetectedOperation/EnabledSubsystemsFlags.cs index 7011a272..a84dfac8 100644 --- a/AsbCloudApp/Data/DetectedOperation/EnabledSubsystemsFlags.cs +++ b/AsbCloudApp/Data/DetectedOperation/EnabledSubsystemsFlags.cs @@ -8,43 +8,43 @@ namespace AsbCloudApp.Data.DetectedOperation; [Flags] public enum EnabledSubsystemsFlags { - /// - /// Автоподача долота - /// - AutoRotor = 1 << 0, + /// + /// Автоподача долота + /// + AutoRotor = 1 << 0, - /// - /// БУРЕНИЕ В СЛАЙДЕ - /// - AutoSlide = 1 << 1, + /// + /// БУРЕНИЕ В СЛАЙДЕ + /// + AutoSlide = 1 << 1, - /// - /// ПРОРАБОТКА - /// - AutoConditionig = 1 << 2, + /// + /// ПРОРАБОТКА + /// + AutoConditionig = 1 << 2, - /// - /// СПУСК СПО - /// - AutoSinking = 1 << 3, + /// + /// СПУСК СПО + /// + AutoSinking = 1 << 3, - /// - /// ПОДЪЕМ СПО - /// - AutoLifting = 1 << 4, + /// + /// ПОДЪЕМ СПО + /// + AutoLifting = 1 << 4, - /// - /// ПОДЪЕМ С ПРОРАБОТКОЙ - /// - AutoLiftingWithConditionig = 1 << 5, + /// + /// ПОДЪЕМ С ПРОРАБОТКОЙ + /// + AutoLiftingWithConditionig = 1 << 5, - /// - /// блокировка - /// - AutoBlocknig = 1 << 6, + /// + /// блокировка + /// + AutoBlocknig = 1 << 6, - /// - /// осцилляция - /// - AutoOscillation = 1 << 7, + /// + /// осцилляция + /// + AutoOscillation = 1 << 7, } \ No newline at end of file diff --git a/AsbCloudApp/Data/DrillParamsDto.cs b/AsbCloudApp/Data/DrillParamsDto.cs index b8111410..788d5207 100644 --- a/AsbCloudApp/Data/DrillParamsDto.cs +++ b/AsbCloudApp/Data/DrillParamsDto.cs @@ -4,7 +4,7 @@ namespace AsbCloudApp.Data { /// - /// DTO + /// DTO параметров бурения /// public class DrillParamsDto : IId, IWellRelated { @@ -15,7 +15,7 @@ namespace AsbCloudApp.Data public int IdWell { get; set; } /// - /// + /// Глубина интервала /// public MinMaxDto Depth { get; set; } = null!; diff --git a/AsbCloudApp/Data/DrillTestReport/DrillTestReportDataDto.cs b/AsbCloudApp/Data/DrillTestReport/DrillTestReportDataDto.cs index b45783e6..1e7a529e 100644 --- a/AsbCloudApp/Data/DrillTestReport/DrillTestReportDataDto.cs +++ b/AsbCloudApp/Data/DrillTestReport/DrillTestReportDataDto.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.SAUB; +using AsbCloudApp.Data.SAUB; using System; namespace AsbCloudApp.Data.DrillTestReport diff --git a/AsbCloudApp/Data/DrillTestReport/DrillTestReportInfoDto.cs b/AsbCloudApp/Data/DrillTestReport/DrillTestReportInfoDto.cs index a178e6fe..38730eef 100644 --- a/AsbCloudApp/Data/DrillTestReport/DrillTestReportInfoDto.cs +++ b/AsbCloudApp/Data/DrillTestReport/DrillTestReportInfoDto.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.ComponentModel.DataAnnotations; namespace AsbCloudApp.Data.DrillTestReport diff --git a/AsbCloudApp/Data/DrillerDetectedOperationStatDto.cs b/AsbCloudApp/Data/DrillerDetectedOperationStatDto.cs index 96a5a232..f6e76353 100644 --- a/AsbCloudApp/Data/DrillerDetectedOperationStatDto.cs +++ b/AsbCloudApp/Data/DrillerDetectedOperationStatDto.cs @@ -4,22 +4,22 @@ using AsbCloudApp.Data.Subsystems; namespace AsbCloudApp.Data; /// -/// +/// статистика наработки по бурильщикам /// public class DrillerDetectedOperationStatDto { /// - /// + /// Статистики подсистем /// public IEnumerable Statistic { get; set; } = null!; /// - /// + /// Расписание бурильщика /// public ScheduleDto Schedule { get; set; } = null!; /// - /// + /// Скважина /// public WellDto Well { get; set; } = null!; } \ No newline at end of file diff --git a/AsbCloudApp/Data/DrillerDto.cs b/AsbCloudApp/Data/DrillerDto.cs index f2c8b6b0..e920f111 100644 --- a/AsbCloudApp/Data/DrillerDto.cs +++ b/AsbCloudApp/Data/DrillerDto.cs @@ -1,4 +1,4 @@ -using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations; namespace AsbCloudApp.Data { diff --git a/AsbCloudApp/Data/DrillingProgramPartDto.cs b/AsbCloudApp/Data/DrillingProgramPartDto.cs index d4cc66fb..0e9917ba 100644 --- a/AsbCloudApp/Data/DrillingProgramPartDto.cs +++ b/AsbCloudApp/Data/DrillingProgramPartDto.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using AsbCloudApp.Data.User; diff --git a/AsbCloudApp/Data/DrillingProgramStateDto.cs b/AsbCloudApp/Data/DrillingProgramStateDto.cs index b2abcef0..4368f4a3 100644 --- a/AsbCloudApp/Data/DrillingProgramStateDto.cs +++ b/AsbCloudApp/Data/DrillingProgramStateDto.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; diff --git a/AsbCloudApp/Data/FaqDto.cs b/AsbCloudApp/Data/FaqDto.cs index e69c0579..28cc829b 100644 --- a/AsbCloudApp/Data/FaqDto.cs +++ b/AsbCloudApp/Data/FaqDto.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.ComponentModel.DataAnnotations; namespace AsbCloudApp.Data diff --git a/AsbCloudApp/Data/FileCategoryDto.cs b/AsbCloudApp/Data/FileCategoryDto.cs index 0b837a7a..f55fdb30 100644 --- a/AsbCloudApp/Data/FileCategoryDto.cs +++ b/AsbCloudApp/Data/FileCategoryDto.cs @@ -1,4 +1,4 @@ -using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations; namespace AsbCloudApp.Data { diff --git a/AsbCloudApp/Data/FileInfoDto.cs b/AsbCloudApp/Data/FileInfoDto.cs index ab44b317..2e673ed0 100644 --- a/AsbCloudApp/Data/FileInfoDto.cs +++ b/AsbCloudApp/Data/FileInfoDto.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; diff --git a/AsbCloudApp/Data/FileMarkDto.cs b/AsbCloudApp/Data/FileMarkDto.cs index 305fad5c..ad48f018 100644 --- a/AsbCloudApp/Data/FileMarkDto.cs +++ b/AsbCloudApp/Data/FileMarkDto.cs @@ -5,7 +5,7 @@ using AsbCloudApp.Data.User; namespace AsbCloudApp.Data { /// - /// + /// Отметка для файла /// public class FileMarkDto: IId { @@ -14,42 +14,42 @@ namespace AsbCloudApp.Data public int Id { get; set; } /// - /// id + /// id файла /// [Required] - [Range(1, int.MaxValue, ErrorMessage = "Id 1")] + [Range(1, int.MaxValue, ErrorMessage = "Id файла не может быть меньше 1")] public int IdFile { get; set; } /// - /// 0 - - /// 1 - + /// 0 - отклонен + /// 1 - согласован /// [Required] - [Range(0, int.MaxValue, ErrorMessage = "Id 1")] + [Range(0, int.MaxValue, ErrorMessage = "Id категории действия с файлом не может быть меньше 1")] public int IdMarkType { get; set; } /// - /// / . - /// . + /// дата/время добавления. + /// Необязательно указывать в запросе на создание. /// [Required] public DateTimeOffset DateCreated { get; set; } /// - /// + /// Полезный комментарий /// - [StringLength(4096, MinimumLength = 1, ErrorMessage = " 1 4096 ")] + [StringLength(4096, MinimumLength = 1, ErrorMessage = "Допустимое имя компании от 1 до 4096 символов")] public string? Comment { get; set; } /// - /// + /// признак удаления отметки /// [Required] public bool IsDeleted { get; set; } /// - /// . - /// . + /// Пользователь создающий отметку. + /// Необязательно указывать в запросе на создание. /// public UserDto? User { get; set; } } diff --git a/AsbCloudApp/Data/GTR/GtrWitsDto.cs b/AsbCloudApp/Data/GTR/GtrWitsDto.cs index 20d08dd6..bb4a4785 100644 --- a/AsbCloudApp/Data/GTR/GtrWitsDto.cs +++ b/AsbCloudApp/Data/GTR/GtrWitsDto.cs @@ -7,228 +7,228 @@ namespace AsbCloudApp.Data.GTR; /// public class GtrWitsDto { - /// - /// Дата получения записи - /// - public DateTimeOffset DateTime { get; set; } - - /// - /// Забой (скважины), м - /// - public float? DEPTMEAS { get; set; } - - /// - /// Долото, м - /// - public float DEPTBITM { get; set; } - - /// - /// Вес на крюке - /// - public float? HKLA { get; set; } + /// + /// Дата получения записи + /// + public DateTimeOffset DateTime { get; set; } + + /// + /// Забой (скважины), м + /// + public float? DEPTMEAS { get; set; } + + /// + /// Долото, м + /// + public float DEPTBITM { get; set; } + + /// + /// Вес на крюке + /// + public float? HKLA { get; set; } - /// - /// Высота крюка - /// - public float? BLKPOS { get; set; } + /// + /// Высота крюка + /// + public float? BLKPOS { get; set; } - /// - /// Нагрузка на долото - /// - public float? WOBA { get; set; } + /// + /// Нагрузка на долото + /// + public float? WOBA { get; set; } - /// - /// Момент на роторе/ВСП - /// - public float? TORQA { get; set; } + /// + /// Момент на роторе/ВСП + /// + public float? TORQA { get; set; } - /// - /// Давление на входе (на стояке) - /// - public float? SPPA { get; set; } + /// + /// Давление на входе (на стояке) + /// + public float? SPPA { get; set; } - /// - /// Обороты ротора/ВСП - /// - public float? RPMA { get; set; } + /// + /// Обороты ротора/ВСП + /// + public float? RPMA { get; set; } - /// - /// Механическая скорость - /// - public float? ROPA { get; set; } + /// + /// Механическая скорость + /// + public float? ROPA { get; set; } - /// - /// Скорость инструмента вверх - /// - public float? RSUX { get; set; } + /// + /// Скорость инструмента вверх + /// + public float? RSUX { get; set; } - /// - /// Скорость инструмента вниз - /// - public float? RSDX { get; set; } + /// + /// Скорость инструмента вниз + /// + public float? RSDX { get; set; } - /// - /// Расход на входе - /// - public float? MFIA { get; set; } + /// + /// Расход на входе + /// + public float? MFIA { get; set; } - /// - /// Расход на выходе - /// - public float? MFOA { get; set; } + /// + /// Расход на выходе + /// + public float? MFOA { get; set; } - /// - /// Температура на входе - /// - public float? MTIA { get; set; } + /// + /// Температура на входе + /// + public float? MTIA { get; set; } - /// - /// Температура на выходе - /// - public float? MTOA { get; set; } + /// + /// Температура на выходе + /// + public float? MTOA { get; set; } - /// - /// Ходы насоса №1 - /// - public float? SPM1 { get; set; } + /// + /// Ходы насоса №1 + /// + public float? SPM1 { get; set; } - /// - /// Ходы насоса №2 - /// - public float? SPM2 { get; set; } + /// + /// Ходы насоса №2 + /// + public float? SPM2 { get; set; } - /// - /// Ходы насоса №3 - /// - public float? SPM3 { get; set; } + /// + /// Ходы насоса №3 + /// + public float? SPM3 { get; set; } - /// - /// Общий объем бурового раствора на поверхности - /// - public float? TVOLACT { get; set; } + /// + /// Общий объем бурового раствора на поверхности + /// + public float? TVOLACT { get; set; } - /// - /// Объем бурового раствора в доливной емкости №1 - /// - public float? TTVOL1 { get; set; } + /// + /// Объем бурового раствора в доливной емкости №1 + /// + public float? TTVOL1 { get; set; } - /// - /// Объем бурового раствора в доливной емкости №2 - /// - public float? TTVOL2 { get; set; } + /// + /// Объем бурового раствора в доливной емкости №2 + /// + public float? TTVOL2 { get; set; } - /// - /// Объем бурового раствора в емкости №1 - /// - public float? TVOL01 { get; set; } + /// + /// Объем бурового раствора в емкости №1 + /// + public float? TVOL01 { get; set; } - /// - /// Объем бурового раствора в емкости №2 - /// - public float? TVOL02 { get; set; } + /// + /// Объем бурового раствора в емкости №2 + /// + public float? TVOL02 { get; set; } - /// - /// Объем бурового раствора в емкости №3 - /// - public float? TVOL03 { get; set; } + /// + /// Объем бурового раствора в емкости №3 + /// + public float? TVOL03 { get; set; } - /// - /// Объем бурового раствора в емкости №4 - /// - public float? TVOL04 { get; set; } + /// + /// Объем бурового раствора в емкости №4 + /// + public float? TVOL04 { get; set; } - /// - /// Объем бурового раствора в емкости №5 - /// - public float? TVOL05 { get; set; } + /// + /// Объем бурового раствора в емкости №5 + /// + public float? TVOL05 { get; set; } - /// - /// Объем бурового раствора в емкости №6 - /// - public float? TVOL06 { get; set; } + /// + /// Объем бурового раствора в емкости №6 + /// + public float? TVOL06 { get; set; } - /// - /// Объем бурового раствора в емкости №7 - /// - public float? TVOL07 { get; set; } + /// + /// Объем бурового раствора в емкости №7 + /// + public float? TVOL07 { get; set; } - /// - /// Объем бурового раствора в емкости №8 - /// - public float? TVOL08 { get; set; } + /// + /// Объем бурового раствора в емкости №8 + /// + public float? TVOL08 { get; set; } - /// - /// Объем бурового раствора в емкости №9 - /// - public float? TVOL09 { get; set; } + /// + /// Объем бурового раствора в емкости №9 + /// + public float? TVOL09 { get; set; } - /// - /// Объем бурового раствора в емкости №10 - /// - public float? TVOL10 { get; set; } + /// + /// Объем бурового раствора в емкости №10 + /// + public float? TVOL10 { get; set; } - /// - /// Объем бурового раствора в емкости №11 - /// - public float? TVOL11 { get; set; } + /// + /// Объем бурового раствора в емкости №11 + /// + public float? TVOL11 { get; set; } - /// - /// Объем бурового раствора в емкости №12 - /// - public float? TVOL12 { get; set; } + /// + /// Объем бурового раствора в емкости №12 + /// + public float? TVOL12 { get; set; } - /// - /// Объем бурового раствора в емкости №13 - /// - public float? TVOL13 { get; set; } + /// + /// Объем бурового раствора в емкости №13 + /// + public float? TVOL13 { get; set; } - /// - /// Объем бурового раствора в емкости №14 - /// - public float? TVOL14 { get; set; } + /// + /// Объем бурового раствора в емкости №14 + /// + public float? TVOL14 { get; set; } - /// - /// Плотность (удельный вес) бурового раствора на выходе - /// - public float? MDOA { get; set; } + /// + /// Плотность (удельный вес) бурового раствора на выходе + /// + public float? MDOA { get; set; } - /// - /// Плотность (удельный вес) бурового раствора на входе - /// - public float? MDIA { get; set; } + /// + /// Плотность (удельный вес) бурового раствора на входе + /// + public float? MDIA { get; set; } - /// - /// Процентное содержание метана - /// - public float? METHANE { get; set; } + /// + /// Процентное содержание метана + /// + public float? METHANE { get; set; } - /// - /// Процентное содержание этана - /// - public float? ETHANE { get; set; } + /// + /// Процентное содержание этана + /// + public float? ETHANE { get; set; } - /// - /// Процентное содержание пропана - /// - public float? PROPANE { get; set; } + /// + /// Процентное содержание пропана + /// + public float? PROPANE { get; set; } - /// - /// Процентное содержание бутана - /// - public float? IBUTANE { get; set; } + /// + /// Процентное содержание бутана + /// + public float? IBUTANE { get; set; } - /// - /// Процентное содержание пентана - /// - public float? NBUTANE { get; set; } + /// + /// Процентное содержание пентана + /// + public float? NBUTANE { get; set; } - /// - /// Процентное содержание углеводородов - /// - public float? HydrocarbonPercentage => METHANE + ETHANE + PROPANE + IBUTANE + NBUTANE; - - /// - /// Процентное содержание газов - /// - public float? GASA { get; set; } + /// + /// Процентное содержание углеводородов + /// + public float? HydrocarbonPercentage => METHANE + ETHANE + PROPANE + IBUTANE + NBUTANE; + + /// + /// Процентное содержание газов + /// + public float? GASA { get; set; } } \ No newline at end of file diff --git a/AsbCloudApp/Data/GTR/JsonValue.cs b/AsbCloudApp/Data/GTR/JsonValue.cs index cd37abea..15df0604 100644 --- a/AsbCloudApp/Data/GTR/JsonValue.cs +++ b/AsbCloudApp/Data/GTR/JsonValue.cs @@ -1,4 +1,4 @@ -namespace AsbCloudApp.Data.GTR +namespace AsbCloudApp.Data.GTR { /// /// Класс позволяющий хранить значение неопределенного типа. diff --git a/AsbCloudApp/Data/GTR/WitsItemRecordDto.cs b/AsbCloudApp/Data/GTR/WitsItemRecordDto.cs index 0137754e..f6dfde81 100644 --- a/AsbCloudApp/Data/GTR/WitsItemRecordDto.cs +++ b/AsbCloudApp/Data/GTR/WitsItemRecordDto.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.ComponentModel.DataAnnotations; namespace AsbCloudApp.Data.GTR diff --git a/AsbCloudApp/Data/GTR/WitsRecordDto.cs b/AsbCloudApp/Data/GTR/WitsRecordDto.cs index 4e5da733..e5469b9a 100644 --- a/AsbCloudApp/Data/GTR/WitsRecordDto.cs +++ b/AsbCloudApp/Data/GTR/WitsRecordDto.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; diff --git a/AsbCloudApp/Data/HelpPageDto.cs b/AsbCloudApp/Data/HelpPageDto.cs index 9044397f..124b6954 100644 --- a/AsbCloudApp/Data/HelpPageDto.cs +++ b/AsbCloudApp/Data/HelpPageDto.cs @@ -1,4 +1,4 @@ -using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations; namespace AsbCloudApp.Data; diff --git a/AsbCloudApp/Data/IId.cs b/AsbCloudApp/Data/IId.cs index e5ad455e..4449fa23 100644 --- a/AsbCloudApp/Data/IId.cs +++ b/AsbCloudApp/Data/IId.cs @@ -1,4 +1,4 @@ -namespace AsbCloudApp.Data +namespace AsbCloudApp.Data { /// /// Интерфейс данных с Id diff --git a/AsbCloudApp/Data/IMapPoint.cs b/AsbCloudApp/Data/IMapPoint.cs index f71bd7fa..1c373685 100644 --- a/AsbCloudApp/Data/IMapPoint.cs +++ b/AsbCloudApp/Data/IMapPoint.cs @@ -1,4 +1,4 @@ -namespace AsbCloudApp.Data +namespace AsbCloudApp.Data { /// /// точка на карте diff --git a/AsbCloudApp/Data/ITelemetryData.cs b/AsbCloudApp/Data/ITelemetryData.cs index 3769eeac..a2dc4924 100644 --- a/AsbCloudApp/Data/ITelemetryData.cs +++ b/AsbCloudApp/Data/ITelemetryData.cs @@ -1,4 +1,4 @@ -using System; +using System; namespace AsbCloudApp.Data { diff --git a/AsbCloudApp/Data/IWellRelated.cs b/AsbCloudApp/Data/IWellRelated.cs index f79a03a9..55877a9e 100644 --- a/AsbCloudApp/Data/IWellRelated.cs +++ b/AsbCloudApp/Data/IWellRelated.cs @@ -1,4 +1,4 @@ -namespace AsbCloudApp.Data +namespace AsbCloudApp.Data { /// /// Well related DTO diff --git a/AsbCloudApp/Data/ItemInfoDto.cs b/AsbCloudApp/Data/ItemInfoDto.cs index 95a07e8d..0022b1c1 100644 --- a/AsbCloudApp/Data/ItemInfoDto.cs +++ b/AsbCloudApp/Data/ItemInfoDto.cs @@ -1,4 +1,4 @@ -using System; +using System; namespace AsbCloudApp.Data { diff --git a/AsbCloudApp/Data/JobDto.cs b/AsbCloudApp/Data/JobDto.cs index b55a9467..0dfb82e3 100644 --- a/AsbCloudApp/Data/JobDto.cs +++ b/AsbCloudApp/Data/JobDto.cs @@ -1,4 +1,4 @@ -using System.Collections; +using System.Collections; using System.ComponentModel.DataAnnotations; namespace AsbCloudApp.Data diff --git a/AsbCloudApp/Data/LimitingParameterDataDto.cs b/AsbCloudApp/Data/LimitingParameterDataDto.cs index c5692729..11ecde24 100644 --- a/AsbCloudApp/Data/LimitingParameterDataDto.cs +++ b/AsbCloudApp/Data/LimitingParameterDataDto.cs @@ -1,4 +1,4 @@ -using System; +using System; namespace AsbCloudApp.Data { diff --git a/AsbCloudApp/Data/LimitingParameterDto.cs b/AsbCloudApp/Data/LimitingParameterDto.cs index 19b182a5..13a23b80 100644 --- a/AsbCloudApp/Data/LimitingParameterDto.cs +++ b/AsbCloudApp/Data/LimitingParameterDto.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.ComponentModel.DataAnnotations; namespace AsbCloudApp.Data diff --git a/AsbCloudApp/Data/Manuals/ManualDirectoryDto.cs b/AsbCloudApp/Data/Manuals/ManualDirectoryDto.cs index e0513cf9..15b791da 100644 --- a/AsbCloudApp/Data/Manuals/ManualDirectoryDto.cs +++ b/AsbCloudApp/Data/Manuals/ManualDirectoryDto.cs @@ -8,26 +8,26 @@ namespace AsbCloudApp.Data.Manuals; /// public class ManualDirectoryDto : IId { - /// - public int Id { get; set; } + /// + public int Id { get; set; } - /// - /// Название - /// - public string Name { get; set; } = null!; - - /// - /// Id родительской директории - /// - public int? IdParent { get; set; } + /// + /// Название + /// + public string Name { get; set; } = null!; + + /// + /// Id родительской директории + /// + public int? IdParent { get; set; } - /// - /// Вложенные директории - /// - public IEnumerable Children { get; set; } = Enumerable.Empty(); + /// + /// Вложенные директории + /// + public IEnumerable Children { get; set; } = Enumerable.Empty(); - /// - /// Хранимые инструкции - /// - public IEnumerable Manuals { get; set; } = Enumerable.Empty(); + /// + /// Хранимые инструкции + /// + public IEnumerable Manuals { get; set; } = Enumerable.Empty(); } \ No newline at end of file diff --git a/AsbCloudApp/Data/Manuals/ManualDto.cs b/AsbCloudApp/Data/Manuals/ManualDto.cs index c5aa92c4..01756714 100644 --- a/AsbCloudApp/Data/Manuals/ManualDto.cs +++ b/AsbCloudApp/Data/Manuals/ManualDto.cs @@ -7,31 +7,31 @@ namespace AsbCloudApp.Data.Manuals; /// public class ManualDto : IId { - /// - public int Id { get; set; } + /// + public int Id { get; set; } - /// - /// Название - /// - public string Name { get; set; } = null!; - - /// - /// Дата загрузки - /// - public DateTimeOffset DateDownload { get; set; } - - /// - /// Id автора - /// - public int IdAuthor { get; set; } - - /// - /// Id директории - /// - public int IdDirectory { get; set; } - - /// - /// Id категории файла - /// - public int IdCategory { get; set; } + /// + /// Название + /// + public string Name { get; set; } = null!; + + /// + /// Дата загрузки + /// + public DateTimeOffset DateDownload { get; set; } + + /// + /// Id автора + /// + public int IdAuthor { get; set; } + + /// + /// Id директории + /// + public int IdDirectory { get; set; } + + /// + /// Id категории файла + /// + public int IdCategory { get; set; } } \ No newline at end of file diff --git a/AsbCloudApp/Data/MapPointBaseDto.cs b/AsbCloudApp/Data/MapPointBaseDto.cs index b0567dba..61713a8f 100644 --- a/AsbCloudApp/Data/MapPointBaseDto.cs +++ b/AsbCloudApp/Data/MapPointBaseDto.cs @@ -1,4 +1,4 @@ -using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations; namespace AsbCloudApp.Data { diff --git a/AsbCloudApp/Data/MeasureDto.cs b/AsbCloudApp/Data/MeasureDto.cs index 4eddd78f..17ba3968 100644 --- a/AsbCloudApp/Data/MeasureDto.cs +++ b/AsbCloudApp/Data/MeasureDto.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; diff --git a/AsbCloudApp/Data/MessageDto.cs b/AsbCloudApp/Data/MessageDto.cs index 7234db7a..5272e237 100644 --- a/AsbCloudApp/Data/MessageDto.cs +++ b/AsbCloudApp/Data/MessageDto.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.ComponentModel.DataAnnotations; namespace AsbCloudApp.Data diff --git a/AsbCloudApp/Data/MinMaxDto.cs b/AsbCloudApp/Data/MinMaxDto.cs index ac2a2aa1..d7d8703a 100644 --- a/AsbCloudApp/Data/MinMaxDto.cs +++ b/AsbCloudApp/Data/MinMaxDto.cs @@ -1,4 +1,4 @@ -namespace AsbCloudApp.Data +namespace AsbCloudApp.Data { /// /// Минимальное и максимальное значение diff --git a/AsbCloudApp/Data/MinMaxExtendedViewDto.cs b/AsbCloudApp/Data/MinMaxExtendedViewDto.cs index 9b1b07b5..6e1aab48 100644 --- a/AsbCloudApp/Data/MinMaxExtendedViewDto.cs +++ b/AsbCloudApp/Data/MinMaxExtendedViewDto.cs @@ -1,4 +1,4 @@ -namespace AsbCloudApp.Data +namespace AsbCloudApp.Data { /// /// Расширение для класса MinMaxDto diff --git a/AsbCloudApp/Data/NotificationCategoryDto.cs b/AsbCloudApp/Data/NotificationCategoryDto.cs index 274366e4..f7e077dd 100644 --- a/AsbCloudApp/Data/NotificationCategoryDto.cs +++ b/AsbCloudApp/Data/NotificationCategoryDto.cs @@ -7,11 +7,11 @@ namespace AsbCloudApp.Data; /// public class NotificationCategoryDto : IId { - /// - /// Id категории - /// - [Required] - public int Id { get; set; } + /// + /// Id категории + /// + [Required] + public int Id { get; set; } /// /// Название категории diff --git a/AsbCloudApp/Data/NotificationDto.cs b/AsbCloudApp/Data/NotificationDto.cs index 0fd8b673..34f46fa2 100644 --- a/AsbCloudApp/Data/NotificationDto.cs +++ b/AsbCloudApp/Data/NotificationDto.cs @@ -8,11 +8,11 @@ namespace AsbCloudApp.Data; /// public class NotificationDto : IId { - /// - /// Id уведомления - /// - [Required] - public int Id { get; set; } + /// + /// Id уведомления + /// + [Required] + public int Id { get; set; } /// /// Id получателя уведомления @@ -26,11 +26,11 @@ public class NotificationDto : IId [Required] public int IdNotificationCategory { get; set; } - /// - /// Заголовок уведомления - /// - [Required, StringLength(300, MinimumLength = 1, ErrorMessage = "Заголовок должен мыть не меньше 1-го знака и не больше 300")] - public string Title { get; set; } = null!; + /// + /// Заголовок уведомления + /// + [Required, StringLength(300, MinimumLength = 1, ErrorMessage = "Заголовок должен мыть не меньше 1-го знака и не больше 300")] + public string Title { get; set; } = null!; /// /// Сообщение уведомления @@ -44,15 +44,15 @@ public class NotificationDto : IId [Required] public DateTimeOffset RegistrationDate { get; set; } - /// - /// Дата отправки уведомления - /// - public DateTimeOffset? SentDate { get; set; } + /// + /// Дата отправки уведомления + /// + public DateTimeOffset? SentDate { get; set; } - /// - /// Дата прочтения уведомления - /// - public DateTimeOffset? ReadDate { get; set; } + /// + /// Дата прочтения уведомления + /// + public DateTimeOffset? ReadDate { get; set; } /// /// Состояние уведомления @@ -62,36 +62,36 @@ public class NotificationDto : IId /// [Required] public int IdState - { - get - { - if (SentDate is not null && ReadDate is not null) - return 2; + { + get + { + if (SentDate is not null && ReadDate is not null) + return 2; - if (SentDate is not null) - return 1; + if (SentDate is not null) + return 1; - return 0; - } - set - { - switch (value) - { - case 0: - SentDate = null; - ReadDate = null; - break; - case 1: - SentDate = DateTimeOffset.UtcNow; - ReadDate = null; - break; - case 2: - SentDate = DateTimeOffset.UtcNow; - ReadDate = DateTimeOffset.UtcNow; - break; - } - } - } + return 0; + } + set + { + switch (value) + { + case 0: + SentDate = null; + ReadDate = null; + break; + case 1: + SentDate = DateTimeOffset.UtcNow; + ReadDate = null; + break; + case 2: + SentDate = DateTimeOffset.UtcNow; + ReadDate = DateTimeOffset.UtcNow; + break; + } + } + } /// /// Id типа доставки уведомления @@ -100,7 +100,7 @@ public class NotificationDto : IId /// [Required] [Range(0,1)] - public int IdTransportType { get; set; } + public int IdTransportType { get; set; } /// /// DTO категории уведомления diff --git a/AsbCloudApp/Data/OperationValueDto.cs b/AsbCloudApp/Data/OperationValueDto.cs index f7d9edcf..587b8e1c 100644 --- a/AsbCloudApp/Data/OperationValueDto.cs +++ b/AsbCloudApp/Data/OperationValueDto.cs @@ -1,4 +1,4 @@ -using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations; namespace AsbCloudApp.Data { diff --git a/AsbCloudApp/Data/PaginationContainer.cs b/AsbCloudApp/Data/PaginationContainer.cs index 61840893..30d3bdec 100644 --- a/AsbCloudApp/Data/PaginationContainer.cs +++ b/AsbCloudApp/Data/PaginationContainer.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; namespace AsbCloudApp.Data diff --git a/AsbCloudApp/Data/ParserResultDto.cs b/AsbCloudApp/Data/ParserResultDto.cs index ffb24d50..1203df4e 100644 --- a/AsbCloudApp/Data/ParserResultDto.cs +++ b/AsbCloudApp/Data/ParserResultDto.cs @@ -8,10 +8,10 @@ namespace AsbCloudApp.Data; /// /// public class ParserResultDto : ValidationResultDto>> - where TDto : class, IId + where TDto : class, IId { - /// - /// Объекты полученные из файла - /// - public override IEnumerable> Item { get; set; } = Enumerable.Empty>(); + /// + /// Объекты полученные из файла + /// + public override IEnumerable> Item { get; set; } = Enumerable.Empty>(); } \ No newline at end of file diff --git a/AsbCloudApp/Data/PermissionDto.cs b/AsbCloudApp/Data/PermissionDto.cs index 62aad5c4..8436ae73 100644 --- a/AsbCloudApp/Data/PermissionDto.cs +++ b/AsbCloudApp/Data/PermissionDto.cs @@ -1,4 +1,4 @@ -using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations; namespace AsbCloudApp.Data { diff --git a/AsbCloudApp/Data/PlanFactDto.cs b/AsbCloudApp/Data/PlanFactDto.cs index 669121d6..8d20c382 100644 --- a/AsbCloudApp/Data/PlanFactDto.cs +++ b/AsbCloudApp/Data/PlanFactDto.cs @@ -1,4 +1,4 @@ -namespace AsbCloudApp.Data +namespace AsbCloudApp.Data { /// /// DTO объединяющее плановые и фактические значения diff --git a/AsbCloudApp/Data/PlanFactPredictBase.cs b/AsbCloudApp/Data/PlanFactPredictBase.cs index 636e0620..ffbd5e61 100644 --- a/AsbCloudApp/Data/PlanFactPredictBase.cs +++ b/AsbCloudApp/Data/PlanFactPredictBase.cs @@ -1,4 +1,4 @@ -namespace AsbCloudApp.Data +namespace AsbCloudApp.Data { /// /// Lines container for Time Vs Depth chart diff --git a/AsbCloudApp/Data/PlanLimitDto.cs b/AsbCloudApp/Data/PlanLimitDto.cs index e0559de8..76e9173b 100644 --- a/AsbCloudApp/Data/PlanLimitDto.cs +++ b/AsbCloudApp/Data/PlanLimitDto.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; diff --git a/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanAntiCrashRotationDto.cs b/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanAntiCrashRotationDto.cs new file mode 100644 index 00000000..43e41acb --- /dev/null +++ b/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanAntiCrashRotationDto.cs @@ -0,0 +1,33 @@ +using System.ComponentModel.DataAnnotations; + +namespace AsbCloudApp.Data.ProcessMaps.Functions; + +/// +/// РТК план противоаварийное вращение +/// +public class ProcessMapPlanAntiCrashRotationDto : ProcessMapPlanBaseDto +{ + /// + /// Минимальные обороты ВСП, об/мин + /// + [Range(0.0, 250.0, ErrorMessage = "Минимальные обороты ВСП, об/мин., должно быть в пределах от 0 до 250")] + public double TopDriveRpmMin { get; set; } + + /// + /// Минимальный расход для запуска оборотов ВСП, л/сек + /// + [Range(0.0, 100.0, ErrorMessage = "Минимальный расход для запуска оборотов ВСП, л/сек., должно быть в пределах от 0 до 100")] + public double TopDriveStartMinFlowRate { get; set; } + + /// + /// Максимально допустимый момент на ВСП при противоаварийном вращении, кН*м + /// + [Range(1.0, 35.0, ErrorMessage = "Максимально допустимый момент на ВСП при противоаварийном вращении, кН*м., должно быть в пределах от 1 до 35")] + public double TopDriveTorqueMax { get; set; } + + /// + /// Примечание + /// + [StringLength(1024, ErrorMessage = "Примечание, должно быть не более 1024 символов")] + public string Note { get; set; } = string.Empty; +} \ No newline at end of file diff --git a/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanAutoHoldTFDto.cs b/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanAutoHoldTFDto.cs new file mode 100644 index 00000000..3ffc382a --- /dev/null +++ b/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanAutoHoldTFDto.cs @@ -0,0 +1,21 @@ +using System.ComponentModel.DataAnnotations; + +namespace AsbCloudApp.Data.ProcessMaps.Functions; + +/// +/// РТК план авто удержание TF +/// +public class ProcessMapPlanAutoHoldTFDto : ProcessMapPlanBaseDto +{ + /// + /// Зенитный угол, градусы + /// + [Range(0.0, 100.0, ErrorMessage = "Зенитный угол, градусы, должно быть в пределах от 0 до 100")] + public double ZenithAngle { get; set; } + + /// + /// Примечание + /// + [StringLength(1024, ErrorMessage = "Примечание, должно быть не более 1024 символов")] + public string? Note { get; set; } +} \ No newline at end of file diff --git a/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanDamperDto.cs b/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanDamperDto.cs new file mode 100644 index 00000000..f30ab941 --- /dev/null +++ b/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanDamperDto.cs @@ -0,0 +1,21 @@ +using System.ComponentModel.DataAnnotations; + +namespace AsbCloudApp.Data.ProcessMaps.Functions; + +/// +/// РТК план демпфер +/// +public class ProcessMapPlanDamperDto : ProcessMapPlanBaseDto +{ + /// + /// StickSlip + /// + [Range(0.0, 1000.0, ErrorMessage = "StickSlip, должно быть в пределах от 0 до 1000")] + public double StickSlip { get; set; } + + /// + /// Примечание + /// + [StringLength(1024, ErrorMessage = "Примечание, должно быть не более 1024 символов")] + public string? Note { get; set; } +} \ No newline at end of file diff --git a/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanDrillTestDto.cs b/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanDrillTestDto.cs new file mode 100644 index 00000000..2d8392cf --- /dev/null +++ b/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanDrillTestDto.cs @@ -0,0 +1,45 @@ +using System.ComponentModel.DataAnnotations; + +namespace AsbCloudApp.Data.ProcessMaps.Functions; + +/// +/// РТК план дрил тест +/// +public class ProcessMapPlanDrillTestDto : ProcessMapPlanBaseDto +{ + /// + /// Нагрузка минимальная, т + /// + [Range(1.0, 30.0, ErrorMessage = "Нагрузка минимальная, т., должно быть в пределах от 1 до 30")] + public double WeightOnBitMin { get; set; } + + /// + /// Количество шагов по нагрузке + /// + [Range(1, 5, ErrorMessage = "Количество шагов по нагрузке, должно быть в пределах от 1 до 5")] + public int WeightOnBitStepsCount { get; set; } + + /// + /// Минимальные обороты на ВСП, об/мин. + /// + [Range(5, 200, ErrorMessage = "Минимальные обороты на ВСП, об/мин., должно быть в пределах от 5 до 200")] + public int RpmMin { get; set; } + + /// + /// Количество шагов оборотов на ВСП, шт. + /// + [Range(1, 5, ErrorMessage = "Количество шагов оборотов на ВСП, шт., должно быть в пределах от 1 до 5")] + public int RpmStepsCount { get; set; } + + /// + /// Величина проходки шага, м. + /// + [Range(0.1, 2.0, ErrorMessage = "Величина проходки шага, м., должно быть в пределах от 0.1 до 2")] + public double LengthStep { get; set; } + + /// + /// Примечание + /// + [StringLength(1024, ErrorMessage = "Примечание, должно быть не более 1024 символа")] + public string? Note { get; set; } +} \ No newline at end of file diff --git a/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanOscillationDto.cs b/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanOscillationDto.cs new file mode 100644 index 00000000..24c29ae8 --- /dev/null +++ b/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanOscillationDto.cs @@ -0,0 +1,51 @@ +using System.ComponentModel.DataAnnotations; + +namespace AsbCloudApp.Data.ProcessMaps.Functions; + +/// +/// РТК план осцилляция +/// +public class ProcessMapPlanOscillationDto : ProcessMapPlanBaseDto +{ + /// + /// Оптимальный угол осцилляции, градусы + /// + [Range(0.0, 6000.0, ErrorMessage = "Оптимальный угол осцилляции, градусы, должно быть в пределах от 0 до 6000")] + public double OptimalOscillationAngle { get; set; } + + /// + /// Скорость вправо, об/мин + /// + [Range(0.0, 270.0, ErrorMessage = "Скорость вправо, об/мин, должно быть в пределах от 0 до 270")] + public double RpmRight { get; set; } + + /// + /// Скорость влево, об/мин + /// + [Range(0.0, 270.0, ErrorMessage = "Скорость влево, об/мин, должно быть в пределах от 0 до 270")] + public double RpmLeft { get; set; } + + /// + /// Ограничение момента вправо, кН*м + /// + [Range(0.0, 35.0, ErrorMessage = "Ограничение момента вправо, кН*м., должно быть в пределах от 0 до 35")] + public double TorqueMaxRight { get; set; } + + /// + /// Ограничение момента влево, кН*м + /// + [Range(0.0, 35.0, ErrorMessage = "Ограничение момента влево, кН*м., должно быть в пределах от 0 до 35")] + public double TorqueMaxLeft { get; set; } + + /// + /// Режим Авто/Руч + /// + [Range(0, 1, ErrorMessage = "Режим Авто/Руч, должен быть либо 0, либо 1")] + public int Mode { get; set; } + + /// + /// Примечание + /// + [StringLength(1024, ErrorMessage = "Примечание, должно быть не более 1024 символов")] + public string? Note { get; set; } +} \ No newline at end of file diff --git a/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanShockTestDto.cs b/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanShockTestDto.cs new file mode 100644 index 00000000..ca7e675b --- /dev/null +++ b/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanShockTestDto.cs @@ -0,0 +1,51 @@ +using System.ComponentModel.DataAnnotations; + +namespace AsbCloudApp.Data.ProcessMaps.Functions; + +/// +/// РТК план shocktest +/// +public class ProcessMapPlanShockTestDto : ProcessMapPlanBaseDto +{ + /// + /// StickSlip + /// + [Range(0.0, 1000.0, ErrorMessage = "StickSlip, должно быть в пределах от 0 до 1000")] + public double StickSlip { get; set; } + + /// + /// Whirl + /// + [Range(0.0, 1000.0, ErrorMessage = "Whirl, должно быть в пределах от 0 до 1000")] + public double Whirl { get; set; } + + /// + /// Осевые вибрации + /// + [Range(0.0, 1000.0, ErrorMessage = "Осевые вибрации, должно быть в пределах от 0 до 1000")] + public double AxialVibrations { get; set; } + + /// + /// Комбинированные вибрации + /// + [Range(0.0, 1000.0, ErrorMessage = "Комбинированные вибрации, должно быть в пределах от 0 до 1000")] + public double CombinedVibrations { get; set; } + + /// + /// Нагрузка минимальная, т + /// + [Range(0.0, 30.0, ErrorMessage = "Комбинированные вибрации, должно быть в пределах от 1 до 30")] + public double WeightOnBitMin { get; set; } + + /// + /// Минимальные обороты на ВСП, об/мин. + /// + [Range(5, 200, ErrorMessage = "Минимальные обороты на ВСП, об/мин., должно быть в пределах от 5 до 200")] + public double RpmMin { get; set; } + + /// + /// Примечание + /// + [StringLength(1024, ErrorMessage = "Примечание, должно быть не более 1024 символов")] + public string? Note { get; set; } +} \ No newline at end of file diff --git a/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanStaticMeasurementOutputDto.cs b/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanStaticMeasurementOutputDto.cs new file mode 100644 index 00000000..11ca16a2 --- /dev/null +++ b/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanStaticMeasurementOutputDto.cs @@ -0,0 +1,21 @@ +using System.ComponentModel.DataAnnotations; + +namespace AsbCloudApp.Data.ProcessMaps.Functions; + +/// +/// РТК план выход статического замера +/// +public class ProcessMapPlanStaticMeasurementOutputDto : ProcessMapPlanBaseDto +{ + /// + /// Время ожидания выхода сигнала с ТМС, сек. + /// + [Range(0.0, 1800.0, ErrorMessage = "Время ожидания выхода сигнала с ТМС, сек., должно быть в пределах от 0 до 1800")] + public double SignalWaitingTime { get; set; } + + /// + /// Примечание + /// + [StringLength(1024, ErrorMessage = "Примечание, должно быть не более 1024 символов")] + public string Note { get; set; } = string.Empty; +} \ No newline at end of file diff --git a/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanLoadCapacityDto.cs b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanLoadCapacityDto.cs new file mode 100644 index 00000000..e1e9f69a --- /dev/null +++ b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanLoadCapacityDto.cs @@ -0,0 +1,35 @@ +using System.ComponentModel.DataAnnotations; + +namespace AsbCloudApp.Data.ProcessMaps.Operations; + +/// +/// РТК план выработка нагрузки +/// +public class ProcessMapPlanLoadCapacityDto : ProcessMapPlanBaseDto +{ + /// + /// Время выработки минимальное, сек + /// + [Range(0.0, 800.0, ErrorMessage = "Время выработки минимальное, сек., должно быть в пределах от 0 до 800")] + public double TimeLoadCapacityMin { get; set; } + + /// + /// Перепад давления минимальный, атм + /// + [Range(0.1, 400.0, ErrorMessage = "Перепад давления минимальный, атм., должно быть в пределах от 0.1 до 400")] + public double DifferentialPressureMin { get; set; } + + /// + /// Нагрузка минимальная, т + /// + [Range(0.1, 99.0, ErrorMessage = "Нагрузка минимальная, т, должно быть в пределах от 0.1 до 99")] + public double WeightOnBitMin { get; set; } + + /// + /// Примечание + /// + [StringLength(1024, ErrorMessage = "Примечание, должно быть не более 1024 символов")] + public string Note { get; set; } = string.Empty; + + +} \ No newline at end of file diff --git a/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanOscillationAnglesDto.cs b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanOscillationAnglesDto.cs new file mode 100644 index 00000000..49e0769d --- /dev/null +++ b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanOscillationAnglesDto.cs @@ -0,0 +1,39 @@ +using System.ComponentModel.DataAnnotations; + +namespace AsbCloudApp.Data.ProcessMaps.Operations; + +/// +/// РТК план определения углов осцилляции +/// +public class ProcessMapPlanOscillationAnglesDto : ProcessMapPlanBaseDto +{ + /// + /// Момент на ВСП, кН*м., Уставка + /// + [Range(0.0, 35.0, ErrorMessage = "Момент на ВСП, кН*м., Уставка, должно быть в пределах от 0 до 35")] + public double TopDriveTorque { get; set; } + + /// + /// Момент на ВСП, кН*м., Ограничение + /// + [Range(0.0, 35.0, ErrorMessage = "Момент на ВСП, кН*м., Ограничение, должно быть в пределах от 0 до 35")] + public double TopDriveTorqueMax { get; set; } + + /// + /// Обороты на ВСП, об/мин., Уставка + /// + [Range(0.0, 270.0, ErrorMessage = "Обороты на ВСП, об/мин., Уставка, должно быть в пределах от 0 до 270")] + public double Rpm { get; set; } + + /// + /// Обороты на ВСП, об/мин., Ограничение + /// + [Range(0.0, 270.0, ErrorMessage = "Обороты на ВСП, об/мин., Ограничение, должно быть в пределах от 0 до 270")] + public double RpmMax { get; set; } + + /// + /// Примечание + /// + [StringLength(1024, ErrorMessage = "Примечание, должно быть не более 1024 символов")] + public string Note { get; set; } = string.Empty; +} \ No newline at end of file diff --git a/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanPositioningOffTheBottomDto.cs b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanPositioningOffTheBottomDto.cs new file mode 100644 index 00000000..f7df77c2 --- /dev/null +++ b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanPositioningOffTheBottomDto.cs @@ -0,0 +1,88 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace AsbCloudApp.Data.ProcessMaps.Operations; + +/// +/// РТК план позиционирования над забоем +/// +public class ProcessMapPlanPositioningOffTheBottomDto : ProcessMapPlanBaseDto +{ + /// + /// Остановка над забоем, м. + /// + [Range(0.0, 30.0, ErrorMessage = "Остановка над забоем, м., должно быть в пределах от 0 до 30")] + public double StopOffTheBottom { get; set; } + + /// + /// Максимально допустимое давление, атм. + /// + [Range(0.0, 400.0, ErrorMessage = "Максимально допустимое давление, атм., должно быть в пределах от 0 до 400")] + public double PressureMax { get; set; } + + /// + /// Перепад давления уставка, атм. + /// + [Range(0.0, 60.0, ErrorMessage = "Перепад давления уставка, атм., должно быть в пределах от 0 до 60")] + public double DifferentialPressure { get; set; } + + /// + /// Затяжка, т. + /// + [Range(0.0, 20.0, ErrorMessage = "Затяжка, т., должно быть в пределах от 0 до 20")] + public double Tight { get; set; } + + /// + /// Посадка, т. + /// + [Range(0.0, 20.0, ErrorMessage = "Посадка, т., должно быть в пределах от 0 до 20")] + public double SlackingOff { get; set; } + + /// + /// Максимально допустимый момент, кН*м. + /// + [Range(0.0, 35.0, ErrorMessage = "Максимально допустимый момент, кН*м., должно быть в пределах от 0 до 35")] + public double TorqueMax { get; set; } + + /// + /// Скорость вверх, м/ч. + /// + [Range(0.0, 999.0, ErrorMessage = "Скорость вверх, м/ч., должно быть в пределах от 0 до 999")] + public double RopUp { get; set; } + + /// + /// Скорость вниз, м/ч. + /// + [Range(0.0, 999.0, ErrorMessage = "Скорость вниз, м/ч., должно быть в пределах от 0 до 999")] + public double RopDown { get; set; } + + /// + /// Обороты вверх, об/мин. + /// + [Range(0.0, 270.0, ErrorMessage = "Обороты вверх, об/мин., должно быть в пределах от 0 до 270")] + public double RpmUp { get; set; } + + /// + /// Обороты вниз, об/мин. + /// + [Range(0.0, 270.0, ErrorMessage = "Обороты вниз, об/мин., должно быть в пределах от 0 до 270")] + public double RpmDown { get; set; } + + /// + /// Расход вверх, л/с. + /// + [Range(0.0, 100.0, ErrorMessage = "Расход вверх, л/с., должно быть в пределах от 0 до 100")] + public double FlowRateUp { get; set; } + + /// + /// Расход вниз, л/с. + /// + [Range(0.0, 100.0, ErrorMessage = "Расход вниз, л/с., должно быть в пределах от 0 до 100")] + public double FlowRateDown { get; set; } + + /// + /// Примечание + /// + [StringLength(1024, ErrorMessage = "Примечание, должно быть не более 1024 символов")] + public string Note { get; set; } = string.Empty; +} \ No newline at end of file diff --git a/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanReamingRotorDto.cs b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanReamingRotorDto.cs new file mode 100644 index 00000000..7277eb3f --- /dev/null +++ b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanReamingRotorDto.cs @@ -0,0 +1,207 @@ +using System.ComponentModel.DataAnnotations; + +namespace AsbCloudApp.Data.ProcessMaps.Operations; + +/// +/// РТК план проработка для ротора +/// +public class ProcessMapPlanReamingRotorDto : ProcessMapPlanBaseDto +{ + /// + /// Максимально допустимое давление, атм. + /// + [Range(0.0, 400.0, ErrorMessage = "Максимально допустимое давление, атм., должно быть в пределах от 0 до 400")] + public double PressureMax { get; set; } + + /// + /// Перепад давления уставка, атм. + /// + [Range(0.0, 60.0, ErrorMessage = "Перепад давления уставка, атм., должно быть в пределах от 0 до 60")] + public double DifferentialPressure { get; set; } + + /// + /// Затяжка, т. + /// + [Range(0.0, 20.0, ErrorMessage = "Затяжка, т., должно быть в пределах от 0 до 20")] + public double Tight { get; set; } + + /// + /// Посадка, т. + /// + [Range(0.0, 20.0, ErrorMessage = "Посадка, т., должно быть в пределах от 0 до 20")] + public double SlackingOff { get; set; } + + /// + /// Максимально допустимый момент, кН*м. + /// + [Range(0.0, 35.0, ErrorMessage = "Максимально допустимый момент, кН*м., посадка, должно быть в пределах от 0 до 35")] + public double TorqueMax { get; set; } + + /// + /// Проработка 1. Количество повторений, шт. + /// + [Range(0, 99, ErrorMessage = "Проработка 1. Количество повторений, шт., должно быть в пределах от 0 до 99")] + public int Reaming1RepetitionsCount { get; set; } + + /// + /// Проработка 1, Скорость, м/ч., Вверх + /// + [Range(0.0, 999.0, ErrorMessage = "Проработка 1, Скорость, м/ч., Вверх, должно быть в пределах от 0 до 999")] + public double Reaming1RopUp { get; set; } + + /// + /// Проработка 1, Скорость, м/ч., Вниз + /// + [Range(0.0, 999.0, ErrorMessage = "Проработка 1, Скорость, м/ч., Вниз, должно быть в пределах от 0 до 999")] + public double Reaming1RopDown { get; set; } + + /// + /// Проработка 1, Обороты, об/мин., Вверх + /// + [Range(0.0, 270.0, ErrorMessage = "Проработка 1, Обороты, об/мин., Вверх, должно быть в пределах от 0 до 270")] + public double Reaming1RpmUp { get; set; } + + /// + /// Проработка 1, Обороты, об/мин., Вниз + /// + [Range(0.0, 270.0, ErrorMessage = "Проработка 1, Обороты, об/мин., Вниз, должно быть в пределах от 0 до 270")] + public double Reaming1RpmDown { get; set; } + + /// + /// Проработка 1, Расход, л/с., Вверх + /// + [Range(0.0, 100.0, ErrorMessage = "Проработка 1, Расход, л/с., Вверх, должно быть в пределах от 0 до 100")] + public double Reaming1FlowRateUp { get; set; } + + /// + /// Проработка 1, Расход, л/с., Вниз + /// + [Range(0.0, 100.0, ErrorMessage = "Проработка 1, Расход, л/с., Вниз, должно быть в пределах от 0 до 100")] + public double Reaming1FlowRateDown { get; set; } + + /// + /// Проработка 1, Интервал проработки, м. + /// + [Range(0.0, 30.0, ErrorMessage = "Проработка 1, Интервал проработки, м., должно быть в пределах от 0 до 30")] + public double Reaming1Interval { get; set; } + + /// + /// Остановка над забоем, м. + /// + [Range(0.0, 10.0, ErrorMessage = "Остановка над забоем, м., должно быть в пределах от 0 до 10")] + public double Reaming1StopPointOffBottom { get; set; } + + /// + /// Проработка 2, Количество повторений, шт. + /// + [Range(0, 99, ErrorMessage = "Проработка 2, Количество повторений, шт., должно быть в пределах от 0 до 99")] + public int Reaming2RepetitionsCount { get; set; } + + /// + /// Проработка 2, Скорость, м/ч., Вверх + /// + [Range(0.0, 999.0, ErrorMessage = "Проработка 2, Скорость, м/ч., Вверх, должно быть в пределах от 0 до 999")] + public double Reaming2RopUp { get; set; } + + /// + /// Проработка 2, Скорость, м/ч., Вниз + /// + [Range(0.0, 999.0, ErrorMessage = "Проработка 2, Скорость, м/ч., Вниз, должно быть в пределах от 0 до 999")] + public double Reaming2RopDown { get; set; } + + /// + /// Проработка 2, Обороты, об/мин., Вверх + /// + [Range(0.0, 270.0, ErrorMessage = "Проработка 2, Обороты, об/мин., Вверх, должно быть в пределах от 0 до 270")] + public double Reaming2RpmUp { get; set; } + + /// + /// Проработка 2, Обороты, об/мин., Вниз + /// + [Range(0.0, 270.0, ErrorMessage = "Проработка 2, Обороты, об/мин., Вниз, должно быть в пределах от 0 до 270")] + public double Reaming2RpmDown { get; set; } + + /// + /// Проработка 2, Расход, л/с., Вверх + /// + [Range(0.0, 100.0, ErrorMessage = "Проработка 2, Расход, л/с., Вверх, должно быть в пределах от 0 до 100")] + public double Reaming2FlowRateUp { get; set; } + + /// + /// Проработка 2, Расход, л/с., Вниз + /// + [Range(0.0, 100.0, ErrorMessage = "Проработка 2, Расход, л/с., Вниз, должно быть в пределах от 0 до 100")] + public double Reaming2FlowRateDown { get; set; } + + /// + /// Проработка 2, Интервал проработки, м. + /// + [Range(0.0, 30.0, ErrorMessage = "Проработка 2, Интервал проработки, м., должно быть в пределах от 0 до 30")] + public double Reaming2Interval { get; set; } + + /// + /// Остановка над забоем, м. + /// + [Range(0.0, 10.0, ErrorMessage = "Остановка над забоем, м., должно быть в пределах от 0 до 10")] + public double Reaming2StopPointOffBottom { get; set; } + + /// + /// Проработка 3, Количество повторений, шт. + /// + [Range(0, 99, ErrorMessage = "Проработка 3, Количество повторений, шт., должно быть в пределах от 0 до 99")] + public int Reaming3RepetitionsCount { get; set; } + + /// + /// Проработка 3, Скорость, м/ч., Вверх + /// + [Range(0.0, 999.0, ErrorMessage = "Проработка 3, Скорость, м/ч., Вверх, должно быть в пределах от 0 до 999")] + public double Reaming3RopUp { get; set; } + + /// + /// Проработка 3, Скорость, м/ч., Вниз + /// + [Range(0.0, 999.0, ErrorMessage = "Проработка 3, Скорость, м/ч., Вниз, должно быть в пределах от 0 до 999")] + public double Reaming3RopDown { get; set; } + + /// + /// Проработка 3, Обороты, об/мин., Вверх + /// + [Range(0.0, 270.0, ErrorMessage = "Проработка 3, Обороты, об/мин., Вверх, должно быть в пределах от 0 до 270")] + public double Reaming3RpmUp { get; set; } + + /// + /// Проработка 3, Обороты, об/мин., Вниз + /// + [Range(0.0, 270.0, ErrorMessage = "Проработка 3, Обороты, об/мин., Вниз, должно быть в пределах от 0 до 270")] + public double Reaming3RpmDown { get; set; } + + /// + /// Проработка 3, Расход, л/с., Вверх + /// + [Range(0.0, 100.0, ErrorMessage = "Проработка 3, Расход, л/с., Вверх, должно быть в пределах от 0 до 100")] + public double Reaming3FlowRateUp { get; set; } + + /// + /// Проработка 3, Расход, л/с., Вниз + /// + [Range(0.0, 100.0, ErrorMessage = "Проработка 3, Расход, л/с., Вниз, должно быть в пределах от 0 до 100")] + public double Reaming3FlowRateDown { get; set; } + + /// + /// Проработка 3, Интервал проработки, м. + /// + [Range(0.0, 30.0, ErrorMessage = "Проработка 3, Интервал проработки, м., должно быть в пределах от 0 до 30")] + public double Reaming3Interval { get; set; } + + /// + /// Остановка над забоем, м. + /// + [Range(0.0, 10.0, ErrorMessage = "Остановка над забоем, м., должно быть в пределах от 0 до 10")] + public double Reaming3StopPointOffBottom { get; set; } + + /// + /// Примечание + /// + [StringLength(1024, ErrorMessage = "Примечание, должно быть не более 1024 символов")] + public string? Note { get; set; } +} \ No newline at end of file diff --git a/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanReamingSlideDto.cs b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanReamingSlideDto.cs new file mode 100644 index 00000000..a225a9d6 --- /dev/null +++ b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanReamingSlideDto.cs @@ -0,0 +1,209 @@ +using System.ComponentModel.DataAnnotations; + +namespace AsbCloudApp.Data.ProcessMaps.Operations; + +/// +/// РТК план проработка для слайда +/// +public class ProcessMapPlanReamingSlideDto : ProcessMapPlanBaseDto +{ + /// + /// Максимально допустимое давление, атм + /// + [Range(0.0, 400.0, ErrorMessage = "Максимально допустимое давление, атм., должно быть в пределах от 0 до 400")] + public double PressureMax { get; set; } + + /// + /// Перепад давления уставка, атм + /// + [Range(0.0, 60.0, ErrorMessage = "Перепад давления уставка, атм., должно быть в пределах от 0 до 60")] + public double DifferentialPressure { get; set; } + + /// + /// Затяжка + /// + [Range(0.0, 20.0, ErrorMessage = "Затяжка, должно быть в пределах от 0 до 20")] + public double Tight { get; set; } + + /// + /// Посадка + /// + [Range(0.0, 20.0, ErrorMessage = "Посадка, должно быть в пределах от 0 до 20")] + public double SlackingOff { get; set; } + + /// + /// Максимально допустимый момент, кН*м. + /// + [Range(0.0, 35.0, ErrorMessage = "Максимально допустимый момент, кН*м., должно быть в пределах от 0 до 35")] + public double TorqueMax { get; set; } + + /// + /// Проработка 1, Количество повторений, шт. + /// + [Range(0.0, 99.0, ErrorMessage = "Проработка 1, Количество повторений, шт., должно быть в пределах от 0 до 99")] + public int Reaming1RepetitionsCount { get; set; } + + /// + /// Проработка 1, Скорость, м/ч., Вверх + /// + [Range(0.0, 999.0, ErrorMessage = "Проработка 1, Скорость, м/ч., Вверх, должно быть в пределах от 0 до 999")] + public double Reaming1RopUp { get; set; } + + /// + /// Проработка 1, Скорость, м/ч., Вниз + /// + [Range(0.0, 999.0, ErrorMessage = "Проработка 1, Скорость, м/ч., Вниз, должно быть в пределах от 0 до 999")] + public double Reaming1RopDown { get; set; } + + /// + /// Проработка 1, Обороты, об/мин., Вверх + /// + [Range(0.0, 270.0, ErrorMessage = "Проработка 1, Обороты, об/мин., Вверх, должно быть в пределах от 0 до 270")] + public double Reaming1RpmUp { get; set; } + + /// + /// Проработка 1, Обороты, об/мин., Вниз + /// + [Range(0.0, 270.0, ErrorMessage = "Проработка 1, Обороты, об/мин., Вниз, должно быть в пределах от 0 до 270")] + public double Reaming1RpmDown { get; set; } + + /// + /// Проработка 1, Расход, л/с., Вверх + /// + [Range(0.0, 100.0, ErrorMessage = "Проработка 1, Расход, л/с., Вверх, должно быть в пределах от 0 до 100")] + public double Reaming1FlowRateUp { get; set; } + + /// + /// Проработка 1, Расход, л/с., Вниз + /// + [Range(0.0, 100.0, ErrorMessage = "Проработка 1, Расход, л/с., Вниз, должно быть в пределах от 0 до 100")] + public double Reaming1FlowRateDown { get; set; } + + /// + /// Проработка 1, Интервал проработки, м. + /// + [Range(0.0, 30.0, ErrorMessage = "Проработка 1, Интервал проработки, м., должно быть в пределах от 0 до 30")] + public double Reaming1Interval { get; set; } + + /// + /// Остановка над забоем, м. + /// + [Range(0.0, 10.0, ErrorMessage = "Остановка над забоем, м., должно быть в пределах от 0 до 10")] + public double Reaming1StopPointOffBottom { get; set; } + + /// + /// Проработка 2, Количество повторений, шт. + /// + [Range(0.0, 99.0, ErrorMessage = "Проработка 2, Количество повторений, шт., должно быть в пределах от 0 до 99")] + public int Reaming2RepetitionsCount { get; set; } + + /// + /// Проработка 2, Скорость, м/ч., Вверх + /// + [Range(0.0, 999.0, ErrorMessage = "Проработка 2, Скорость, м/ч., Вверх, должно быть в пределах от 0 до 999")] + public double Reaming2RopUp { get; set; } + + /// + /// Проработка 2, Скорость, м/ч., Вниз + /// + [Range(0.0, 999.0, ErrorMessage = "Проработка 2, Скорость, м/ч., Вниз, должно быть в пределах от 0 до 999")] + public double Reaming2RopDown { get; set; } + + /// + /// Проработка 2, Обороты, об/мин., Вверх + /// + [Range(0.0, 270.0, ErrorMessage = "Проработка 2, Обороты, об/мин., Вверх, должно быть в пределах от 0 до 270")] + public double Reaming2RpmUp { get; set; } + + /// + /// Проработка 2, Обороты, об/мин., Вниз + /// + [Range(0.0, 270.0, ErrorMessage = "Проработка 2, Обороты, об/мин., Вниз, должно быть в пределах от 0 до 270")] + public double Reaming2RpmDown { get; set; } + + /// + /// Проработка 2, Расход, л/с., Вверх + /// + [Range(0.0, 100.0, ErrorMessage = "Проработка 2, Расход, л/с., Вверх, должно быть в пределах от 0 до 100")] + public double Reaming2FlowRateUp { get; set; } + + /// + /// Проработка 2, Расход, л/с., Вниз + /// + [Range(0.0, 100.0, ErrorMessage = "Проработка 2, Расход, л/с., Вниз, должно быть в пределах от 0 до 100")] + public double Reaming2FlowRateDown { get; set; } + + /// + /// Проработка 2, Интервал проработки, м. + /// + [Range(0.0, 30.0, ErrorMessage = "Проработка 2, Интервал проработки, м., должно быть в пределах от 0 до 30")] + public double Reaming2Interval { get; set; } + + /// + /// Остановка над забоем, м. + /// + [Range(0.0, 10.0, ErrorMessage = "Остановка над забоем, м., должно быть в пределах от 0 до 10")] + public double Reaming2StopPointOffBottom { get; set; } + + /// + /// Проработка 3, Количество повторений, шт. + /// + [Range(0.0, 99.0, ErrorMessage = "Проработка 3, Количество повторений, шт., должно быть в пределах от 0 до 99")] + public int? Reaming3RepetitionsCount { get; set; } + + /// + /// Проработка 3, Скорость, м/ч., Вверх + /// + [Range(0.0, 999.0, ErrorMessage = "Проработка 3, Скорость, м/ч., Вверх, должно быть в пределах от 0 до 999")] + public double Reaming3RopUp { get; set; } + + /// + /// Проработка 3, Скорость, м/ч., Вниз + /// + [Range(0.0, 999.0, ErrorMessage = "Проработка 3, Скорость, м/ч., Вниз, должно быть в пределах от 0 до 999")] + public double Reaming3RopDown { get; set; } + + /// + /// Проработка 3, Обороты, об/мин., Вверх + /// + [Range(0.0, 270.0, ErrorMessage = "Проработка 3, Обороты, об/мин., Вверх, должно быть в пределах от 0 до 270")] + public double Reaming3RpmUp { get; set; } + + /// + /// Проработка 3, Обороты, об/мин., Вниз + /// + [Range(0.0, 270.0, ErrorMessage = "Проработка 3, Обороты, об/мин., Вниз, должно быть в пределах от 0 до 270")] + public double Reaming3RpmDown { get; set; } + + /// + /// Проработка 3, Расход, л/с., Вверх + /// + [Range(0.0, 100.0, ErrorMessage = "Проработка 3, Расход, л/с., Вверх, должно быть в пределах от 0 до 100")] + public double Reaming3FlowRateUp { get; set; } + + /// + /// Проработка 3, Расход, л/с., Вниз + /// + [Range(0.0, 100.0, ErrorMessage = "Проработка 3, Расход, л/с., Вниз, должно быть в пределах от 0 до 100")] + public double Reaming3FlowRateDown { get; set; } + + /// + /// Проработка 3, Интервал проработки, м. + /// + [Range(0.0, 30.0, ErrorMessage = "Проработка 3, Интервал проработки, м., должно быть в пределах от 0 до 30")] + public double Reaming3Interval { get; set; } + + /// + /// Остановка над забоем, м. + /// + [Range(0.0, 10.0, ErrorMessage = "Остановка над забоем, м., должно быть в пределах от 0 до 10")] + public double Reaming3StopPointOffBottom { get; set; } + + /// + /// Примечание + /// + [StringLength(1024, ErrorMessage = "Примечание, должно быть не более 1024 символов")] + public string? Note { get; set; } + + +} \ No newline at end of file diff --git a/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanRecordingStaticMeasurementDto.cs b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanRecordingStaticMeasurementDto.cs new file mode 100644 index 00000000..7be6ef31 --- /dev/null +++ b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanRecordingStaticMeasurementDto.cs @@ -0,0 +1,21 @@ +using System.ComponentModel.DataAnnotations; + +namespace AsbCloudApp.Data.ProcessMaps.Operations; + +/// +/// РТК план записи статического замера +/// +public class ProcessMapPlanRecordingStaticMeasurementDto : ProcessMapPlanBaseDto +{ + /// + /// Время записи замера, сек + /// + [Range(0.0, 1800.0, ErrorMessage = "Время записи замера, сек., должно быть в пределах от 0 до 1800")] + public double MeasurementRecordingTime { get; set; } + + /// + /// Примечание + /// + [StringLength(1024, ErrorMessage = "Примечание, не должно превышать 1024 символов")] + public string Note { get; set; } = string.Empty; +} \ No newline at end of file diff --git a/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanRotorDto.cs b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanRotorDto.cs new file mode 100644 index 00000000..9835772a --- /dev/null +++ b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanRotorDto.cs @@ -0,0 +1,88 @@ +using System.ComponentModel.DataAnnotations; + +namespace AsbCloudApp.Data.ProcessMaps.Operations; + +/// +/// РТК план бурение скважины в роторе +/// +public class ProcessMapPlanRotorDto : ProcessMapPlanBaseDto +{ + /// + /// Максимально допустимая скорость, м/ч + /// + [Range(0, 800.0, ErrorMessage = "Максимально допустимая скорость, м/ч., должно быть в пределах от 0 до 800.0")] + public double RopMax { get; set; } + + /// + /// Максимально допустимое давление, атм + /// + [Range(0.0, 400.0, ErrorMessage = "Максимально допустимое давление, атм., должно быть в пределах от 0 до 400.0")] + public double PressureMax { get; set; } + + /// + /// Перепад давления, атм. Уставка + /// + [Range(0.0, 60.0, ErrorMessage = "Перепад давления, атм., уставка, должно быть в пределах от 0 до 60.0")] + public double DifferentialPressure { get; set; } + + /// + /// Перепад давления, атм. Ограничение + /// + [Range(0.0, 60.0, ErrorMessage = "Перепад давления, атм., ограничение, должно быть в пределах от 0 до 60.0")] + public double DifferentialPressureMax { get; set; } + + /// + /// Нагрузка, т. Уставка + /// + [Range(0.0, 99.0, ErrorMessage = "Нагрузка, т., уставка, должно быть в пределах от 0 до 99.0")] + public double WeightOnBit { get; set; } + + /// + /// Нагрузка, т. Ограничение + /// + [Range(0.0, 99.0, ErrorMessage = "Нагрузка, т., ограничение, должно быть в пределах от 0 до 99.0")] + public double WeightOnBitMax { get; set; } + + /// + /// Момент на ВСП, кН*м. Уставка + /// + [Range(0.0, 35.0, ErrorMessage = "Момент на ВСП, кН*м., уставка, должно быть в пределах от 0 до 35.0")] + public double TopDriveTorque { get; set; } + + /// + /// Момент на ВСП, кН*м. Ограничение + /// + [Range(0.0, 35.0, ErrorMessage = "Момент на ВСП, кН*м., ограничение, должно быть в пределах от 0 до 35.0")] + public double TopDriveTorqueMax { get; set; } + + /// + /// Обороты на ВСП, об/мин. Уставка + /// + [Range(0.0, 270.0, ErrorMessage = "Обороты на ВСП, об/мин., уставка, должно быть в пределах от 0 до 270.0")] + public double Rpm { get; set; } + + /// + /// Обороты на ВСП, об/мин. Ограничение + /// + [Range(0.0, 270.0, ErrorMessage = "Обороты на ВСП, об/мин., ограничение, должно быть в пределах от 0 до 270.0")] + public double RpmMax { get; set; } + + /// + /// Расход л/с. Уставка + /// + [Range(0.0, 100.0, ErrorMessage = "Расход л/с., уставка, должно быть в пределах от 0 до 100.0")] + public double FlowRate { get; set; } + + /// + /// Расход л/с. Ограничение + /// + [Range(0.0, 100.0, ErrorMessage = "Расход л/с., ограничение, должно быть в пределах от 0 до 100.0")] + public double FlowRateMax { get; set; } + + /// + /// Примечание + /// + [StringLength(1024, ErrorMessage = "Примечание, не должно превышать 1024 символов")] + public string Note { get; set; } = string.Empty; + +} \ No newline at end of file diff --git a/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanSlideDto.cs b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanSlideDto.cs new file mode 100644 index 00000000..8d566c0f --- /dev/null +++ b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanSlideDto.cs @@ -0,0 +1,75 @@ +using System.ComponentModel.DataAnnotations; + +namespace AsbCloudApp.Data.ProcessMaps.Operations; + +/// +/// РТК план бурение скважины в слайде +/// +public class ProcessMapPlanSlideDto : ProcessMapPlanBaseDto +{ + /// + /// Максимально допустимая скорость, м/ч + /// + [Range(0, 800, ErrorMessage = "Максимально допустимая скорость, м/ч., должно быть в пределах от 0 до 800")] + public double RopMax { get; set; } + + /// + /// Максимально допустимое давление, атм + /// + [Range(0, 400, ErrorMessage = "Максимально допустимое давление, атм., должно быть в пределах от 0 до 400")] + public double PressureMax { get; set; } + + /// + /// Перепад давления уставка, атм + /// + [Range(0, 60, ErrorMessage = "Перепад давления уставка, атм., должно быть в пределах от 0 до 60")] + public double DifferentialPressure { get; set; } + + /// + /// Перепад давления ограничение, атм + /// + [Range(0, 60, ErrorMessage = "Перепад давления ограничение, атм., должно быть в пределах от 0 до 60")] + public double DifferentialPressureMax { get; set; } + + /// + /// Нагрузка уставка, т + /// + [Range(0, 99, ErrorMessage = "Нагрузка уставка, т., должно быть в пределах от 0 до 99")] + public double WeightOnBit { get; set; } + + /// + /// Нагрузка ограничение, т + /// + [Range(0, 99, ErrorMessage = "Нагрузка ограничение, т., должно быть в пределах от 0 до 99")] + public double WeightOnBitMax { get; set; } + + /// + /// Расход уставка л/с + /// + [Range(0, 100, ErrorMessage = "Расход уставка л/с., должно быть в пределах от 0 до 100")] + public double FlowRate { get; set; } + + /// + /// Расход ограничение л/с + /// + [Range(0, 100, ErrorMessage = "Расход ограничение л/с., должно быть в пределах от 0 до 100")] + public double FlowRateMax { get; set; } + + /// + /// Расчётная пружина, градус + /// + [Range(0, 9999, ErrorMessage = "Расчётная пружина, градус, должно быть в пределах от 0 до 9999")] + public double Spring { get; set; } + + /// + /// Складывание инструмента, м + /// + [Range(0, 9999, ErrorMessage = "Складывание инструмента, м., должно быть в пределах от 0 до 9999")] + public double Buckling { get; set; } + + /// + /// Примечание + /// + [StringLength(1024, ErrorMessage = "Примечание, не должно превышать 1024 символов")] + public string Note { get; set; } = string.Empty; +} \ No newline at end of file diff --git a/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanSwitchingOffThePumpDto.cs b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanSwitchingOffThePumpDto.cs new file mode 100644 index 00000000..26cf2eeb --- /dev/null +++ b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanSwitchingOffThePumpDto.cs @@ -0,0 +1,27 @@ +using System.ComponentModel.DataAnnotations; + +namespace AsbCloudApp.Data.ProcessMaps.Operations; + +/// +/// РТК план выключение насоса +/// +public class ProcessMapPlanSwitchingOffThePumpDto : ProcessMapPlanBaseDto +{ + /// + /// Продолжительность, сек. + /// + [Range(0.0, 1800.0, ErrorMessage = "Продолжительность, сек., должно быть в пределах от 0 до 1800")] + public double Duration { get; set; } + + /// + /// Лимит остаточного давления, атм. + /// + [Range(0.0, 100.0, ErrorMessage = "Лимит остаточного давления, атм., должно быть в пределах от 0 до 100")] + public double ResidualPressureLimit { get; set; } + + /// + /// Примечание + /// + [StringLength(1024, ErrorMessage = "Примечание, должно быть не более 1024 символов")] + public string Note { get; set; } = string.Empty; +} \ No newline at end of file diff --git a/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanSwitchingToTheModeDto.cs b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanSwitchingToTheModeDto.cs new file mode 100644 index 00000000..db7d162d --- /dev/null +++ b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanSwitchingToTheModeDto.cs @@ -0,0 +1,34 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace AsbCloudApp.Data.ProcessMaps.Operations; + +/// +/// РТК план выход на плановый расход +/// +public class ProcessMapPlanSwitchingToTheModeDto : ProcessMapPlanBaseDto +{ + /// + /// Время выхода буровых насосов на плановый расход, сек. + /// + [Range(0.0, 3600.0, ErrorMessage = "Время выхода буровых насосов на плановый расход, сек., должно быть в пределах от 0 до 3600")] + public double RampTime { get; set; } + + /// + /// Расход, л/с + /// + [Range(0.0, 100.0, ErrorMessage = "Расход, л/с., должно быть в пределах от 0 до 100")] + public double FlowRate { get; set; } + + /// + /// Максимально допустимое давление, атм. + /// + [Range(0.0, 400.0, ErrorMessage = "Максимально допустимое давление, атм., должно быть в пределах от 0 до 400")] + public double PressureMax { get; set; } + + /// + /// Примечание + /// + [StringLength(1024, ErrorMessage = "Примечание, должно быть не более 1024 символов")] + public string Note { get; set; } = string.Empty; +} \ No newline at end of file diff --git a/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanTFOrientationDto.cs b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanTFOrientationDto.cs new file mode 100644 index 00000000..a3d7eabb --- /dev/null +++ b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanTFOrientationDto.cs @@ -0,0 +1,99 @@ +using System.ComponentModel.DataAnnotations; + +namespace AsbCloudApp.Data.ProcessMaps.Operations; + +/// +/// РТК план выставление +/// +public class ProcessMapPlanTFOrientationDto : ProcessMapPlanBaseDto +{ + /// + /// Задание TF, град. + /// + [Range(0.0, 360.0, ErrorMessage = "Задание TF, град., должно быть в пределах от 0 до 360")] + public double TFSetpoint { get; set; } + + /// + /// Пружина, град. + /// + [Range(0.0, 10000.0, ErrorMessage = "Пружина, град., должно быть в пределах от 0 до 10000")] + public double Spring { get; set; } + + /// + /// Максимальное давление, атм. + /// + [Range(0.0, 400.0, ErrorMessage = "Максимальное давление, атм., должно быть в пределах от 0 до 400")] + public double PressureMax { get; set; } + + /// + /// Перепад давления, атм. + /// + [Range(0.0, 60.0, ErrorMessage = "Перепад давления, атм., должно быть в пределах от 0 до 60")] + public double DifferentialPressure { get; set; } + + /// + /// Затяжка, т. + /// + [Range(0.0, 20.0, ErrorMessage = "Затяжка, т., должно быть в пределах от 0 до 20")] + public double Tight { get; set; } + + /// + /// Посадка, т. + /// + [Range(0.0, 20.0, ErrorMessage = "Посадка, т., должно быть в пределах от 0 до 20")] + public double SlackingOff { get; set; } + + /// + /// Максимально допустимый момент, кН*м. + /// + [Range(0.0, 35.0, ErrorMessage = "Максимально допустимый момент, кН*м., должно быть в пределах от 0 до 35")] + public double TorqueMax { get; set; } + + /// + /// Количество расхаживаний, шт. + /// + [Range(0.0, 99.0, ErrorMessage = "Количество расхаживаний, шт., должно быть в пределах от 0 до 99")] + public int RepetitionsCount { get; set; } + + /// + /// Скорость вверх, м/ч. + /// + [Range(0.0, 999.0, ErrorMessage = "Скорость вверх, м/ч., должно быть в пределах от 0 до 999")] + public double RopUp { get; set; } + + /// + /// Скорость вниз, м/ч. + /// + [Range(0.0, 999.0, ErrorMessage = "Скорость вниз, м/ч., должно быть в пределах от 0 до 999")] + public double RopDown { get; set; } + + /// + /// Расход вверх, л/с. + /// + [Range(0.0, 100.0, ErrorMessage = "Расход вверх, л/с., должно быть в пределах от 0 до 100")] + public double FlowRateUp { get; set; } + + /// + /// Расход вниз, л/с. + /// + [Range(0.0, 100.0, ErrorMessage = "Расход вниз, л/с., должно быть в пределах от 0 до 100")] + public double FlowRateDown { get; set; } + + /// + /// Интервал расхаживания, м. + /// + [Range(0.0, 30.0, ErrorMessage = "Интервал расхаживания, м., должно быть в пределах от 0 до 30")] + public double Interval { get; set; } + + /// + /// Остановка над забоем, м. + /// + [Range(0.0, 10.0, ErrorMessage = "Остановка над забоем, м., должно быть в пределах от 0 до 10")] + public double StopPointOffBottom { get; set; } + + /// + /// Примечание + /// + [StringLength(1024, ErrorMessage = "Примечание, должно быть не более 1024 символов")] + public string Note { get; set; } = string.Empty; +} \ No newline at end of file diff --git a/AsbCloudApp/Data/ProcessMaps/ProcessMapPlanBaseDto.cs b/AsbCloudApp/Data/ProcessMaps/ProcessMapPlanBaseDto.cs index c2ce713a..482b0f50 100644 --- a/AsbCloudApp/Data/ProcessMaps/ProcessMapPlanBaseDto.cs +++ b/AsbCloudApp/Data/ProcessMaps/ProcessMapPlanBaseDto.cs @@ -1,17 +1,22 @@ -using System; +using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; namespace AsbCloudApp.Data.ProcessMaps; /// -public abstract class ProcessMapPlanBaseDto : ChangeLogAbstract, IId, IWellRelated, IValidatableObject +public abstract class ProcessMapPlanBaseDto : IId, IWellRelated, IValidatableObject { /// /// Id скважины /// public int IdWell { get; set; } + /// + /// Id записи + /// + public int Id { get; set; } + /// /// Тип секции /// diff --git a/AsbCloudApp/Data/ProcessMaps/ProcessMapPlanDrillingDto.cs b/AsbCloudApp/Data/ProcessMaps/ProcessMapPlanDrillingDto.cs deleted file mode 100644 index ea2555a8..00000000 --- a/AsbCloudApp/Data/ProcessMaps/ProcessMapPlanDrillingDto.cs +++ /dev/null @@ -1,103 +0,0 @@ -using System.ComponentModel.DataAnnotations; - -namespace AsbCloudApp.Data.ProcessMaps; - -/// -/// РТК план бурение скважины -/// -public class ProcessMapPlanDrillingDto : ProcessMapPlanBaseDto -{ - /// - /// Id режима 1-ротор, 2 - слайд - /// - [Range(1, 2, ErrorMessage = "Id режима должен быть либо 1-ротор либо 2-слайд")] - public int IdMode { get; set; } - - /// - /// Название режима бурения - /// - public string? Mode { get; set; } - - /// - /// Осевая нагрузка, т план - /// - [Range(0, 99999.9, ErrorMessage = "Осевая нагрузка, т должна быть в пределах от 0 до 99999.9")] - public double AxialLoadPlan { get; set; } - - /// - /// Осевая нагрузка, т ограничение - /// - [Range(0, 99999.9, ErrorMessage = "Осевая нагрузка, т должна быть в пределах от 0 до 99999.9")] - public double AxialLoadLimitMax { get; set; } - - /// - /// Перепад давления, атм план - /// - [Range(0, 99999.9, ErrorMessage = "Перепад давления, атм должна быть в пределах от 0 до 99999.9")] - public double DeltaPressurePlan { get; set; } - - /// - /// Перепад давления, атм ограничение - /// - [Range(0, 99999.9, ErrorMessage = "Перепад давления, атм должна быть в пределах от 0 до 99999.9")] - public double DeltaPressureLimitMax { get; set; } - - /// - /// Момент на ВСП, кН*м план - /// - [Range(0, 99999.9, ErrorMessage = "Момент на ВСП, кН*м должна быть в пределах от 0 до 99999.9")] - public double TopDriveTorquePlan { get; set; } - - /// - /// Момент на ВСП, кН*м ограничение - /// - [Range(0, 99999.9, ErrorMessage = "Момент на ВСП, кН*м должна быть в пределах от 0 до 99999.9")] - public double TopDriveTorqueLimitMax { get; set; } - - /// - /// Обороты на ВСП, об/мин план - /// - [Range(0, 99999.9, ErrorMessage = "Обороты на ВСП, об/мин должна быть в пределах от 0 до 99999.9")] - public double TopDriveSpeedPlan { get; set; } - - /// - /// Обороты на ВСП, об/мин ограничение - /// - [Range(0, 99999.9, ErrorMessage = "Обороты на ВСП, об/мин должна быть в пределах от 0 до 99999.9")] - public double TopDriveSpeedLimitMax { get; set; } - - /// - /// Расход, л/с план - /// - [Range(0, 99999.9, ErrorMessage = "Расход, л/с должна быть в пределах от 0 до 99999.9")] - public double FlowPlan { get; set; } - - /// - /// Расход, л/с ограничение - /// - [Range(0, 99999.9, ErrorMessage = "Расход, л/с должна быть в пределах от 0 до 99999.9")] - public double FlowLimitMax { get; set; } - - /// - /// Плановая механическая скорость, м/ч - /// - [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; } - - /// - /// Комментарий - /// - public string Comment { get; set; } = string.Empty; -} \ No newline at end of file diff --git a/AsbCloudApp/Data/ProcessMaps/ProcessMapPlanReamDto.cs b/AsbCloudApp/Data/ProcessMaps/ProcessMapPlanReamDto.cs deleted file mode 100644 index 9d6438dc..00000000 --- a/AsbCloudApp/Data/ProcessMaps/ProcessMapPlanReamDto.cs +++ /dev/null @@ -1,82 +0,0 @@ -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; - -namespace AsbCloudApp.Data.ProcessMaps; - -/// -/// РТК план проработка скважины -/// -public class ProcessMapPlanReamDto : ProcessMapPlanBaseDto, IValidatableObject -{ - /// - /// Количество повторений - /// - [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; } - - /// - 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/ProcessMapReportDataSaubStatDto.cs b/AsbCloudApp/Data/ProcessMaps/Report/ProcessMapReportDataSaubStatDto.cs index 4bf221de..28366a6c 100644 --- a/AsbCloudApp/Data/ProcessMaps/Report/ProcessMapReportDataSaubStatDto.cs +++ b/AsbCloudApp/Data/ProcessMaps/Report/ProcessMapReportDataSaubStatDto.cs @@ -1,4 +1,4 @@ -using System; +using System; namespace AsbCloudApp.Data.ProcessMaps.Report; @@ -12,69 +12,69 @@ public class ProcessMapReportDataSaubStatDto /// public double DrilledTime { get; set; } = 0; - /// - /// Id секции скважины - /// - public int IdWellSectionType { get; set; } + /// + /// Id секции скважины + /// + public int IdWellSectionType { get; set; } - /// - /// Название секции скважины - /// - public string WellSectionTypeName { get; set; } = null!; + /// + /// Название секции скважины + /// + public string WellSectionTypeName { get; set; } = null!; - /// - /// Глубина по стволу от, м - /// - /// на начало интервала - /// - /// - public double DepthStart { get; set; } + /// + /// Глубина по стволу от, м + /// + /// на начало интервала + /// + /// + public double DepthStart { get; set; } - /// - /// Глубина по стволу до, м - /// - /// на конец интервала - /// - /// - public double DepthEnd { get; set; } + /// + /// Глубина по стволу до, м + /// + /// на конец интервала + /// + /// + public double DepthEnd { get; set; } - /// - /// Дата/ время - /// - /// на начало интервала - /// - /// - public DateTimeOffset DateStart { get; set; } + /// + /// Дата/ время + /// + /// на начало интервала + /// + /// + public DateTimeOffset DateStart { get; set; } - /// - /// Режим бурения (Ротор/слайд/ручной) - /// - public string DrillingMode { get; set; } = null!; + /// + /// Режим бурения (Ротор/слайд/ручной) + /// + public string DrillingMode { get; set; } = null!; - /// - /// Проходка, м - /// - public double? DeltaDepth { get; set; } + /// + /// Проходка, м + /// + public double? DeltaDepth { get; set; } - /// - /// Перепад давления, атм - /// - public ProcessMapReportDataSaubStatParamsDto PressureDiff { get; set; } = new(); + /// + /// Перепад давления, атм + /// + public ProcessMapReportDataSaubStatParamsDto PressureDiff { get; set; } = new(); - /// - /// Нагрузка, т - /// - public ProcessMapReportDataSaubStatParamsDto AxialLoad { get; set; } = new(); + /// + /// Нагрузка, т + /// + public ProcessMapReportDataSaubStatParamsDto AxialLoad { get; set; } = new(); - /// - /// Момент на ВСП, кНхМ - /// - public ProcessMapReportDataSaubStatParamsDto TopDriveTorque { get; set; } = new(); + /// + /// Момент на ВСП, кНхМ + /// + public ProcessMapReportDataSaubStatParamsDto TopDriveTorque { get; set; } = new(); - /// - /// Ограничение скорости, м/ч - /// - public ProcessMapReportDataSaubStatParamsDto SpeedLimit { get; set; } = new(); + /// + /// Ограничение скорости, м/ч + /// + public ProcessMapReportDataSaubStatParamsDto SpeedLimit { get; set; } = new(); /// /// Обороты ВСП, об/мин @@ -86,8 +86,8 @@ public class ProcessMapReportDataSaubStatDto /// public ProcessMapReportDataSaubStatParamsDto Flow { get; set; } = new(); - /// - /// Механическая скорость, м/ч - /// - public PlanFactDto Rop { get; set; } = new(); + /// + /// Механическая скорость, м/ч + /// + public PlanFactDto Rop { get; set; } = new(); } \ No newline at end of file diff --git a/AsbCloudApp/Data/ProcessMaps/Report/ProcessMapReportDataSaubStatParamsDto.cs b/AsbCloudApp/Data/ProcessMaps/Report/ProcessMapReportDataSaubStatParamsDto.cs index 1ed34027..710fcd4e 100644 --- a/AsbCloudApp/Data/ProcessMaps/Report/ProcessMapReportDataSaubStatParamsDto.cs +++ b/AsbCloudApp/Data/ProcessMaps/Report/ProcessMapReportDataSaubStatParamsDto.cs @@ -1,4 +1,4 @@ -namespace AsbCloudApp.Data.ProcessMaps.Report; +namespace AsbCloudApp.Data.ProcessMaps.Report; /// /// Параметры РТК diff --git a/AsbCloudApp/Data/ProcessMaps/Report/ProcessMapReportWellDrillingDto.cs b/AsbCloudApp/Data/ProcessMaps/Report/ProcessMapReportWellDrillingDto.cs index cee53050..a7a0f28c 100644 --- a/AsbCloudApp/Data/ProcessMaps/Report/ProcessMapReportWellDrillingDto.cs +++ b/AsbCloudApp/Data/ProcessMaps/Report/ProcessMapReportWellDrillingDto.cs @@ -1,4 +1,4 @@ -using System; +using System; namespace AsbCloudApp.Data.ProcessMaps.Report; @@ -7,92 +7,92 @@ namespace AsbCloudApp.Data.ProcessMaps.Report; /// public class ProcessMapReportWellDrillingDto { - /// - /// Идентификатор скважины - /// - public int IdWell { get; set; } + /// + /// Идентификатор скважины + /// + public int IdWell { get; set; } - /// - /// Id секции скважины - /// - public int IdWellSectionType { get; set; } + /// + /// Id секции скважины + /// + public int IdWellSectionType { get; set; } - /// - /// Название секции скважины - /// - public string WellSectionTypeName { get; set; } = null!; + /// + /// Название секции скважины + /// + public string WellSectionTypeName { get; set; } = null!; - /// - /// Глубина по стволу от, м - /// - /// на начало интервала - /// - /// - public double DepthStart { get; set; } + /// + /// Глубина по стволу от, м + /// + /// на начало интервала + /// + /// + public double DepthStart { get; set; } - /// - /// Глубина по стволу до, м - /// - /// на конец интервала - /// - /// - public double DepthEnd { get; set; } + /// + /// Глубина по стволу до, м + /// + /// на конец интервала + /// + /// + public double DepthEnd { get; set; } - /// - /// Дата/ время - /// - /// на начало интервала - /// - /// - public DateTimeOffset DateStart { get; set; } + /// + /// Дата/ время + /// + /// на начало интервала + /// + /// + public DateTimeOffset DateStart { get; set; } - /// - /// Время мех бурения, ч - /// - public double MechDrillingHours { get; set; } + /// + /// Время мех бурения, ч + /// + public double MechDrillingHours { get; set; } - /// - /// Режим бурения (Ротор/слайд/ручной) - /// - public string DrillingMode { get; set; } = null!; + /// + /// Режим бурения (Ротор/слайд/ручной) + /// + public string DrillingMode { get; set; } = null!; - /// - /// Проходка, м - /// - public double? DeltaDepth { get; set; } + /// + /// Проходка, м + /// + public double? DeltaDepth { get; set; } - /// - /// Перепад давления, атм - /// - public ProcessMapReportWellDrillingParamsDto PressureDiff { get; set; } = new(); + /// + /// Перепад давления, атм + /// + public ProcessMapReportWellDrillingParamsDto PressureDiff { get; set; } = new(); - /// - /// Нагрузка, т - /// - public ProcessMapReportWellDrillingParamsDto AxialLoad { get; set; } = new(); + /// + /// Нагрузка, т + /// + public ProcessMapReportWellDrillingParamsDto AxialLoad { get; set; } = new(); - /// - /// Момент на ВСП, кНхМ - /// - public ProcessMapReportWellDrillingParamsDto TopDriveTorque { get; set; } = new(); + /// + /// Момент на ВСП, кНхМ + /// + public ProcessMapReportWellDrillingParamsDto TopDriveTorque { get; set; } = new(); - /// - /// Ограничение скорости, м/ч - /// - public ProcessMapReportWellDrillingParamsDto SpeedLimit { get; set; } = new(); + /// + /// Ограничение скорости, м/ч + /// + public ProcessMapReportWellDrillingParamsDto SpeedLimit { get; set; } = new(); - /// - /// Процент использования системы АПД план, % - /// - public double UsagePlan { get; set; } + /// + /// Процент использования системы АПД план, % + /// + public double UsagePlan { get; set; } - /// - /// Процент использования системы АПД факт, % - /// - public double UsageFact { get; set; } + /// + /// Процент использования системы АПД факт, % + /// + public double UsageFact { get; set; } - /// - /// Механическая скорость, м/ч - /// - public PlanFactDto Rop { get; set; } = new(); + /// + /// Механическая скорость, м/ч + /// + public PlanFactDto Rop { get; set; } = new(); } \ No newline at end of file diff --git a/AsbCloudApp/Data/ProcessMaps/Report/ProcessMapReportWellDrillingParamsDto.cs b/AsbCloudApp/Data/ProcessMaps/Report/ProcessMapReportWellDrillingParamsDto.cs index cc3dc899..43f82156 100644 --- a/AsbCloudApp/Data/ProcessMaps/Report/ProcessMapReportWellDrillingParamsDto.cs +++ b/AsbCloudApp/Data/ProcessMaps/Report/ProcessMapReportWellDrillingParamsDto.cs @@ -1,4 +1,4 @@ -namespace AsbCloudApp.Data.ProcessMaps.Report; +namespace AsbCloudApp.Data.ProcessMaps.Report; /// /// Параметры РТК diff --git a/AsbCloudApp/Data/ProcessMaps/WellSectionPlanDto.cs b/AsbCloudApp/Data/ProcessMaps/WellSectionPlanDto.cs index 35a99e7c..c6ecbed9 100644 --- a/AsbCloudApp/Data/ProcessMaps/WellSectionPlanDto.cs +++ b/AsbCloudApp/Data/ProcessMaps/WellSectionPlanDto.cs @@ -7,64 +7,64 @@ namespace AsbCloudApp.Data.ProcessMaps; /// Секция скважины - план /// public class WellSectionPlanDto : ItemInfoDto, - IId, - IWellRelated, - IValidatableObject + IId, + IWellRelated, + IValidatableObject { - /// - public int Id { get; set; } + /// + public int Id { get; set; } /// [Required] - public int IdWell { get; set; } + public int IdWell { get; set; } - /// - /// Тип секции - /// - [Required(ErrorMessage = "Поле обязательно для заполнение")] - [Range(1, int.MaxValue)] - public int IdSectionType { get; set; } + /// + /// Тип секции + /// + [Required(ErrorMessage = "Поле обязательно для заполнение")] + [Range(1, int.MaxValue)] + public int IdSectionType { get; set; } - /// - /// Начальная глубина бурения, м - /// - [Required(ErrorMessage = "Поле обязательно для заполнение")] - [Range(0, 10000, ErrorMessage = "Допустимое значение от 0 до 10000")] - public double DepthStart { get; set; } + /// + /// Начальная глубина бурения, м + /// + [Required(ErrorMessage = "Поле обязательно для заполнение")] + [Range(0, 10000, ErrorMessage = "Допустимое значение от 0 до 10000")] + public double DepthStart { get; set; } - /// - /// Конечная глубина бурения, м - /// - [Required(ErrorMessage = "Поле обязательно для заполнение")] - [Range(0, 10000, ErrorMessage = "Допустимое значение от 0 до 10000")] - public double DepthEnd { get; set; } + /// + /// Конечная глубина бурения, м + /// + [Required(ErrorMessage = "Поле обязательно для заполнение")] + [Range(0, 10000, ErrorMessage = "Допустимое значение от 0 до 10000")] + public double DepthEnd { get; set; } - /// - /// Внешний диаметр - /// - [Range(1, 10000, ErrorMessage = "Допустимое значение от 1 до 10000")] - public double? OuterDiameter { get; set; } + /// + /// Внешний диаметр + /// + [Range(1, 10000, ErrorMessage = "Допустимое значение от 1 до 10000")] + public double? OuterDiameter { get; set; } - /// - /// Внутренний диаметр - /// - [Range(1, 10000, ErrorMessage = "Допустимое значение от 1 до 10000")] - public double? InnerDiameter { get; set; } + /// + /// Внутренний диаметр + /// + [Range(1, 10000, ErrorMessage = "Допустимое значение от 1 до 10000")] + public double? InnerDiameter { get; set; } - /// - public IEnumerable Validate(ValidationContext validationContext) - { - if (!OuterDiameter.HasValue && !InnerDiameter.HasValue) - yield break; + /// + public IEnumerable Validate(ValidationContext validationContext) + { + if (!OuterDiameter.HasValue && !InnerDiameter.HasValue) + yield break; - if (!OuterDiameter.HasValue) - yield return new ValidationResult("Поле обязательно для заполнение", new[] { nameof(OuterDiameter) }); + if (!OuterDiameter.HasValue) + yield return new ValidationResult("Поле обязательно для заполнение", new[] { nameof(OuterDiameter) }); - if (!InnerDiameter.HasValue) - yield return new ValidationResult("Поле обязательно для заполнение", new[] { nameof(InnerDiameter) }); + if (!InnerDiameter.HasValue) + yield return new ValidationResult("Поле обязательно для заполнение", new[] { nameof(InnerDiameter) }); - if (OuterDiameter <= InnerDiameter) - yield return new ValidationResult("Внешний диаметр не должен быть больше или равен внутреннему", - new[] { nameof(OuterDiameter) }); - } + if (OuterDiameter <= InnerDiameter) + yield return new ValidationResult("Внешний диаметр не должен быть больше или равен внутреннему", + new[] { nameof(OuterDiameter) }); + } } \ No newline at end of file diff --git a/AsbCloudApp/Data/Progress/ProgressDto.cs b/AsbCloudApp/Data/Progress/ProgressDto.cs index 3ad2c50a..71f08cfd 100644 --- a/AsbCloudApp/Data/Progress/ProgressDto.cs +++ b/AsbCloudApp/Data/Progress/ProgressDto.cs @@ -1,4 +1,4 @@ -namespace AsbCloudApp.Data.Progress; +namespace AsbCloudApp.Data.Progress; /// /// DTO прогресса diff --git a/AsbCloudApp/Data/Progress/ProgressExceptionDto.cs b/AsbCloudApp/Data/Progress/ProgressExceptionDto.cs index cb264178..56932705 100644 --- a/AsbCloudApp/Data/Progress/ProgressExceptionDto.cs +++ b/AsbCloudApp/Data/Progress/ProgressExceptionDto.cs @@ -1,22 +1,12 @@ -using System; +using System; namespace AsbCloudApp.Data.Progress; /// /// DTO прогресса с ошибкой /// -public class ProgressExceptionDto +public class ProgressExceptionDto : ProgressDto { - /// - /// прогресс 0 - 100% - /// - public float Progress { get; set; } - - /// - /// название текущей операции генерации - /// - public string? Operation { get; set; } - /// /// Отображаемый текст ошибки /// diff --git a/AsbCloudApp/Data/Progress/ReportProgressDto.cs b/AsbCloudApp/Data/Progress/ReportProgressDto.cs index b14166e9..09eb8fc3 100644 --- a/AsbCloudApp/Data/Progress/ReportProgressDto.cs +++ b/AsbCloudApp/Data/Progress/ReportProgressDto.cs @@ -1,4 +1,4 @@ -namespace AsbCloudApp.Data.Progress; +namespace AsbCloudApp.Data.Progress; /// /// DTO завершенного прогресса генерации рапорта-диаграммы @@ -8,5 +8,5 @@ public class ReportProgressFinalDto : ReportProgressDto /// /// файл /// - public FileInfoDto file { get; set; } + public FileInfoDto file { get; set; } = null!; } diff --git a/AsbCloudApp/Data/Progress/ReportProgressFinalDto.cs b/AsbCloudApp/Data/Progress/ReportProgressFinalDto.cs index b5ce965a..e74b79b8 100644 --- a/AsbCloudApp/Data/Progress/ReportProgressFinalDto.cs +++ b/AsbCloudApp/Data/Progress/ReportProgressFinalDto.cs @@ -1,4 +1,4 @@ -namespace AsbCloudApp.Data.Progress; +namespace AsbCloudApp.Data.Progress; /// /// DTO прогресса генерации рапорта-диаграммы diff --git a/AsbCloudApp/Data/ReportInfoDto.cs b/AsbCloudApp/Data/ReportInfoDto.cs index bd55d33c..277d0eaa 100644 --- a/AsbCloudApp/Data/ReportInfoDto.cs +++ b/AsbCloudApp/Data/ReportInfoDto.cs @@ -1,4 +1,4 @@ -namespace AsbCloudApp.Data +namespace AsbCloudApp.Data { /// /// Справочная информация об отчете diff --git a/AsbCloudApp/Data/ReportPropertiesDto.cs b/AsbCloudApp/Data/ReportPropertiesDto.cs index f802a7e0..dc024620 100644 --- a/AsbCloudApp/Data/ReportPropertiesDto.cs +++ b/AsbCloudApp/Data/ReportPropertiesDto.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.ComponentModel.DataAnnotations; namespace AsbCloudApp.Data diff --git a/AsbCloudApp/Data/RequestLogDto.cs b/AsbCloudApp/Data/RequestLogDto.cs index b930df52..e326043f 100644 --- a/AsbCloudApp/Data/RequestLogDto.cs +++ b/AsbCloudApp/Data/RequestLogDto.cs @@ -1,4 +1,4 @@ -using System; +using System; namespace AsbCloudApp.Data { diff --git a/AsbCloudApp/Data/RequestLogUserDto.cs b/AsbCloudApp/Data/RequestLogUserDto.cs index a1149653..562acc36 100644 --- a/AsbCloudApp/Data/RequestLogUserDto.cs +++ b/AsbCloudApp/Data/RequestLogUserDto.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.ComponentModel.DataAnnotations; using AsbCloudApp.Data.User; diff --git a/AsbCloudApp/Data/SAUB/DrillTestBaseDto.cs b/AsbCloudApp/Data/SAUB/DrillTestBaseDto.cs index 6e9f56bf..1a87d73a 100644 --- a/AsbCloudApp/Data/SAUB/DrillTestBaseDto.cs +++ b/AsbCloudApp/Data/SAUB/DrillTestBaseDto.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; diff --git a/AsbCloudApp/Data/SAUB/DrillTestDto.cs b/AsbCloudApp/Data/SAUB/DrillTestDto.cs index 0af9cb9c..32814d35 100644 --- a/AsbCloudApp/Data/SAUB/DrillTestDto.cs +++ b/AsbCloudApp/Data/SAUB/DrillTestDto.cs @@ -1,4 +1,4 @@ -using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations; namespace AsbCloudApp.Data.SAUB { diff --git a/AsbCloudApp/Data/SAUB/DrillTestParamsDto.cs b/AsbCloudApp/Data/SAUB/DrillTestParamsDto.cs index 2e6920f3..adc3d1db 100644 --- a/AsbCloudApp/Data/SAUB/DrillTestParamsDto.cs +++ b/AsbCloudApp/Data/SAUB/DrillTestParamsDto.cs @@ -1,4 +1,4 @@ -using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations; namespace AsbCloudApp.Data.SAUB { diff --git a/AsbCloudApp/Data/SAUB/EventDto.cs b/AsbCloudApp/Data/SAUB/EventDto.cs index 302ad145..66b5fa7f 100644 --- a/AsbCloudApp/Data/SAUB/EventDto.cs +++ b/AsbCloudApp/Data/SAUB/EventDto.cs @@ -1,4 +1,4 @@ -using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations; namespace AsbCloudApp.Data.SAUB { diff --git a/AsbCloudApp/Data/SAUB/Readme.md b/AsbCloudApp/Data/SAUB/Readme.md index 8a09cd11..ef73b9c7 100644 --- a/AsbCloudApp/Data/SAUB/Readme.md +++ b/AsbCloudApp/Data/SAUB/Readme.md @@ -1,2 +1,2 @@ -Папка содержит dto для получаемые от панели оператора САУБ. +Папка содержит dto для получаемые от панели оператора САУБ. Данные WITS вынесены в отдельную папку. \ No newline at end of file diff --git a/AsbCloudApp/Data/SAUB/SetpointInfoDto.cs b/AsbCloudApp/Data/SAUB/SetpointInfoDto.cs index b704d0a5..a5cc0277 100644 --- a/AsbCloudApp/Data/SAUB/SetpointInfoDto.cs +++ b/AsbCloudApp/Data/SAUB/SetpointInfoDto.cs @@ -1,4 +1,4 @@ -using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations; namespace AsbCloudApp.Data.SAUB { diff --git a/AsbCloudApp/Data/SAUB/SetpointsRequestDto.cs b/AsbCloudApp/Data/SAUB/SetpointsRequestDto.cs index 192805a6..003f50c4 100644 --- a/AsbCloudApp/Data/SAUB/SetpointsRequestDto.cs +++ b/AsbCloudApp/Data/SAUB/SetpointsRequestDto.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using AsbCloudApp.Data.User; diff --git a/AsbCloudApp/Data/SAUB/TelemetryDataSaubDto.cs b/AsbCloudApp/Data/SAUB/TelemetryDataSaubDto.cs index 8f2794fc..71c95c20 100644 --- a/AsbCloudApp/Data/SAUB/TelemetryDataSaubDto.cs +++ b/AsbCloudApp/Data/SAUB/TelemetryDataSaubDto.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.ComponentModel.DataAnnotations; namespace AsbCloudApp.Data.SAUB diff --git a/AsbCloudApp/Data/SAUB/TelemetryDataSaubStatDto.cs b/AsbCloudApp/Data/SAUB/TelemetryDataSaubStatDto.cs index d08df130..329839be 100644 --- a/AsbCloudApp/Data/SAUB/TelemetryDataSaubStatDto.cs +++ b/AsbCloudApp/Data/SAUB/TelemetryDataSaubStatDto.cs @@ -1,4 +1,4 @@ -using System; +using System; namespace AsbCloudApp.Data.SAUB { diff --git a/AsbCloudApp/Data/SAUB/TelemetryDataSpinDto.cs b/AsbCloudApp/Data/SAUB/TelemetryDataSpinDto.cs index bf575e5d..83c55520 100644 --- a/AsbCloudApp/Data/SAUB/TelemetryDataSpinDto.cs +++ b/AsbCloudApp/Data/SAUB/TelemetryDataSpinDto.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.ComponentModel.DataAnnotations; namespace AsbCloudApp.Data.SAUB diff --git a/AsbCloudApp/Data/SAUB/TelemetryDataStatDto.cs b/AsbCloudApp/Data/SAUB/TelemetryDataStatDto.cs index c9eab606..c2cb8926 100644 --- a/AsbCloudApp/Data/SAUB/TelemetryDataStatDto.cs +++ b/AsbCloudApp/Data/SAUB/TelemetryDataStatDto.cs @@ -1,4 +1,4 @@ -using System; +using System; namespace AsbCloudInfrastructure.Services.SAUB { diff --git a/AsbCloudApp/Data/SAUB/TelemetryInfoDto.cs b/AsbCloudApp/Data/SAUB/TelemetryInfoDto.cs index 66501c18..8e89d474 100644 --- a/AsbCloudApp/Data/SAUB/TelemetryInfoDto.cs +++ b/AsbCloudApp/Data/SAUB/TelemetryInfoDto.cs @@ -1,4 +1,4 @@ -using System; +using System; namespace AsbCloudApp.Data.SAUB { diff --git a/AsbCloudApp/Data/SAUB/TelemetryMessageDto.cs b/AsbCloudApp/Data/SAUB/TelemetryMessageDto.cs index ee86fc46..7c8e4d92 100644 --- a/AsbCloudApp/Data/SAUB/TelemetryMessageDto.cs +++ b/AsbCloudApp/Data/SAUB/TelemetryMessageDto.cs @@ -1,4 +1,4 @@ -using System; +using System; namespace AsbCloudApp.Data.SAUB { diff --git a/AsbCloudApp/Data/SAUB/TelemetryUserDto.cs b/AsbCloudApp/Data/SAUB/TelemetryUserDto.cs index 5d93813e..ad7a8aab 100644 --- a/AsbCloudApp/Data/SAUB/TelemetryUserDto.cs +++ b/AsbCloudApp/Data/SAUB/TelemetryUserDto.cs @@ -1,4 +1,4 @@ -namespace AsbCloudApp.Data.SAUB +namespace AsbCloudApp.Data.SAUB { /// /// Пользователь панели оператора diff --git a/AsbCloudApp/Data/SAUB/TelemetryWirelineRunOutDto.cs b/AsbCloudApp/Data/SAUB/TelemetryWirelineRunOutDto.cs index 213b67ec..c6a52965 100644 --- a/AsbCloudApp/Data/SAUB/TelemetryWirelineRunOutDto.cs +++ b/AsbCloudApp/Data/SAUB/TelemetryWirelineRunOutDto.cs @@ -1,4 +1,4 @@ -using System; +using System; namespace AsbCloudApp.Data.SAUB { diff --git a/AsbCloudApp/Data/ScheduleDto.cs b/AsbCloudApp/Data/ScheduleDto.cs index a8c8d652..e9c8d991 100644 --- a/AsbCloudApp/Data/ScheduleDto.cs +++ b/AsbCloudApp/Data/ScheduleDto.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; diff --git a/AsbCloudApp/Data/SectionByOperationsDto.cs b/AsbCloudApp/Data/SectionByOperationsDto.cs index 5c353dd5..06d927d5 100644 --- a/AsbCloudApp/Data/SectionByOperationsDto.cs +++ b/AsbCloudApp/Data/SectionByOperationsDto.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.ComponentModel.DataAnnotations; namespace AsbCloudApp.Data; diff --git a/AsbCloudApp/Data/SlipsStatDto.cs b/AsbCloudApp/Data/SlipsStatDto.cs index dba3228b..13e381fa 100644 --- a/AsbCloudApp/Data/SlipsStatDto.cs +++ b/AsbCloudApp/Data/SlipsStatDto.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Text; diff --git a/AsbCloudApp/Data/StatClusterDto.cs b/AsbCloudApp/Data/StatClusterDto.cs index ce3c3c06..d407dda8 100644 --- a/AsbCloudApp/Data/StatClusterDto.cs +++ b/AsbCloudApp/Data/StatClusterDto.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; diff --git a/AsbCloudApp/Data/StatOperationsDto.cs b/AsbCloudApp/Data/StatOperationsDto.cs index ec59eae0..06d4cd8b 100644 --- a/AsbCloudApp/Data/StatOperationsDto.cs +++ b/AsbCloudApp/Data/StatOperationsDto.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.ComponentModel.DataAnnotations; namespace AsbCloudApp.Data diff --git a/AsbCloudApp/Data/StatSectionDto.cs b/AsbCloudApp/Data/StatSectionDto.cs index 19a82518..e1cb8d91 100644 --- a/AsbCloudApp/Data/StatSectionDto.cs +++ b/AsbCloudApp/Data/StatSectionDto.cs @@ -1,4 +1,4 @@ -using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations; namespace AsbCloudApp.Data { diff --git a/AsbCloudApp/Data/StatWellDto.cs b/AsbCloudApp/Data/StatWellDto.cs index 9cf27fe4..2906267d 100644 --- a/AsbCloudApp/Data/StatWellDto.cs +++ b/AsbCloudApp/Data/StatWellDto.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; diff --git a/AsbCloudApp/Data/Subsystems/SubsystemActiveWellStatDto.cs b/AsbCloudApp/Data/Subsystems/SubsystemActiveWellStatDto.cs index 774ebfe6..72009908 100644 --- a/AsbCloudApp/Data/Subsystems/SubsystemActiveWellStatDto.cs +++ b/AsbCloudApp/Data/Subsystems/SubsystemActiveWellStatDto.cs @@ -1,4 +1,4 @@ -using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations; namespace AsbCloudApp.Data.Subsystems; @@ -7,21 +7,21 @@ namespace AsbCloudApp.Data.Subsystems; /// public class SubsystemActiveWellStatDto { - /// - /// Активная скважина - /// - [Required] - public WellInfoDto Well { get; set; } = null!; - /// - /// Наработки подсистемы АПД - /// - public SubsystemStatDto? SubsystemAPD { get; set; } - /// - /// Наработки подсистемы с осцилляцией - /// - public SubsystemStatDto? SubsystemOscillation { get; set; } - /// - /// Наработки подсистемы ТОРК - /// - public SubsystemStatDto? SubsystemTorqueMaster { get; set; } + /// + /// Активная скважина + /// + [Required] + public WellInfoDto Well { get; set; } = null!; + /// + /// Наработки подсистемы АПД + /// + public SubsystemStatDto? SubsystemAPD { get; set; } + /// + /// Наработки подсистемы с осцилляцией + /// + public SubsystemStatDto? SubsystemOscillation { get; set; } + /// + /// Наработки подсистемы ТОРК + /// + public SubsystemStatDto? SubsystemTorqueMaster { get; set; } } \ No newline at end of file diff --git a/AsbCloudApp/Data/Subsystems/SubsystemDto.cs b/AsbCloudApp/Data/Subsystems/SubsystemDto.cs index 0e648de5..fa5c02d1 100644 --- a/AsbCloudApp/Data/Subsystems/SubsystemDto.cs +++ b/AsbCloudApp/Data/Subsystems/SubsystemDto.cs @@ -1,4 +1,4 @@ -using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations; namespace AsbCloudApp.Data.Subsystems { diff --git a/AsbCloudApp/Data/Subsystems/SubsystemStatDto.cs b/AsbCloudApp/Data/Subsystems/SubsystemStatDto.cs index fa83bdfd..3c566dea 100644 --- a/AsbCloudApp/Data/Subsystems/SubsystemStatDto.cs +++ b/AsbCloudApp/Data/Subsystems/SubsystemStatDto.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.ComponentModel.DataAnnotations; namespace AsbCloudApp.Data.Subsystems diff --git a/AsbCloudApp/Data/TelemetryDto.cs b/AsbCloudApp/Data/TelemetryDto.cs index e4e3be80..2934b721 100644 --- a/AsbCloudApp/Data/TelemetryDto.cs +++ b/AsbCloudApp/Data/TelemetryDto.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.SAUB; +using AsbCloudApp.Data.SAUB; namespace AsbCloudApp.Data { diff --git a/AsbCloudApp/Data/TimeDto.cs b/AsbCloudApp/Data/TimeDto.cs index 20ffa4ac..34bcba3e 100644 --- a/AsbCloudApp/Data/TimeDto.cs +++ b/AsbCloudApp/Data/TimeDto.cs @@ -1,4 +1,4 @@ -using System; +using System; namespace AsbCloudApp.Data { diff --git a/AsbCloudApp/Data/Trajectory/TrajectoryCartesianFactDto.cs b/AsbCloudApp/Data/Trajectory/TrajectoryCartesianFactDto.cs index c9df8dfd..218462db 100644 --- a/AsbCloudApp/Data/Trajectory/TrajectoryCartesianFactDto.cs +++ b/AsbCloudApp/Data/Trajectory/TrajectoryCartesianFactDto.cs @@ -1,4 +1,4 @@ -namespace AsbCloudApp.Data.Trajectory +namespace AsbCloudApp.Data.Trajectory { diff --git a/AsbCloudApp/Data/Trajectory/TrajectoryCartesianPlanDto.cs b/AsbCloudApp/Data/Trajectory/TrajectoryCartesianPlanDto.cs index 923498eb..91096ad6 100644 --- a/AsbCloudApp/Data/Trajectory/TrajectoryCartesianPlanDto.cs +++ b/AsbCloudApp/Data/Trajectory/TrajectoryCartesianPlanDto.cs @@ -1,4 +1,4 @@ -namespace AsbCloudApp.Data.Trajectory +namespace AsbCloudApp.Data.Trajectory { /// /// Визуализация траектории 3D для построения радиуса цели diff --git a/AsbCloudApp/Data/Trajectory/TrajectoryGeoDto.cs b/AsbCloudApp/Data/Trajectory/TrajectoryGeoDto.cs index 11b88141..2c940043 100644 --- a/AsbCloudApp/Data/Trajectory/TrajectoryGeoDto.cs +++ b/AsbCloudApp/Data/Trajectory/TrajectoryGeoDto.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; diff --git a/AsbCloudApp/Data/Trajectory/TrajectoryGeoFactDto.cs b/AsbCloudApp/Data/Trajectory/TrajectoryGeoFactDto.cs index 8ab23fc6..03529042 100644 --- a/AsbCloudApp/Data/Trajectory/TrajectoryGeoFactDto.cs +++ b/AsbCloudApp/Data/Trajectory/TrajectoryGeoFactDto.cs @@ -1,4 +1,4 @@ -namespace AsbCloudApp.Data.Trajectory; +namespace AsbCloudApp.Data.Trajectory; /// /// Формирование данных по фактической географической траектории diff --git a/AsbCloudApp/Data/Trajectory/TrajectoryGeoPlanDto.cs b/AsbCloudApp/Data/Trajectory/TrajectoryGeoPlanDto.cs index 292add96..6730e6db 100644 --- a/AsbCloudApp/Data/Trajectory/TrajectoryGeoPlanDto.cs +++ b/AsbCloudApp/Data/Trajectory/TrajectoryGeoPlanDto.cs @@ -1,4 +1,4 @@ -using System; +using System; namespace AsbCloudApp.Data.Trajectory { diff --git a/AsbCloudApp/Data/Trajectory/TrajectoryPlanFactDto.cs b/AsbCloudApp/Data/Trajectory/TrajectoryPlanFactDto.cs index 7176f36f..f691fb76 100644 --- a/AsbCloudApp/Data/Trajectory/TrajectoryPlanFactDto.cs +++ b/AsbCloudApp/Data/Trajectory/TrajectoryPlanFactDto.cs @@ -1,4 +1,4 @@ -namespace AsbCloudApp.Data.Trajectory +namespace AsbCloudApp.Data.Trajectory { /// /// DTO объединяющее плановые и фактические значения траекторий diff --git a/AsbCloudApp/Data/User/ContactDto.cs b/AsbCloudApp/Data/User/ContactDto.cs index 904d4ca2..dd6b3212 100644 --- a/AsbCloudApp/Data/User/ContactDto.cs +++ b/AsbCloudApp/Data/User/ContactDto.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.ComponentModel.DataAnnotations; namespace AsbCloudApp.Data.User; diff --git a/AsbCloudApp/Data/User/UserDto.cs b/AsbCloudApp/Data/User/UserDto.cs index 5ff08203..ce1d6f4a 100644 --- a/AsbCloudApp/Data/User/UserDto.cs +++ b/AsbCloudApp/Data/User/UserDto.cs @@ -1,4 +1,4 @@ -using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations; namespace AsbCloudApp.Data.User { diff --git a/AsbCloudApp/Data/User/UserExtendedDto.cs b/AsbCloudApp/Data/User/UserExtendedDto.cs index d59518de..9cec40a6 100644 --- a/AsbCloudApp/Data/User/UserExtendedDto.cs +++ b/AsbCloudApp/Data/User/UserExtendedDto.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; namespace AsbCloudApp.Data.User diff --git a/AsbCloudApp/Data/User/UserRegistrationDto.cs b/AsbCloudApp/Data/User/UserRegistrationDto.cs index dc6b289a..26530fa4 100644 --- a/AsbCloudApp/Data/User/UserRegistrationDto.cs +++ b/AsbCloudApp/Data/User/UserRegistrationDto.cs @@ -1,4 +1,4 @@ -using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations; namespace AsbCloudApp.Data.User { diff --git a/AsbCloudApp/Data/User/UserRoleDto.cs b/AsbCloudApp/Data/User/UserRoleDto.cs index cc34713c..68f54434 100644 --- a/AsbCloudApp/Data/User/UserRoleDto.cs +++ b/AsbCloudApp/Data/User/UserRoleDto.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; diff --git a/AsbCloudApp/Data/User/UserTokenDto.cs b/AsbCloudApp/Data/User/UserTokenDto.cs index cfd538f7..e11a1f8f 100644 --- a/AsbCloudApp/Data/User/UserTokenDto.cs +++ b/AsbCloudApp/Data/User/UserTokenDto.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; namespace AsbCloudApp.Data.User diff --git a/AsbCloudApp/Data/ValidationResultDto.cs b/AsbCloudApp/Data/ValidationResultDto.cs index 1fe0f918..4228c11d 100644 --- a/AsbCloudApp/Data/ValidationResultDto.cs +++ b/AsbCloudApp/Data/ValidationResultDto.cs @@ -8,20 +8,20 @@ namespace AsbCloudApp.Data; /// Результат валидации объекта /// public class ValidationResultDto - where T : class + where T : class { - /// - /// Флаг валидности - /// - public bool IsValid => !Warnings.Any(); + /// + /// Флаг валидности + /// + public bool IsValid => !Warnings.Any(); - /// - /// Объект валидации - /// - public virtual T Item { get; set; } = null!; + /// + /// Объект валидации + /// + public virtual T Item { get; set; } = null!; - /// - /// Предупреждения - /// - public IEnumerable Warnings { get; set; } = Enumerable.Empty(); + /// + /// Предупреждения + /// + public IEnumerable Warnings { get; set; } = Enumerable.Empty(); } \ No newline at end of file diff --git a/AsbCloudApp/Data/WITS/Readme.md b/AsbCloudApp/Data/WITS/Readme.md index ac6325ef..76520237 100644 --- a/AsbCloudApp/Data/WITS/Readme.md +++ b/AsbCloudApp/Data/WITS/Readme.md @@ -1,2 +1,2 @@ -Данные WITS см.: http://www.petrospec-technologies.com/resource/wits_doc.htm. +Данные WITS см.: http://www.petrospec-technologies.com/resource/wits_doc.htm. Дополнительное описание параметров в сборке AsbWitsInf.dll \ No newline at end of file diff --git a/AsbCloudApp/Data/WITS/RecordBaseDto.cs b/AsbCloudApp/Data/WITS/RecordBaseDto.cs index 34cd0f5b..8c874136 100644 --- a/AsbCloudApp/Data/WITS/RecordBaseDto.cs +++ b/AsbCloudApp/Data/WITS/RecordBaseDto.cs @@ -20,7 +20,7 @@ namespace AsbCloudApp.Data.WITS public DateTime DateTime { get; set; } /// - /// + /// отметка времени /// [Required] public int TimeStamp { get; set; } diff --git a/AsbCloudApp/Data/WellCaseDto.cs b/AsbCloudApp/Data/WellCaseDto.cs index 0241faf6..b3a50693 100644 --- a/AsbCloudApp/Data/WellCaseDto.cs +++ b/AsbCloudApp/Data/WellCaseDto.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; diff --git a/AsbCloudApp/Data/WellCompositeDto.cs b/AsbCloudApp/Data/WellCompositeDto.cs index 6fe39a40..af9a91a8 100644 --- a/AsbCloudApp/Data/WellCompositeDto.cs +++ b/AsbCloudApp/Data/WellCompositeDto.cs @@ -1,4 +1,4 @@ -using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations; namespace AsbCloudApp.Data { diff --git a/AsbCloudApp/Data/WellCompositeOperationDto.cs b/AsbCloudApp/Data/WellCompositeOperationDto.cs index ce8e44f9..97c1ff90 100644 --- a/AsbCloudApp/Data/WellCompositeOperationDto.cs +++ b/AsbCloudApp/Data/WellCompositeOperationDto.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.WellOperation; +using AsbCloudApp.Data.WellOperation; using System; using System.Collections.Generic; using System.Linq; diff --git a/AsbCloudApp/Data/WellCompositeOperationSourceDto.cs b/AsbCloudApp/Data/WellCompositeOperationSourceDto.cs index 04ec7b3b..e991dd3f 100644 --- a/AsbCloudApp/Data/WellCompositeOperationSourceDto.cs +++ b/AsbCloudApp/Data/WellCompositeOperationSourceDto.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.WellOperation; +using AsbCloudApp.Data.WellOperation; using System.Collections.Generic; namespace AsbCloudApp.Data diff --git a/AsbCloudApp/Data/WellDto.cs b/AsbCloudApp/Data/WellDto.cs index 368e58c9..223aad41 100644 --- a/AsbCloudApp/Data/WellDto.cs +++ b/AsbCloudApp/Data/WellDto.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; diff --git a/AsbCloudApp/Data/WellFinalDocumentDBDto.cs b/AsbCloudApp/Data/WellFinalDocumentDBDto.cs index db229147..d69c793e 100644 --- a/AsbCloudApp/Data/WellFinalDocumentDBDto.cs +++ b/AsbCloudApp/Data/WellFinalDocumentDBDto.cs @@ -1,4 +1,4 @@ -namespace AsbCloudApp.Data +namespace AsbCloudApp.Data { /// /// DTO Дело скважины diff --git a/AsbCloudApp/Data/WellFinalDocumentDto.cs b/AsbCloudApp/Data/WellFinalDocumentDto.cs index a60afd6c..7fe90b6a 100644 --- a/AsbCloudApp/Data/WellFinalDocumentDto.cs +++ b/AsbCloudApp/Data/WellFinalDocumentDto.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using AsbCloudApp.Data.User; diff --git a/AsbCloudApp/Data/WellFinalDocumentInputDto.cs b/AsbCloudApp/Data/WellFinalDocumentInputDto.cs index 75cb0ca3..82e2072d 100644 --- a/AsbCloudApp/Data/WellFinalDocumentInputDto.cs +++ b/AsbCloudApp/Data/WellFinalDocumentInputDto.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; diff --git a/AsbCloudApp/Data/WellFinalDocumentsHistoryDto.cs b/AsbCloudApp/Data/WellFinalDocumentsHistoryDto.cs index f08c67e3..b69bb415 100644 --- a/AsbCloudApp/Data/WellFinalDocumentsHistoryDto.cs +++ b/AsbCloudApp/Data/WellFinalDocumentsHistoryDto.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.ComponentModel.DataAnnotations; namespace AsbCloudApp.Data diff --git a/AsbCloudApp/Data/WellInfoDto.cs b/AsbCloudApp/Data/WellInfoDto.cs index b42d90b4..58ce537d 100644 --- a/AsbCloudApp/Data/WellInfoDto.cs +++ b/AsbCloudApp/Data/WellInfoDto.cs @@ -1,4 +1,4 @@ -using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations; namespace AsbCloudApp.Data { diff --git a/AsbCloudApp/Data/WellMapInfoDto.cs b/AsbCloudApp/Data/WellMapInfoDto.cs index 55098f4b..2b49ad3f 100644 --- a/AsbCloudApp/Data/WellMapInfoDto.cs +++ b/AsbCloudApp/Data/WellMapInfoDto.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.SAUB; +using AsbCloudApp.Data.SAUB; using System; using System.Collections.Generic; using System.Linq; diff --git a/AsbCloudApp/Data/WellOperation/WellGroupOpertionDto.cs b/AsbCloudApp/Data/WellOperation/WellGroupOpertionDto.cs index acd8221d..20e27151 100644 --- a/AsbCloudApp/Data/WellOperation/WellGroupOpertionDto.cs +++ b/AsbCloudApp/Data/WellOperation/WellGroupOpertionDto.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Text.Json.Serialization; diff --git a/AsbCloudApp/Data/WellOperation/WellOperationCategoryDto.cs b/AsbCloudApp/Data/WellOperation/WellOperationCategoryDto.cs index 2fe0b177..46e7dbe5 100644 --- a/AsbCloudApp/Data/WellOperation/WellOperationCategoryDto.cs +++ b/AsbCloudApp/Data/WellOperation/WellOperationCategoryDto.cs @@ -1,4 +1,4 @@ -using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations; namespace AsbCloudApp.Data.WellOperation { diff --git a/AsbCloudApp/Data/WellOperation/WellOperationDto.cs b/AsbCloudApp/Data/WellOperation/WellOperationDto.cs index 17015451..b940a9ae 100644 --- a/AsbCloudApp/Data/WellOperation/WellOperationDto.cs +++ b/AsbCloudApp/Data/WellOperation/WellOperationDto.cs @@ -4,113 +4,116 @@ using System.ComponentModel.DataAnnotations; namespace AsbCloudApp.Data.WellOperation; +/// +/// Операция по скважине +/// public class WellOperationDto : ItemInfoDto, - IId, - IWellRelated, - IValidatableObject + IId, + IWellRelated, + IValidatableObject { - /// - [Required] - public int Id { get; set; } + /// + [Required] + public int Id { get; set; } - /// - [Required] - public int IdWell { get; set; } + /// + [Required] + public int IdWell { get; set; } - /// - /// Id секции скважины - /// - public int IdWellSectionType { get; set; } + /// + /// Id секции скважины + /// + public int IdWellSectionType { get; set; } - /// - /// 0 = план или 1 = факт или прогноз = 2 - /// - [Required] - public int IdType { get; set; } + /// + /// 0 = план или 1 = факт или прогноз = 2 + /// + [Required] + public int IdType { get; set; } - /// - /// id категории операции - /// - public int IdCategory { get; set; } + /// + /// id категории операции + /// + public int IdCategory { get; set; } - /// - /// Глубина на начало операции, м - /// - public double DepthStart { get; set; } + /// + /// Глубина на начало операции, м + /// + public double DepthStart { get; set; } - /// - /// Глубина после завершения операции, м - /// - [Required] - [Range(0, 50_000)] - public double DepthEnd { get; set; } + /// + /// Глубина после завершения операции, м + /// + [Required] + [Range(0, 50_000)] + public double DepthEnd { get; set; } - /// - /// Дата начала операции - /// - [Required] - public DateTimeOffset DateStart { get; set; } + /// + /// Дата начала операции + /// + [Required] + public DateTimeOffset DateStart { get; set; } - /// - /// Продолжительность, часы - /// - public double DurationHours { get; set; } + /// + /// Продолжительность, часы + /// + public double DurationHours { get; set; } - /// - /// Наименование секции - /// - public string? WellSectionTypeCaption { get; set; } + /// + /// Наименование секции + /// + public string? WellSectionTypeCaption { get; set; } - /// - /// Наименование категории - /// - public string? OperationCategoryName { get; set; } + /// + /// Наименование категории + /// + public string? OperationCategoryName { get; set; } - /// - /// id плановой операции для сопоставления - /// - public int? IdPlan { get; set; } + /// + /// id плановой операции для сопоставления + /// + public int? IdPlan { get; set; } - /// - /// Ключ родителя у категории - /// - public int? IdParentCategory { get; set; } + /// + /// Ключ родителя у категории + /// + public int? IdParentCategory { get; set; } - /// - /// дополнительная информация по операции - /// - [StringLength(8192)] - public string? CategoryInfo { get; set; } + /// + /// дополнительная информация по операции + /// + [StringLength(8192)] + public string? CategoryInfo { get; set; } - /// - /// Кол-во дней от даты начала первой плановой (а если её нет, то фактической) операции - /// - [Required] - public double Day { get; set; } + /// + /// Кол-во дней от даты начала первой плановой (а если её нет, то фактической) операции + /// + [Required] + public double Day { get; set; } - /// - /// Кол-во часов НПВ от даты начала первой плановой (а если её нет, то фактической) операции - /// - [Required] - public double NptHours { get; set; } + /// + /// Кол-во часов НПВ от даты начала первой плановой (а если её нет, то фактической) операции + /// + [Required] + public double NptHours { get; set; } - /// - /// Полезный комментарий - /// - [StringLength(4096, ErrorMessage = "Комментарий не может быть длиннее 4096 символов")] - public string? Comment { get; set; } + /// + /// Полезный комментарий + /// + [StringLength(4096, ErrorMessage = "Комментарий не может быть длиннее 4096 символов")] + public string? Comment { get; set; } - /// - /// Валидация даты - /// - /// - /// - public IEnumerable Validate(ValidationContext validationContext) - { - var gtDate = new DateTimeOffset(2010, 1, 1, 0, 0, 0, TimeSpan.Zero); - if (DateStart <= gtDate) - yield return new ValidationResult( - $"{nameof(DateStart)}: DateStart не может быть меньше {gtDate}", - new[] { nameof(DateStart) }); - } + /// + /// Валидация даты + /// + /// + /// + public IEnumerable Validate(ValidationContext validationContext) + { + var gtDate = new DateTimeOffset(2010, 1, 1, 0, 0, 0, TimeSpan.Zero); + if (DateStart <= gtDate) + yield return new ValidationResult( + $"{nameof(DateStart)}: DateStart не может быть меньше {gtDate}", + new[] { nameof(DateStart) }); + } } \ No newline at end of file diff --git a/AsbCloudApp/Data/WellOperationImport/Options/IWellOperationImportOptions.cs b/AsbCloudApp/Data/WellOperationImport/Options/IWellOperationImportOptions.cs index 30b9cf8c..8171a20f 100644 --- a/AsbCloudApp/Data/WellOperationImport/Options/IWellOperationImportOptions.cs +++ b/AsbCloudApp/Data/WellOperationImport/Options/IWellOperationImportOptions.cs @@ -1,4 +1,4 @@ -namespace AsbCloudApp.Data.WellOperationImport.Options; +namespace AsbCloudApp.Data.WellOperationImport.Options; /// /// Опции для парсинга diff --git a/AsbCloudApp/Data/WellOperationImport/Options/WellOperationImportDefaultOptionsDto.cs b/AsbCloudApp/Data/WellOperationImport/Options/WellOperationImportDefaultOptionsDto.cs index a1db3d35..7c8316c9 100644 --- a/AsbCloudApp/Data/WellOperationImport/Options/WellOperationImportDefaultOptionsDto.cs +++ b/AsbCloudApp/Data/WellOperationImport/Options/WellOperationImportDefaultOptionsDto.cs @@ -1,4 +1,4 @@ -using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations; namespace AsbCloudApp.Data.WellOperationImport.Options; diff --git a/AsbCloudApp/Data/WellOperationImport/RowDto.cs b/AsbCloudApp/Data/WellOperationImport/RowDto.cs index 8f15c3bf..06bb6247 100644 --- a/AsbCloudApp/Data/WellOperationImport/RowDto.cs +++ b/AsbCloudApp/Data/WellOperationImport/RowDto.cs @@ -7,48 +7,48 @@ namespace AsbCloudApp.Data.WellOperationImport; /// public class RowDto { - /// - /// Номер строки - /// - public int Number { get; set; } - - /// - /// Название секции - /// - public string? Section { get; set; } + /// + /// Номер строки + /// + public int Number { get; set; } + + /// + /// Название секции + /// + public string? Section { get; set; } - /// - /// Категория - /// - public string? Category { get; set; } + /// + /// Категория + /// + public string? Category { get; set; } - /// - /// Описание категории - /// - public string? CategoryInfo { get; set; } - - /// - /// Начальная глубина операции - /// - public double DepthStart { get; set; } - - /// - /// Конечная глубина операции - /// - public double DepthEnd { get; set; } - - /// - /// Дата начала операции - /// - public DateTime Date { get; set; } - - /// - /// Длительность операции - /// - public double Duration { get; set; } - - /// - /// Комментарий - /// - public string? Comment { get; set; } + /// + /// Описание категории + /// + public string? CategoryInfo { get; set; } + + /// + /// Начальная глубина операции + /// + public double DepthStart { get; set; } + + /// + /// Конечная глубина операции + /// + public double DepthEnd { get; set; } + + /// + /// Дата начала операции + /// + public DateTime Date { get; set; } + + /// + /// Длительность операции + /// + public double Duration { get; set; } + + /// + /// Комментарий + /// + public string? Comment { get; set; } } \ No newline at end of file diff --git a/AsbCloudApp/Data/WellOperationImport/SheetDto.cs b/AsbCloudApp/Data/WellOperationImport/SheetDto.cs index 32091283..fc7c3e79 100644 --- a/AsbCloudApp/Data/WellOperationImport/SheetDto.cs +++ b/AsbCloudApp/Data/WellOperationImport/SheetDto.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; namespace AsbCloudApp.Data.WellOperationImport; diff --git a/AsbCloudApp/Data/WellSectionTypeDto.cs b/AsbCloudApp/Data/WellSectionTypeDto.cs index f8eef939..58aba47c 100644 --- a/AsbCloudApp/Data/WellSectionTypeDto.cs +++ b/AsbCloudApp/Data/WellSectionTypeDto.cs @@ -11,17 +11,17 @@ public class WellSectionTypeDto : IId /// Id секции /// [Required] - public int Id { get; set; } + public int Id { get; set; } - /// - /// Название типа секции - /// - [Required] - public string Caption { get; set; } = null!; + /// + /// Название типа секции + /// + [Required] + public string Caption { get; set; } = null!; - /// - /// Порядок - /// - [Required] - public float Order { get; set; } + /// + /// Порядок + /// + [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 4edf6256..60f745db 100644 --- a/AsbCloudApp/Data/WellboreDto.cs +++ b/AsbCloudApp/Data/WellboreDto.cs @@ -8,44 +8,44 @@ namespace AsbCloudApp.Data; /// public class WellboreDto { - /// - /// Скважина - /// + /// + /// Скважина + /// public WellDto Well { get; set; } = null!; /// /// Идентификатор /// - [Required] + [Required] public int Id { get; set; } - /// - /// Название - /// - [Required] - public string Name { get; set; } = null!; + /// + /// Название + /// + [Required] + public string Name { get; set; } = null!; - /// - /// Начальная глубина ствола - /// - [Required] - public double DepthStart { get; set; } + /// + /// Начальная глубина ствола + /// + [Required] + public double DepthStart { get; set; } - /// - /// Конечная глубина скважины - /// - [Required] - public double DepthEnd { get; set; } + /// + /// Конечная глубина скважины + /// + [Required] + public double DepthEnd { get; set; } - /// - /// Дата начала первой операции - /// - [Required] - public DateTimeOffset DateStart { get; set; } + /// + /// Дата начала первой операции + /// + [Required] + public DateTimeOffset DateStart { get; set; } - /// - /// Дата завершения последней операции - /// - [Required] - public DateTimeOffset DateEnd { get; set; } + /// + /// Дата завершения последней операции + /// + [Required] + public DateTimeOffset DateEnd { get; set; } } \ No newline at end of file diff --git a/AsbCloudApp/Exceptions/ArgumentInvalidException.cs b/AsbCloudApp/Exceptions/ArgumentInvalidException.cs index 641f18ce..93c37fa7 100644 --- a/AsbCloudApp/Exceptions/ArgumentInvalidException.cs +++ b/AsbCloudApp/Exceptions/ArgumentInvalidException.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; diff --git a/AsbCloudApp/Exceptions/ForbidException.cs b/AsbCloudApp/Exceptions/ForbidException.cs index fccf1ca4..daad3d49 100644 --- a/AsbCloudApp/Exceptions/ForbidException.cs +++ b/AsbCloudApp/Exceptions/ForbidException.cs @@ -1,4 +1,4 @@ -using System; +using System; namespace AsbCloudApp.Exceptions { diff --git a/AsbCloudApp/Extensions/ChangeLogExtensions.cs b/AsbCloudApp/Extensions/ChangeLogExtensions.cs index 83f28fbe..32b636ed 100644 --- a/AsbCloudApp/Extensions/ChangeLogExtensions.cs +++ b/AsbCloudApp/Extensions/ChangeLogExtensions.cs @@ -1,4 +1,5 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; +using AsbCloudApp.Data.ProcessMaps; using System; using System.Collections.Generic; using System.Linq; @@ -19,8 +20,8 @@ namespace AsbCloudApp.Extensions /// /// /// - public static IEnumerable WhereActualAtMoment(this IEnumerable items, DateTimeOffset moment) - where T : ChangeLogAbstract + public static IEnumerable> WhereActualAtMoment(this IEnumerable> items, DateTimeOffset moment) + where T : IId { var actualItems = items .Where(item => item.Creation <= moment) diff --git a/AsbCloudApp/IntegrationEvents/Interfaces/IIntegrationEventHandler.cs b/AsbCloudApp/IntegrationEvents/Interfaces/IIntegrationEventHandler.cs index 18695f07..ab4a1857 100644 --- a/AsbCloudApp/IntegrationEvents/Interfaces/IIntegrationEventHandler.cs +++ b/AsbCloudApp/IntegrationEvents/Interfaces/IIntegrationEventHandler.cs @@ -9,11 +9,11 @@ namespace AsbCloudApp.IntegrationEvents.Interfaces; /// public interface IIntegrationEventHandler where T: IIntegrationEvent { - /// - /// Метод обработки события - /// - /// - /// - /// - Task HandleAsync(T integrationEvent, CancellationToken cancellationToken); + /// + /// Метод обработки события + /// + /// + /// + /// + Task HandleAsync(T integrationEvent, CancellationToken cancellationToken); } \ No newline at end of file diff --git a/AsbCloudApp/Repositories/IChangeLogQueryBuilder.cs b/AsbCloudApp/Repositories/IChangeLogQueryBuilder.cs new file mode 100644 index 00000000..346adbd5 --- /dev/null +++ b/AsbCloudApp/Repositories/IChangeLogQueryBuilder.cs @@ -0,0 +1,62 @@ +using AsbCloudApp.Data; +using System; +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; + +namespace AsbCloudApp.Repositories; + +/// +/// Интерфейс для работы с объектами, содержащими историю изменений +/// +/// +/// +public interface IChangeLogQueryBuilder + where TDto : IId +{ + /// + /// Применение запроса + /// + /// Запрос + /// + IChangeLogQueryBuilderWithKnownTimezone ApplyRequest(TRequest request); + + /// + /// Материализация записей + /// + /// + /// + /// + Task> GetData(TimeSpan offset, CancellationToken token); + + /// + /// Материализация записей с историей + /// + /// + /// + /// + Task>> GetChangeLogData(TimeSpan offset, CancellationToken token); +} + +/// +/// Интерфейс для работы с объектами, содержащими историю изменений. С известной временной зоной +/// +/// +/// +public interface IChangeLogQueryBuilderWithKnownTimezone: IChangeLogQueryBuilder + where TDto : IId +{ + /// + /// Материализация записей. Временная зона определяется по запросу из последнего ApplyRequest + /// + /// + /// + Task> GetData(CancellationToken token); + + /// + /// Материализация записей с историей. Временная зона определяется по запросу из последнего ApplyRequest + /// + /// + /// + Task>> GetChangeLogData(CancellationToken token); +} \ No newline at end of file diff --git a/AsbCloudApp/Repositories/IChangeLogRepository.cs b/AsbCloudApp/Repositories/IChangeLogRepository.cs index a8a5e635..2c3e97c0 100644 --- a/AsbCloudApp/Repositories/IChangeLogRepository.cs +++ b/AsbCloudApp/Repositories/IChangeLogRepository.cs @@ -1,9 +1,9 @@ -using System; +using AsbCloudApp.Data; +using AsbCloudApp.Requests; +using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; -using AsbCloudApp.Data; -using AsbCloudApp.Requests; namespace AsbCloudApp.Repositories; @@ -11,41 +11,40 @@ namespace AsbCloudApp.Repositories; /// Репозиторий для записей с историей /// public interface IChangeLogRepository - where TDto : ChangeLogAbstract - where TRequest : ChangeLogBaseRequest + where TDto : IId { - /// - /// Добавление записей - /// - /// - /// - /// - /// - Task InsertRange(int idUser, IEnumerable dtos, CancellationToken token); + /// + /// Добавление записей + /// + /// пользователь, который добавляет + /// + /// + /// + Task InsertRange(int idUser, IEnumerable dtos, CancellationToken token); - /// - /// Редактирование записей - /// - /// - /// - /// - /// - Task UpdateRange(int idUser, IEnumerable dtos, CancellationToken token); + /// + /// Редактирование записей + /// + /// пользователь, который редактирует + /// + /// + /// + Task UpdateRange(int idUser, IEnumerable dtos, CancellationToken token); /// /// Добавляет Dto у которых id == 0, изменяет dto у которых id != 0 /// - /// + /// пользователь, который редактирует или добавляет /// /// /// Task UpdateOrInsertRange(int idUser, IEnumerable dtos, CancellationToken token); /// - /// Добавление записей с удалением старых (для импорта) + /// Помечает записи как удаленные /// - /// - /// + /// пользователь, который чистит + /// Фильтр по свойствам конкретной сущности /// /// Task Clear(int idUser, TRequest request, CancellationToken token); @@ -61,13 +60,13 @@ public interface IChangeLogRepository Task ClearAndInsertRange(int idUser, TRequest request, IEnumerable dtos, CancellationToken token); /// - /// Удаление записей + /// Пометить записи как удаленные /// /// /// /// /// - Task DeleteRange(int idUser, IEnumerable ids, CancellationToken token); + Task MarkAsDeleted(int idUser, IEnumerable ids, CancellationToken token); /// /// Получение дат изменений записей @@ -78,19 +77,26 @@ public interface IChangeLogRepository Task> GetDatesChange(TRequest request, CancellationToken token); /// - /// Получение журнала изменений + /// Получение измененных записей за определенную дату /// /// - /// Фильтр по дате. Если null - вернет все + /// Фильтр по дате. Если null - вернет все записи, без привязки к дате /// /// - Task> GetChangeLog(TRequest request, DateOnly? date, CancellationToken token); + Task>> GetChangeLogForDate(TRequest request, DateOnly? date, CancellationToken token); /// - /// Получение записей по параметрам + /// Получение текущих сейчас записей по параметрам /// /// /// /// - Task> Get(TRequest request, CancellationToken token); + Task> GetCurrent(TRequest request, CancellationToken token); + + /// + /// Получение объекта, реализующего интерфейс IChangeLogRepositoryBuilder + /// для последующих вызовов методов фильтрации по запросам + /// + /// + IChangeLogQueryBuilder GetQueryBuilder(ChangeLogRequest request); } diff --git a/AsbCloudApp/Repositories/IDailyReportRepository.cs b/AsbCloudApp/Repositories/IDailyReportRepository.cs index 39de97e5..cd0dd186 100644 --- a/AsbCloudApp/Repositories/IDailyReportRepository.cs +++ b/AsbCloudApp/Repositories/IDailyReportRepository.cs @@ -13,21 +13,21 @@ namespace AsbCloudApp.Repositories; /// public interface IDailyReportRepository : ICrudRepository { - /// - /// Получить список суточный отчёт по скважине - /// - /// - /// - /// - /// - Task> GetAsync(int idWell, FileReportRequest request, CancellationToken cancellationToken); + /// + /// Получить список суточный отчёт по скважине + /// + /// + /// + /// + /// + Task> GetAsync(int idWell, FileReportRequest request, CancellationToken cancellationToken); - /// - /// Получить суточный отчёт - /// - /// - /// - /// - /// - Task GetOrDefaultAsync(int idWell, DateOnly date, CancellationToken cancellationToken); + /// + /// Получить суточный отчёт + /// + /// + /// + /// + /// + Task GetOrDefaultAsync(int idWell, DateOnly date, CancellationToken cancellationToken); } \ No newline at end of file diff --git a/AsbCloudApp/Repositories/IDataSaubStatRepository.cs b/AsbCloudApp/Repositories/IDataSaubStatRepository.cs index 9dfa351c..b25675c7 100644 --- a/AsbCloudApp/Repositories/IDataSaubStatRepository.cs +++ b/AsbCloudApp/Repositories/IDataSaubStatRepository.cs @@ -1,4 +1,5 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; +using AsbCloudApp.Services; using System; using System.Collections.Generic; using System.Threading; @@ -9,7 +10,7 @@ namespace AsbCloudApp.Repositories /// /// Репозиторий работы с данными из таблицы t_data_daub_stat /// - public interface IDataSaubStatRepository + public interface IDataSaubStatRepository : ITelemetryDataEditorService { /// /// Получение записей по ключу телеметрии diff --git a/AsbCloudApp/Repositories/IDepositRepository.cs b/AsbCloudApp/Repositories/IDepositRepository.cs index 8f2e421a..4185c9e3 100644 --- a/AsbCloudApp/Repositories/IDepositRepository.cs +++ b/AsbCloudApp/Repositories/IDepositRepository.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; diff --git a/AsbCloudApp/Repositories/IDetectedOperationRepository.cs b/AsbCloudApp/Repositories/IDetectedOperationRepository.cs index a748984d..6e4eadaf 100644 --- a/AsbCloudApp/Repositories/IDetectedOperationRepository.cs +++ b/AsbCloudApp/Repositories/IDetectedOperationRepository.cs @@ -1,18 +1,17 @@ -using System; +using AsbCloudApp.Data; using AsbCloudApp.Data.DetectedOperation; using AsbCloudApp.Requests; using System.Collections.Generic; -using System.Threading.Tasks; using System.Threading; -using AsbCloudApp.Data; -using AsbCloudApp.Data.WellOperation; +using System.Threading.Tasks; +using AsbCloudApp.Services; namespace AsbCloudApp.Repositories; /// /// Таблица автоматически определенных операций /// -public interface IDetectedOperationRepository +public interface IDetectedOperationRepository : ITelemetryDataEditorService { /// /// Добавление нескольких записей @@ -53,14 +52,14 @@ public interface IDetectedOperationRepository /// /// Task> GetPageAsync(DetectedOperationByTelemetryRequest request, CancellationToken token); - + /// - /// Получение дат последних определённых операций + /// Получение последних авто определённых операций /// /// /// - Task> GetLastDetectedDatesAsync(CancellationToken token); - + Task> GetLastDetectedOperationsAsync(CancellationToken token); + /// /// Удалить операции /// diff --git a/AsbCloudApp/Repositories/IDrillTestRepository.cs b/AsbCloudApp/Repositories/IDrillTestRepository.cs index b009273b..d7b5d1b7 100644 --- a/AsbCloudApp/Repositories/IDrillTestRepository.cs +++ b/AsbCloudApp/Repositories/IDrillTestRepository.cs @@ -1,5 +1,6 @@ -using AsbCloudApp.Data.SAUB; +using AsbCloudApp.Data.SAUB; using AsbCloudApp.Requests; +using AsbCloudApp.Services; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; @@ -9,7 +10,7 @@ namespace AsbCloudApp.Repositories /// /// репозиторий по работе с данными drill_test /// - public interface IDrillTestRepository + public interface IDrillTestRepository : ITelemetryDataEditorService { /// /// Получить данные drill_test в соответствии с параметрами запроса diff --git a/AsbCloudApp/Repositories/IFaqRepository.cs b/AsbCloudApp/Repositories/IFaqRepository.cs index 7931b506..f4079159 100644 --- a/AsbCloudApp/Repositories/IFaqRepository.cs +++ b/AsbCloudApp/Repositories/IFaqRepository.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using System.Collections.Generic; using System.Threading.Tasks; using System.Threading; diff --git a/AsbCloudApp/Repositories/IFileRepository.cs b/AsbCloudApp/Repositories/IFileRepository.cs index 8967f08c..7ed4d574 100644 --- a/AsbCloudApp/Repositories/IFileRepository.cs +++ b/AsbCloudApp/Repositories/IFileRepository.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Requests; +using AsbCloudApp.Requests; using AsbCloudApp.Data; using AsbCloudApp.Services; using System.Collections.Generic; diff --git a/AsbCloudApp/Repositories/IFileStorageRepository.cs b/AsbCloudApp/Repositories/IFileStorageRepository.cs index 1f511f31..22635e52 100644 --- a/AsbCloudApp/Repositories/IFileStorageRepository.cs +++ b/AsbCloudApp/Repositories/IFileStorageRepository.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using System.Collections.Generic; using System.IO; using System.Threading; diff --git a/AsbCloudApp/Repositories/IGtrRepository.cs b/AsbCloudApp/Repositories/IGtrRepository.cs index 39fbef07..fcda4be2 100644 --- a/AsbCloudApp/Repositories/IGtrRepository.cs +++ b/AsbCloudApp/Repositories/IGtrRepository.cs @@ -1,17 +1,18 @@ -using AsbCloudApp.Data.GTR; +using AsbCloudApp.Data.GTR; using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using AsbCloudApp.Requests; using AsbCloudApp.Data; +using AsbCloudApp.Services; namespace AsbCloudApp.Repositories { /// /// данные ГТИ /// - public interface IGtrRepository + public interface IGtrRepository : ITelemetryDataEditorService { /// /// добавить данные (для панели бурильщика) diff --git a/AsbCloudApp/Repositories/IHelpPageRepository.cs b/AsbCloudApp/Repositories/IHelpPageRepository.cs index a9e5b8b3..7b5a38ea 100644 --- a/AsbCloudApp/Repositories/IHelpPageRepository.cs +++ b/AsbCloudApp/Repositories/IHelpPageRepository.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Services; using System.Threading; using System.Threading.Tasks; diff --git a/AsbCloudApp/Repositories/ILimitingParameterRepository.cs b/AsbCloudApp/Repositories/ILimitingParameterRepository.cs index e8d7198b..dcc2725a 100644 --- a/AsbCloudApp/Repositories/ILimitingParameterRepository.cs +++ b/AsbCloudApp/Repositories/ILimitingParameterRepository.cs @@ -1,15 +1,16 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Requests; +using AsbCloudApp.Services; using System.Collections.Generic; -using System.Threading.Tasks; using System.Threading; +using System.Threading.Tasks; namespace AsbCloudApp.Repositories { /// /// Репозиторий по ограничивающим параметрам с фильтрацией /// - public interface ILimitingParameterRepository + public interface ILimitingParameterRepository : ITelemetryDataEditorService { /// /// Получение списка ограничивающих параметров по идентификатору скважины diff --git a/AsbCloudApp/Repositories/IManualDirectoryRepository.cs b/AsbCloudApp/Repositories/IManualDirectoryRepository.cs index 0db9d90f..3c4bf8ee 100644 --- a/AsbCloudApp/Repositories/IManualDirectoryRepository.cs +++ b/AsbCloudApp/Repositories/IManualDirectoryRepository.cs @@ -11,27 +11,27 @@ namespace AsbCloudApp.Repositories; /// public interface IManualDirectoryRepository : ICrudRepository { - /// - /// Получение дерева директорий - /// - /// - /// - Task> GetTreeAsync(CancellationToken cancellationToken); + /// + /// Получение дерева директорий + /// + /// + /// + Task> GetTreeAsync(CancellationToken cancellationToken); - /// - /// Получение одной директории по параметрам - /// - /// - /// - /// - /// - Task GetOrDefaultAsync(string name, int? idParent, CancellationToken cancellationToken); + /// + /// Получение одной директории по параметрам + /// + /// + /// + /// + /// + Task GetOrDefaultAsync(string name, int? idParent, CancellationToken cancellationToken); - /// - /// Проверка директории на существование - /// - /// - /// - /// - Task IsExistsAsync(int id, CancellationToken cancellationToken); + /// + /// Проверка директории на существование + /// + /// + /// + /// + Task IsExistsAsync(int id, CancellationToken cancellationToken); } \ No newline at end of file diff --git a/AsbCloudApp/Repositories/INotificationRepository.cs b/AsbCloudApp/Repositories/INotificationRepository.cs index 74ab9dd9..ebb10271 100644 --- a/AsbCloudApp/Repositories/INotificationRepository.cs +++ b/AsbCloudApp/Repositories/INotificationRepository.cs @@ -12,50 +12,50 @@ namespace AsbCloudApp.Repositories; /// public interface INotificationRepository : ICrudRepository { - /// - /// Получение уведомлений по параметрам - /// - /// - /// - /// - /// - Task> GetNotificationsAsync(int idUser, - NotificationRequest request, - CancellationToken cancellationToken); + /// + /// Получение уведомлений по параметрам + /// + /// + /// + /// + /// + Task> GetNotificationsAsync(int idUser, + NotificationRequest request, + CancellationToken cancellationToken); - /// - /// Получение всех уведомлений - /// - /// - /// - /// - /// - /// - Task> GetAllAsync(int? idUser, bool? isSent, int? idTransportType, - CancellationToken cancellationToken); + /// + /// Получение всех уведомлений + /// + /// + /// + /// + /// + /// + Task> GetAllAsync(int? idUser, bool? isSent, int? idTransportType, + CancellationToken cancellationToken); - /// - /// Обновление уведомлений - /// - /// - /// - /// - Task UpdateRangeAsync(IEnumerable notifications, CancellationToken cancellationToken); - - /// - /// Удаление уведомлений по параметрам - /// - /// - /// - /// - Task DeleteAsync(NotificationDeleteRequest request, - CancellationToken cancellationToken); + /// + /// Обновление уведомлений + /// + /// + /// + /// + Task UpdateRangeAsync(IEnumerable notifications, CancellationToken cancellationToken); + + /// + /// Удаление уведомлений по параметрам + /// + /// + /// + /// + Task DeleteAsync(NotificationDeleteRequest request, + CancellationToken cancellationToken); /// /// Получение количества непрочтенных уведомлений /// /// - /// + /// /// /// Task GetUnreadCountAsync(int idUser, int idTransportType, CancellationToken cancellationToken); diff --git a/AsbCloudApp/Repositories/ITelemetryDataCache.cs b/AsbCloudApp/Repositories/ITelemetryDataCache.cs index 851fce0b..0e4d83b1 100644 --- a/AsbCloudApp/Repositories/ITelemetryDataCache.cs +++ b/AsbCloudApp/Repositories/ITelemetryDataCache.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Requests; using AsbCloudInfrastructure.Services.SAUB; using System; @@ -49,7 +49,7 @@ namespace AsbCloudApp.Repositories /// /// /// - DatesRangeDto? GetOrDefaultCachedDateRange(int idTelemetry); + DatesRangeDto? GetOrDefaultCachedDataDateRange(int idTelemetry); /// /// Получить диапазон дат телеметрии. @@ -57,7 +57,7 @@ namespace AsbCloudApp.Repositories /// /// /// - DatesRangeDto? GetOrDefaultDataDateRange(int idTelemetry); + DatesRangeDto? GetOrDefaultWellDataDateRange(int idTelemetry); /// /// Получение первой и последней записи телеметрии. diff --git a/AsbCloudApp/Repositories/ITelemetryWirelineRunOutRepository.cs b/AsbCloudApp/Repositories/ITelemetryWirelineRunOutRepository.cs index 194a00fe..3166a301 100644 --- a/AsbCloudApp/Repositories/ITelemetryWirelineRunOutRepository.cs +++ b/AsbCloudApp/Repositories/ITelemetryWirelineRunOutRepository.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Data.SAUB; using System.Collections.Generic; using System.Threading; diff --git a/AsbCloudApp/Repositories/ITrajectoryEditableRepository.cs b/AsbCloudApp/Repositories/ITrajectoryEditableRepository.cs index f1bf0671..ff438112 100644 --- a/AsbCloudApp/Repositories/ITrajectoryEditableRepository.cs +++ b/AsbCloudApp/Repositories/ITrajectoryEditableRepository.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.Trajectory; +using AsbCloudApp.Data.Trajectory; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; diff --git a/AsbCloudApp/Repositories/ITrajectoryNnbRepository.cs b/AsbCloudApp/Repositories/ITrajectoryNnbRepository.cs index cba8a707..2d3d89e0 100644 --- a/AsbCloudApp/Repositories/ITrajectoryNnbRepository.cs +++ b/AsbCloudApp/Repositories/ITrajectoryNnbRepository.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.Trajectory; +using AsbCloudApp.Data.Trajectory; using AsbCloudApp.Requests; using System.Collections.Generic; using System.Threading; diff --git a/AsbCloudApp/Repositories/ITrajectoryRepository.cs b/AsbCloudApp/Repositories/ITrajectoryRepository.cs index fb676d2d..0c51ec85 100644 --- a/AsbCloudApp/Repositories/ITrajectoryRepository.cs +++ b/AsbCloudApp/Repositories/ITrajectoryRepository.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.Trajectory; +using AsbCloudApp.Data.Trajectory; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; diff --git a/AsbCloudApp/Repositories/IUserRepository.cs b/AsbCloudApp/Repositories/IUserRepository.cs index 1b4e86af..db6a32ea 100644 --- a/AsbCloudApp/Repositories/IUserRepository.cs +++ b/AsbCloudApp/Repositories/IUserRepository.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Data.User; using AsbCloudApp.Services; using System.Collections.Generic; diff --git a/AsbCloudApp/Repositories/IUserRoleRepository.cs b/AsbCloudApp/Repositories/IUserRoleRepository.cs index 7fa59e62..b2ca7f4f 100644 --- a/AsbCloudApp/Repositories/IUserRoleRepository.cs +++ b/AsbCloudApp/Repositories/IUserRoleRepository.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Services; +using AsbCloudApp.Services; using System.Collections.Generic; using System.Threading.Tasks; using System.Threading; diff --git a/AsbCloudApp/Repositories/IWellCompositeRepository.cs b/AsbCloudApp/Repositories/IWellCompositeRepository.cs index f5a5101a..1023ba8d 100644 --- a/AsbCloudApp/Repositories/IWellCompositeRepository.cs +++ b/AsbCloudApp/Repositories/IWellCompositeRepository.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Data.ProcessMaps; using System.Collections.Generic; using System.Threading; @@ -34,6 +34,6 @@ namespace AsbCloudApp.Repositories /// /// /// - Task> GetCompositeProcessMap(int idWell, CancellationToken token); + Task> GetCompositeProcessMap(int idWell, CancellationToken token); } } diff --git a/AsbCloudApp/Repositories/IWellFinalDocumentsRepository.cs b/AsbCloudApp/Repositories/IWellFinalDocumentsRepository.cs index 3f3ad72e..252c1e5b 100644 --- a/AsbCloudApp/Repositories/IWellFinalDocumentsRepository.cs +++ b/AsbCloudApp/Repositories/IWellFinalDocumentsRepository.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Data.User; using System.Collections.Generic; using System.Threading; diff --git a/AsbCloudApp/Repositories/IWellOperationCategoryRepository.cs b/AsbCloudApp/Repositories/IWellOperationCategoryRepository.cs index 044dbd44..12d7995e 100644 --- a/AsbCloudApp/Repositories/IWellOperationCategoryRepository.cs +++ b/AsbCloudApp/Repositories/IWellOperationCategoryRepository.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using AsbCloudApp.Data.WellOperation; namespace AsbCloudApp.Repositories diff --git a/AsbCloudApp/Repositories/IWellOperationRepository.cs b/AsbCloudApp/Repositories/IWellOperationRepository.cs index 12246578..fcf31f00 100644 --- a/AsbCloudApp/Repositories/IWellOperationRepository.cs +++ b/AsbCloudApp/Repositories/IWellOperationRepository.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Data.WellOperation; using AsbCloudApp.Requests; using System.Collections.Generic; diff --git a/AsbCloudApp/Repositories/IWellSectionPlanRepository.cs b/AsbCloudApp/Repositories/IWellSectionPlanRepository.cs index 972fac66..c836276e 100644 --- a/AsbCloudApp/Repositories/IWellSectionPlanRepository.cs +++ b/AsbCloudApp/Repositories/IWellSectionPlanRepository.cs @@ -12,11 +12,11 @@ namespace AsbCloudApp.Repositories; /// public interface IWellSectionPlanRepository : IRepositoryWellRelated { - /// - /// Получить типы секций - /// - /// - /// - /// - Task> GetWellSectionTypesAsync(int idWell, CancellationToken cancellationToken); + /// + /// Получить типы секций + /// + /// + /// + /// + Task> GetWellSectionTypesAsync(int idWell, CancellationToken cancellationToken); } \ No newline at end of file diff --git a/AsbCloudApp/Requests/ChangeLogBaseRequest.cs b/AsbCloudApp/Requests/ChangeLogBaseRequest.cs deleted file mode 100644 index e70553b2..00000000 --- a/AsbCloudApp/Requests/ChangeLogBaseRequest.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System; - -namespace AsbCloudApp.Requests; - -/// -/// Базовый запрос актуальных данных -/// -public class ChangeLogBaseRequest -{ - /// - /// Дата/время на которую записи были актуальны. Если не задано, то возвращаются все данные без учета их актуальности - /// - public DateTimeOffset? Moment { get; set; } -} diff --git a/AsbCloudApp/Requests/ChangeLogRequest.cs b/AsbCloudApp/Requests/ChangeLogRequest.cs new file mode 100644 index 00000000..bf1604aa --- /dev/null +++ b/AsbCloudApp/Requests/ChangeLogRequest.cs @@ -0,0 +1,31 @@ +using System; + +namespace AsbCloudApp.Requests; + +/// +/// Запрос изменений +/// +public class ChangeLogRequest +{ + /// + /// Дата/время на которую записи были актуальны. Если не задано, то возвращаются все данные без учета их актуальности + /// + public DateTimeOffset? Moment { get; set; } + + /// + /// Конструктор + /// + public ChangeLogRequest() + { + + } + + /// + /// Копирующий конструктор + /// + /// + public ChangeLogRequest(ChangeLogRequest request) + { + Moment = request.Moment; + } +} diff --git a/AsbCloudApp/Requests/DataSaubStatRequest.cs b/AsbCloudApp/Requests/DataSaubStatRequest.cs index a9bcbf7d..1fe186b5 100644 --- a/AsbCloudApp/Requests/DataSaubStatRequest.cs +++ b/AsbCloudApp/Requests/DataSaubStatRequest.cs @@ -1,4 +1,4 @@ -using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations; namespace AsbCloudApp.Requests { diff --git a/AsbCloudApp/Requests/DetectedOperationRequest.cs b/AsbCloudApp/Requests/DetectedOperationRequest.cs index 243d6e9f..f91c8b5d 100644 --- a/AsbCloudApp/Requests/DetectedOperationRequest.cs +++ b/AsbCloudApp/Requests/DetectedOperationRequest.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; diff --git a/AsbCloudApp/Requests/ExportOptions/WellOperationExportRequest.cs b/AsbCloudApp/Requests/ExportOptions/WellOperationExportRequest.cs index facbba72..6456f8ca 100644 --- a/AsbCloudApp/Requests/ExportOptions/WellOperationExportRequest.cs +++ b/AsbCloudApp/Requests/ExportOptions/WellOperationExportRequest.cs @@ -5,16 +5,16 @@ namespace AsbCloudApp.Requests.ExportOptions; /// public class WellOperationExportRequest : WellRelatedExportRequest { - /// - public WellOperationExportRequest(int idWell, - int idType) - : base(idWell) - { - IdType = idType; - } + /// + public WellOperationExportRequest(int idWell, + int idType) + : base(idWell) + { + IdType = idType; + } - /// - /// Тип операций - /// - public int IdType { get; } + /// + /// Тип операций + /// + public int IdType { get; } } \ No newline at end of file diff --git a/AsbCloudApp/Requests/ExportOptions/WellRelatedExportRequest.cs b/AsbCloudApp/Requests/ExportOptions/WellRelatedExportRequest.cs index 63b185cd..7235a526 100644 --- a/AsbCloudApp/Requests/ExportOptions/WellRelatedExportRequest.cs +++ b/AsbCloudApp/Requests/ExportOptions/WellRelatedExportRequest.cs @@ -5,17 +5,17 @@ namespace AsbCloudApp.Requests.ExportOptions; /// public class WellRelatedExportRequest : IExportOptionsRequest { - /// - /// Конструктор - /// - /// Id скважины - public WellRelatedExportRequest(int idWell) - { - IdWell = idWell; - } - - /// - /// Id скважины - /// - public int IdWell { get; } + /// + /// Конструктор + /// + /// Id скважины + public WellRelatedExportRequest(int idWell) + { + IdWell = idWell; + } + + /// + /// Id скважины + /// + public int IdWell { get; } } \ No newline at end of file diff --git a/AsbCloudApp/Requests/FaqRequest.cs b/AsbCloudApp/Requests/FaqRequest.cs index c52631fa..3094d12c 100644 --- a/AsbCloudApp/Requests/FaqRequest.cs +++ b/AsbCloudApp/Requests/FaqRequest.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; diff --git a/AsbCloudApp/Requests/FileRequest.cs b/AsbCloudApp/Requests/FileRequest.cs index 403c0655..d8b05364 100644 --- a/AsbCloudApp/Requests/FileRequest.cs +++ b/AsbCloudApp/Requests/FileRequest.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.ComponentModel.DataAnnotations; namespace AsbCloudApp.Requests diff --git a/AsbCloudApp/Requests/GtrRequest.cs b/AsbCloudApp/Requests/GtrRequest.cs index 89d281a3..ab54f255 100644 --- a/AsbCloudApp/Requests/GtrRequest.cs +++ b/AsbCloudApp/Requests/GtrRequest.cs @@ -7,19 +7,19 @@ namespace AsbCloudApp.Requests; /// public class GtrRequest { - /// - /// Дата начала выборки.По умолчанию: текущее время - IntervalSec - /// - public DateTimeOffset? Begin { get; set; } + /// + /// Дата начала выборки.По умолчанию: текущее время - IntervalSec + /// + public DateTimeOffset? Begin { get; set; } - /// - /// Интервал времени даты начала выборки, секунды - /// - public int IntervalSec { get; set; } = 600; + /// + /// Интервал времени даты начала выборки, секунды + /// + public int IntervalSec { get; set; } = 600; - /// - /// Желаемое количество точек. Если в выборке точек будет больше, то выборка будет прорежена. - /// - [Obsolete] - public int ApproxPointsCount { get; set; } = 1024; + /// + /// Желаемое количество точек. Если в выборке точек будет больше, то выборка будет прорежена. + /// + [Obsolete] + public int ApproxPointsCount { get; set; } = 1024; } \ No newline at end of file diff --git a/AsbCloudApp/Requests/LimitingParameterRequest.cs b/AsbCloudApp/Requests/LimitingParameterRequest.cs index 4e1b5d98..6bf0b11d 100644 --- a/AsbCloudApp/Requests/LimitingParameterRequest.cs +++ b/AsbCloudApp/Requests/LimitingParameterRequest.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.ComponentModel.DataAnnotations; namespace AsbCloudApp.Requests diff --git a/AsbCloudApp/Requests/MessageRequest.cs b/AsbCloudApp/Requests/MessageRequest.cs index a474c7b9..db814e82 100644 --- a/AsbCloudApp/Requests/MessageRequest.cs +++ b/AsbCloudApp/Requests/MessageRequest.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; namespace AsbCloudApp.Requests diff --git a/AsbCloudApp/Requests/NotificationDeleteRequest.cs b/AsbCloudApp/Requests/NotificationDeleteRequest.cs index 56921d70..8955c844 100644 --- a/AsbCloudApp/Requests/NotificationDeleteRequest.cs +++ b/AsbCloudApp/Requests/NotificationDeleteRequest.cs @@ -7,18 +7,18 @@ namespace AsbCloudApp.Requests; /// public class NotificationDeleteRequest { - /// - /// Идентификатор категории - /// - public int? IdCategory { get; set; } - - /// - /// Меньше или равно дате отправки - /// - public DateTimeOffset? LtSentDate { get; set; } - - /// - /// Меньше или равно дате прочтения - /// - public DateTimeOffset? LtReadDate { get; set; } + /// + /// Идентификатор категории + /// + public int? IdCategory { get; set; } + + /// + /// Меньше или равно дате отправки + /// + public DateTimeOffset? LtSentDate { get; set; } + + /// + /// Меньше или равно дате прочтения + /// + public DateTimeOffset? LtReadDate { get; set; } } \ No newline at end of file diff --git a/AsbCloudApp/Requests/NotificationRequest.cs b/AsbCloudApp/Requests/NotificationRequest.cs index 197b142a..2382db7b 100644 --- a/AsbCloudApp/Requests/NotificationRequest.cs +++ b/AsbCloudApp/Requests/NotificationRequest.cs @@ -5,13 +5,13 @@ namespace AsbCloudApp.Requests; /// public class NotificationRequest : RequestBase { - /// - /// Получение отправленных/не отправленных уведомлений - /// - public bool? IsSent { get; set; } = false; + /// + /// Получение отправленных/не отправленных уведомлений + /// + public bool? IsSent { get; set; } = false; - /// - /// Id типа доставки уведомления - /// - public int? IdTransportType { get; set; } + /// + /// Id типа доставки уведомления + /// + public int? IdTransportType { get; set; } } \ No newline at end of file diff --git a/AsbCloudApp/Requests/NotifyRequest.cs b/AsbCloudApp/Requests/NotifyRequest.cs index fdd4a1e5..3f013ffe 100644 --- a/AsbCloudApp/Requests/NotifyRequest.cs +++ b/AsbCloudApp/Requests/NotifyRequest.cs @@ -7,34 +7,34 @@ namespace AsbCloudApp.Requests; /// public class NotifyRequest { - /// - /// Id получателя уведомления - /// - [Required] - public int IdUser { get; set; } + /// + /// Id получателя уведомления + /// + [Required] + public int IdUser { get; set; } - /// - /// Id категории уведомления. Допустимое значение параметра: 1 - /// - [Required] - [Range(minimum: 1, maximum: 1, ErrorMessage = "Id категории уведомления недоступно. Допустимые: 1")] - public int IdNotificationCategory { get; set; } + /// + /// Id категории уведомления. Допустимое значение параметра: 1 + /// + [Required] + [Range(minimum: 1, maximum: 1, ErrorMessage = "Id категории уведомления недоступно. Допустимые: 1")] + public int IdNotificationCategory { get; set; } - /// - /// Заголовок уведомления - /// - [Required] - public string Title { get; set; } = null!; + /// + /// Заголовок уведомления + /// + [Required] + public string Title { get; set; } = null!; - /// - /// Сообщение уведомления - /// - [Required] - public string Message { get; set; } = null!; - - /// - /// Id типа доставки уведомления. Допустимое значение: 0, 1 - /// - [Required] - public int IdTransportType { get; set; } + /// + /// Сообщение уведомления + /// + [Required] + public string Message { get; set; } = null!; + + /// + /// Id типа доставки уведомления. Допустимое значение: 0, 1 + /// + [Required] + public int IdTransportType { get; set; } } \ No newline at end of file diff --git a/AsbCloudApp/Requests/OperationStatRequest.cs b/AsbCloudApp/Requests/OperationStatRequest.cs index ac6b50c4..c9a384e3 100644 --- a/AsbCloudApp/Requests/OperationStatRequest.cs +++ b/AsbCloudApp/Requests/OperationStatRequest.cs @@ -1,4 +1,4 @@ -using System; +using System; namespace AsbCloudApp.Requests { diff --git a/AsbCloudApp/Requests/ParserOptions/IParserOptionsRequest.cs b/AsbCloudApp/Requests/ParserOptions/IParserOptionsRequest.cs index b3b12f51..61205bc2 100644 --- a/AsbCloudApp/Requests/ParserOptions/IParserOptionsRequest.cs +++ b/AsbCloudApp/Requests/ParserOptions/IParserOptionsRequest.cs @@ -5,15 +5,15 @@ namespace AsbCloudApp.Requests.ParserOptions; /// public interface IParserOptionsRequest { - private static DummyOptions empty => new(); + private static DummyOptions empty => new(); - private class DummyOptions : IParserOptionsRequest - { - } + private class DummyOptions : IParserOptionsRequest + { + } - /// - /// Получение пустого объекта опций - /// - /// - public static IParserOptionsRequest Empty() => empty; + /// + /// Получение пустого объекта опций + /// + /// + public static IParserOptionsRequest Empty() => empty; } \ No newline at end of file diff --git a/AsbCloudApp/Requests/ParserOptions/WellOperationParserRequest.cs b/AsbCloudApp/Requests/ParserOptions/WellOperationParserRequest.cs index efb9aad2..db808a0f 100644 --- a/AsbCloudApp/Requests/ParserOptions/WellOperationParserRequest.cs +++ b/AsbCloudApp/Requests/ParserOptions/WellOperationParserRequest.cs @@ -7,23 +7,23 @@ namespace AsbCloudApp.Requests.ParserOptions; /// public class WellOperationParserRequest : WellRelatedParserRequest { - /// - public WellOperationParserRequest(int idWell, - int idType, - SimpleTimezoneDto wellTimezone) - : base(idWell) - { - IdType = idType; - WellTimezone = wellTimezone; - } + /// + public WellOperationParserRequest(int idWell, + int idType, + SimpleTimezoneDto wellTimezone) + : base(idWell) + { + IdType = idType; + WellTimezone = wellTimezone; + } - /// - /// Тип операции - /// - public int IdType { get; } - - /// - /// Часовой пояс в котором находится скважина - /// - public SimpleTimezoneDto WellTimezone { get; } + /// + /// Тип операции + /// + public int IdType { get; } + + /// + /// Часовой пояс в котором находится скважина + /// + public SimpleTimezoneDto WellTimezone { get; } } \ No newline at end of file diff --git a/AsbCloudApp/Requests/ParserOptions/WellRelatedParserRequest.cs b/AsbCloudApp/Requests/ParserOptions/WellRelatedParserRequest.cs index 3ffbf4d5..eccc8b28 100644 --- a/AsbCloudApp/Requests/ParserOptions/WellRelatedParserRequest.cs +++ b/AsbCloudApp/Requests/ParserOptions/WellRelatedParserRequest.cs @@ -5,17 +5,17 @@ namespace AsbCloudApp.Requests.ParserOptions; /// public class WellRelatedParserRequest : IParserOptionsRequest { - /// - /// Конструктор - /// - /// Id скважины - public WellRelatedParserRequest(int idWell) - { - IdWell = idWell; - } - - /// - /// Id скважины - /// - public int IdWell { get; } + /// + /// Конструктор + /// + /// Id скважины + public WellRelatedParserRequest(int idWell) + { + IdWell = idWell; + } + + /// + /// Id скважины + /// + public int IdWell { get; } } \ No newline at end of file diff --git a/AsbCloudApp/Requests/ProcessMapPlanBaseRequest.cs b/AsbCloudApp/Requests/ProcessMapPlanBaseRequest.cs index 006c26e5..9191d82d 100644 --- a/AsbCloudApp/Requests/ProcessMapPlanBaseRequest.cs +++ b/AsbCloudApp/Requests/ProcessMapPlanBaseRequest.cs @@ -1,29 +1,39 @@ -using System; -using System.ComponentModel.DataAnnotations; +using System; namespace AsbCloudApp.Requests; /// /// Запрос для получения РТК план /// -public class ProcessMapPlanBaseRequest: ChangeLogBaseRequest +public class ProcessMapPlanBaseRequest { - /// - /// Тип секции - /// - [Range(1, int.MaxValue, ErrorMessage = "Id секции - положительное число")] - public int? IdWellSectionType { get; set; } - /// /// Вернуть данные, которые поменялись с указанной даты /// public DateTimeOffset? UpdateFrom { get; set; } + + /// + /// Конструктор + /// + public ProcessMapPlanBaseRequest() + { + + } + + /// + /// Копирующий конструктор + /// + /// Параметры запроса + public ProcessMapPlanBaseRequest(ProcessMapPlanBaseRequest request) + { + UpdateFrom = request.UpdateFrom; + } } /// /// Запрос для получения РТК план по скважине /// -public class ProcessMapPlanBaseRequestWithWell: ProcessMapPlanBaseRequest +public class ProcessMapPlanBaseRequestWithWell : ProcessMapPlanBaseRequest { /// /// Запрос для получения РТК план по скважине @@ -40,11 +50,9 @@ public class ProcessMapPlanBaseRequestWithWell: ProcessMapPlanBaseRequest /// /// public ProcessMapPlanBaseRequestWithWell(ProcessMapPlanBaseRequest request, int idWell) + : base(request) { - IdWell=idWell; - IdWellSectionType=request.IdWellSectionType; - UpdateFrom = request.UpdateFrom; - Moment = request.Moment; + IdWell = idWell; } /// diff --git a/AsbCloudApp/Requests/ProcessMapPlanRequest.cs b/AsbCloudApp/Requests/ProcessMapPlanRequest.cs deleted file mode 100644 index b3247ce2..00000000 --- a/AsbCloudApp/Requests/ProcessMapPlanRequest.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System; - -namespace AsbCloudApp.Requests; - -/// -/// Запрос для получения РТК план -/// -public class ProcessMapPlanRequest -{ - /// - /// Идентификатор скважины - /// - public int IdWell { get; set; } - - /// - /// Тип секции - /// - public int? IdWellSectionType { get; set; } - - /// - /// Дата обновления - /// - public DateTimeOffset? UpdateFrom { get; set; } -} \ No newline at end of file diff --git a/AsbCloudApp/Requests/ReportParametersRequest.cs b/AsbCloudApp/Requests/ReportParametersRequest.cs index 74bc358a..0a9eb339 100644 --- a/AsbCloudApp/Requests/ReportParametersRequest.cs +++ b/AsbCloudApp/Requests/ReportParametersRequest.cs @@ -14,28 +14,28 @@ public class ReportParametersRequest: IValidatableObject /// [Range(1, 86400)] public int StepSeconds { get; set; } - - /// - /// формат отчета (0-PDF, 1-LAS) - /// - [Range(0, 1)] - public int Format { get; set; } + + /// + /// формат отчета (0-PDF, 1-LAS) + /// + [Range(0, 1)] + public int Format { get; set; } - /// - /// Дата начала интервала - /// - public DateTimeOffset Begin { get; set; } = default; + /// + /// Дата начала интервала + /// + public DateTimeOffset Begin { get; set; } = default; /// /// Дата окончания интервала /// public DateTimeOffset End { get; set; } = default; - /// + /// public IEnumerable Validate(ValidationContext validationContext) { - if (End < Begin) - yield return new("End mast be less then begin"); + if (End < Begin) + yield return new("End mast be less then begin"); if (Begin < new DateTimeOffset(2000, 1, 1, 0, 0, 0, TimeSpan.Zero)) yield return new("Begin mast be > 2000-1-1"); diff --git a/AsbCloudApp/Requests/RequestBase.cs b/AsbCloudApp/Requests/RequestBase.cs index c5d70a68..3f045fd5 100644 --- a/AsbCloudApp/Requests/RequestBase.cs +++ b/AsbCloudApp/Requests/RequestBase.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; namespace AsbCloudApp.Requests { diff --git a/AsbCloudApp/Requests/SubsystemRequest.cs b/AsbCloudApp/Requests/SubsystemRequest.cs index 08b980ab..f427dcec 100644 --- a/AsbCloudApp/Requests/SubsystemRequest.cs +++ b/AsbCloudApp/Requests/SubsystemRequest.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; diff --git a/AsbCloudApp/Requests/TelemetryPartDeleteRequest.cs b/AsbCloudApp/Requests/TelemetryPartDeleteRequest.cs new file mode 100644 index 00000000..1ac2519f --- /dev/null +++ b/AsbCloudApp/Requests/TelemetryPartDeleteRequest.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; + +namespace AsbCloudApp.Requests; + +/// +/// Параметры запроса на удаление куска телеметрии +/// +public class TelemetryPartDeleteRequest : IValidatableObject +{ + /// + /// ключ телеметрии + /// + public int IdTelemetry { get; set; } + + /// + /// greater or equal then Date. Must be set one of GeDate or LeDate + /// + public DateTimeOffset? GeDate { get; set; } + + /// + /// less or equal then Date. Must be set one of GeDate or LeDate + /// + public DateTimeOffset? LeDate { get; set; } + + /// + /// Валидация входящих данных + /// + /// + /// + public IEnumerable Validate(ValidationContext validationContext) + { + if (IdTelemetry == 0) + yield return new ValidationResult($"IdTelemetry must be defined"); + if (!GeDate.HasValue && !LeDate.HasValue) + yield return new ValidationResult($"GeDate or LeDate must be defined"); + } +} diff --git a/AsbCloudApp/Requests/TelemetryRequest.cs b/AsbCloudApp/Requests/TelemetryRequest.cs index 66b43cb5..04d4ffb4 100644 --- a/AsbCloudApp/Requests/TelemetryRequest.cs +++ b/AsbCloudApp/Requests/TelemetryRequest.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.ComponentModel.DataAnnotations; namespace AsbCloudApp.Requests; @@ -55,5 +55,4 @@ public class TelemetryDataRequest /// [Range(1, MaxTake)] public int Take { get; set; } = 1024; - } diff --git a/AsbCloudApp/Requests/TrajectoryRequest.cs b/AsbCloudApp/Requests/TrajectoryRequest.cs index 35eca8c3..0d86c56a 100644 --- a/AsbCloudApp/Requests/TrajectoryRequest.cs +++ b/AsbCloudApp/Requests/TrajectoryRequest.cs @@ -7,18 +7,18 @@ namespace AsbCloudApp.Requests; /// public class TrajectoryRequest : RequestBase { - /// - /// Идентификатор скважины - /// - public int IdWell { get; set; } - - /// - /// Больше или равно дате - /// - public DateTimeOffset? GeDate { get; set; } - - /// - /// Меньше или равно дате - /// - public DateTimeOffset? LeDate { get; set; } + /// + /// Идентификатор скважины + /// + public int IdWell { get; set; } + + /// + /// Больше или равно дате + /// + public DateTimeOffset? GeDate { get; set; } + + /// + /// Меньше или равно дате + /// + public DateTimeOffset? LeDate { get; set; } } \ No newline at end of file diff --git a/AsbCloudApp/Requests/WellOperationRequest.cs b/AsbCloudApp/Requests/WellOperationRequest.cs index fa866378..f80f4544 100644 --- a/AsbCloudApp/Requests/WellOperationRequest.cs +++ b/AsbCloudApp/Requests/WellOperationRequest.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; diff --git a/AsbCloudApp/Requests/WellRequest.cs b/AsbCloudApp/Requests/WellRequest.cs index 3f5195d0..8be9dee8 100644 --- a/AsbCloudApp/Requests/WellRequest.cs +++ b/AsbCloudApp/Requests/WellRequest.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; namespace AsbCloudApp.Requests { diff --git a/AsbCloudApp/Services/DailyReport/IDailyReportExportService.cs b/AsbCloudApp/Services/DailyReport/IDailyReportExportService.cs index eb09874a..f7329471 100644 --- a/AsbCloudApp/Services/DailyReport/IDailyReportExportService.cs +++ b/AsbCloudApp/Services/DailyReport/IDailyReportExportService.cs @@ -10,12 +10,12 @@ namespace AsbCloudApp.Services.DailyReport; /// public interface IDailyReportExportService { - /// - /// Экспортировать - /// - /// - /// - /// - /// - Task<(string FileName, Stream File)> ExportAsync(int idWell, DateOnly dailyReportDate, CancellationToken cancellationToken); + /// + /// Экспортировать + /// + /// + /// + /// + /// + Task<(string FileName, Stream File)> ExportAsync(int idWell, DateOnly dailyReportDate, CancellationToken cancellationToken); } \ No newline at end of file diff --git a/AsbCloudApp/Services/DailyReport/IDailyReportService.cs b/AsbCloudApp/Services/DailyReport/IDailyReportService.cs index b39375a6..d23759d0 100644 --- a/AsbCloudApp/Services/DailyReport/IDailyReportService.cs +++ b/AsbCloudApp/Services/DailyReport/IDailyReportService.cs @@ -12,34 +12,34 @@ namespace AsbCloudApp.Services.DailyReport; /// public interface IDailyReportService { - /// - /// Обновить или создать суточный отчёт - /// - /// - /// - /// - /// - /// - /// - Task UpdateOrInsertAsync(int idWell, DateOnly dateDailyReport, int idUser, TBlock editableBlock, - CancellationToken cancellationToken) - where TBlock : ItemInfoDto; + /// + /// Обновить или создать суточный отчёт + /// + /// + /// + /// + /// + /// + /// + Task UpdateOrInsertAsync(int idWell, DateOnly dateDailyReport, int idUser, TBlock editableBlock, + CancellationToken cancellationToken) + where TBlock : ItemInfoDto; - /// - /// Получить сформированный суточный отчёт - /// - /// - /// - /// - /// - Task GetAsync(int idWell, DateOnly dateDailyReport, CancellationToken cancellationToken); + /// + /// Получить сформированный суточный отчёт + /// + /// + /// + /// + /// + Task GetAsync(int idWell, DateOnly dateDailyReport, CancellationToken cancellationToken); - /// - /// Получить список суточных отчётов по скважине - /// - /// - /// - /// - /// - Task> GetAsync(int idWell, FileReportRequest request, CancellationToken cancellationToken); + /// + /// Получить список суточных отчётов по скважине + /// + /// + /// + /// + /// + Task> GetAsync(int idWell, FileReportRequest request, CancellationToken cancellationToken); } \ No newline at end of file diff --git a/AsbCloudApp/Services/Export/IExportService.cs b/AsbCloudApp/Services/Export/IExportService.cs index ddfd50f9..332da86f 100644 --- a/AsbCloudApp/Services/Export/IExportService.cs +++ b/AsbCloudApp/Services/Export/IExportService.cs @@ -9,15 +9,15 @@ namespace AsbCloudApp.Services.Export; /// Экспорт данных /// public interface IExportService : IExportService - where TOptions : IExportOptionsRequest + where TOptions : IExportOptionsRequest { - /// - /// Экспортировать данные - /// - /// - /// - /// - Task<(string FileName, Stream File)> ExportAsync(TOptions options, CancellationToken token); + /// + /// Экспортировать данные + /// + /// + /// + /// + Task<(string FileName, Stream File)> ExportAsync(TOptions options, CancellationToken token); } /// @@ -25,5 +25,5 @@ public interface IExportService : IExportService /// public interface IExportService { - + } \ No newline at end of file diff --git a/AsbCloudApp/Services/Export/IExportServiceFactory.cs b/AsbCloudApp/Services/Export/IExportServiceFactory.cs index fb6b5fc9..d482b769 100644 --- a/AsbCloudApp/Services/Export/IExportServiceFactory.cs +++ b/AsbCloudApp/Services/Export/IExportServiceFactory.cs @@ -7,14 +7,14 @@ namespace AsbCloudApp.Services.Export; /// /// public interface IExportServiceFactory - where TId : struct + where TId : struct { - /// - /// Создать сервис экспорта - /// - /// - /// - /// - IExportService CreateExportService(TId id) - where TOptions : IExportOptionsRequest; + /// + /// Создать сервис экспорта + /// + /// + /// + /// + IExportService CreateExportService(TId id) + where TOptions : IExportOptionsRequest; } \ No newline at end of file diff --git a/AsbCloudApp/Services/FileService.cs b/AsbCloudApp/Services/FileService.cs index 0513881b..6065d310 100644 --- a/AsbCloudApp/Services/FileService.cs +++ b/AsbCloudApp/Services/FileService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Repositories; using AsbCloudApp.Requests; using System.Collections.Generic; diff --git a/AsbCloudApp/Services/IAuthService.cs b/AsbCloudApp/Services/IAuthService.cs index 00bbae86..ac470f73 100644 --- a/AsbCloudApp/Services/IAuthService.cs +++ b/AsbCloudApp/Services/IAuthService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.User; +using AsbCloudApp.Data.User; using System.Security.Claims; using System.Threading; using System.Threading.Tasks; diff --git a/AsbCloudApp/Services/ICrudRepository.cs b/AsbCloudApp/Services/ICrudRepository.cs index 55cfad99..b4ab2459 100644 --- a/AsbCloudApp/Services/ICrudRepository.cs +++ b/AsbCloudApp/Services/ICrudRepository.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; diff --git a/AsbCloudApp/Services/IDetectedOperationService.cs b/AsbCloudApp/Services/IDetectedOperationService.cs index 262b193f..631046c5 100644 --- a/AsbCloudApp/Services/IDetectedOperationService.cs +++ b/AsbCloudApp/Services/IDetectedOperationService.cs @@ -1,4 +1,4 @@ -using System; +using System; using AsbCloudApp.Data.DetectedOperation; using AsbCloudApp.Requests; using System.Collections.Generic; @@ -6,82 +6,85 @@ using System.Threading; using System.Threading.Tasks; using AsbCloudApp.Data.WellOperation; -namespace AsbCloudApp.Services +namespace AsbCloudApp.Services; + +/// +/// Сервис автоматически определенных по телеметрии операций +/// +public interface IDetectedOperationService { /// - /// Сервис автоматически определенных по телеметрии операций + /// Добавление операций /// - public interface IDetectedOperationService - { - /// - /// Добавление операций - /// - /// - /// - /// - /// - /// - Task InsertRangeManualAsync(int idEditor, int idWell, IEnumerable dtos, CancellationToken token); + /// + /// + /// + /// + /// + Task InsertRangeManualAsync(int idEditor, int idWell, IEnumerable dtos, CancellationToken token); - /// - /// Редактирование операций - /// - /// - /// - /// - /// - /// - Task UpdateRangeManualAsync(int idEditor, int idWell, IEnumerable dtos, CancellationToken token); + /// + /// Редактирование операций + /// + /// + /// + /// + /// + /// + Task UpdateRangeManualAsync(int idEditor, int idWell, IEnumerable dtos, CancellationToken token); - /// - /// Список названий операций. - /// Если указан idWell, то возвращается список названий операций найденных на указанной скважине. - /// - /// - /// - /// - Task> GetCategoriesAsync(int? idWell, CancellationToken token); + /// + /// Список названий операций. + /// Если указан idWell, то возвращается список названий операций найденных на указанной скважине. + /// + /// + /// + /// + Task> GetCategoriesAsync(int? idWell, CancellationToken token); - /// - /// Получить автоматически определенные по телеметрии операции с анализом по бурильщикам - /// - /// - /// - /// - Task GetAsync(DetectedOperationByWellRequest request, CancellationToken token); - - /// - /// Получить автоматически определенные по телеметрии операции - /// - /// - /// - /// - Task> GetOperationsAsync(DetectedOperationByWellRequest request, CancellationToken token); + /// + /// Получить автоматически определенные по телеметрии операции с анализом по бурильщикам + /// + /// + /// + /// + Task GetAsync(DetectedOperationByWellRequest request, CancellationToken token); + + /// + /// Получить автоматически определенные по телеметрии операции + /// + /// + /// + /// + Task> GetOperationsAsync(DetectedOperationByWellRequest request, CancellationToken token); - /// - /// Удалить операции - /// - /// - /// - /// - Task DeleteAsync(DetectedOperationByWellRequest request, CancellationToken token); + /// + /// Удалить операции + /// + /// + /// + /// + Task DeleteAsync(DetectedOperationByWellRequest request, CancellationToken token); - /// - /// Статистика по операциям - /// - /// - /// - /// - [Obsolete] - Task> GetOperationsStatAsync(DetectedOperationByWellRequest request, CancellationToken token); + /// + /// Статистика по операциям + /// + /// + /// + /// + [Obsolete] + Task> GetOperationsStatAsync(DetectedOperationByWellRequest request, CancellationToken token); - /// - /// Определение операций - /// - /// - /// - /// - /// - Task> DetectOperationsAsync(int idTelemetry, DateTimeOffset? beginDate, CancellationToken token); - } + /// + /// Определение операций + /// + /// + /// + /// + /// + /// + Task<(DateTimeOffset LastDate, IEnumerable Items)> DetectOperationsAsync(int idTelemetry, + TelemetryDataRequest request, + DetectedOperationDto? lastDetectedOperation, + CancellationToken token); } diff --git a/AsbCloudApp/Services/IDrillParamsService.cs b/AsbCloudApp/Services/IDrillParamsService.cs index edb5067f..c40ecf59 100644 --- a/AsbCloudApp/Services/IDrillParamsService.cs +++ b/AsbCloudApp/Services/IDrillParamsService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; diff --git a/AsbCloudApp/Services/IDrillTestReportService.cs b/AsbCloudApp/Services/IDrillTestReportService.cs index 6dd97b83..f13f0aa2 100644 --- a/AsbCloudApp/Services/IDrillTestReportService.cs +++ b/AsbCloudApp/Services/IDrillTestReportService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Data.DrillTestReport; using AsbCloudApp.Requests; using System.IO; diff --git a/AsbCloudApp/Services/IDrillingProgramService.cs b/AsbCloudApp/Services/IDrillingProgramService.cs index fb1e45f2..f8742ac5 100644 --- a/AsbCloudApp/Services/IDrillingProgramService.cs +++ b/AsbCloudApp/Services/IDrillingProgramService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Data.User; using System.Collections.Generic; using System.Threading; diff --git a/AsbCloudApp/Services/IEventService.cs b/AsbCloudApp/Services/IEventService.cs index 4adf287c..8efb1b2c 100644 --- a/AsbCloudApp/Services/IEventService.cs +++ b/AsbCloudApp/Services/IEventService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.SAUB; +using AsbCloudApp.Data.SAUB; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; diff --git a/AsbCloudApp/Services/IFileCategoryService.cs b/AsbCloudApp/Services/IFileCategoryService.cs index f660d0fa..bc00acea 100644 --- a/AsbCloudApp/Services/IFileCategoryService.cs +++ b/AsbCloudApp/Services/IFileCategoryService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; diff --git a/AsbCloudApp/Services/IHelpPageService.cs b/AsbCloudApp/Services/IHelpPageService.cs index 4fd675d7..f929ea05 100644 --- a/AsbCloudApp/Services/IHelpPageService.cs +++ b/AsbCloudApp/Services/IHelpPageService.cs @@ -1,4 +1,4 @@ -using System.IO; +using System.IO; using System.Threading; using System.Threading.Tasks; diff --git a/AsbCloudApp/Services/ILimitingParameterService.cs b/AsbCloudApp/Services/ILimitingParameterService.cs index 670448e5..1424e392 100644 --- a/AsbCloudApp/Services/ILimitingParameterService.cs +++ b/AsbCloudApp/Services/ILimitingParameterService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Requests; using System.Collections.Generic; using System.Threading; diff --git a/AsbCloudApp/Services/IManualCatalogService.cs b/AsbCloudApp/Services/IManualCatalogService.cs index a38bd49b..4a488211 100644 --- a/AsbCloudApp/Services/IManualCatalogService.cs +++ b/AsbCloudApp/Services/IManualCatalogService.cs @@ -9,56 +9,56 @@ namespace AsbCloudApp.Services; /// public interface IManualCatalogService { - /// - /// Сохранение файла - /// - /// - /// - /// - /// - /// - /// - Task SaveFileAsync(int idDirectory, int idAuthor, string name, Stream stream, CancellationToken cancellationToken); + /// + /// Сохранение файла + /// + /// + /// + /// + /// + /// + /// + Task SaveFileAsync(int idDirectory, int idAuthor, string name, Stream stream, CancellationToken cancellationToken); - /// - /// Добавление директории - /// - /// - /// - /// - /// - Task AddDirectoryAsync(string name, int? idParent, CancellationToken cancellationToken); + /// + /// Добавление директории + /// + /// + /// + /// + /// + Task AddDirectoryAsync(string name, int? idParent, CancellationToken cancellationToken); - /// - /// Обновление директории - /// - /// - /// - /// - /// - Task UpdateDirectoryAsync(int id, string name, CancellationToken cancellationToken); + /// + /// Обновление директории + /// + /// + /// + /// + /// + Task UpdateDirectoryAsync(int id, string name, CancellationToken cancellationToken); - /// - /// Удаление директории - /// - /// - /// - /// - Task DeleteDirectoryAsync(int id, CancellationToken cancellationToken); + /// + /// Удаление директории + /// + /// + /// + /// + Task DeleteDirectoryAsync(int id, CancellationToken cancellationToken); - /// - /// Удаление файла - /// - /// - /// - /// - Task DeleteFileAsync(int id, CancellationToken cancellationToken); + /// + /// Удаление файла + /// + /// + /// + /// + Task DeleteFileAsync(int id, CancellationToken cancellationToken); - /// - /// Получение файла - /// - /// - /// - /// - Task<(Stream stream, string fileName)?> GetFileAsync(int id, CancellationToken cancellationToken); + /// + /// Получение файла + /// + /// + /// + /// + Task<(Stream stream, string fileName)?> GetFileAsync(int id, CancellationToken cancellationToken); } \ No newline at end of file diff --git a/AsbCloudApp/Services/IMeasureService.cs b/AsbCloudApp/Services/IMeasureService.cs index ceb99ce1..e3b89111 100644 --- a/AsbCloudApp/Services/IMeasureService.cs +++ b/AsbCloudApp/Services/IMeasureService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; diff --git a/AsbCloudApp/Services/IMessageService.cs b/AsbCloudApp/Services/IMessageService.cs index 68592619..0a6557ba 100644 --- a/AsbCloudApp/Services/IMessageService.cs +++ b/AsbCloudApp/Services/IMessageService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Data.SAUB; using AsbCloudApp.Requests; using System.Collections.Generic; @@ -10,7 +10,7 @@ namespace AsbCloudApp.Services /// /// Сервис сообщений панели оператора /// - public interface IMessageService + public interface IMessageService : ITelemetryDataEditorService { /// /// Получить сообщения по параметрам diff --git a/AsbCloudApp/Services/IOperationsStatService.cs b/AsbCloudApp/Services/IOperationsStatService.cs index f5ec7c7c..1f9ed6a6 100644 --- a/AsbCloudApp/Services/IOperationsStatService.cs +++ b/AsbCloudApp/Services/IOperationsStatService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; diff --git a/AsbCloudApp/Services/IReduceSamplingService.cs b/AsbCloudApp/Services/IReduceSamplingService.cs index ce4d491d..eb7dacf5 100644 --- a/AsbCloudApp/Services/IReduceSamplingService.cs +++ b/AsbCloudApp/Services/IReduceSamplingService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using System.Collections.Generic; namespace AsbCloudApp.Services diff --git a/AsbCloudApp/Services/IReportMakerService.cs b/AsbCloudApp/Services/IReportMakerService.cs index e1269a25..b49da8dc 100644 --- a/AsbCloudApp/Services/IReportMakerService.cs +++ b/AsbCloudApp/Services/IReportMakerService.cs @@ -1,6 +1,4 @@ using System.IO; -using System.Threading; -using System.Threading.Tasks; namespace AsbCloudApp.Services; @@ -13,7 +11,6 @@ public interface IReportMakerService /// Генерация файла /// /// модель с данными для построения отчета - /// /// - Task MakeReportAsync(T report, CancellationToken cancellationToken); + Stream MakeReport(T report); } \ No newline at end of file diff --git a/AsbCloudApp/Services/IReportService.cs b/AsbCloudApp/Services/IReportService.cs index 4b259240..19c0d70b 100644 --- a/AsbCloudApp/Services/IReportService.cs +++ b/AsbCloudApp/Services/IReportService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Data.Progress; using AsbCloudApp.Requests; using System; diff --git a/AsbCloudApp/Services/IRepositoryWellRelated.cs b/AsbCloudApp/Services/IRepositoryWellRelated.cs index 9c771657..ac98cfd1 100644 --- a/AsbCloudApp/Services/IRepositoryWellRelated.cs +++ b/AsbCloudApp/Services/IRepositoryWellRelated.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; diff --git a/AsbCloudApp/Services/IRequestTracker.cs b/AsbCloudApp/Services/IRequestTracker.cs index b83d5146..efaf6048 100644 --- a/AsbCloudApp/Services/IRequestTracker.cs +++ b/AsbCloudApp/Services/IRequestTracker.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using System; using System.Collections.Generic; diff --git a/AsbCloudApp/Services/IScheduleReportService.cs b/AsbCloudApp/Services/IScheduleReportService.cs index 8b6ebcce..5c7e535f 100644 --- a/AsbCloudApp/Services/IScheduleReportService.cs +++ b/AsbCloudApp/Services/IScheduleReportService.cs @@ -1,4 +1,4 @@ -using System.IO; +using System.IO; using System.Threading; using System.Threading.Tasks; diff --git a/AsbCloudApp/Services/IScheduleService.cs b/AsbCloudApp/Services/IScheduleService.cs index 81c0d385..8181ba59 100644 --- a/AsbCloudApp/Services/IScheduleService.cs +++ b/AsbCloudApp/Services/IScheduleService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using System; using System.Collections.Generic; using System.Threading; diff --git a/AsbCloudApp/Services/ISetpointsService.cs b/AsbCloudApp/Services/ISetpointsService.cs index cd80feef..59936e85 100644 --- a/AsbCloudApp/Services/ISetpointsService.cs +++ b/AsbCloudApp/Services/ISetpointsService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.SAUB; +using AsbCloudApp.Data.SAUB; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; diff --git a/AsbCloudApp/Services/ISlipsStatService.cs b/AsbCloudApp/Services/ISlipsStatService.cs index 55dd0c0a..c2b2aa98 100644 --- a/AsbCloudApp/Services/ISlipsStatService.cs +++ b/AsbCloudApp/Services/ISlipsStatService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Requests; using System; using System.Collections.Generic; diff --git a/AsbCloudApp/Services/ISubsystemService.cs b/AsbCloudApp/Services/ISubsystemService.cs index b82563f8..9a14b01e 100644 --- a/AsbCloudApp/Services/ISubsystemService.cs +++ b/AsbCloudApp/Services/ISubsystemService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.Subsystems; +using AsbCloudApp.Data.Subsystems; using AsbCloudApp.Requests; using System; using System.Collections.Generic; @@ -13,28 +13,28 @@ namespace AsbCloudApp.Services; /// public interface ISubsystemService { - /// - /// Статистика о наработке подсистем - /// - /// - /// - /// - Task> GetStatAsync(SubsystemRequest request, CancellationToken token); - - /// - /// Получение статистики по наработке подсистем по активным скважинам - /// - /// - /// - /// - Task> GetStatByActiveWells(IEnumerable wellIds, CancellationToken token); + /// + /// Статистика о наработке подсистем + /// + /// + /// + /// + Task> GetStatAsync(SubsystemRequest request, CancellationToken token); + + /// + /// Получение статистики по наработке подсистем по активным скважинам + /// + /// + /// + /// + Task> GetStatByActiveWells(IEnumerable wellIds, CancellationToken token); - /// - /// Получение статистики по бурильщику - /// - /// - /// - /// - Task> GetByWellsAsync(GetStatRequest request, - CancellationToken token); + /// + /// Получение статистики по бурильщику + /// + /// + /// + /// + Task> GetByWellsAsync(GetStatRequest request, + CancellationToken token); } \ No newline at end of file diff --git a/AsbCloudApp/Services/ITelemetryDataEditorService.cs b/AsbCloudApp/Services/ITelemetryDataEditorService.cs new file mode 100644 index 00000000..d9d5df24 --- /dev/null +++ b/AsbCloudApp/Services/ITelemetryDataEditorService.cs @@ -0,0 +1,19 @@ +using AsbCloudApp.Requests; +using System.Threading; +using System.Threading.Tasks; + +namespace AsbCloudApp.Services; + +/// +/// Сервис по работе с данными телеметрии +/// +public interface ITelemetryDataEditorService +{ + /// + /// Удаление части телеметрии по запросу + /// + /// + /// + /// + Task DeleteAsync(TelemetryPartDeleteRequest request, CancellationToken token); +} diff --git a/AsbCloudApp/Services/ITelemetryDataSaubService.cs b/AsbCloudApp/Services/ITelemetryDataSaubService.cs index e13240c0..3823788a 100644 --- a/AsbCloudApp/Services/ITelemetryDataSaubService.cs +++ b/AsbCloudApp/Services/ITelemetryDataSaubService.cs @@ -1,48 +1,47 @@ -using AsbCloudApp.Data.SAUB; +using AsbCloudApp.Data.SAUB; using System; using System.Collections.Generic; using System.IO; using System.Threading; using System.Threading.Tasks; -namespace AsbCloudApp.Services +namespace AsbCloudApp.Services; + +/// +/// Телеметрия САУБ +/// +public interface ITelemetryDataSaubService : ITelemetryDataService { /// - /// Телеметрия САУБ + /// Получение телеметрии для РТК статистики /// - public interface ITelemetryDataSaubService : ITelemetryDataService - { - /// - /// Получение телеметрии для РТК статистики - /// - /// - /// - /// - /// - /// - /// - /// - Task> Get(int idTelemetry, bool isBitOnBottom, DateTimeOffset geDate, DateTimeOffset leDate, int take, CancellationToken token); + /// + /// + /// + /// + /// + /// + /// + Task> Get(int idTelemetry, bool isBitOnBottom, DateTimeOffset geDate, DateTimeOffset leDate, int take, CancellationToken token); - /// - /// усредненная статистика по 1м за весь период - /// - /// МЕДЛЕННЫЙ ЗАПРОС - /// - /// - /// - /// - /// - Task> GetTelemetryDataStatAsync(int idTelemetry, CancellationToken token); + /// + /// усредненная статистика по 1м за весь период + /// + /// МЕДЛЕННЫЙ ЗАПРОС + /// + /// + /// + /// + /// + Task> GetTelemetryDataStatAsync(int idTelemetry, CancellationToken token); - /// - /// Получить упакованый csv файл - /// - /// - /// - /// - /// - /// - Task GetZippedCsv(int idWell, DateTime beginDate, DateTime endDate, CancellationToken token); - } + /// + /// Получить упакованный csv файл + /// + /// + /// + /// + /// + /// + Task GetZippedCsv(int idWell, DateTime beginDate, DateTime endDate, CancellationToken token); } \ No newline at end of file diff --git a/AsbCloudApp/Services/ITelemetryDataService.cs b/AsbCloudApp/Services/ITelemetryDataService.cs index 9cf4a805..f9e3c4d7 100644 --- a/AsbCloudApp/Services/ITelemetryDataService.cs +++ b/AsbCloudApp/Services/ITelemetryDataService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Requests; using System; using System.Collections.Generic; @@ -11,7 +11,7 @@ namespace AsbCloudApp.Services /// сервис данных тех. процесса /// /// - public interface ITelemetryDataService where TDto : ITelemetryData + public interface ITelemetryDataService : ITelemetryDataEditorService where TDto : ITelemetryData { /// diff --git a/AsbCloudApp/Services/ITelemetryService.cs b/AsbCloudApp/Services/ITelemetryService.cs index 576086e6..49b28388 100644 --- a/AsbCloudApp/Services/ITelemetryService.cs +++ b/AsbCloudApp/Services/ITelemetryService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Data.SAUB; using System; using System.Collections.Generic; @@ -70,6 +70,13 @@ namespace AsbCloudApp.Services /// /// Task MergeAsync(int from, int to, CancellationToken token); + + /// + /// Получить телеметрию по последней дате + /// + /// + /// + /// Task GetTelemetriesInfoByLastData(DateTimeOffset from, CancellationToken token); } } \ No newline at end of file diff --git a/AsbCloudApp/Services/ITelemetryUserService.cs b/AsbCloudApp/Services/ITelemetryUserService.cs index 2b9204ab..8635f666 100644 --- a/AsbCloudApp/Services/ITelemetryUserService.cs +++ b/AsbCloudApp/Services/ITelemetryUserService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.SAUB; +using AsbCloudApp.Data.SAUB; using System; using System.Collections.Generic; using System.Threading; diff --git a/AsbCloudApp/Services/ITimeZoneService.cs b/AsbCloudApp/Services/ITimeZoneService.cs index 55e18a6a..06993884 100644 --- a/AsbCloudApp/Services/ITimeZoneService.cs +++ b/AsbCloudApp/Services/ITimeZoneService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using System.Threading; using System.Threading.Tasks; diff --git a/AsbCloudApp/Services/IUserSettingsRepository.cs b/AsbCloudApp/Services/IUserSettingsRepository.cs index 3093eaa4..63605d4b 100644 --- a/AsbCloudApp/Services/IUserSettingsRepository.cs +++ b/AsbCloudApp/Services/IUserSettingsRepository.cs @@ -1,4 +1,4 @@ -using System.Threading; +using System.Threading; using System.Threading.Tasks; namespace AsbCloudApp.Services diff --git a/AsbCloudApp/Services/IWellCompositeOperationService.cs b/AsbCloudApp/Services/IWellCompositeOperationService.cs index f1af9865..98be1494 100644 --- a/AsbCloudApp/Services/IWellCompositeOperationService.cs +++ b/AsbCloudApp/Services/IWellCompositeOperationService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; diff --git a/AsbCloudApp/Services/IWellContactService.cs b/AsbCloudApp/Services/IWellContactService.cs index 2c4026e1..266da573 100644 --- a/AsbCloudApp/Services/IWellContactService.cs +++ b/AsbCloudApp/Services/IWellContactService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Data.User; using System.Collections.Generic; using System.Threading; @@ -60,5 +60,15 @@ namespace AsbCloudApp.Services /// /// Task DeleteAsync(int idWell, int id, CancellationToken token); + + /// + /// Скопировать контакты в другую скважину + /// + /// ключ скважины, откуда копировать контакты + /// ключ скважины, куда копировать контакты + /// + /// + /// + Task CopyAsync(int idWell, int idWellTarget, IEnumerable contactIds, CancellationToken token); } } diff --git a/AsbCloudApp/Services/IWellFinalDocumentsService.cs b/AsbCloudApp/Services/IWellFinalDocumentsService.cs index 8169b890..06daee1e 100644 --- a/AsbCloudApp/Services/IWellFinalDocumentsService.cs +++ b/AsbCloudApp/Services/IWellFinalDocumentsService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using System.Collections.Generic; using System.IO; using System.Threading; diff --git a/AsbCloudApp/Services/IWellService.cs b/AsbCloudApp/Services/IWellService.cs index 4279f587..2decf61b 100644 --- a/AsbCloudApp/Services/IWellService.cs +++ b/AsbCloudApp/Services/IWellService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Requests; using System; using System.Collections.Generic; diff --git a/AsbCloudApp/Services/IWitsRepository.cs b/AsbCloudApp/Services/IWitsRepository.cs index 71c7c3a2..e6b409c1 100644 --- a/AsbCloudApp/Services/IWitsRepository.cs +++ b/AsbCloudApp/Services/IWitsRepository.cs @@ -1,4 +1,5 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; +using AsbCloudApp.Requests; using System; using System.Collections.Generic; using System.Threading; @@ -9,7 +10,7 @@ namespace AsbCloudApp.Services /// /// The wits record repository. /// - public interface IWitsRecordRepository + public interface IWitsRecordRepository : ITelemetryDataEditorService where TDto : ITelemetryData { /// diff --git a/AsbCloudApp/Services/Notifications/INotificationTransportService.cs b/AsbCloudApp/Services/Notifications/INotificationTransportService.cs index a18f4246..aca408e8 100644 --- a/AsbCloudApp/Services/Notifications/INotificationTransportService.cs +++ b/AsbCloudApp/Services/Notifications/INotificationTransportService.cs @@ -10,26 +10,26 @@ namespace AsbCloudApp.Services.Notifications; /// public interface INotificationTransportService { - /// - /// Id типа доставки уведомления - /// - int IdTransportType { get; } - - /// - /// Отправка одного уведомления - /// - /// - /// - /// - Task SendAsync(NotificationDto notification, - CancellationToken cancellationToken); + /// + /// Id типа доставки уведомления + /// + int IdTransportType { get; } + + /// + /// Отправка одного уведомления + /// + /// + /// + /// + Task SendAsync(NotificationDto notification, + CancellationToken cancellationToken); - /// - /// Отправка нескольких уведомлений - /// - /// - /// - /// - Task SendRangeAsync(IEnumerable notifications, - CancellationToken cancellationToken); + /// + /// Отправка нескольких уведомлений + /// + /// + /// + /// + Task SendRangeAsync(IEnumerable notifications, + CancellationToken cancellationToken); } \ No newline at end of file diff --git a/AsbCloudApp/Services/Parsers/IParserFactory.cs b/AsbCloudApp/Services/Parsers/IParserFactory.cs index e0fc1aa2..02f5e64c 100644 --- a/AsbCloudApp/Services/Parsers/IParserFactory.cs +++ b/AsbCloudApp/Services/Parsers/IParserFactory.cs @@ -9,15 +9,15 @@ namespace AsbCloudApp.Services.Parsers; /// /// public interface IParserFactory - where TId : struct - where TDto : class, IId + where TId : struct + where TDto : class, IId { - /// - /// Создать парсер - /// - /// - /// - /// - IParserService CreateParser(TId id) - where TOptions : IParserOptionsRequest; + /// + /// Создать парсер + /// + /// + /// + /// + IParserService CreateParser(TId id) + where TOptions : IParserOptionsRequest; } \ No newline at end of file diff --git a/AsbCloudApp/Services/Parsers/IParserService.cs b/AsbCloudApp/Services/Parsers/IParserService.cs index 672c9e2b..57460ef5 100644 --- a/AsbCloudApp/Services/Parsers/IParserService.cs +++ b/AsbCloudApp/Services/Parsers/IParserService.cs @@ -10,22 +10,22 @@ namespace AsbCloudApp.Services.Parsers; /// /// public interface IParserService : IParserService - where TDto : class, IId - where TOptions : IParserOptionsRequest + where TDto : class, IId + where TOptions : IParserOptionsRequest { - /// - /// Распарсить файл - /// - /// - /// - /// - ParserResultDto Parse(Stream file, TOptions options); + /// + /// Распарсить файл + /// + /// + /// + /// + ParserResultDto Parse(Stream file, TOptions options); - /// - /// Получение шаблона для заполнения - /// - /// - Stream GetTemplateFile(); + /// + /// Получение шаблона для заполнения + /// + /// + Stream GetTemplateFile(); } /// diff --git a/AsbCloudApp/Services/ProcessMaps/WellDrilling/IProcessMapReportDrillingExportService.cs b/AsbCloudApp/Services/ProcessMaps/WellDrilling/IProcessMapReportDrillingExportService.cs index 8d09e153..d0d0fc32 100644 --- a/AsbCloudApp/Services/ProcessMaps/WellDrilling/IProcessMapReportDrillingExportService.cs +++ b/AsbCloudApp/Services/ProcessMaps/WellDrilling/IProcessMapReportDrillingExportService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Requests; +using AsbCloudApp.Requests; using System; using System.Collections.Generic; using System.IO; diff --git a/AsbCloudApp/Services/ProcessMaps/WellDrilling/IProcessMapReportDrillingService.cs b/AsbCloudApp/Services/ProcessMaps/WellDrilling/IProcessMapReportDrillingService.cs index 33aa8f44..2f484ba3 100644 --- a/AsbCloudApp/Services/ProcessMaps/WellDrilling/IProcessMapReportDrillingService.cs +++ b/AsbCloudApp/Services/ProcessMaps/WellDrilling/IProcessMapReportDrillingService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.ProcessMaps.Report; +using AsbCloudApp.Data.ProcessMaps.Report; using AsbCloudApp.Requests; using System.Collections.Generic; using System.Threading; diff --git a/AsbCloudDb/AsbCloudDb.csproj b/AsbCloudDb/AsbCloudDb.csproj index 91328b74..1c815525 100644 --- a/AsbCloudDb/AsbCloudDb.csproj +++ b/AsbCloudDb/AsbCloudDb.csproj @@ -6,11 +6,11 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive - + diff --git a/AsbCloudDb/EFExtensions.cs b/AsbCloudDb/EFExtensions.cs index 8829462a..cb839df9 100644 --- a/AsbCloudDb/EFExtensions.cs +++ b/AsbCloudDb/EFExtensions.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.ChangeTracking; using Microsoft.EntityFrameworkCore.Metadata; using System; @@ -45,7 +45,7 @@ namespace AsbCloudDb return builder; } - static Dictionary QueryFactories { get; set; } = new(); + static Dictionary QueryFactories { get; set; } = []; static QueryStringFactory GetQueryStringFactory(DbSet dbSet) where T : class @@ -152,21 +152,21 @@ namespace AsbCloudDb public string TableName { get; } public IEnumerable Columns { get; } - public QueryStringFactory(DbSet dbset) + public QueryStringFactory(DbSet dbSet) { - var properties = dbset.EntityType.GetProperties(); - var pkColsNames = dbset.EntityType.FindPrimaryKey()?.Properties.Select(p => p.GetColumnBaseName()); + var properties = dbSet.EntityType.GetProperties(); + var pkColsNames = dbSet.EntityType.FindPrimaryKey()?.Properties.Select(p => p.GetColumnName()); pk = pkColsNames is null ? string.Empty : $"({string.Join(", ", pkColsNames)})"; - TableName = dbset.EntityType.GetTableName()!; + TableName = dbSet.EntityType.GetTableName()!; getters = properties .Where(p => !p.IsShadowProperty()) .Select(p => p.GetGetter()).ToList(); - Columns = properties.Select(p => $"\"{p.GetColumnBaseName()}\""); - var colunmsString = $"({string.Join(", ", Columns)})"; + Columns = properties.Select(p => $"\"{p.GetColumnName()}\""); + var columnsString = $"({string.Join(", ", Columns)})"; - insertHeader = $"INSERT INTO {TableName} {colunmsString} VALUES "; + insertHeader = $"INSERT INTO {TableName} {columnsString} VALUES "; var excludedUpdateSet = string.Join(", ", Columns.Select(n => $"{n} = excluded.{n}")); conflictBody = $" ON CONFLICT {pk} DO UPDATE SET {excludedUpdateSet};"; } diff --git a/AsbCloudDb/EFExtensionsExceptionHandling.cs b/AsbCloudDb/EFExtensionsExceptionHandling.cs index aa1996b5..431e3b3c 100644 --- a/AsbCloudDb/EFExtensionsExceptionHandling.cs +++ b/AsbCloudDb/EFExtensionsExceptionHandling.cs @@ -1,4 +1,4 @@ -using AsbCloudDb.Model; +using AsbCloudDb.Model; using Microsoft.EntityFrameworkCore; using Npgsql; using System; diff --git a/AsbCloudDb/EFExtensionsInitialization.cs b/AsbCloudDb/EFExtensionsInitialization.cs index b2f41aff..56e21103 100644 --- a/AsbCloudDb/EFExtensionsInitialization.cs +++ b/AsbCloudDb/EFExtensionsInitialization.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using System; using System.Linq; using Microsoft.EntityFrameworkCore.Infrastructure; diff --git a/AsbCloudDb/EFExtensionsSortBy.cs b/AsbCloudDb/EFExtensionsSortBy.cs index 933281c7..797daaf2 100644 --- a/AsbCloudDb/EFExtensionsSortBy.cs +++ b/AsbCloudDb/EFExtensionsSortBy.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; diff --git a/AsbCloudDb/Migrations/20221013040242_Delete_colums_table_t_telemetry_data_spin.Designer.cs b/AsbCloudDb/Migrations/20221013040242_Delete_colums_table_t_telemetry_data_spin.Designer.cs index d42e6b13..25381927 100644 --- a/AsbCloudDb/Migrations/20221013040242_Delete_colums_table_t_telemetry_data_spin.Designer.cs +++ b/AsbCloudDb/Migrations/20221013040242_Delete_colums_table_t_telemetry_data_spin.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; diff --git a/AsbCloudDb/Migrations/20221013040242_Delete_colums_table_t_telemetry_data_spin.cs b/AsbCloudDb/Migrations/20221013040242_Delete_colums_table_t_telemetry_data_spin.cs index 0ebf1f57..da06c056 100644 --- a/AsbCloudDb/Migrations/20221013040242_Delete_colums_table_t_telemetry_data_spin.cs +++ b/AsbCloudDb/Migrations/20221013040242_Delete_colums_table_t_telemetry_data_spin.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20221109104346_AddTable_t_limiting_parameter.Designer.cs b/AsbCloudDb/Migrations/20221109104346_AddTable_t_limiting_parameter.Designer.cs index 7fda59c5..8d6d371b 100644 --- a/AsbCloudDb/Migrations/20221109104346_AddTable_t_limiting_parameter.Designer.cs +++ b/AsbCloudDb/Migrations/20221109104346_AddTable_t_limiting_parameter.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; diff --git a/AsbCloudDb/Migrations/20221109104346_AddTable_t_limiting_parameter.cs b/AsbCloudDb/Migrations/20221109104346_AddTable_t_limiting_parameter.cs index ac1134e8..168422b0 100644 --- a/AsbCloudDb/Migrations/20221109104346_AddTable_t_limiting_parameter.cs +++ b/AsbCloudDb/Migrations/20221109104346_AddTable_t_limiting_parameter.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; diff --git a/AsbCloudDb/Migrations/20221123052925_UpdateTable_t_limiting_parameter.Designer.cs b/AsbCloudDb/Migrations/20221123052925_UpdateTable_t_limiting_parameter.Designer.cs index 2d271e8c..7dd399a9 100644 --- a/AsbCloudDb/Migrations/20221123052925_UpdateTable_t_limiting_parameter.Designer.cs +++ b/AsbCloudDb/Migrations/20221123052925_UpdateTable_t_limiting_parameter.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; diff --git a/AsbCloudDb/Migrations/20221123052925_UpdateTable_t_limiting_parameter.cs b/AsbCloudDb/Migrations/20221123052925_UpdateTable_t_limiting_parameter.cs index c2a61c44..ce71bcc3 100644 --- a/AsbCloudDb/Migrations/20221123052925_UpdateTable_t_limiting_parameter.cs +++ b/AsbCloudDb/Migrations/20221123052925_UpdateTable_t_limiting_parameter.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20221202040010_RemoveTable_t_drill_params.Designer.cs b/AsbCloudDb/Migrations/20221202040010_RemoveTable_t_drill_params.Designer.cs index b4bf4f7b..48d8ec34 100644 --- a/AsbCloudDb/Migrations/20221202040010_RemoveTable_t_drill_params.Designer.cs +++ b/AsbCloudDb/Migrations/20221202040010_RemoveTable_t_drill_params.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; diff --git a/AsbCloudDb/Migrations/20221202040010_RemoveTable_t_drill_params.cs b/AsbCloudDb/Migrations/20221202040010_RemoveTable_t_drill_params.cs index 2c715ced..82569ead 100644 --- a/AsbCloudDb/Migrations/20221202040010_RemoveTable_t_drill_params.cs +++ b/AsbCloudDb/Migrations/20221202040010_RemoveTable_t_drill_params.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; #nullable disable diff --git a/AsbCloudDb/Migrations/20221202184302_WellOperationCategory_editDBmodel.Designer.cs b/AsbCloudDb/Migrations/20221202184302_WellOperationCategory_editDBmodel.Designer.cs index a007475e..ca13f50d 100644 --- a/AsbCloudDb/Migrations/20221202184302_WellOperationCategory_editDBmodel.Designer.cs +++ b/AsbCloudDb/Migrations/20221202184302_WellOperationCategory_editDBmodel.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; diff --git a/AsbCloudDb/Migrations/20221202184302_WellOperationCategory_editDBmodel.cs b/AsbCloudDb/Migrations/20221202184302_WellOperationCategory_editDBmodel.cs index 04072bd5..f4ae27d4 100644 --- a/AsbCloudDb/Migrations/20221202184302_WellOperationCategory_editDBmodel.cs +++ b/AsbCloudDb/Migrations/20221202184302_WellOperationCategory_editDBmodel.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20221202190521_WellOperationCategory_editDefaultData.Designer.cs b/AsbCloudDb/Migrations/20221202190521_WellOperationCategory_editDefaultData.Designer.cs index 3739e67c..b9819642 100644 --- a/AsbCloudDb/Migrations/20221202190521_WellOperationCategory_editDefaultData.Designer.cs +++ b/AsbCloudDb/Migrations/20221202190521_WellOperationCategory_editDefaultData.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; diff --git a/AsbCloudDb/Migrations/20221202190521_WellOperationCategory_editDefaultData.cs b/AsbCloudDb/Migrations/20221202190521_WellOperationCategory_editDefaultData.cs index 41146bc1..5096ae56 100644 --- a/AsbCloudDb/Migrations/20221202190521_WellOperationCategory_editDefaultData.cs +++ b/AsbCloudDb/Migrations/20221202190521_WellOperationCategory_editDefaultData.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20221202193616_WellOperation_Manual_updateIdCategory.Designer.cs b/AsbCloudDb/Migrations/20221202193616_WellOperation_Manual_updateIdCategory.Designer.cs index c3eded8f..2848cf4e 100644 --- a/AsbCloudDb/Migrations/20221202193616_WellOperation_Manual_updateIdCategory.Designer.cs +++ b/AsbCloudDb/Migrations/20221202193616_WellOperation_Manual_updateIdCategory.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; diff --git a/AsbCloudDb/Migrations/20221202193616_WellOperation_Manual_updateIdCategory.cs b/AsbCloudDb/Migrations/20221202193616_WellOperation_Manual_updateIdCategory.cs index 4cde82fa..32ef435d 100644 --- a/AsbCloudDb/Migrations/20221202193616_WellOperation_Manual_updateIdCategory.cs +++ b/AsbCloudDb/Migrations/20221202193616_WellOperation_Manual_updateIdCategory.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20221202195803_delete_old_WellOperationCategory.Designer.cs b/AsbCloudDb/Migrations/20221202195803_delete_old_WellOperationCategory.Designer.cs index fa9f7959..1ea59044 100644 --- a/AsbCloudDb/Migrations/20221202195803_delete_old_WellOperationCategory.Designer.cs +++ b/AsbCloudDb/Migrations/20221202195803_delete_old_WellOperationCategory.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; diff --git a/AsbCloudDb/Migrations/20221202195803_delete_old_WellOperationCategory.cs b/AsbCloudDb/Migrations/20221202195803_delete_old_WellOperationCategory.cs index 2d0f5b65..ed344951 100644 --- a/AsbCloudDb/Migrations/20221202195803_delete_old_WellOperationCategory.cs +++ b/AsbCloudDb/Migrations/20221202195803_delete_old_WellOperationCategory.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20221205063810_DeleteTable_t_drill_flow_chart.Designer.cs b/AsbCloudDb/Migrations/20221205063810_DeleteTable_t_drill_flow_chart.Designer.cs index 53ae6e0b..723fd803 100644 --- a/AsbCloudDb/Migrations/20221205063810_DeleteTable_t_drill_flow_chart.Designer.cs +++ b/AsbCloudDb/Migrations/20221205063810_DeleteTable_t_drill_flow_chart.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; diff --git a/AsbCloudDb/Migrations/20221205063810_DeleteTable_t_drill_flow_chart.cs b/AsbCloudDb/Migrations/20221205063810_DeleteTable_t_drill_flow_chart.cs index 0e8be4a8..16bb1dd2 100644 --- a/AsbCloudDb/Migrations/20221205063810_DeleteTable_t_drill_flow_chart.cs +++ b/AsbCloudDb/Migrations/20221205063810_DeleteTable_t_drill_flow_chart.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; diff --git a/AsbCloudDb/Migrations/20221205064341_AddTable_t_process_map.Designer.cs b/AsbCloudDb/Migrations/20221205064341_AddTable_t_process_map.Designer.cs index 38093865..c7309b82 100644 --- a/AsbCloudDb/Migrations/20221205064341_AddTable_t_process_map.Designer.cs +++ b/AsbCloudDb/Migrations/20221205064341_AddTable_t_process_map.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -1857,7 +1857,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20221205064341_AddTable_t_process_map.cs b/AsbCloudDb/Migrations/20221205064341_AddTable_t_process_map.cs index 32f173c6..440fd299 100644 --- a/AsbCloudDb/Migrations/20221205064341_AddTable_t_process_map.cs +++ b/AsbCloudDb/Migrations/20221205064341_AddTable_t_process_map.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; @@ -37,7 +37,7 @@ namespace AsbCloudDb.Migrations { table.PrimaryKey("PK_t_process_map", x => x.id); }, - comment: "Операции по скважине – РТК"); + comment: "Операции по скважине - РТК"); } protected override void Down(MigrationBuilder migrationBuilder) diff --git a/AsbCloudDb/Migrations/20221206053310_UpdateTable_t_process_map.Designer.cs b/AsbCloudDb/Migrations/20221206053310_UpdateTable_t_process_map.Designer.cs index 31ada5f8..7ad2dd3d 100644 --- a/AsbCloudDb/Migrations/20221206053310_UpdateTable_t_process_map.Designer.cs +++ b/AsbCloudDb/Migrations/20221206053310_UpdateTable_t_process_map.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -1861,7 +1861,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20221206053310_UpdateTable_t_process_map.cs b/AsbCloudDb/Migrations/20221206053310_UpdateTable_t_process_map.cs index 4da3fa7e..d6c4008f 100644 --- a/AsbCloudDb/Migrations/20221206053310_UpdateTable_t_process_map.cs +++ b/AsbCloudDb/Migrations/20221206053310_UpdateTable_t_process_map.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20221206091023_UpdateTable_t_process_map_add_user_id.Designer.cs b/AsbCloudDb/Migrations/20221206091023_UpdateTable_t_process_map_add_user_id.Designer.cs index f041f30a..437a196b 100644 --- a/AsbCloudDb/Migrations/20221206091023_UpdateTable_t_process_map_add_user_id.Designer.cs +++ b/AsbCloudDb/Migrations/20221206091023_UpdateTable_t_process_map_add_user_id.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -1868,7 +1868,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20221206091023_UpdateTable_t_process_map_add_user_id.cs b/AsbCloudDb/Migrations/20221206091023_UpdateTable_t_process_map_add_user_id.cs index 16e3a5c7..be41943d 100644 --- a/AsbCloudDb/Migrations/20221206091023_UpdateTable_t_process_map_add_user_id.cs +++ b/AsbCloudDb/Migrations/20221206091023_UpdateTable_t_process_map_add_user_id.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20221207034419_UpdateTable_t_process_map_delete_fk.Designer.cs b/AsbCloudDb/Migrations/20221207034419_UpdateTable_t_process_map_delete_fk.Designer.cs index 96f1cb98..d2f0f5c9 100644 --- a/AsbCloudDb/Migrations/20221207034419_UpdateTable_t_process_map_delete_fk.Designer.cs +++ b/AsbCloudDb/Migrations/20221207034419_UpdateTable_t_process_map_delete_fk.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -1866,7 +1866,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20221207034419_UpdateTable_t_process_map_delete_fk.cs b/AsbCloudDb/Migrations/20221207034419_UpdateTable_t_process_map_delete_fk.cs index 37c3525d..0f982b7c 100644 --- a/AsbCloudDb/Migrations/20221207034419_UpdateTable_t_process_map_delete_fk.cs +++ b/AsbCloudDb/Migrations/20221207034419_UpdateTable_t_process_map_delete_fk.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20221208095511_WellOperations_delete_categories.Designer.cs b/AsbCloudDb/Migrations/20221208095511_WellOperations_delete_categories.Designer.cs index 9d55264e..f0e177f6 100644 --- a/AsbCloudDb/Migrations/20221208095511_WellOperations_delete_categories.Designer.cs +++ b/AsbCloudDb/Migrations/20221208095511_WellOperations_delete_categories.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; diff --git a/AsbCloudDb/Migrations/20221208095511_WellOperations_delete_categories.cs b/AsbCloudDb/Migrations/20221208095511_WellOperations_delete_categories.cs index 2fb082bb..a6562bd8 100644 --- a/AsbCloudDb/Migrations/20221208095511_WellOperations_delete_categories.cs +++ b/AsbCloudDb/Migrations/20221208095511_WellOperations_delete_categories.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20221208101110_WellOperations_unite_categiries.Designer.cs b/AsbCloudDb/Migrations/20221208101110_WellOperations_unite_categiries.Designer.cs index 33d6c0d5..a11c0772 100644 --- a/AsbCloudDb/Migrations/20221208101110_WellOperations_unite_categiries.Designer.cs +++ b/AsbCloudDb/Migrations/20221208101110_WellOperations_unite_categiries.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; diff --git a/AsbCloudDb/Migrations/20221208101110_WellOperations_unite_categiries.cs b/AsbCloudDb/Migrations/20221208101110_WellOperations_unite_categiries.cs index 209eb14f..294d9a30 100644 --- a/AsbCloudDb/Migrations/20221208101110_WellOperations_unite_categiries.cs +++ b/AsbCloudDb/Migrations/20221208101110_WellOperations_unite_categiries.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20221208105512_WellOperations_delete_categiries.Designer.cs b/AsbCloudDb/Migrations/20221208105512_WellOperations_delete_categiries.Designer.cs index d2bfb59f..33ff6442 100644 --- a/AsbCloudDb/Migrations/20221208105512_WellOperations_delete_categiries.Designer.cs +++ b/AsbCloudDb/Migrations/20221208105512_WellOperations_delete_categiries.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; diff --git a/AsbCloudDb/Migrations/20221208105512_WellOperations_delete_categiries.cs b/AsbCloudDb/Migrations/20221208105512_WellOperations_delete_categiries.cs index 63b19071..9df9bcb0 100644 --- a/AsbCloudDb/Migrations/20221208105512_WellOperations_delete_categiries.cs +++ b/AsbCloudDb/Migrations/20221208105512_WellOperations_delete_categiries.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20221208115223_Truncate_detected_operations.Designer.cs b/AsbCloudDb/Migrations/20221208115223_Truncate_detected_operations.Designer.cs index 335be14c..d30a850c 100644 --- a/AsbCloudDb/Migrations/20221208115223_Truncate_detected_operations.Designer.cs +++ b/AsbCloudDb/Migrations/20221208115223_Truncate_detected_operations.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; diff --git a/AsbCloudDb/Migrations/20221208115223_Truncate_detected_operations.cs b/AsbCloudDb/Migrations/20221208115223_Truncate_detected_operations.cs index b04e912b..42d8e652 100644 --- a/AsbCloudDb/Migrations/20221208115223_Truncate_detected_operations.cs +++ b/AsbCloudDb/Migrations/20221208115223_Truncate_detected_operations.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20221208122327_Add_lost_WellOperationCategory.Designer.cs b/AsbCloudDb/Migrations/20221208122327_Add_lost_WellOperationCategory.Designer.cs index eb6f6839..4ac0874c 100644 --- a/AsbCloudDb/Migrations/20221208122327_Add_lost_WellOperationCategory.Designer.cs +++ b/AsbCloudDb/Migrations/20221208122327_Add_lost_WellOperationCategory.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; diff --git a/AsbCloudDb/Migrations/20221208122327_Add_lost_WellOperationCategory.cs b/AsbCloudDb/Migrations/20221208122327_Add_lost_WellOperationCategory.cs index 5378b392..93a2ea15 100644 --- a/AsbCloudDb/Migrations/20221208122327_Add_lost_WellOperationCategory.cs +++ b/AsbCloudDb/Migrations/20221208122327_Add_lost_WellOperationCategory.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20221208142130_WellOperationCategory_ids_ordering.Designer.cs b/AsbCloudDb/Migrations/20221208142130_WellOperationCategory_ids_ordering.Designer.cs index aa614e91..2e8ba476 100644 --- a/AsbCloudDb/Migrations/20221208142130_WellOperationCategory_ids_ordering.Designer.cs +++ b/AsbCloudDb/Migrations/20221208142130_WellOperationCategory_ids_ordering.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; diff --git a/AsbCloudDb/Migrations/20221208142130_WellOperationCategory_ids_ordering.cs b/AsbCloudDb/Migrations/20221208142130_WellOperationCategory_ids_ordering.cs index de918bc7..e7e55b4c 100644 --- a/AsbCloudDb/Migrations/20221208142130_WellOperationCategory_ids_ordering.cs +++ b/AsbCloudDb/Migrations/20221208142130_WellOperationCategory_ids_ordering.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20221209133046_Make_wellOperationCategory_name_notNull.Designer.cs b/AsbCloudDb/Migrations/20221209133046_Make_wellOperationCategory_name_notNull.Designer.cs index 71793eb1..3c2e2878 100644 --- a/AsbCloudDb/Migrations/20221209133046_Make_wellOperationCategory_name_notNull.Designer.cs +++ b/AsbCloudDb/Migrations/20221209133046_Make_wellOperationCategory_name_notNull.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; diff --git a/AsbCloudDb/Migrations/20221209133046_Make_wellOperationCategory_name_notNull.cs b/AsbCloudDb/Migrations/20221209133046_Make_wellOperationCategory_name_notNull.cs index a7d80927..049497ef 100644 --- a/AsbCloudDb/Migrations/20221209133046_Make_wellOperationCategory_name_notNull.cs +++ b/AsbCloudDb/Migrations/20221209133046_Make_wellOperationCategory_name_notNull.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20221209215622_Add_newSection_t_well_section_type.Designer.cs b/AsbCloudDb/Migrations/20221209215622_Add_newSection_t_well_section_type.Designer.cs index 8e51d456..b57f3c92 100644 --- a/AsbCloudDb/Migrations/20221209215622_Add_newSection_t_well_section_type.Designer.cs +++ b/AsbCloudDb/Migrations/20221209215622_Add_newSection_t_well_section_type.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; diff --git a/AsbCloudDb/Migrations/20221209215622_Add_newSection_t_well_section_type.cs b/AsbCloudDb/Migrations/20221209215622_Add_newSection_t_well_section_type.cs index 3b0504f1..7df4da5c 100644 --- a/AsbCloudDb/Migrations/20221209215622_Add_newSection_t_well_section_type.cs +++ b/AsbCloudDb/Migrations/20221209215622_Add_newSection_t_well_section_type.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20221222094423_AddTable_PlannedTrajectory.Designer.cs b/AsbCloudDb/Migrations/20221222094423_AddTable_PlannedTrajectory.Designer.cs index 803ba90c..90542cb8 100644 --- a/AsbCloudDb/Migrations/20221222094423_AddTable_PlannedTrajectory.Designer.cs +++ b/AsbCloudDb/Migrations/20221222094423_AddTable_PlannedTrajectory.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -1976,7 +1976,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20221222094423_AddTable_PlannedTrajectory.cs b/AsbCloudDb/Migrations/20221222094423_AddTable_PlannedTrajectory.cs index 08140e60..578ba899 100644 --- a/AsbCloudDb/Migrations/20221222094423_AddTable_PlannedTrajectory.cs +++ b/AsbCloudDb/Migrations/20221222094423_AddTable_PlannedTrajectory.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; diff --git a/AsbCloudDb/Migrations/20221226164803_editTable_PlannedTrajectory.Designer.cs b/AsbCloudDb/Migrations/20221226164803_editTable_PlannedTrajectory.Designer.cs index 9349fd24..e3912f6b 100644 --- a/AsbCloudDb/Migrations/20221226164803_editTable_PlannedTrajectory.Designer.cs +++ b/AsbCloudDb/Migrations/20221226164803_editTable_PlannedTrajectory.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -1976,7 +1976,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20221226164803_editTable_PlannedTrajectory.cs b/AsbCloudDb/Migrations/20221226164803_editTable_PlannedTrajectory.cs index 5fa4654c..d2a04981 100644 --- a/AsbCloudDb/Migrations/20221226164803_editTable_PlannedTrajectory.cs +++ b/AsbCloudDb/Migrations/20221226164803_editTable_PlannedTrajectory.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20230110035135_AddTable_t_telemetry_wireline_run_out.Designer.cs b/AsbCloudDb/Migrations/20230110035135_AddTable_t_telemetry_wireline_run_out.Designer.cs index 93deff6e..74a446d8 100644 --- a/AsbCloudDb/Migrations/20230110035135_AddTable_t_telemetry_wireline_run_out.Designer.cs +++ b/AsbCloudDb/Migrations/20230110035135_AddTable_t_telemetry_wireline_run_out.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -1866,7 +1866,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20230110035135_AddTable_t_telemetry_wireline_run_out.cs b/AsbCloudDb/Migrations/20230110035135_AddTable_t_telemetry_wireline_run_out.cs index 837cf2b3..0346fa3e 100644 --- a/AsbCloudDb/Migrations/20230110035135_AddTable_t_telemetry_wireline_run_out.cs +++ b/AsbCloudDb/Migrations/20230110035135_AddTable_t_telemetry_wireline_run_out.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; diff --git a/AsbCloudDb/Migrations/20230110043915_UpdateTable_t_telemetry_wireline_run_out.Designer.cs b/AsbCloudDb/Migrations/20230110043915_UpdateTable_t_telemetry_wireline_run_out.Designer.cs index 39d3369c..b57e67c6 100644 --- a/AsbCloudDb/Migrations/20230110043915_UpdateTable_t_telemetry_wireline_run_out.Designer.cs +++ b/AsbCloudDb/Migrations/20230110043915_UpdateTable_t_telemetry_wireline_run_out.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -1866,7 +1866,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20230110043915_UpdateTable_t_telemetry_wireline_run_out.cs b/AsbCloudDb/Migrations/20230110043915_UpdateTable_t_telemetry_wireline_run_out.cs index 299492d2..ac3824b5 100644 --- a/AsbCloudDb/Migrations/20230110043915_UpdateTable_t_telemetry_wireline_run_out.cs +++ b/AsbCloudDb/Migrations/20230110043915_UpdateTable_t_telemetry_wireline_run_out.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20230111043034_UpdateTable_t_telemetry_wireline_run_out_comment.Designer.cs b/AsbCloudDb/Migrations/20230111043034_UpdateTable_t_telemetry_wireline_run_out_comment.Designer.cs index 3d98559f..001474f4 100644 --- a/AsbCloudDb/Migrations/20230111043034_UpdateTable_t_telemetry_wireline_run_out_comment.Designer.cs +++ b/AsbCloudDb/Migrations/20230111043034_UpdateTable_t_telemetry_wireline_run_out_comment.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -1866,7 +1866,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20230111043034_UpdateTable_t_telemetry_wireline_run_out_comment.cs b/AsbCloudDb/Migrations/20230111043034_UpdateTable_t_telemetry_wireline_run_out_comment.cs index b1551031..a57d5120 100644 --- a/AsbCloudDb/Migrations/20230111043034_UpdateTable_t_telemetry_wireline_run_out_comment.cs +++ b/AsbCloudDb/Migrations/20230111043034_UpdateTable_t_telemetry_wireline_run_out_comment.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; diff --git a/AsbCloudDb/Migrations/20230118054304_AddPermissions_wireline_plannedTrajectory.Designer.cs b/AsbCloudDb/Migrations/20230118054304_AddPermissions_wireline_plannedTrajectory.Designer.cs index d8a36330..365c002a 100644 --- a/AsbCloudDb/Migrations/20230118054304_AddPermissions_wireline_plannedTrajectory.Designer.cs +++ b/AsbCloudDb/Migrations/20230118054304_AddPermissions_wireline_plannedTrajectory.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2000,7 +2000,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20230118054304_AddPermissions_wireline_plannedTrajectory.cs b/AsbCloudDb/Migrations/20230118054304_AddPermissions_wireline_plannedTrajectory.cs index 63a6db16..7d77c465 100644 --- a/AsbCloudDb/Migrations/20230118054304_AddPermissions_wireline_plannedTrajectory.cs +++ b/AsbCloudDb/Migrations/20230118054304_AddPermissions_wireline_plannedTrajectory.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20230124100243_Fix_PlannedTrajectory_permissions.Designer.cs b/AsbCloudDb/Migrations/20230124100243_Fix_PlannedTrajectory_permissions.Designer.cs index 25ef346e..0358e807 100644 --- a/AsbCloudDb/Migrations/20230124100243_Fix_PlannedTrajectory_permissions.Designer.cs +++ b/AsbCloudDb/Migrations/20230124100243_Fix_PlannedTrajectory_permissions.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2000,7 +2000,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20230124100243_Fix_PlannedTrajectory_permissions.cs b/AsbCloudDb/Migrations/20230124100243_Fix_PlannedTrajectory_permissions.cs index 94a7bbc8..dd914e7f 100644 --- a/AsbCloudDb/Migrations/20230124100243_Fix_PlannedTrajectory_permissions.cs +++ b/AsbCloudDb/Migrations/20230124100243_Fix_PlannedTrajectory_permissions.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20230203040530_Add_permissions_for_ProcessMap.Designer.cs b/AsbCloudDb/Migrations/20230203040530_Add_permissions_for_ProcessMap.Designer.cs index 8ea5dc81..83a6ef79 100644 --- a/AsbCloudDb/Migrations/20230203040530_Add_permissions_for_ProcessMap.Designer.cs +++ b/AsbCloudDb/Migrations/20230203040530_Add_permissions_for_ProcessMap.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2018,7 +2018,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20230203040530_Add_permissions_for_ProcessMap.cs b/AsbCloudDb/Migrations/20230203040530_Add_permissions_for_ProcessMap.cs index 913fb232..2089c859 100644 --- a/AsbCloudDb/Migrations/20230203040530_Add_permissions_for_ProcessMap.cs +++ b/AsbCloudDb/Migrations/20230203040530_Add_permissions_for_ProcessMap.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20230213055821_Add_FK_PlanOperation_to_WellOperation.Designer.cs b/AsbCloudDb/Migrations/20230213055821_Add_FK_PlanOperation_to_WellOperation.Designer.cs index 6614ac94..1a962bac 100644 --- a/AsbCloudDb/Migrations/20230213055821_Add_FK_PlanOperation_to_WellOperation.Designer.cs +++ b/AsbCloudDb/Migrations/20230213055821_Add_FK_PlanOperation_to_WellOperation.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2018,7 +2018,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20230213055821_Add_FK_PlanOperation_to_WellOperation.cs b/AsbCloudDb/Migrations/20230213055821_Add_FK_PlanOperation_to_WellOperation.cs index a234302c..7ac4b12f 100644 --- a/AsbCloudDb/Migrations/20230213055821_Add_FK_PlanOperation_to_WellOperation.cs +++ b/AsbCloudDb/Migrations/20230213055821_Add_FK_PlanOperation_to_WellOperation.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20230217071110_Add_IX_FK_PlanOperation_to_WellOperation.Designer.cs b/AsbCloudDb/Migrations/20230217071110_Add_IX_FK_PlanOperation_to_WellOperation.Designer.cs index 33f0ba24..e028970a 100644 --- a/AsbCloudDb/Migrations/20230217071110_Add_IX_FK_PlanOperation_to_WellOperation.Designer.cs +++ b/AsbCloudDb/Migrations/20230217071110_Add_IX_FK_PlanOperation_to_WellOperation.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2018,7 +2018,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20230217071110_Add_IX_FK_PlanOperation_to_WellOperation.cs b/AsbCloudDb/Migrations/20230217071110_Add_IX_FK_PlanOperation_to_WellOperation.cs index 574084a2..abb4f9f2 100644 --- a/AsbCloudDb/Migrations/20230217071110_Add_IX_FK_PlanOperation_to_WellOperation.cs +++ b/AsbCloudDb/Migrations/20230217071110_Add_IX_FK_PlanOperation_to_WellOperation.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20230217093242_Enable_nullable_on_deposit_cluster_well_company_wellOperation.Designer.cs b/AsbCloudDb/Migrations/20230217093242_Enable_nullable_on_deposit_cluster_well_company_wellOperation.Designer.cs index de6976a9..8b4dedeb 100644 --- a/AsbCloudDb/Migrations/20230217093242_Enable_nullable_on_deposit_cluster_well_company_wellOperation.Designer.cs +++ b/AsbCloudDb/Migrations/20230217093242_Enable_nullable_on_deposit_cluster_well_company_wellOperation.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2024,7 +2024,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20230217093242_Enable_nullable_on_deposit_cluster_well_company_wellOperation.cs b/AsbCloudDb/Migrations/20230217093242_Enable_nullable_on_deposit_cluster_well_company_wellOperation.cs index 009ccf87..e314682b 100644 --- a/AsbCloudDb/Migrations/20230217093242_Enable_nullable_on_deposit_cluster_well_company_wellOperation.cs +++ b/AsbCloudDb/Migrations/20230217093242_Enable_nullable_on_deposit_cluster_well_company_wellOperation.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20230217115524_Enable_nullable_on_DetectedOperation_DrillingProgramPart_FileCategory_FileInfo_FileMark.Designer.cs b/AsbCloudDb/Migrations/20230217115524_Enable_nullable_on_DetectedOperation_DrillingProgramPart_FileCategory_FileInfo_FileMark.Designer.cs index 05dfaf6b..998e4404 100644 --- a/AsbCloudDb/Migrations/20230217115524_Enable_nullable_on_DetectedOperation_DrillingProgramPart_FileCategory_FileInfo_FileMark.Designer.cs +++ b/AsbCloudDb/Migrations/20230217115524_Enable_nullable_on_DetectedOperation_DrillingProgramPart_FileCategory_FileInfo_FileMark.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2026,7 +2026,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20230217115524_Enable_nullable_on_DetectedOperation_DrillingProgramPart_FileCategory_FileInfo_FileMark.cs b/AsbCloudDb/Migrations/20230217115524_Enable_nullable_on_DetectedOperation_DrillingProgramPart_FileCategory_FileInfo_FileMark.cs index cec7d802..d270bb10 100644 --- a/AsbCloudDb/Migrations/20230217115524_Enable_nullable_on_DetectedOperation_DrillingProgramPart_FileCategory_FileInfo_FileMark.cs +++ b/AsbCloudDb/Migrations/20230217115524_Enable_nullable_on_DetectedOperation_DrillingProgramPart_FileCategory_FileInfo_FileMark.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20230217124751_Enable_nullable_on_Permission_Measure.Designer.cs b/AsbCloudDb/Migrations/20230217124751_Enable_nullable_on_Permission_Measure.Designer.cs index c3fef747..48ea1e4a 100644 --- a/AsbCloudDb/Migrations/20230217124751_Enable_nullable_on_Permission_Measure.Designer.cs +++ b/AsbCloudDb/Migrations/20230217124751_Enable_nullable_on_Permission_Measure.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2029,7 +2029,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20230217124751_Enable_nullable_on_Permission_Measure.cs b/AsbCloudDb/Migrations/20230217124751_Enable_nullable_on_Permission_Measure.cs index c892820c..dc45943e 100644 --- a/AsbCloudDb/Migrations/20230217124751_Enable_nullable_on_Permission_Measure.cs +++ b/AsbCloudDb/Migrations/20230217124751_Enable_nullable_on_Permission_Measure.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20230220062152_Enable_nullable_on_user_userRole.Designer.cs b/AsbCloudDb/Migrations/20230220062152_Enable_nullable_on_user_userRole.Designer.cs index 6f7f43da..ea72ab03 100644 --- a/AsbCloudDb/Migrations/20230220062152_Enable_nullable_on_user_userRole.Designer.cs +++ b/AsbCloudDb/Migrations/20230220062152_Enable_nullable_on_user_userRole.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2029,7 +2029,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20230220062152_Enable_nullable_on_user_userRole.cs b/AsbCloudDb/Migrations/20230220062152_Enable_nullable_on_user_userRole.cs index 56a7b0f5..c9ab47e1 100644 --- a/AsbCloudDb/Migrations/20230220062152_Enable_nullable_on_user_userRole.cs +++ b/AsbCloudDb/Migrations/20230220062152_Enable_nullable_on_user_userRole.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20230220091227_Enable_nullable_on_setpoints_finalDocs.Designer.cs b/AsbCloudDb/Migrations/20230220091227_Enable_nullable_on_setpoints_finalDocs.Designer.cs index a2c05772..6e21b3d3 100644 --- a/AsbCloudDb/Migrations/20230220091227_Enable_nullable_on_setpoints_finalDocs.Designer.cs +++ b/AsbCloudDb/Migrations/20230220091227_Enable_nullable_on_setpoints_finalDocs.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2029,7 +2029,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20230220091227_Enable_nullable_on_setpoints_finalDocs.cs b/AsbCloudDb/Migrations/20230220091227_Enable_nullable_on_setpoints_finalDocs.cs index 24c36b33..2e5fbfe4 100644 --- a/AsbCloudDb/Migrations/20230220091227_Enable_nullable_on_setpoints_finalDocs.cs +++ b/AsbCloudDb/Migrations/20230220091227_Enable_nullable_on_setpoints_finalDocs.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20230220095933_Enable_nullable_on_telemetry_.Designer.cs b/AsbCloudDb/Migrations/20230220095933_Enable_nullable_on_telemetry_.Designer.cs index 5854f613..90cad4e5 100644 --- a/AsbCloudDb/Migrations/20230220095933_Enable_nullable_on_telemetry_.Designer.cs +++ b/AsbCloudDb/Migrations/20230220095933_Enable_nullable_on_telemetry_.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2029,7 +2029,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20230220095933_Enable_nullable_on_telemetry_.cs b/AsbCloudDb/Migrations/20230220095933_Enable_nullable_on_telemetry_.cs index 7a2c4874..ddc2a458 100644 --- a/AsbCloudDb/Migrations/20230220095933_Enable_nullable_on_telemetry_.cs +++ b/AsbCloudDb/Migrations/20230220095933_Enable_nullable_on_telemetry_.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20230220100934_Enable_nullable_on_daylyReport.Designer.cs b/AsbCloudDb/Migrations/20230220100934_Enable_nullable_on_daylyReport.Designer.cs index a8e5a0a5..f054b778 100644 --- a/AsbCloudDb/Migrations/20230220100934_Enable_nullable_on_daylyReport.Designer.cs +++ b/AsbCloudDb/Migrations/20230220100934_Enable_nullable_on_daylyReport.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2030,7 +2030,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20230220100934_Enable_nullable_on_daylyReport.cs b/AsbCloudDb/Migrations/20230220100934_Enable_nullable_on_daylyReport.cs index 521b9dd7..be0a03aa 100644 --- a/AsbCloudDb/Migrations/20230220100934_Enable_nullable_on_daylyReport.cs +++ b/AsbCloudDb/Migrations/20230220100934_Enable_nullable_on_daylyReport.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20230301063610_add_new_OperationCategory.Designer.cs b/AsbCloudDb/Migrations/20230301063610_add_new_OperationCategory.Designer.cs index 1b157a9a..a1fdc28c 100644 --- a/AsbCloudDb/Migrations/20230301063610_add_new_OperationCategory.Designer.cs +++ b/AsbCloudDb/Migrations/20230301063610_add_new_OperationCategory.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2030,7 +2030,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20230301063610_add_new_OperationCategory.cs b/AsbCloudDb/Migrations/20230301063610_add_new_OperationCategory.cs index 4d07600c..de54f4d6 100644 --- a/AsbCloudDb/Migrations/20230301063610_add_new_OperationCategory.cs +++ b/AsbCloudDb/Migrations/20230301063610_add_new_OperationCategory.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20230301070621_rename_OperationCategory_Rotor_Slide.Designer.cs b/AsbCloudDb/Migrations/20230301070621_rename_OperationCategory_Rotor_Slide.Designer.cs index 1cd98faf..eedc4484 100644 --- a/AsbCloudDb/Migrations/20230301070621_rename_OperationCategory_Rotor_Slide.Designer.cs +++ b/AsbCloudDb/Migrations/20230301070621_rename_OperationCategory_Rotor_Slide.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2030,7 +2030,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20230301070621_rename_OperationCategory_Rotor_Slide.cs b/AsbCloudDb/Migrations/20230301070621_rename_OperationCategory_Rotor_Slide.cs index df7941e6..dc9d0ccb 100644 --- a/AsbCloudDb/Migrations/20230301070621_rename_OperationCategory_Rotor_Slide.cs +++ b/AsbCloudDb/Migrations/20230301070621_rename_OperationCategory_Rotor_Slide.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20230306085943_UpdateTable_t_daily_report_UpdateType_startDate_toDateOnly.Designer.cs b/AsbCloudDb/Migrations/20230306085943_UpdateTable_t_daily_report_UpdateType_startDate_toDateOnly.Designer.cs index b073c342..32e51f5a 100644 --- a/AsbCloudDb/Migrations/20230306085943_UpdateTable_t_daily_report_UpdateType_startDate_toDateOnly.Designer.cs +++ b/AsbCloudDb/Migrations/20230306085943_UpdateTable_t_daily_report_UpdateType_startDate_toDateOnly.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2030,7 +2030,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20230306085943_UpdateTable_t_daily_report_UpdateType_startDate_toDateOnly.cs b/AsbCloudDb/Migrations/20230306085943_UpdateTable_t_daily_report_UpdateType_startDate_toDateOnly.cs index df7a0156..944ab2a2 100644 --- a/AsbCloudDb/Migrations/20230306085943_UpdateTable_t_daily_report_UpdateType_startDate_toDateOnly.cs +++ b/AsbCloudDb/Migrations/20230306085943_UpdateTable_t_daily_report_UpdateType_startDate_toDateOnly.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20230307100501_Add_new_permissions_for_root.Designer.cs b/AsbCloudDb/Migrations/20230307100501_Add_new_permissions_for_root.Designer.cs index 4a2bfd9a..55c571f9 100644 --- a/AsbCloudDb/Migrations/20230307100501_Add_new_permissions_for_root.Designer.cs +++ b/AsbCloudDb/Migrations/20230307100501_Add_new_permissions_for_root.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2030,7 +2030,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20230307100501_Add_new_permissions_for_root.cs b/AsbCloudDb/Migrations/20230307100501_Add_new_permissions_for_root.cs index 61db9ba7..b9536296 100644 --- a/AsbCloudDb/Migrations/20230307100501_Add_new_permissions_for_root.cs +++ b/AsbCloudDb/Migrations/20230307100501_Add_new_permissions_for_root.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20230321073247_edit_ProcessMap_add_LimitMax_and_delete_fact.Designer.cs b/AsbCloudDb/Migrations/20230321073247_edit_ProcessMap_add_LimitMax_and_delete_fact.Designer.cs index a181ad4d..872e1e2f 100644 --- a/AsbCloudDb/Migrations/20230321073247_edit_ProcessMap_add_LimitMax_and_delete_fact.Designer.cs +++ b/AsbCloudDb/Migrations/20230321073247_edit_ProcessMap_add_LimitMax_and_delete_fact.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2035,7 +2035,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20230321073247_edit_ProcessMap_add_LimitMax_and_delete_fact.cs b/AsbCloudDb/Migrations/20230321073247_edit_ProcessMap_add_LimitMax_and_delete_fact.cs index 267a5758..25180076 100644 --- a/AsbCloudDb/Migrations/20230321073247_edit_ProcessMap_add_LimitMax_and_delete_fact.cs +++ b/AsbCloudDb/Migrations/20230321073247_edit_ProcessMap_add_LimitMax_and_delete_fact.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20230321120948_Add_Usage_to_ProcessMap.Designer.cs b/AsbCloudDb/Migrations/20230321120948_Add_Usage_to_ProcessMap.Designer.cs index 2cd6c3f6..35db1a73 100644 --- a/AsbCloudDb/Migrations/20230321120948_Add_Usage_to_ProcessMap.Designer.cs +++ b/AsbCloudDb/Migrations/20230321120948_Add_Usage_to_ProcessMap.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2045,7 +2045,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20230321120948_Add_Usage_to_ProcessMap.cs b/AsbCloudDb/Migrations/20230321120948_Add_Usage_to_ProcessMap.cs index ba9c92e9..f0a020ee 100644 --- a/AsbCloudDb/Migrations/20230321120948_Add_Usage_to_ProcessMap.cs +++ b/AsbCloudDb/Migrations/20230321120948_Add_Usage_to_ProcessMap.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20230404045901_Add_UserEditor_To_WellOperation_Table.Designer.cs b/AsbCloudDb/Migrations/20230404045901_Add_UserEditor_To_WellOperation_Table.Designer.cs index 33afd7b9..231ee0b3 100644 --- a/AsbCloudDb/Migrations/20230404045901_Add_UserEditor_To_WellOperation_Table.Designer.cs +++ b/AsbCloudDb/Migrations/20230404045901_Add_UserEditor_To_WellOperation_Table.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2045,7 +2045,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20230404045901_Add_UserEditor_To_WellOperation_Table.cs b/AsbCloudDb/Migrations/20230404045901_Add_UserEditor_To_WellOperation_Table.cs index 09871f08..c91910cc 100644 --- a/AsbCloudDb/Migrations/20230404045901_Add_UserEditor_To_WellOperation_Table.cs +++ b/AsbCloudDb/Migrations/20230404045901_Add_UserEditor_To_WellOperation_Table.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20230414033303_UpdateTable_t_telemetry_data_saub.Designer.cs b/AsbCloudDb/Migrations/20230414033303_UpdateTable_t_telemetry_data_saub.Designer.cs index 2176db06..6578e6b8 100644 --- a/AsbCloudDb/Migrations/20230414033303_UpdateTable_t_telemetry_data_saub.Designer.cs +++ b/AsbCloudDb/Migrations/20230414033303_UpdateTable_t_telemetry_data_saub.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2045,7 +2045,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20230414033303_UpdateTable_t_telemetry_data_saub.cs b/AsbCloudDb/Migrations/20230414033303_UpdateTable_t_telemetry_data_saub.cs index 70563dcd..eb559809 100644 --- a/AsbCloudDb/Migrations/20230414033303_UpdateTable_t_telemetry_data_saub.cs +++ b/AsbCloudDb/Migrations/20230414033303_UpdateTable_t_telemetry_data_saub.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20230414072923_EditTable_t_telemetry_data_saub.Designer.cs b/AsbCloudDb/Migrations/20230414072923_EditTable_t_telemetry_data_saub.Designer.cs index 007b3763..97721dc8 100644 --- a/AsbCloudDb/Migrations/20230414072923_EditTable_t_telemetry_data_saub.Designer.cs +++ b/AsbCloudDb/Migrations/20230414072923_EditTable_t_telemetry_data_saub.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2045,7 +2045,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20230414072923_EditTable_t_telemetry_data_saub.cs b/AsbCloudDb/Migrations/20230414072923_EditTable_t_telemetry_data_saub.cs index c5e7dd19..136143d2 100644 --- a/AsbCloudDb/Migrations/20230414072923_EditTable_t_telemetry_data_saub.cs +++ b/AsbCloudDb/Migrations/20230414072923_EditTable_t_telemetry_data_saub.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20230414084427_EditCommentTable_t_telemetry_data_saub.Designer.cs b/AsbCloudDb/Migrations/20230414084427_EditCommentTable_t_telemetry_data_saub.Designer.cs index 5d42825a..83dc280e 100644 --- a/AsbCloudDb/Migrations/20230414084427_EditCommentTable_t_telemetry_data_saub.Designer.cs +++ b/AsbCloudDb/Migrations/20230414084427_EditCommentTable_t_telemetry_data_saub.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2045,7 +2045,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20230414084427_EditCommentTable_t_telemetry_data_saub.cs b/AsbCloudDb/Migrations/20230414084427_EditCommentTable_t_telemetry_data_saub.cs index 5b7a55a0..28fbe670 100644 --- a/AsbCloudDb/Migrations/20230414084427_EditCommentTable_t_telemetry_data_saub.cs +++ b/AsbCloudDb/Migrations/20230414084427_EditCommentTable_t_telemetry_data_saub.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20230418051912_AddTable_t_faq.Designer.cs b/AsbCloudDb/Migrations/20230418051912_AddTable_t_faq.Designer.cs index d49f3d0a..f01ca754 100644 --- a/AsbCloudDb/Migrations/20230418051912_AddTable_t_faq.Designer.cs +++ b/AsbCloudDb/Migrations/20230418051912_AddTable_t_faq.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2130,7 +2130,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20230418051912_AddTable_t_faq.cs b/AsbCloudDb/Migrations/20230418051912_AddTable_t_faq.cs index e1461c79..fe319c5b 100644 --- a/AsbCloudDb/Migrations/20230418051912_AddTable_t_faq.cs +++ b/AsbCloudDb/Migrations/20230418051912_AddTable_t_faq.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; diff --git a/AsbCloudDb/Migrations/20230418055848_Add_GTR.Designer.cs b/AsbCloudDb/Migrations/20230418055848_Add_GTR.Designer.cs index b8aea936..5fa4eacc 100644 --- a/AsbCloudDb/Migrations/20230418055848_Add_GTR.Designer.cs +++ b/AsbCloudDb/Migrations/20230418055848_Add_GTR.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2133,7 +2133,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20230418055848_Add_GTR.cs b/AsbCloudDb/Migrations/20230418055848_Add_GTR.cs index 0eafb5c3..c3e45517 100644 --- a/AsbCloudDb/Migrations/20230418055848_Add_GTR.cs +++ b/AsbCloudDb/Migrations/20230418055848_Add_GTR.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20230418072820_UpdateTable_t_faq_Nullable_IdAuthorAnswer.Designer.cs b/AsbCloudDb/Migrations/20230418072820_UpdateTable_t_faq_Nullable_IdAuthorAnswer.Designer.cs index f269201a..2f955185 100644 --- a/AsbCloudDb/Migrations/20230418072820_UpdateTable_t_faq_Nullable_IdAuthorAnswer.Designer.cs +++ b/AsbCloudDb/Migrations/20230418072820_UpdateTable_t_faq_Nullable_IdAuthorAnswer.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2130,7 +2130,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20230418072820_UpdateTable_t_faq_Nullable_IdAuthorAnswer.cs b/AsbCloudDb/Migrations/20230418072820_UpdateTable_t_faq_Nullable_IdAuthorAnswer.cs index 577f05ea..d0a3c73c 100644 --- a/AsbCloudDb/Migrations/20230418072820_UpdateTable_t_faq_Nullable_IdAuthorAnswer.cs +++ b/AsbCloudDb/Migrations/20230418072820_UpdateTable_t_faq_Nullable_IdAuthorAnswer.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20230418075021_UpdateTable_t_faq_Nullable_Answer.Designer.cs b/AsbCloudDb/Migrations/20230418075021_UpdateTable_t_faq_Nullable_Answer.Designer.cs index c2553a06..c8b34cbf 100644 --- a/AsbCloudDb/Migrations/20230418075021_UpdateTable_t_faq_Nullable_Answer.Designer.cs +++ b/AsbCloudDb/Migrations/20230418075021_UpdateTable_t_faq_Nullable_Answer.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2129,7 +2129,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20230418075021_UpdateTable_t_faq_Nullable_Answer.cs b/AsbCloudDb/Migrations/20230418075021_UpdateTable_t_faq_Nullable_Answer.cs index 11de732a..679297c3 100644 --- a/AsbCloudDb/Migrations/20230418075021_UpdateTable_t_faq_Nullable_Answer.cs +++ b/AsbCloudDb/Migrations/20230418075021_UpdateTable_t_faq_Nullable_Answer.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20230418103709_UpdateTable_t_faq_Field_IsFrequently_Rename.Designer.cs b/AsbCloudDb/Migrations/20230418103709_UpdateTable_t_faq_Field_IsFrequently_Rename.Designer.cs index 2b142dd2..5a5105da 100644 --- a/AsbCloudDb/Migrations/20230418103709_UpdateTable_t_faq_Field_IsFrequently_Rename.Designer.cs +++ b/AsbCloudDb/Migrations/20230418103709_UpdateTable_t_faq_Field_IsFrequently_Rename.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2129,7 +2129,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20230418103709_UpdateTable_t_faq_Field_IsFrequently_Rename.cs b/AsbCloudDb/Migrations/20230418103709_UpdateTable_t_faq_Field_IsFrequently_Rename.cs index 41e4f192..420b1548 100644 --- a/AsbCloudDb/Migrations/20230418103709_UpdateTable_t_faq_Field_IsFrequently_Rename.cs +++ b/AsbCloudDb/Migrations/20230418103709_UpdateTable_t_faq_Field_IsFrequently_Rename.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20230421071633_UpdateTable_t_faq_Id_Well_Remove.Designer.cs b/AsbCloudDb/Migrations/20230421071633_UpdateTable_t_faq_Id_Well_Remove.Designer.cs index 36005375..daee06c1 100644 --- a/AsbCloudDb/Migrations/20230421071633_UpdateTable_t_faq_Id_Well_Remove.Designer.cs +++ b/AsbCloudDb/Migrations/20230421071633_UpdateTable_t_faq_Id_Well_Remove.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2210,7 +2210,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20230421071633_UpdateTable_t_faq_Id_Well_Remove.cs b/AsbCloudDb/Migrations/20230421071633_UpdateTable_t_faq_Id_Well_Remove.cs index e2c9e48d..38388248 100644 --- a/AsbCloudDb/Migrations/20230421071633_UpdateTable_t_faq_Id_Well_Remove.cs +++ b/AsbCloudDb/Migrations/20230421071633_UpdateTable_t_faq_Id_Well_Remove.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20230504111955_Add_Permission_For_FaqStatistics.Designer.cs b/AsbCloudDb/Migrations/20230504111955_Add_Permission_For_FaqStatistics.Designer.cs index e76e31e7..788b6aad 100644 --- a/AsbCloudDb/Migrations/20230504111955_Add_Permission_For_FaqStatistics.Designer.cs +++ b/AsbCloudDb/Migrations/20230504111955_Add_Permission_For_FaqStatistics.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2228,7 +2228,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20230504111955_Add_Permission_For_FaqStatistics.cs b/AsbCloudDb/Migrations/20230504111955_Add_Permission_For_FaqStatistics.cs index e33f4948..c9447c1f 100644 --- a/AsbCloudDb/Migrations/20230504111955_Add_Permission_For_FaqStatistics.cs +++ b/AsbCloudDb/Migrations/20230504111955_Add_Permission_For_FaqStatistics.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20230523065447_Add_RadiusTarget_To_PlannedTrajectory.Designer.cs b/AsbCloudDb/Migrations/20230523065447_Add_RadiusTarget_To_PlannedTrajectory.Designer.cs index 22b08db6..f7518d0c 100644 --- a/AsbCloudDb/Migrations/20230523065447_Add_RadiusTarget_To_PlannedTrajectory.Designer.cs +++ b/AsbCloudDb/Migrations/20230523065447_Add_RadiusTarget_To_PlannedTrajectory.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2233,7 +2233,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20230523065447_Add_RadiusTarget_To_PlannedTrajectory.cs b/AsbCloudDb/Migrations/20230523065447_Add_RadiusTarget_To_PlannedTrajectory.cs index 1f054ace..f7ed8abf 100644 --- a/AsbCloudDb/Migrations/20230523065447_Add_RadiusTarget_To_PlannedTrajectory.cs +++ b/AsbCloudDb/Migrations/20230523065447_Add_RadiusTarget_To_PlannedTrajectory.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20230530070633_UpdateTable_t_planned_trajectory_Field_RadiusTarget_Rename.Designer.cs b/AsbCloudDb/Migrations/20230530070633_UpdateTable_t_planned_trajectory_Field_RadiusTarget_Rename.Designer.cs index 5b02aef3..eeb429ec 100644 --- a/AsbCloudDb/Migrations/20230530070633_UpdateTable_t_planned_trajectory_Field_RadiusTarget_Rename.Designer.cs +++ b/AsbCloudDb/Migrations/20230530070633_UpdateTable_t_planned_trajectory_Field_RadiusTarget_Rename.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2233,7 +2233,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20230530070633_UpdateTable_t_planned_trajectory_Field_RadiusTarget_Rename.cs b/AsbCloudDb/Migrations/20230530070633_UpdateTable_t_planned_trajectory_Field_RadiusTarget_Rename.cs index ecab9ad1..bd1aad9b 100644 --- a/AsbCloudDb/Migrations/20230530070633_UpdateTable_t_planned_trajectory_Field_RadiusTarget_Rename.cs +++ b/AsbCloudDb/Migrations/20230530070633_UpdateTable_t_planned_trajectory_Field_RadiusTarget_Rename.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20230621061704_Add_Table_Relation_Contact_Well_And_Field_IsContact_To_CompanyType.Designer.cs b/AsbCloudDb/Migrations/20230621061704_Add_Table_Relation_Contact_Well_And_Field_IsContact_To_CompanyType.Designer.cs index df16f385..62dedbc7 100644 --- a/AsbCloudDb/Migrations/20230621061704_Add_Table_Relation_Contact_Well_And_Field_IsContact_To_CompanyType.Designer.cs +++ b/AsbCloudDb/Migrations/20230621061704_Add_Table_Relation_Contact_Well_And_Field_IsContact_To_CompanyType.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2239,7 +2239,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20230621061704_Add_Table_Relation_Contact_Well_And_Field_IsContact_To_CompanyType.cs b/AsbCloudDb/Migrations/20230621061704_Add_Table_Relation_Contact_Well_And_Field_IsContact_To_CompanyType.cs index 766cafa4..9f71027c 100644 --- a/AsbCloudDb/Migrations/20230621061704_Add_Table_Relation_Contact_Well_And_Field_IsContact_To_CompanyType.cs +++ b/AsbCloudDb/Migrations/20230621061704_Add_Table_Relation_Contact_Well_And_Field_IsContact_To_CompanyType.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20230628043716_Add_Permissions_WellContact.Designer.cs b/AsbCloudDb/Migrations/20230628043716_Add_Permissions_WellContact.Designer.cs index fea9ad7b..a66fba62 100644 --- a/AsbCloudDb/Migrations/20230628043716_Add_Permissions_WellContact.Designer.cs +++ b/AsbCloudDb/Migrations/20230628043716_Add_Permissions_WellContact.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2251,7 +2251,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20230628043716_Add_Permissions_WellContact.cs b/AsbCloudDb/Migrations/20230628043716_Add_Permissions_WellContact.cs index 8680084d..881de1f6 100644 --- a/AsbCloudDb/Migrations/20230628043716_Add_Permissions_WellContact.cs +++ b/AsbCloudDb/Migrations/20230628043716_Add_Permissions_WellContact.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20230628095801_Add_HelpPage.Designer.cs b/AsbCloudDb/Migrations/20230628095801_Add_HelpPage.Designer.cs index fa1bde29..0098b81b 100644 --- a/AsbCloudDb/Migrations/20230628095801_Add_HelpPage.Designer.cs +++ b/AsbCloudDb/Migrations/20230628095801_Add_HelpPage.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2279,7 +2279,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20230628095801_Add_HelpPage.cs b/AsbCloudDb/Migrations/20230628095801_Add_HelpPage.cs index 82746fb2..a86d6693 100644 --- a/AsbCloudDb/Migrations/20230628095801_Add_HelpPage.cs +++ b/AsbCloudDb/Migrations/20230628095801_Add_HelpPage.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; #nullable disable diff --git a/AsbCloudDb/Migrations/20230628100326_Add_New_Init_Value_For_FileCategory.Designer.cs b/AsbCloudDb/Migrations/20230628100326_Add_New_Init_Value_For_FileCategory.Designer.cs index ea6e04e3..1ce38f93 100644 --- a/AsbCloudDb/Migrations/20230628100326_Add_New_Init_Value_For_FileCategory.Designer.cs +++ b/AsbCloudDb/Migrations/20230628100326_Add_New_Init_Value_For_FileCategory.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2284,7 +2284,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20230628100326_Add_New_Init_Value_For_FileCategory.cs b/AsbCloudDb/Migrations/20230628100326_Add_New_Init_Value_For_FileCategory.cs index 7cc53bba..8d7af9ef 100644 --- a/AsbCloudDb/Migrations/20230628100326_Add_New_Init_Value_For_FileCategory.cs +++ b/AsbCloudDb/Migrations/20230628100326_Add_New_Init_Value_For_FileCategory.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20230628103733_Add_New_Init_Value_For_Permission.Designer.cs b/AsbCloudDb/Migrations/20230628103733_Add_New_Init_Value_For_Permission.Designer.cs index 17653a21..710f5f11 100644 --- a/AsbCloudDb/Migrations/20230628103733_Add_New_Init_Value_For_Permission.Designer.cs +++ b/AsbCloudDb/Migrations/20230628103733_Add_New_Init_Value_For_Permission.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2290,7 +2290,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20230628103733_Add_New_Init_Value_For_Permission.cs b/AsbCloudDb/Migrations/20230628103733_Add_New_Init_Value_For_Permission.cs index c34a3cc6..3085c98d 100644 --- a/AsbCloudDb/Migrations/20230628103733_Add_New_Init_Value_For_Permission.cs +++ b/AsbCloudDb/Migrations/20230628103733_Add_New_Init_Value_For_Permission.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20230711130529_Update_IdState_For_User.Designer.cs b/AsbCloudDb/Migrations/20230711130529_Update_IdState_For_User.Designer.cs index 1bb79712..ece65eda 100644 --- a/AsbCloudDb/Migrations/20230711130529_Update_IdState_For_User.Designer.cs +++ b/AsbCloudDb/Migrations/20230711130529_Update_IdState_For_User.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2302,7 +2302,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20230711130529_Update_IdState_For_User.cs b/AsbCloudDb/Migrations/20230711130529_Update_IdState_For_User.cs index 279d64da..fe5be085 100644 --- a/AsbCloudDb/Migrations/20230711130529_Update_IdState_For_User.cs +++ b/AsbCloudDb/Migrations/20230711130529_Update_IdState_For_User.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; using System; #nullable disable diff --git a/AsbCloudDb/Migrations/20230711130624_Add_Notification.Designer.cs b/AsbCloudDb/Migrations/20230711130624_Add_Notification.Designer.cs index 15714251..cb66b6c4 100644 --- a/AsbCloudDb/Migrations/20230711130624_Add_Notification.Designer.cs +++ b/AsbCloudDb/Migrations/20230711130624_Add_Notification.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2394,7 +2394,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20230711130624_Add_Notification.cs b/AsbCloudDb/Migrations/20230711130624_Add_Notification.cs index c4c447a8..49c02a87 100644 --- a/AsbCloudDb/Migrations/20230711130624_Add_Notification.cs +++ b/AsbCloudDb/Migrations/20230711130624_Add_Notification.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; diff --git a/AsbCloudDb/Migrations/20230713050032_Add_Order_For_CompanyType.Designer.cs b/AsbCloudDb/Migrations/20230713050032_Add_Order_For_CompanyType.Designer.cs index d99dcdb1..06f84434 100644 --- a/AsbCloudDb/Migrations/20230713050032_Add_Order_For_CompanyType.Designer.cs +++ b/AsbCloudDb/Migrations/20230713050032_Add_Order_For_CompanyType.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2309,7 +2309,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20230713050032_Add_Order_For_CompanyType.cs b/AsbCloudDb/Migrations/20230713050032_Add_Order_For_CompanyType.cs index 735bd45f..3c1c6c71 100644 --- a/AsbCloudDb/Migrations/20230713050032_Add_Order_For_CompanyType.cs +++ b/AsbCloudDb/Migrations/20230713050032_Add_Order_For_CompanyType.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20230713085928_Update_Notification.Designer.cs b/AsbCloudDb/Migrations/20230713085928_Update_Notification.Designer.cs index 50703a27..42faf6c1 100644 --- a/AsbCloudDb/Migrations/20230713085928_Update_Notification.Designer.cs +++ b/AsbCloudDb/Migrations/20230713085928_Update_Notification.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2387,7 +2387,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20230713085928_Update_Notification.cs b/AsbCloudDb/Migrations/20230713085928_Update_Notification.cs index c9571b1e..4fb754e7 100644 --- a/AsbCloudDb/Migrations/20230713085928_Update_Notification.cs +++ b/AsbCloudDb/Migrations/20230713085928_Update_Notification.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20230719064843_Add_Order_For_SectionType.Designer.cs b/AsbCloudDb/Migrations/20230719064843_Add_Order_For_SectionType.Designer.cs index 42176285..871f6297 100644 --- a/AsbCloudDb/Migrations/20230719064843_Add_Order_For_SectionType.Designer.cs +++ b/AsbCloudDb/Migrations/20230719064843_Add_Order_For_SectionType.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2394,7 +2394,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20230719064843_Add_Order_For_SectionType.cs b/AsbCloudDb/Migrations/20230719064843_Add_Order_For_SectionType.cs index 8b0a16d4..01147d4b 100644 --- a/AsbCloudDb/Migrations/20230719064843_Add_Order_For_SectionType.cs +++ b/AsbCloudDb/Migrations/20230719064843_Add_Order_For_SectionType.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20230725082154_Add_Registration_Date_Notification.Designer.cs b/AsbCloudDb/Migrations/20230725082154_Add_Registration_Date_Notification.Designer.cs index 14b340c7..1445867d 100644 --- a/AsbCloudDb/Migrations/20230725082154_Add_Registration_Date_Notification.Designer.cs +++ b/AsbCloudDb/Migrations/20230725082154_Add_Registration_Date_Notification.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2399,7 +2399,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20230725082154_Add_Registration_Date_Notification.cs b/AsbCloudDb/Migrations/20230725082154_Add_Registration_Date_Notification.cs index 11ce890c..2cecfa4c 100644 --- a/AsbCloudDb/Migrations/20230725082154_Add_Registration_Date_Notification.cs +++ b/AsbCloudDb/Migrations/20230725082154_Add_Registration_Date_Notification.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20230728062743_Add_Permission_UserSettings_delete.Designer.cs b/AsbCloudDb/Migrations/20230728062743_Add_Permission_UserSettings_delete.Designer.cs index a0266f5b..fd59fdd1 100644 --- a/AsbCloudDb/Migrations/20230728062743_Add_Permission_UserSettings_delete.Designer.cs +++ b/AsbCloudDb/Migrations/20230728062743_Add_Permission_UserSettings_delete.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2400,7 +2400,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20230728062743_Add_Permission_UserSettings_delete.cs b/AsbCloudDb/Migrations/20230728062743_Add_Permission_UserSettings_delete.cs index 1341afc1..e119c774 100644 --- a/AsbCloudDb/Migrations/20230728062743_Add_Permission_UserSettings_delete.cs +++ b/AsbCloudDb/Migrations/20230728062743_Add_Permission_UserSettings_delete.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20230821110455_Update_PlannedTrajectory.Designer.cs b/AsbCloudDb/Migrations/20230821110455_Update_PlannedTrajectory.Designer.cs index 64e38d02..ea1ed269 100644 --- a/AsbCloudDb/Migrations/20230821110455_Update_PlannedTrajectory.Designer.cs +++ b/AsbCloudDb/Migrations/20230821110455_Update_PlannedTrajectory.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2355,7 +2355,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20230821110455_Update_PlannedTrajectory.cs b/AsbCloudDb/Migrations/20230821110455_Update_PlannedTrajectory.cs index d8b973f5..cd5fdb6f 100644 --- a/AsbCloudDb/Migrations/20230821110455_Update_PlannedTrajectory.cs +++ b/AsbCloudDb/Migrations/20230821110455_Update_PlannedTrajectory.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20230906090612_Add_separated_subsystems.Designer.cs b/AsbCloudDb/Migrations/20230906090612_Add_separated_subsystems.Designer.cs index 88c5d55a..8bba7e30 100644 --- a/AsbCloudDb/Migrations/20230906090612_Add_separated_subsystems.Designer.cs +++ b/AsbCloudDb/Migrations/20230906090612_Add_separated_subsystems.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2400,7 +2400,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20230906090612_Add_separated_subsystems.cs b/AsbCloudDb/Migrations/20230906090612_Add_separated_subsystems.cs index 89c4a400..035eb2f0 100644 --- a/AsbCloudDb/Migrations/20230906090612_Add_separated_subsystems.cs +++ b/AsbCloudDb/Migrations/20230906090612_Add_separated_subsystems.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20230907070954_Add_Manuals.Designer.cs b/AsbCloudDb/Migrations/20230907070954_Add_Manuals.Designer.cs index 4aed03e1..7bd2bbe8 100644 --- a/AsbCloudDb/Migrations/20230907070954_Add_Manuals.Designer.cs +++ b/AsbCloudDb/Migrations/20230907070954_Add_Manuals.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2494,7 +2494,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20230907070954_Add_Manuals.cs b/AsbCloudDb/Migrations/20230907070954_Add_Manuals.cs index 4ee906e3..3b4d9d77 100644 --- a/AsbCloudDb/Migrations/20230907070954_Add_Manuals.cs +++ b/AsbCloudDb/Migrations/20230907070954_Add_Manuals.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; diff --git a/AsbCloudDb/Migrations/20230913063219_Add_New_Permissions.Designer.cs b/AsbCloudDb/Migrations/20230913063219_Add_New_Permissions.Designer.cs index c94465b6..5c57f7ce 100644 --- a/AsbCloudDb/Migrations/20230913063219_Add_New_Permissions.Designer.cs +++ b/AsbCloudDb/Migrations/20230913063219_Add_New_Permissions.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2412,7 +2412,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20230913063219_Add_New_Permissions.cs b/AsbCloudDb/Migrations/20230913063219_Add_New_Permissions.cs index d6dc3d17..9cb5aec5 100644 --- a/AsbCloudDb/Migrations/20230913063219_Add_New_Permissions.cs +++ b/AsbCloudDb/Migrations/20230913063219_Add_New_Permissions.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20230925052808_Add_ProcessMapWellboreDevelopment.Designer.cs b/AsbCloudDb/Migrations/20230925052808_Add_ProcessMapWellboreDevelopment.Designer.cs index cba1d13c..75876fd0 100644 --- a/AsbCloudDb/Migrations/20230925052808_Add_ProcessMapWellboreDevelopment.Designer.cs +++ b/AsbCloudDb/Migrations/20230925052808_Add_ProcessMapWellboreDevelopment.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2466,7 +2466,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.ProcessMapWellboreDevelopment", b => diff --git a/AsbCloudDb/Migrations/20230925052808_Add_ProcessMapWellboreDevelopment.cs b/AsbCloudDb/Migrations/20230925052808_Add_ProcessMapWellboreDevelopment.cs index 38d50904..54c82d98 100644 --- a/AsbCloudDb/Migrations/20230925052808_Add_ProcessMapWellboreDevelopment.cs +++ b/AsbCloudDb/Migrations/20230925052808_Add_ProcessMapWellboreDevelopment.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; diff --git a/AsbCloudDb/Migrations/20230925081405_Add_New_Permission_For_Manuals.Designer.cs b/AsbCloudDb/Migrations/20230925081405_Add_New_Permission_For_Manuals.Designer.cs index 95c208da..f151f4b3 100644 --- a/AsbCloudDb/Migrations/20230925081405_Add_New_Permission_For_Manuals.Designer.cs +++ b/AsbCloudDb/Migrations/20230925081405_Add_New_Permission_For_Manuals.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2472,7 +2472,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => diff --git a/AsbCloudDb/Migrations/20230925081405_Add_New_Permission_For_Manuals.cs b/AsbCloudDb/Migrations/20230925081405_Add_New_Permission_For_Manuals.cs index 8217925d..8b040fde 100644 --- a/AsbCloudDb/Migrations/20230925081405_Add_New_Permission_For_Manuals.cs +++ b/AsbCloudDb/Migrations/20230925081405_Add_New_Permission_For_Manuals.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20230925132919_Update_ProcessMapWellboreDevelopment.Designer.cs b/AsbCloudDb/Migrations/20230925132919_Update_ProcessMapWellboreDevelopment.Designer.cs index 26259bfc..778f7dc6 100644 --- a/AsbCloudDb/Migrations/20230925132919_Update_ProcessMapWellboreDevelopment.Designer.cs +++ b/AsbCloudDb/Migrations/20230925132919_Update_ProcessMapWellboreDevelopment.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2466,7 +2466,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.ProcessMapWellboreDevelopment", b => diff --git a/AsbCloudDb/Migrations/20230925132919_Update_ProcessMapWellboreDevelopment.cs b/AsbCloudDb/Migrations/20230925132919_Update_ProcessMapWellboreDevelopment.cs index f7458386..527e7e17 100644 --- a/AsbCloudDb/Migrations/20230925132919_Update_ProcessMapWellboreDevelopment.cs +++ b/AsbCloudDb/Migrations/20230925132919_Update_ProcessMapWellboreDevelopment.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20230928055323_WellOperations_Add_OnDelete_SetNull_Behavior.Designer.cs b/AsbCloudDb/Migrations/20230928055323_WellOperations_Add_OnDelete_SetNull_Behavior.Designer.cs index 52274aa0..28b04d38 100644 --- a/AsbCloudDb/Migrations/20230928055323_WellOperations_Add_OnDelete_SetNull_Behavior.Designer.cs +++ b/AsbCloudDb/Migrations/20230928055323_WellOperations_Add_OnDelete_SetNull_Behavior.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2472,7 +2472,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.ProcessMapWellboreDevelopment", b => diff --git a/AsbCloudDb/Migrations/20230928055323_WellOperations_Add_OnDelete_SetNull_Behavior.cs b/AsbCloudDb/Migrations/20230928055323_WellOperations_Add_OnDelete_SetNull_Behavior.cs index edf35493..5d3d51ed 100644 --- a/AsbCloudDb/Migrations/20230928055323_WellOperations_Add_OnDelete_SetNull_Behavior.cs +++ b/AsbCloudDb/Migrations/20230928055323_WellOperations_Add_OnDelete_SetNull_Behavior.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20231012063505_Add_Contacts.Designer.cs b/AsbCloudDb/Migrations/20231012063505_Add_Contacts.Designer.cs index f615832f..9254ac91 100644 --- a/AsbCloudDb/Migrations/20231012063505_Add_Contacts.Designer.cs +++ b/AsbCloudDb/Migrations/20231012063505_Add_Contacts.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2531,7 +2531,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.ProcessMapWellboreDevelopment", b => diff --git a/AsbCloudDb/Migrations/20231012063505_Add_Contacts.cs b/AsbCloudDb/Migrations/20231012063505_Add_Contacts.cs index c809faed..2f85c98c 100644 --- a/AsbCloudDb/Migrations/20231012063505_Add_Contacts.cs +++ b/AsbCloudDb/Migrations/20231012063505_Add_Contacts.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; #nullable disable diff --git a/AsbCloudDb/Migrations/20231012063841_Add_Permission_Delete_To_Well_Contact.Designer.cs b/AsbCloudDb/Migrations/20231012063841_Add_Permission_Delete_To_Well_Contact.Designer.cs index e67f6bcf..5ff9c558 100644 --- a/AsbCloudDb/Migrations/20231012063841_Add_Permission_Delete_To_Well_Contact.Designer.cs +++ b/AsbCloudDb/Migrations/20231012063841_Add_Permission_Delete_To_Well_Contact.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2537,7 +2537,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.ProcessMapWellboreDevelopment", b => diff --git a/AsbCloudDb/Migrations/20231012063841_Add_Permission_Delete_To_Well_Contact.cs b/AsbCloudDb/Migrations/20231012063841_Add_Permission_Delete_To_Well_Contact.cs index d5567365..3ad0d7eb 100644 --- a/AsbCloudDb/Migrations/20231012063841_Add_Permission_Delete_To_Well_Contact.cs +++ b/AsbCloudDb/Migrations/20231012063841_Add_Permission_Delete_To_Well_Contact.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20231012064318_Add_Well_To_Contacts.Designer.cs b/AsbCloudDb/Migrations/20231012064318_Add_Well_To_Contacts.Designer.cs index e056ec19..9941e33d 100644 --- a/AsbCloudDb/Migrations/20231012064318_Add_Well_To_Contacts.Designer.cs +++ b/AsbCloudDb/Migrations/20231012064318_Add_Well_To_Contacts.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2545,7 +2545,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.ProcessMapWellboreDevelopment", b => diff --git a/AsbCloudDb/Migrations/20231012064318_Add_Well_To_Contacts.cs b/AsbCloudDb/Migrations/20231012064318_Add_Well_To_Contacts.cs index e806529c..ccfc2aeb 100644 --- a/AsbCloudDb/Migrations/20231012064318_Add_Well_To_Contacts.cs +++ b/AsbCloudDb/Migrations/20231012064318_Add_Well_To_Contacts.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20231012070239_Update_Process_Maps.Designer.cs b/AsbCloudDb/Migrations/20231012070239_Update_Process_Maps.Designer.cs index 0d5c7375..fdadc2a4 100644 --- a/AsbCloudDb/Migrations/20231012070239_Update_Process_Maps.Designer.cs +++ b/AsbCloudDb/Migrations/20231012070239_Update_Process_Maps.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; diff --git a/AsbCloudDb/Migrations/20231012070239_Update_Process_Maps.cs b/AsbCloudDb/Migrations/20231012070239_Update_Process_Maps.cs index 701b4862..559b9db7 100644 --- a/AsbCloudDb/Migrations/20231012070239_Update_Process_Maps.cs +++ b/AsbCloudDb/Migrations/20231012070239_Update_Process_Maps.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable @@ -103,7 +103,7 @@ namespace AsbCloudDb.Migrations migrationBuilder.AlterTable( name: "t_process_map_well_drilling", comment: "РТК бурение скважины", - oldComment: "Операции по скважине – РТК"); + oldComment: "Операции по скважине - РТК"); migrationBuilder.AlterColumn( name: "depth_start", @@ -319,7 +319,7 @@ namespace AsbCloudDb.Migrations migrationBuilder.AlterTable( name: "t_process_map", - comment: "Операции по скважине – РТК", + comment: "Операции по скважине - РТК", oldComment: "РТК бурение скважины"); migrationBuilder.AlterColumn( diff --git a/AsbCloudDb/Migrations/20231013103735_Update_WellContacts_Set_FullName.Designer.cs b/AsbCloudDb/Migrations/20231013103735_Update_WellContacts_Set_FullName.Designer.cs index ccf2be29..c68923fd 100644 --- a/AsbCloudDb/Migrations/20231013103735_Update_WellContacts_Set_FullName.Designer.cs +++ b/AsbCloudDb/Migrations/20231013103735_Update_WellContacts_Set_FullName.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; @@ -2545,7 +2545,7 @@ namespace AsbCloudDb.Migrations b.ToTable("t_process_map"); - b.HasComment("Операции по скважине – РТК"); + b.HasComment("Операции по скважине - РТК"); }); modelBuilder.Entity("AsbCloudDb.Model.ProcessMapWellboreDevelopment", b => diff --git a/AsbCloudDb/Migrations/20231013103735_Update_WellContacts_Set_FullName.cs b/AsbCloudDb/Migrations/20231013103735_Update_WellContacts_Set_FullName.cs index 02242570..7da780ca 100644 --- a/AsbCloudDb/Migrations/20231013103735_Update_WellContacts_Set_FullName.cs +++ b/AsbCloudDb/Migrations/20231013103735_Update_WellContacts_Set_FullName.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20231017094813_Add_Drill_Test.Designer.cs b/AsbCloudDb/Migrations/20231017094813_Add_Drill_Test.Designer.cs index 1b2cf452..a1d104d6 100644 --- a/AsbCloudDb/Migrations/20231017094813_Add_Drill_Test.Designer.cs +++ b/AsbCloudDb/Migrations/20231017094813_Add_Drill_Test.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; diff --git a/AsbCloudDb/Migrations/20231017094813_Add_Drill_Test.cs b/AsbCloudDb/Migrations/20231017094813_Add_Drill_Test.cs index d5d47871..1e6fb2eb 100644 --- a/AsbCloudDb/Migrations/20231017094813_Add_Drill_Test.cs +++ b/AsbCloudDb/Migrations/20231017094813_Add_Drill_Test.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20231101110412_Update_EntityFillerSubsystem.Designer.cs b/AsbCloudDb/Migrations/20231101110412_Update_EntityFillerSubsystem.Designer.cs index b461d11a..d2d4a248 100644 --- a/AsbCloudDb/Migrations/20231101110412_Update_EntityFillerSubsystem.Designer.cs +++ b/AsbCloudDb/Migrations/20231101110412_Update_EntityFillerSubsystem.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; diff --git a/AsbCloudDb/Migrations/20231101110412_Update_EntityFillerSubsystem.cs b/AsbCloudDb/Migrations/20231101110412_Update_EntityFillerSubsystem.cs index 97a9b327..3ac31a32 100644 --- a/AsbCloudDb/Migrations/20231101110412_Update_EntityFillerSubsystem.cs +++ b/AsbCloudDb/Migrations/20231101110412_Update_EntityFillerSubsystem.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20231102045101_Rename_Field_IsContact_In_CompanyType.Designer.cs b/AsbCloudDb/Migrations/20231102045101_Rename_Field_IsContact_In_CompanyType.Designer.cs index 80bf45e0..30a01afc 100644 --- a/AsbCloudDb/Migrations/20231102045101_Rename_Field_IsContact_In_CompanyType.Designer.cs +++ b/AsbCloudDb/Migrations/20231102045101_Rename_Field_IsContact_In_CompanyType.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; diff --git a/AsbCloudDb/Migrations/20231102045101_Rename_Field_IsContact_In_CompanyType.cs b/AsbCloudDb/Migrations/20231102045101_Rename_Field_IsContact_In_CompanyType.cs index fb5c8934..7e2f5693 100644 --- a/AsbCloudDb/Migrations/20231102045101_Rename_Field_IsContact_In_CompanyType.cs +++ b/AsbCloudDb/Migrations/20231102045101_Rename_Field_IsContact_In_CompanyType.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20231102045600_Add_Or_Update_Data_In_CompanyType.Designer.cs b/AsbCloudDb/Migrations/20231102045600_Add_Or_Update_Data_In_CompanyType.Designer.cs index 53ee86ab..e55085be 100644 --- a/AsbCloudDb/Migrations/20231102045600_Add_Or_Update_Data_In_CompanyType.Designer.cs +++ b/AsbCloudDb/Migrations/20231102045600_Add_Or_Update_Data_In_CompanyType.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; diff --git a/AsbCloudDb/Migrations/20231102045600_Add_Or_Update_Data_In_CompanyType.cs b/AsbCloudDb/Migrations/20231102045600_Add_Or_Update_Data_In_CompanyType.cs index 45cd4795..07a461f2 100644 --- a/AsbCloudDb/Migrations/20231102045600_Add_Or_Update_Data_In_CompanyType.cs +++ b/AsbCloudDb/Migrations/20231102045600_Add_Or_Update_Data_In_CompanyType.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20231107091439_Add_Data_To_WellSectionType.Designer.cs b/AsbCloudDb/Migrations/20231107091439_Add_Data_To_WellSectionType.Designer.cs index 23c90735..6fa59af8 100644 --- a/AsbCloudDb/Migrations/20231107091439_Add_Data_To_WellSectionType.Designer.cs +++ b/AsbCloudDb/Migrations/20231107091439_Add_Data_To_WellSectionType.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; diff --git a/AsbCloudDb/Migrations/20231107091439_Add_Data_To_WellSectionType.cs b/AsbCloudDb/Migrations/20231107091439_Add_Data_To_WellSectionType.cs index c745692f..48649536 100644 --- a/AsbCloudDb/Migrations/20231107091439_Add_Data_To_WellSectionType.cs +++ b/AsbCloudDb/Migrations/20231107091439_Add_Data_To_WellSectionType.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20231110080246_UpdateTable_t_telemetry_data_Set_ImportantColumns_NotNull.Designer.cs b/AsbCloudDb/Migrations/20231110080246_UpdateTable_t_telemetry_data_Set_ImportantColumns_NotNull.Designer.cs index 0b6a77d5..3ad8b8f3 100644 --- a/AsbCloudDb/Migrations/20231110080246_UpdateTable_t_telemetry_data_Set_ImportantColumns_NotNull.Designer.cs +++ b/AsbCloudDb/Migrations/20231110080246_UpdateTable_t_telemetry_data_Set_ImportantColumns_NotNull.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; diff --git a/AsbCloudDb/Migrations/20231110080246_UpdateTable_t_telemetry_data_Set_ImportantColumns_NotNull.cs b/AsbCloudDb/Migrations/20231110080246_UpdateTable_t_telemetry_data_Set_ImportantColumns_NotNull.cs index 0252def1..1aa7539b 100644 --- a/AsbCloudDb/Migrations/20231110080246_UpdateTable_t_telemetry_data_Set_ImportantColumns_NotNull.cs +++ b/AsbCloudDb/Migrations/20231110080246_UpdateTable_t_telemetry_data_Set_ImportantColumns_NotNull.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20231110094226_UpdateTable_t_contact_Set_Email_and_Phone_Nullable.Designer.cs b/AsbCloudDb/Migrations/20231110094226_UpdateTable_t_contact_Set_Email_and_Phone_Nullable.Designer.cs index 11a21c37..59c14f94 100644 --- a/AsbCloudDb/Migrations/20231110094226_UpdateTable_t_contact_Set_Email_and_Phone_Nullable.Designer.cs +++ b/AsbCloudDb/Migrations/20231110094226_UpdateTable_t_contact_Set_Email_and_Phone_Nullable.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; diff --git a/AsbCloudDb/Migrations/20231110094226_UpdateTable_t_contact_Set_Email_and_Phone_Nullable.cs b/AsbCloudDb/Migrations/20231110094226_UpdateTable_t_contact_Set_Email_and_Phone_Nullable.cs index 46c2fef2..16a41147 100644 --- a/AsbCloudDb/Migrations/20231110094226_UpdateTable_t_contact_Set_Email_and_Phone_Nullable.cs +++ b/AsbCloudDb/Migrations/20231110094226_UpdateTable_t_contact_Set_Email_and_Phone_Nullable.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20231114051111_Update_DailyReport.Designer.cs b/AsbCloudDb/Migrations/20231114051111_Update_DailyReport.Designer.cs index 23c75c4b..a29bcaad 100644 --- a/AsbCloudDb/Migrations/20231114051111_Update_DailyReport.Designer.cs +++ b/AsbCloudDb/Migrations/20231114051111_Update_DailyReport.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; diff --git a/AsbCloudDb/Migrations/20231114051111_Update_DailyReport.cs b/AsbCloudDb/Migrations/20231114051111_Update_DailyReport.cs index e4bac241..6a281f05 100644 --- a/AsbCloudDb/Migrations/20231114051111_Update_DailyReport.cs +++ b/AsbCloudDb/Migrations/20231114051111_Update_DailyReport.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; diff --git a/AsbCloudDb/Migrations/20231115120948_Add_Fact_Trajectory_Table.Designer.cs b/AsbCloudDb/Migrations/20231115120948_Add_Fact_Trajectory_Table.Designer.cs index ed795ae6..f5c1a65b 100644 --- a/AsbCloudDb/Migrations/20231115120948_Add_Fact_Trajectory_Table.Designer.cs +++ b/AsbCloudDb/Migrations/20231115120948_Add_Fact_Trajectory_Table.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; diff --git a/AsbCloudDb/Migrations/20231115120948_Add_Fact_Trajectory_Table.cs b/AsbCloudDb/Migrations/20231115120948_Add_Fact_Trajectory_Table.cs index e61f52c8..d0a8d573 100644 --- a/AsbCloudDb/Migrations/20231115120948_Add_Fact_Trajectory_Table.cs +++ b/AsbCloudDb/Migrations/20231115120948_Add_Fact_Trajectory_Table.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; diff --git a/AsbCloudDb/Migrations/20231123085551_Add_New_WellOperationCategories.Designer.cs b/AsbCloudDb/Migrations/20231123085551_Add_New_WellOperationCategories.Designer.cs index a74ef02e..33ba93a6 100644 --- a/AsbCloudDb/Migrations/20231123085551_Add_New_WellOperationCategories.Designer.cs +++ b/AsbCloudDb/Migrations/20231123085551_Add_New_WellOperationCategories.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; diff --git a/AsbCloudDb/Migrations/20231123085551_Add_New_WellOperationCategories.cs b/AsbCloudDb/Migrations/20231123085551_Add_New_WellOperationCategories.cs index 2d6bebc5..9e6d5092 100644 --- a/AsbCloudDb/Migrations/20231123085551_Add_New_WellOperationCategories.cs +++ b/AsbCloudDb/Migrations/20231123085551_Add_New_WellOperationCategories.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20231127114017_Update_t_planned_trajectory.Designer.cs b/AsbCloudDb/Migrations/20231127114017_Update_t_planned_trajectory.Designer.cs index 52768caa..1b563e69 100644 --- a/AsbCloudDb/Migrations/20231127114017_Update_t_planned_trajectory.Designer.cs +++ b/AsbCloudDb/Migrations/20231127114017_Update_t_planned_trajectory.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; diff --git a/AsbCloudDb/Migrations/20231127114017_Update_t_planned_trajectory.cs b/AsbCloudDb/Migrations/20231127114017_Update_t_planned_trajectory.cs index 3175bb9e..8868a2f8 100644 --- a/AsbCloudDb/Migrations/20231127114017_Update_t_planned_trajectory.cs +++ b/AsbCloudDb/Migrations/20231127114017_Update_t_planned_trajectory.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20231129111522_Rename_t_trajectory_plan.Designer.cs b/AsbCloudDb/Migrations/20231129111522_Rename_t_trajectory_plan.Designer.cs index cb769398..52a23f95 100644 --- a/AsbCloudDb/Migrations/20231129111522_Rename_t_trajectory_plan.Designer.cs +++ b/AsbCloudDb/Migrations/20231129111522_Rename_t_trajectory_plan.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; diff --git a/AsbCloudDb/Migrations/20231129111522_Rename_t_trajectory_plan.cs b/AsbCloudDb/Migrations/20231129111522_Rename_t_trajectory_plan.cs index b6644976..bc7b4a40 100644 --- a/AsbCloudDb/Migrations/20231129111522_Rename_t_trajectory_plan.cs +++ b/AsbCloudDb/Migrations/20231129111522_Rename_t_trajectory_plan.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20231204094830_Add_WellSectionPlan.Designer.cs b/AsbCloudDb/Migrations/20231204094830_Add_WellSectionPlan.Designer.cs index 5c8565a1..63040ba4 100644 --- a/AsbCloudDb/Migrations/20231204094830_Add_WellSectionPlan.Designer.cs +++ b/AsbCloudDb/Migrations/20231204094830_Add_WellSectionPlan.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; diff --git a/AsbCloudDb/Migrations/20231204094830_Add_WellSectionPlan.cs b/AsbCloudDb/Migrations/20231204094830_Add_WellSectionPlan.cs index 197f4a58..5f088451 100644 --- a/AsbCloudDb/Migrations/20231204094830_Add_WellSectionPlan.cs +++ b/AsbCloudDb/Migrations/20231204094830_Add_WellSectionPlan.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; diff --git a/AsbCloudDb/Migrations/20231205062914_Daily_report_lost_migration.Designer.cs b/AsbCloudDb/Migrations/20231205062914_Daily_report_lost_migration.Designer.cs index fd4ff53b..0046410b 100644 --- a/AsbCloudDb/Migrations/20231205062914_Daily_report_lost_migration.Designer.cs +++ b/AsbCloudDb/Migrations/20231205062914_Daily_report_lost_migration.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; diff --git a/AsbCloudDb/Migrations/20231205062914_Daily_report_lost_migration.cs b/AsbCloudDb/Migrations/20231205062914_Daily_report_lost_migration.cs index ec314216..5309fb4d 100644 --- a/AsbCloudDb/Migrations/20231205062914_Daily_report_lost_migration.cs +++ b/AsbCloudDb/Migrations/20231205062914_Daily_report_lost_migration.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20231205063450_DetectedOperation_add_subsystems_and_extraData.Designer.cs b/AsbCloudDb/Migrations/20231205063450_DetectedOperation_add_subsystems_and_extraData.Designer.cs index 188c3aaf..7847901e 100644 --- a/AsbCloudDb/Migrations/20231205063450_DetectedOperation_add_subsystems_and_extraData.Designer.cs +++ b/AsbCloudDb/Migrations/20231205063450_DetectedOperation_add_subsystems_and_extraData.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Collections.Generic; using System.Text.Json; diff --git a/AsbCloudDb/Migrations/20231205063450_DetectedOperation_add_subsystems_and_extraData.cs b/AsbCloudDb/Migrations/20231205063450_DetectedOperation_add_subsystems_and_extraData.cs index de054b29..ae36d1eb 100644 --- a/AsbCloudDb/Migrations/20231205063450_DetectedOperation_add_subsystems_and_extraData.cs +++ b/AsbCloudDb/Migrations/20231205063450_DetectedOperation_add_subsystems_and_extraData.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20231216060437_Update_Subsystems.Designer.cs b/AsbCloudDb/Migrations/20231216060437_Update_Subsystems.Designer.cs index a09d316b..26f082cc 100644 --- a/AsbCloudDb/Migrations/20231216060437_Update_Subsystems.Designer.cs +++ b/AsbCloudDb/Migrations/20231216060437_Update_Subsystems.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; diff --git a/AsbCloudDb/Migrations/20231216060437_Update_Subsystems.cs b/AsbCloudDb/Migrations/20231216060437_Update_Subsystems.cs index 40643d71..d3838c18 100644 --- a/AsbCloudDb/Migrations/20231216060437_Update_Subsystems.cs +++ b/AsbCloudDb/Migrations/20231216060437_Update_Subsystems.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; diff --git a/AsbCloudDb/Migrations/20231218192700_Update_DetectedOperations_And_Subsystems.Designer.cs b/AsbCloudDb/Migrations/20231218192700_Update_DetectedOperations_And_Subsystems.Designer.cs index e72e09a5..a2e1edf0 100644 --- a/AsbCloudDb/Migrations/20231218192700_Update_DetectedOperations_And_Subsystems.Designer.cs +++ b/AsbCloudDb/Migrations/20231218192700_Update_DetectedOperations_And_Subsystems.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; diff --git a/AsbCloudDb/Migrations/20231218192700_Update_DetectedOperations_And_Subsystems.cs b/AsbCloudDb/Migrations/20231218192700_Update_DetectedOperations_And_Subsystems.cs index fbb49d7d..9f3ea841 100644 --- a/AsbCloudDb/Migrations/20231218192700_Update_DetectedOperations_And_Subsystems.cs +++ b/AsbCloudDb/Migrations/20231218192700_Update_DetectedOperations_And_Subsystems.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20231220091403_UpdateDateFormat_DailyReport.Designer.cs b/AsbCloudDb/Migrations/20231220091403_UpdateDateFormat_DailyReport.Designer.cs index c5bba58a..7cc704dd 100644 --- a/AsbCloudDb/Migrations/20231220091403_UpdateDateFormat_DailyReport.Designer.cs +++ b/AsbCloudDb/Migrations/20231220091403_UpdateDateFormat_DailyReport.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; diff --git a/AsbCloudDb/Migrations/20231220091403_UpdateDateFormat_DailyReport.cs b/AsbCloudDb/Migrations/20231220091403_UpdateDateFormat_DailyReport.cs index c2771eeb..2b553026 100644 --- a/AsbCloudDb/Migrations/20231220091403_UpdateDateFormat_DailyReport.cs +++ b/AsbCloudDb/Migrations/20231220091403_UpdateDateFormat_DailyReport.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20231226070850_Update_Table_WellOperation_set_Categories.Designer.cs b/AsbCloudDb/Migrations/20231226070850_Update_Table_WellOperation_set_Categories.Designer.cs index c95d01b9..68b58cb1 100644 --- a/AsbCloudDb/Migrations/20231226070850_Update_Table_WellOperation_set_Categories.Designer.cs +++ b/AsbCloudDb/Migrations/20231226070850_Update_Table_WellOperation_set_Categories.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; diff --git a/AsbCloudDb/Migrations/20231226070850_Update_Table_WellOperation_set_Categories.cs b/AsbCloudDb/Migrations/20231226070850_Update_Table_WellOperation_set_Categories.cs index be2a9a71..282965ff 100644 --- a/AsbCloudDb/Migrations/20231226070850_Update_Table_WellOperation_set_Categories.cs +++ b/AsbCloudDb/Migrations/20231226070850_Update_Table_WellOperation_set_Categories.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20240119062443_Add_processmap_plan_drilling_with_changeLog.Designer.cs b/AsbCloudDb/Migrations/20240119062443_Add_processmap_plan_drilling_with_changeLog.Designer.cs index b57a8b00..49d88632 100644 --- a/AsbCloudDb/Migrations/20240119062443_Add_processmap_plan_drilling_with_changeLog.Designer.cs +++ b/AsbCloudDb/Migrations/20240119062443_Add_processmap_plan_drilling_with_changeLog.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; diff --git a/AsbCloudDb/Migrations/20240119062443_Add_processmap_plan_drilling_with_changeLog.cs b/AsbCloudDb/Migrations/20240119062443_Add_processmap_plan_drilling_with_changeLog.cs index 1f1b4fd7..a5a67384 100644 --- a/AsbCloudDb/Migrations/20240119062443_Add_processmap_plan_drilling_with_changeLog.cs +++ b/AsbCloudDb/Migrations/20240119062443_Add_processmap_plan_drilling_with_changeLog.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; diff --git a/AsbCloudDb/Migrations/20240201060511_Add_Table_DataSaubStat.Designer.cs b/AsbCloudDb/Migrations/20240201060511_Add_Table_DataSaubStat.Designer.cs index 702cb1ea..ddb0d4da 100644 --- a/AsbCloudDb/Migrations/20240201060511_Add_Table_DataSaubStat.Designer.cs +++ b/AsbCloudDb/Migrations/20240201060511_Add_Table_DataSaubStat.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; diff --git a/AsbCloudDb/Migrations/20240201060511_Add_Table_DataSaubStat.cs b/AsbCloudDb/Migrations/20240201060511_Add_Table_DataSaubStat.cs index fbe4048e..c8326b8b 100644 --- a/AsbCloudDb/Migrations/20240201060511_Add_Table_DataSaubStat.cs +++ b/AsbCloudDb/Migrations/20240201060511_Add_Table_DataSaubStat.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; diff --git a/AsbCloudDb/Migrations/20240221064802_Migrate_ProcessMapPlanDrilling.Designer.cs b/AsbCloudDb/Migrations/20240221064802_Migrate_ProcessMapPlanDrilling.Designer.cs index 641669ec..cd42d36b 100644 --- a/AsbCloudDb/Migrations/20240221064802_Migrate_ProcessMapPlanDrilling.Designer.cs +++ b/AsbCloudDb/Migrations/20240221064802_Migrate_ProcessMapPlanDrilling.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; diff --git a/AsbCloudDb/Migrations/20240221064802_Migrate_ProcessMapPlanDrilling.cs b/AsbCloudDb/Migrations/20240221064802_Migrate_ProcessMapPlanDrilling.cs index 8119881b..a2287e6c 100644 --- a/AsbCloudDb/Migrations/20240221064802_Migrate_ProcessMapPlanDrilling.cs +++ b/AsbCloudDb/Migrations/20240221064802_Migrate_ProcessMapPlanDrilling.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable @@ -10,11 +10,11 @@ namespace AsbCloudDb.Migrations { migrationBuilder.Sql (@"insert " + - @"into " + + @"into " + @"public.t_process_map_plan_drilling " + @"(id, " + @"id_mode, " + - @"axial_load_plan, " + + @"axial_load_plan, " + @"axial_load_limit_max, " + @"delta_pressure_plan, " + @"delta_pressure_limit_max, " + diff --git a/AsbCloudDb/Migrations/20240221075904_Add_ProcessMapPlanReams.Designer.cs b/AsbCloudDb/Migrations/20240221075904_Add_ProcessMapPlanReams.Designer.cs index 028b0bc2..b460b5ad 100644 --- a/AsbCloudDb/Migrations/20240221075904_Add_ProcessMapPlanReams.Designer.cs +++ b/AsbCloudDb/Migrations/20240221075904_Add_ProcessMapPlanReams.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; diff --git a/AsbCloudDb/Migrations/20240221075904_Add_ProcessMapPlanReams.cs b/AsbCloudDb/Migrations/20240221075904_Add_ProcessMapPlanReams.cs index 63e070be..7b0389b4 100644 --- a/AsbCloudDb/Migrations/20240221075904_Add_ProcessMapPlanReams.cs +++ b/AsbCloudDb/Migrations/20240221075904_Add_ProcessMapPlanReams.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; diff --git a/AsbCloudDb/Migrations/20240221091530_Remove_old_ProcessMapPlans.Designer.cs b/AsbCloudDb/Migrations/20240221091530_Remove_old_ProcessMapPlans.Designer.cs index 97407889..97908c6c 100644 --- a/AsbCloudDb/Migrations/20240221091530_Remove_old_ProcessMapPlans.Designer.cs +++ b/AsbCloudDb/Migrations/20240221091530_Remove_old_ProcessMapPlans.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; diff --git a/AsbCloudDb/Migrations/20240221091530_Remove_old_ProcessMapPlans.cs b/AsbCloudDb/Migrations/20240221091530_Remove_old_ProcessMapPlans.cs index 652ff3f3..48c6768a 100644 --- a/AsbCloudDb/Migrations/20240221091530_Remove_old_ProcessMapPlans.cs +++ b/AsbCloudDb/Migrations/20240221091530_Remove_old_ProcessMapPlans.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; diff --git a/AsbCloudDb/Migrations/20240329070104_Update_WellOperationCategory_IdConditioning.Designer.cs b/AsbCloudDb/Migrations/20240329070104_Update_WellOperationCategory_IdConditioning.Designer.cs index 9a85b491..9d023d73 100644 --- a/AsbCloudDb/Migrations/20240329070104_Update_WellOperationCategory_IdConditioning.Designer.cs +++ b/AsbCloudDb/Migrations/20240329070104_Update_WellOperationCategory_IdConditioning.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; diff --git a/AsbCloudDb/Migrations/20240329070104_Update_WellOperationCategory_IdConditioning.cs b/AsbCloudDb/Migrations/20240329070104_Update_WellOperationCategory_IdConditioning.cs index e539a2be..72cbf4e6 100644 --- a/AsbCloudDb/Migrations/20240329070104_Update_WellOperationCategory_IdConditioning.cs +++ b/AsbCloudDb/Migrations/20240329070104_Update_WellOperationCategory_IdConditioning.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20240401094602_Update_DetectedOperation.Designer.cs b/AsbCloudDb/Migrations/20240401094602_Update_DetectedOperation.Designer.cs index 7b762673..06a65271 100644 --- a/AsbCloudDb/Migrations/20240401094602_Update_DetectedOperation.Designer.cs +++ b/AsbCloudDb/Migrations/20240401094602_Update_DetectedOperation.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; diff --git a/AsbCloudDb/Migrations/20240401094602_Update_DetectedOperation.cs b/AsbCloudDb/Migrations/20240401094602_Update_DetectedOperation.cs index 570f957e..20892376 100644 --- a/AsbCloudDb/Migrations/20240401094602_Update_DetectedOperation.cs +++ b/AsbCloudDb/Migrations/20240401094602_Update_DetectedOperation.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20240408112202_Add_NewWellOperationCategories.Designer.cs b/AsbCloudDb/Migrations/20240408112202_Add_NewWellOperationCategories.Designer.cs index caa012fc..3c817bd7 100644 --- a/AsbCloudDb/Migrations/20240408112202_Add_NewWellOperationCategories.Designer.cs +++ b/AsbCloudDb/Migrations/20240408112202_Add_NewWellOperationCategories.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; diff --git a/AsbCloudDb/Migrations/20240408112202_Add_NewWellOperationCategories.cs b/AsbCloudDb/Migrations/20240408112202_Add_NewWellOperationCategories.cs index dfa7431e..8deeee4c 100644 --- a/AsbCloudDb/Migrations/20240408112202_Add_NewWellOperationCategories.cs +++ b/AsbCloudDb/Migrations/20240408112202_Add_NewWellOperationCategories.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20240415043251_Update_WellOperationName.Designer.cs b/AsbCloudDb/Migrations/20240415043251_Update_WellOperationName.Designer.cs index 93fe961c..7e529f49 100644 --- a/AsbCloudDb/Migrations/20240415043251_Update_WellOperationName.Designer.cs +++ b/AsbCloudDb/Migrations/20240415043251_Update_WellOperationName.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using AsbCloudDb.Model; diff --git a/AsbCloudDb/Migrations/20240415043251_Update_WellOperationName.cs b/AsbCloudDb/Migrations/20240415043251_Update_WellOperationName.cs index ddb3c3ea..96b91395 100644 --- a/AsbCloudDb/Migrations/20240415043251_Update_WellOperationName.cs +++ b/AsbCloudDb/Migrations/20240415043251_Update_WellOperationName.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/AsbCloudDb/Migrations/20240613110103_Add_ProcessMapPlanRotor_And_Slide.Designer.cs b/AsbCloudDb/Migrations/20240613110103_Add_ProcessMapPlanRotor_And_Slide.Designer.cs new file mode 100644 index 00000000..8ee2c996 --- /dev/null +++ b/AsbCloudDb/Migrations/20240613110103_Add_ProcessMapPlanRotor_And_Slide.Designer.cs @@ -0,0 +1,9765 @@ +// +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("20240613110103_Add_ProcessMapPlanRotor_And_Slide")] + partial class Add_ProcessMapPlanRotor_And_Slide + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .UseCollation("Russian_Russia.1251") + .HasAnnotation("ProductVersion", "8.0.2") + .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", t => + { + t.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") + .HasColumnName("is_contact"); + + b.Property("Order") + .HasColumnType("integer") + .HasColumnName("order"); + + b.HasKey("Id"); + + b.ToTable("t_company_type"); + + b.HasData( + new + { + Id = 1, + Caption = "Недропользователь", + IsContact = true, + Order = 3 + }, + new + { + Id = 2, + Caption = "Буровой подрядчик", + IsContact = true, + Order = 2 + }, + new + { + Id = 3, + Caption = "Сервис автоматизации бурения", + IsContact = true, + Order = 0 + }, + new + { + Id = 4, + Caption = "Сервис по ГТИ", + IsContact = true, + Order = 6 + }, + new + { + Id = 5, + Caption = "Растворный сервис", + IsContact = true, + Order = 4 + }, + new + { + Id = 6, + Caption = "Сервис по ННБ", + IsContact = true, + Order = 5 + }, + new + { + Id = 7, + Caption = "Служба супервайзинга", + IsContact = false, + Order = 1 + }, + new + { + Id = 9, + Caption = "Сервис по цементированию", + IsContact = true, + Order = 7 + }, + new + { + Id = 11, + Caption = "Дизельный сервис", + IsContact = false, + Order = 9 + }, + new + { + Id = 12, + Caption = "Сервис по обслуживанию верхних силовых приводов", + IsContact = true, + Order = 8 + }); + }); + + 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") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("email") + .HasComment("email"); + + b.Property("FullName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("full_name") + .HasComment("ФИО"); + + b.Property("IdCompanyType") + .HasMaxLength(255) + .HasColumnType("integer") + .HasColumnName("id_company_type") + .HasComment("вид деятельности"); + + b.Property("IdWell") + .HasMaxLength(255) + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("ключ скважины"); + + b.Property("Phone") + .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.HasIndex("IdWell"); + + b.ToTable("t_contact", t => + { + t.HasComment("Контакты"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DailyReports.DailyReport", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Date") + .HasColumnType("date") + .HasColumnName("date") + .HasComment("Дата формирования отчёта"); + + b.Property("DateLastUpdate") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_last_update") + .HasComment("Дата последнего обновления"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("ID скважины"); + + b.Property("SignBlock") + .HasColumnType("jsonb") + .HasColumnName("sign_block") + .HasComment("Подпись"); + + b.Property("SubsystemBlock") + .HasColumnType("jsonb") + .HasColumnName("subsystem_block") + .HasComment("Наработкой подсистем"); + + b.Property("TimeBalanceBlock") + .HasColumnType("jsonb") + .HasColumnName("time_balance_block") + .HasComment("Баланс времени"); + + b.HasKey("Id"); + + b.HasIndex("IdWell", "Date") + .IsUnique(); + + b.ToTable("t_daily_report", t => + { + t.HasComment("Ежедневные отчёты"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DataSaubStat", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AxialLoad") + .HasColumnType("double precision") + .HasColumnName("axial_load") + .HasComment("Фактическая нагрузка"); + + b.Property("AxialLoadLimitMax") + .HasColumnType("double precision") + .HasColumnName("axial_load_limit_max") + .HasComment("Максимально допустимая нагрузка"); + + b.Property("AxialLoadSp") + .HasColumnType("double precision") + .HasColumnName("axial_load_sp") + .HasComment("Ограничение факт. нагрузки"); + + b.Property("BlockSpeedSp") + .HasColumnType("double precision") + .HasColumnName("block_speed_sp") + .HasComment("Ограничение скорости блока"); + + 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("EnabledSubsystems") + .HasColumnType("integer") + .HasColumnName("enabled_subsystems") + .HasComment("Флаги подсистем"); + + b.Property("Flow") + .HasColumnType("double precision") + .HasColumnName("flow") + .HasComment("Фактический расход"); + + b.Property("HasOscillation") + .HasColumnType("boolean") + .HasColumnName("has_oscillation") + .HasComment("Наличие или отсутствие осцилляции"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category") + .HasComment("Название автоопределённой операции"); + + b.Property("IdFeedRegulator") + .HasColumnType("smallint") + .HasColumnName("id_feed_regulator") + .HasComment("Работа при достижении ограничения"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry") + .HasComment("Ключ телеметрии"); + + b.Property("Pressure") + .HasColumnType("double precision") + .HasColumnName("pressure") + .HasComment("Давление"); + + b.Property("PressureIdle") + .HasColumnType("double precision") + .HasColumnName("pressure_idle") + .HasComment("Давление холостого хода"); + + b.Property("PressureSp") + .HasColumnType("double precision") + .HasColumnName("pressure_sp") + .HasComment("Ограничение фактического давления"); + + b.Property("RotorSpeed") + .HasColumnType("double precision") + .HasColumnName("rotor_speed") + .HasComment("Фактическая скорость оборотов ВСП"); + + b.Property("RotorTorque") + .HasColumnType("double precision") + .HasColumnName("rotor_torque") + .HasComment("Фактический момент"); + + b.Property("RotorTorqueLimitMax") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_limit_max") + .HasComment("Максимально допустимый момент"); + + b.Property("RotorTorqueSp") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_sp") + .HasComment("Ограничение факт. момента"); + + b.Property("Speed") + .HasColumnType("double precision") + .HasColumnName("speed") + .HasComment("Скорость бурения"); + + b.HasKey("Id"); + + b.HasIndex("IdCategory"); + + b.HasIndex("IdTelemetry"); + + b.ToTable("t_data_saub_stat", t => + { + t.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", t => + { + t.HasComment("Месторождение"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DetectedOperation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + 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("EnabledSubsystems") + .HasColumnType("integer") + .HasColumnName("enabled_subsystems") + .HasComment("флаги включенных подсистем"); + + b.Property("ExtraData") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("extra_data") + .HasComment("доп. инфо по операции"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category") + .HasComment("Id категории операции"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .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", t => + { + t.HasComment("автоматически определенные операции по телеметрии"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillTest", b => + { + b.Property("Id") + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry") + .HasComment("Идентификатор телеметрии"); + + b.Property("DepthStart") + .HasColumnType("real") + .HasColumnName("depthStart") + .HasComment("Глубина начала"); + + b.Property("Params") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("t_drill_test_params") + .HasComment("Параметры записи drill test"); + + b.Property("TimeStampStart") + .HasColumnType("timestamp with time zone") + .HasColumnName("timestamp_start") + .HasComment("Время начала"); + + b.HasKey("Id", "IdTelemetry"); + + b.HasIndex("IdTelemetry"); + + b.ToTable("t_drill_test", t => + { + t.HasComment("Drill_test"); + }); + }); + + 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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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 = 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" + }, + new + { + Id = 528, + Description = "Разрешение на удаление контакта", + Name = "WellContact.delete" + }, + new + { + Id = 530, + Description = "Разрешение на редактирование плановой конструкции скважины", + Name = "WellSectionPlan.edit" + }, + new + { + Id = 531, + Description = "Разрешение на удаление плановой конструкции скважины", + Name = "WellSectionPlan.delete" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMaps.ProcessMapPlanReam", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .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("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_ream", t => + { + t.HasComment("РТК проработка скважины"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMaps.ProcessMapPlanRotor", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления, атм. Уставка"); + + b.Property("DifferentialPressureLimitMax") + .HasColumnType("double precision") + .HasColumnName("differential_pressure_limit_max") + .HasComment("Перепад давления, атм. Ограничение"); + + b.Property("FlowRate") + .HasColumnType("double precision") + .HasColumnName("flow_rate") + .HasComment("Расход л/с. Уставка"); + + b.Property("FlowRateLimitMax") + .HasColumnType("double precision") + .HasColumnName("flow_rate_limit_max") + .HasComment("Расход л/с. Ограничение"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureLimitMax") + .HasColumnType("double precision") + .HasColumnName("pressure_limit_max") + .HasComment("Максимально допустимое давление, атм"); + + b.Property("RevolutionsPerMinute") + .HasColumnType("double precision") + .HasColumnName("revolution_per_minute") + .HasComment("Обороты на ВСП, об/мин. Уставка"); + + b.Property("RevolutionsPerMinuteLimitMax") + .HasColumnType("double precision") + .HasColumnName("revolutions_per_minute_limit_max") + .HasComment("Обороты на ВСП, об/мин. Ограничение"); + + b.Property("RopLimitMax") + .HasColumnType("double precision") + .HasColumnName("rop_limit_max") + .HasComment("Максимально допустимая скорость, м/ч"); + + b.Property("TopDriveTorque") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque") + .HasComment("Момент на ВСП, кН*м. Уставка"); + + b.Property("TopDriveTorqueLimit") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque_limit_max") + .HasComment("Момент на ВСП, кН*м. Ограничение"); + + b.Property("WeightOnBit") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit") + .HasComment("Нагрузка, т. Уставка"); + + b.Property("WeightOnBitLimitMax") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_limit_max") + .HasComment("Нагрузка, т. Ограничение"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_rotor", t => + { + t.HasComment("РТК план бурение ротор"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMaps.ProcessMapPlanSlide", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления, атм. Уставка"); + + b.Property("DifferentialPressureLimitMax") + .HasColumnType("double precision") + .HasColumnName("differential_pressure_limit_max") + .HasComment("Перепад давления, атм. Ограничение"); + + b.Property("FlowRate") + .HasColumnType("double precision") + .HasColumnName("flow_rate") + .HasComment("Расход л/с. Уставка"); + + b.Property("FlowRateLimitMax") + .HasColumnType("double precision") + .HasColumnName("flow_rate_limit_max") + .HasComment("Расход л/с. Ограничение"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureLimitMax") + .HasColumnType("double precision") + .HasColumnName("pressure_limit_max") + .HasComment("Максимально допустимое давление, атм"); + + b.Property("RopLimitMax") + .HasColumnType("double precision") + .HasColumnName("rop_limit_max") + .HasComment("Максимально допустимая скорость, м/ч"); + + b.Property("Spring") + .HasColumnType("double precision") + .HasColumnName("spring") + .HasComment("Расчётная пружина, градус"); + + b.Property("ToolBuckling") + .HasColumnType("double precision") + .HasColumnName("tool_buckling") + .HasComment("Складывание инструмента, м"); + + b.Property("WeightOnBit") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit") + .HasComment("Нагрузка, т. Уставка"); + + b.Property("WeightOnBitLimitMax") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_limit_max") + .HasComment("Нагрузка, т. Ограничение"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_slide", t => + { + t.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", t => + { + t.HasComment("отношение скважин и компаний"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationContactWell", b => + { + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.HasKey("IdWell", "IdUser"); + + b.HasIndex("IdUser"); + + b.ToTable("t_relation_contact_well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserDrillingProgramPart", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("IdDrillingProgramPart") + .HasColumnType("integer") + .HasColumnName("id_drilling_program_part"); + + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_role") + .HasComment("1 - publisher, 2 - approver"); + + b.HasKey("IdUser", "IdDrillingProgramPart") + .HasName("t_relation_user_drilling_program_part_pk"); + + b.HasIndex("IdDrillingProgramPart"); + + b.ToTable("t_relation_user_drilling_program_part", t => + { + t.HasComment("Отношение пользователей и частей ПБ"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRolePermission", b => + { + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.Property("IdPermission") + .HasColumnType("integer") + .HasColumnName("id_permission"); + + b.HasKey("IdUserRole", "IdPermission"); + + b.HasIndex("IdPermission"); + + b.ToTable("t_relation_user_role_permission", t => + { + t.HasComment("Отношение ролей пользователей и разрешений доступа"); + }); + + b.HasData( + new + { + IdUserRole = 1100, + IdPermission = 102 + }, + new + { + IdUserRole = 1100, + IdPermission = 111 + }, + new + { + IdUserRole = 1101, + IdPermission = 101 + }, + new + { + IdUserRole = 1101, + IdPermission = 100 + }, + new + { + IdUserRole = 1102, + IdPermission = 105 + }, + new + { + IdUserRole = 1102, + IdPermission = 108 + }, + new + { + IdUserRole = 1103, + IdPermission = 104 + }, + new + { + IdUserRole = 1103, + IdPermission = 103 + }, + new + { + IdUserRole = 1104, + IdPermission = 108 + }, + new + { + IdUserRole = 1105, + IdPermission = 107 + }, + new + { + IdUserRole = 1105, + IdPermission = 106 + }, + new + { + IdUserRole = 1106, + IdPermission = 111 + }, + new + { + IdUserRole = 1107, + IdPermission = 110 + }, + new + { + IdUserRole = 1107, + IdPermission = 109 + }, + new + { + IdUserRole = 1108, + IdPermission = 114 + }, + new + { + IdUserRole = 1109, + IdPermission = 113 + }, + new + { + IdUserRole = 1109, + IdPermission = 112 + }, + new + { + IdUserRole = 1110, + IdPermission = 123 + }, + new + { + IdUserRole = 1110, + IdPermission = 114 + }, + new + { + IdUserRole = 1111, + IdPermission = 122 + }, + new + { + IdUserRole = 1111, + IdPermission = 121 + }, + new + { + IdUserRole = 1112, + IdPermission = 117 + }, + new + { + IdUserRole = 1113, + IdPermission = 105 + }, + new + { + IdUserRole = 1113, + IdPermission = 123 + }, + new + { + IdUserRole = 1113, + IdPermission = 120 + }, + new + { + IdUserRole = 1114, + IdPermission = 119 + }, + new + { + IdUserRole = 1114, + IdPermission = 118 + }, + new + { + IdUserRole = 1114, + IdPermission = 200 + }, + new + { + IdUserRole = 1115, + IdPermission = 223 + }, + new + { + IdUserRole = 1116, + IdPermission = 105 + }, + new + { + IdUserRole = 1116, + IdPermission = 102 + }, + new + { + IdUserRole = 1116, + IdPermission = 117 + }, + new + { + IdUserRole = 1116, + IdPermission = 126 + }, + new + { + IdUserRole = 1117, + IdPermission = 125 + }, + new + { + IdUserRole = 1117, + IdPermission = 124 + }, + new + { + IdUserRole = 1200, + IdPermission = 203 + }, + new + { + IdUserRole = 1200, + IdPermission = 230 + }, + new + { + IdUserRole = 1201, + IdPermission = 202 + }, + new + { + IdUserRole = 1201, + IdPermission = 203 + }, + new + { + IdUserRole = 1201, + IdPermission = 220 + }, + new + { + IdUserRole = 1202, + IdPermission = 203 + }, + new + { + IdUserRole = 1202, + IdPermission = 220 + }, + new + { + IdUserRole = 1202, + IdPermission = 236 + }, + new + { + IdUserRole = 1202, + IdPermission = 212 + }, + new + { + IdUserRole = 1203, + IdPermission = 235 + }, + new + { + IdUserRole = 1204, + IdPermission = 202 + }, + new + { + IdUserRole = 1204, + IdPermission = 203 + }, + new + { + IdUserRole = 1205, + IdPermission = 215 + }, + new + { + IdUserRole = 1206, + IdPermission = 203 + }, + new + { + IdUserRole = 1206, + IdPermission = 206 + }, + new + { + IdUserRole = 1207, + IdPermission = 205 + }, + new + { + IdUserRole = 1208, + IdPermission = 218 + }, + new + { + IdUserRole = 1209, + IdPermission = 217 + }, + new + { + IdUserRole = 1210, + IdPermission = 203 + }, + new + { + IdUserRole = 1210, + IdPermission = 230 + }, + new + { + IdUserRole = 1210, + IdPermission = 219 + }, + new + { + IdUserRole = 1211, + IdPermission = 203 + }, + new + { + IdUserRole = 1211, + IdPermission = 220 + }, + new + { + IdUserRole = 1211, + IdPermission = 239 + }, + new + { + IdUserRole = 1212, + IdPermission = 238 + }, + new + { + IdUserRole = 1212, + IdPermission = 237 + }, + new + { + IdUserRole = 1213, + IdPermission = 203 + }, + new + { + IdUserRole = 1213, + IdPermission = 239 + }, + new + { + IdUserRole = 1213, + IdPermission = 212 + }, + new + { + IdUserRole = 1214, + IdPermission = 211 + }, + new + { + IdUserRole = 1214, + IdPermission = 210 + }, + new + { + IdUserRole = 1215, + IdPermission = 203 + }, + new + { + IdUserRole = 1215, + IdPermission = 222 + }, + new + { + IdUserRole = 1216, + IdPermission = 221 + }, + new + { + IdUserRole = 1217, + IdPermission = 226 + }, + new + { + IdUserRole = 1218, + IdPermission = 225 + }, + new + { + IdUserRole = 1218, + IdPermission = 224 + }, + new + { + IdUserRole = 1219, + IdPermission = 203 + }, + new + { + IdUserRole = 1219, + IdPermission = 206 + }, + new + { + IdUserRole = 1219, + IdPermission = 230 + }, + new + { + IdUserRole = 1219, + IdPermission = 232 + }, + new + { + IdUserRole = 1220, + IdPermission = 203 + }, + new + { + IdUserRole = 1220, + IdPermission = 228 + }, + new + { + IdUserRole = 1221, + IdPermission = 202 + }, + new + { + IdUserRole = 1221, + IdPermission = 203 + }, + new + { + IdUserRole = 1221, + IdPermission = 220 + }, + new + { + IdUserRole = 1221, + IdPermission = 234 + }, + new + { + IdUserRole = 1500, + IdPermission = 507 + }, + new + { + IdUserRole = 1500, + IdPermission = 510 + }, + new + { + IdUserRole = 1501, + IdPermission = 214 + }, + new + { + IdUserRole = 1501, + IdPermission = 213 + }, + new + { + IdUserRole = 1502, + IdPermission = 207 + }, + new + { + IdUserRole = 1502, + IdPermission = 208 + }, + new + { + IdUserRole = 2000, + IdPermission = 205 + }, + new + { + IdUserRole = 2000, + IdPermission = 204 + }, + new + { + IdUserRole = 2000, + IdPermission = 245 + }, + new + { + IdUserRole = 2001, + IdPermission = 244 + }, + new + { + IdUserRole = 2001, + IdPermission = 245 + }, + new + { + IdUserRole = 2002, + IdPermission = 244 + }, + new + { + IdUserRole = 2002, + IdPermission = 246 + }, + new + { + IdUserRole = 2002, + IdPermission = 237 + }, + new + { + IdUserRole = 2002, + IdPermission = 238 + }, + new + { + IdUserRole = 2003, + IdPermission = 240 + }, + new + { + IdUserRole = 2003, + IdPermission = 217 + }, + new + { + IdUserRole = 2003, + IdPermission = 216 + }, + new + { + IdUserRole = 2004, + IdPermission = 242 + }, + new + { + IdUserRole = 2004, + IdPermission = 217 + }, + new + { + IdUserRole = 2004, + IdPermission = 216 + }, + new + { + IdUserRole = 2004, + IdPermission = 205 + }, + new + { + IdUserRole = 2004, + IdPermission = 204 + }, + new + { + IdUserRole = 2005, + IdPermission = 247 + }, + new + { + IdUserRole = 2005, + IdPermission = 205 + }, + new + { + IdUserRole = 2005, + IdPermission = 204 + }, + new + { + IdUserRole = 2006, + IdPermission = 243 + }, + new + { + IdUserRole = 2006, + IdPermission = 205 + }, + new + { + IdUserRole = 2006, + IdPermission = 204 + }, + new + { + IdUserRole = 2007, + IdPermission = 241 + }, + new + { + IdUserRole = 2007, + IdPermission = 205 + }, + new + { + IdUserRole = 2007, + IdPermission = 204 + }, + new + { + IdUserRole = 1, + IdPermission = 100 + }, + new + { + IdUserRole = 1, + IdPermission = 101 + }, + new + { + IdUserRole = 1, + IdPermission = 102 + }, + new + { + IdUserRole = 1, + IdPermission = 103 + }, + new + { + IdUserRole = 1, + IdPermission = 104 + }, + new + { + IdUserRole = 1, + IdPermission = 105 + }, + new + { + IdUserRole = 1, + IdPermission = 106 + }, + new + { + IdUserRole = 1, + IdPermission = 107 + }, + new + { + IdUserRole = 1, + IdPermission = 108 + }, + new + { + IdUserRole = 1, + IdPermission = 109 + }, + new + { + IdUserRole = 1, + IdPermission = 110 + }, + new + { + IdUserRole = 1, + IdPermission = 111 + }, + new + { + IdUserRole = 1, + IdPermission = 112 + }, + new + { + IdUserRole = 1, + IdPermission = 113 + }, + new + { + IdUserRole = 1, + IdPermission = 114 + }, + new + { + IdUserRole = 1, + IdPermission = 115 + }, + new + { + IdUserRole = 1, + IdPermission = 116 + }, + new + { + IdUserRole = 1, + IdPermission = 117 + }, + new + { + IdUserRole = 1, + IdPermission = 118 + }, + new + { + IdUserRole = 1, + IdPermission = 119 + }, + new + { + IdUserRole = 1, + IdPermission = 120 + }, + new + { + IdUserRole = 1, + IdPermission = 121 + }, + new + { + IdUserRole = 1, + IdPermission = 122 + }, + new + { + IdUserRole = 1, + IdPermission = 123 + }, + new + { + IdUserRole = 1, + IdPermission = 124 + }, + new + { + IdUserRole = 1, + IdPermission = 125 + }, + new + { + IdUserRole = 1, + IdPermission = 126 + }, + new + { + IdUserRole = 1, + IdPermission = 127 + }, + new + { + IdUserRole = 1, + IdPermission = 128 + }, + new + { + IdUserRole = 1, + IdPermission = 129 + }, + new + { + IdUserRole = 1, + IdPermission = 200 + }, + new + { + IdUserRole = 1, + IdPermission = 201 + }, + new + { + IdUserRole = 1, + IdPermission = 202 + }, + new + { + IdUserRole = 1, + IdPermission = 203 + }, + new + { + IdUserRole = 1, + IdPermission = 204 + }, + new + { + IdUserRole = 1, + IdPermission = 205 + }, + new + { + IdUserRole = 1, + IdPermission = 206 + }, + new + { + IdUserRole = 1, + IdPermission = 207 + }, + new + { + IdUserRole = 1, + IdPermission = 208 + }, + new + { + IdUserRole = 1, + IdPermission = 209 + }, + new + { + IdUserRole = 1, + IdPermission = 210 + }, + new + { + IdUserRole = 1, + IdPermission = 211 + }, + new + { + IdUserRole = 1, + IdPermission = 212 + }, + new + { + IdUserRole = 1, + IdPermission = 213 + }, + new + { + IdUserRole = 1, + IdPermission = 214 + }, + new + { + IdUserRole = 1, + IdPermission = 215 + }, + new + { + IdUserRole = 1, + IdPermission = 216 + }, + new + { + IdUserRole = 1, + IdPermission = 217 + }, + new + { + IdUserRole = 1, + IdPermission = 218 + }, + new + { + IdUserRole = 1, + IdPermission = 219 + }, + new + { + IdUserRole = 1, + IdPermission = 220 + }, + new + { + IdUserRole = 1, + IdPermission = 221 + }, + new + { + IdUserRole = 1, + IdPermission = 222 + }, + new + { + IdUserRole = 1, + IdPermission = 223 + }, + new + { + IdUserRole = 1, + IdPermission = 224 + }, + new + { + IdUserRole = 1, + IdPermission = 225 + }, + new + { + IdUserRole = 1, + IdPermission = 226 + }, + new + { + IdUserRole = 1, + IdPermission = 227 + }, + new + { + IdUserRole = 1, + IdPermission = 228 + }, + new + { + IdUserRole = 1, + IdPermission = 229 + }, + new + { + IdUserRole = 1, + IdPermission = 230 + }, + new + { + IdUserRole = 1, + IdPermission = 231 + }, + new + { + IdUserRole = 1, + IdPermission = 232 + }, + new + { + IdUserRole = 1, + IdPermission = 233 + }, + new + { + IdUserRole = 1, + IdPermission = 234 + }, + new + { + IdUserRole = 1, + IdPermission = 235 + }, + new + { + IdUserRole = 1, + IdPermission = 236 + }, + new + { + IdUserRole = 1, + IdPermission = 237 + }, + new + { + IdUserRole = 1, + IdPermission = 238 + }, + new + { + IdUserRole = 1, + IdPermission = 239 + }, + new + { + IdUserRole = 1, + IdPermission = 240 + }, + new + { + IdUserRole = 1, + IdPermission = 241 + }, + new + { + IdUserRole = 1, + IdPermission = 242 + }, + new + { + IdUserRole = 1, + IdPermission = 243 + }, + new + { + IdUserRole = 1, + IdPermission = 244 + }, + new + { + IdUserRole = 1, + IdPermission = 245 + }, + new + { + IdUserRole = 1, + IdPermission = 246 + }, + new + { + IdUserRole = 1, + IdPermission = 247 + }, + new + { + IdUserRole = 1, + IdPermission = 248 + }, + new + { + IdUserRole = 1, + IdPermission = 249 + }, + new + { + IdUserRole = 1, + IdPermission = 250 + }, + new + { + IdUserRole = 1, + IdPermission = 251 + }, + new + { + IdUserRole = 1, + IdPermission = 252 + }, + new + { + IdUserRole = 1, + IdPermission = 253 + }, + new + { + IdUserRole = 1, + IdPermission = 254 + }, + new + { + IdUserRole = 1, + IdPermission = 255 + }, + new + { + IdUserRole = 1, + IdPermission = 256 + }, + new + { + IdUserRole = 1, + IdPermission = 257 + }, + new + { + IdUserRole = 1, + IdPermission = 258 + }, + new + { + IdUserRole = 1, + IdPermission = 259 + }, + new + { + IdUserRole = 1, + IdPermission = 260 + }, + new + { + IdUserRole = 1, + IdPermission = 261 + }, + new + { + IdUserRole = 1, + IdPermission = 262 + }, + new + { + IdUserRole = 1, + IdPermission = 263 + }, + new + { + IdUserRole = 1, + IdPermission = 264 + }, + new + { + IdUserRole = 1, + IdPermission = 265 + }, + new + { + IdUserRole = 1, + IdPermission = 266 + }, + new + { + IdUserRole = 1, + IdPermission = 267 + }, + new + { + IdUserRole = 1, + IdPermission = 268 + }, + new + { + IdUserRole = 1, + IdPermission = 269 + }, + new + { + IdUserRole = 1, + IdPermission = 380 + }, + new + { + IdUserRole = 1, + IdPermission = 381 + }, + new + { + IdUserRole = 1, + IdPermission = 382 + }, + new + { + IdUserRole = 1, + IdPermission = 383 + }, + new + { + IdUserRole = 1, + IdPermission = 384 + }, + new + { + IdUserRole = 1, + IdPermission = 385 + }, + new + { + IdUserRole = 1, + IdPermission = 386 + }, + new + { + IdUserRole = 1, + IdPermission = 387 + }, + new + { + IdUserRole = 1, + IdPermission = 388 + }, + new + { + IdUserRole = 1, + IdPermission = 389 + }, + new + { + IdUserRole = 1, + IdPermission = 390 + }, + new + { + IdUserRole = 1, + IdPermission = 391 + }, + new + { + IdUserRole = 1, + IdPermission = 400 + }, + new + { + IdUserRole = 1, + IdPermission = 401 + }, + new + { + IdUserRole = 1, + IdPermission = 407 + }, + new + { + IdUserRole = 1, + IdPermission = 408 + }, + new + { + IdUserRole = 1, + IdPermission = 450 + }, + new + { + IdUserRole = 1, + IdPermission = 460 + }, + new + { + IdUserRole = 1, + IdPermission = 461 + }, + new + { + IdUserRole = 1, + IdPermission = 500 + }, + new + { + IdUserRole = 1, + IdPermission = 501 + }, + new + { + IdUserRole = 1, + IdPermission = 502 + }, + new + { + IdUserRole = 1, + IdPermission = 503 + }, + new + { + IdUserRole = 1, + IdPermission = 504 + }, + new + { + IdUserRole = 1, + IdPermission = 505 + }, + new + { + IdUserRole = 1, + IdPermission = 506 + }, + new + { + IdUserRole = 1, + IdPermission = 507 + }, + new + { + IdUserRole = 1, + IdPermission = 510 + }, + new + { + IdUserRole = 1, + IdPermission = 511 + }, + new + { + IdUserRole = 1, + IdPermission = 512 + }, + new + { + IdUserRole = 1, + IdPermission = 516 + }, + new + { + IdUserRole = 1, + IdPermission = 517 + }, + new + { + IdUserRole = 1, + IdPermission = 518 + }, + new + { + IdUserRole = 1, + IdPermission = 519 + }, + new + { + IdUserRole = 1, + IdPermission = 520 + }, + new + { + IdUserRole = 1, + IdPermission = 521 + }, + new + { + IdUserRole = 1, + IdPermission = 522 + }, + new + { + IdUserRole = 1, + IdPermission = 523 + }, + new + { + IdUserRole = 1, + IdPermission = 524 + }, + new + { + IdUserRole = 1, + IdPermission = 525 + }, + new + { + IdUserRole = 1, + IdPermission = 526 + }, + new + { + IdUserRole = 1, + IdPermission = 527 + }, + new + { + IdUserRole = 1, + IdPermission = 528 + }, + new + { + IdUserRole = 1, + IdPermission = 530 + }, + new + { + IdUserRole = 1, + IdPermission = 531 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRoleUserRole", b => + { + b.Property("Id") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.Property("IdInclude") + .HasColumnType("integer") + .HasColumnName("id_include_user_role"); + + b.HasKey("Id", "IdInclude") + .HasName("t_relation_user_role_user_role_pk"); + + b.HasIndex("IdInclude"); + + b.ToTable("t_relation_user_role_user_role", t => + { + t.HasComment("Отношение ролей к ролям"); + }); + + b.HasData( + new + { + Id = 1101, + IdInclude = 1100 + }, + new + { + Id = 1103, + IdInclude = 1102 + }, + new + { + Id = 1105, + IdInclude = 1104 + }, + new + { + Id = 1107, + IdInclude = 1106 + }, + new + { + Id = 1109, + IdInclude = 1108 + }, + new + { + Id = 1111, + IdInclude = 1110 + }, + new + { + Id = 1114, + IdInclude = 1113 + }, + new + { + Id = 1117, + IdInclude = 1116 + }, + new + { + Id = 1203, + IdInclude = 1202 + }, + new + { + Id = 1207, + IdInclude = 1206 + }, + new + { + Id = 1209, + IdInclude = 1208 + }, + new + { + Id = 1212, + IdInclude = 1211 + }, + new + { + Id = 1214, + IdInclude = 1213 + }, + new + { + Id = 1216, + IdInclude = 1215 + }, + new + { + Id = 1218, + IdInclude = 1217 + }, + new + { + Id = 2000, + IdInclude = 1200 + }, + new + { + Id = 2000, + IdInclude = 1201 + }, + new + { + Id = 2000, + IdInclude = 1202 + }, + new + { + Id = 2000, + IdInclude = 1204 + }, + new + { + Id = 2000, + IdInclude = 1205 + }, + new + { + Id = 2000, + IdInclude = 1206 + }, + new + { + Id = 2000, + IdInclude = 1208 + }, + new + { + Id = 2000, + IdInclude = 1210 + }, + new + { + Id = 2000, + IdInclude = 1211 + }, + new + { + Id = 2000, + IdInclude = 1213 + }, + new + { + Id = 2000, + IdInclude = 1215 + }, + new + { + Id = 2000, + IdInclude = 1217 + }, + new + { + Id = 2000, + IdInclude = 1219 + }, + new + { + Id = 2000, + IdInclude = 1220 + }, + new + { + Id = 2000, + IdInclude = 1221 + }, + new + { + Id = 2000, + IdInclude = 1500 + }, + new + { + Id = 2000, + IdInclude = 1501 + }, + new + { + Id = 2000, + IdInclude = 1502 + }, + new + { + Id = 2001, + IdInclude = 1500 + }, + new + { + Id = 2001, + IdInclude = 1501 + }, + new + { + Id = 2001, + IdInclude = 1502 + }, + new + { + Id = 2002, + IdInclude = 1500 + }, + new + { + Id = 2002, + IdInclude = 1501 + }, + new + { + Id = 2002, + IdInclude = 1502 + }, + new + { + Id = 2003, + IdInclude = 1500 + }, + new + { + Id = 2003, + IdInclude = 1501 + }, + new + { + Id = 2003, + IdInclude = 1502 + }, + new + { + Id = 2004, + IdInclude = 1500 + }, + new + { + Id = 2004, + IdInclude = 1501 + }, + new + { + Id = 2004, + IdInclude = 1502 + }, + new + { + Id = 2005, + IdInclude = 1500 + }, + new + { + Id = 2005, + IdInclude = 1501 + }, + new + { + Id = 2005, + IdInclude = 1502 + }, + new + { + Id = 2006, + IdInclude = 1500 + }, + new + { + Id = 2006, + IdInclude = 1501 + }, + new + { + Id = 2006, + IdInclude = 1502 + }, + new + { + Id = 2007, + IdInclude = 1500 + }, + new + { + Id = 2007, + IdInclude = 1501 + }, + new + { + Id = 2007, + IdInclude = 1502 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserUserRole", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.HasKey("IdUser", "IdUserRole"); + + b.HasIndex("IdUserRole"); + + b.ToTable("t_relation_user_user_role", t => + { + t.HasComment("Отношение пользователей и ролей"); + }); + + b.HasData( + new + { + IdUser = 1, + IdUserRole = 1 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ReportProperty", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Begin") + .HasColumnType("timestamp with time zone") + .HasColumnName("begin"); + + b.Property("End") + .HasColumnType("timestamp with time zone") + .HasColumnName("end") + .HasComment("timestamp with time zone"); + + b.Property("Format") + .HasColumnType("integer") + .HasColumnName("format") + .HasComment("Формат отчета"); + + b.Property("IdFile") + .HasColumnType("integer") + .HasColumnName("id_file") + .HasComment("id файла-родителя"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("id скважины"); + + b.Property("Step") + .HasColumnType("integer") + .HasColumnName("step") + .HasComment("размер шага в секундах"); + + b.HasKey("Id"); + + b.HasIndex("IdFile"); + + b.HasIndex("IdWell"); + + b.ToTable("t_report_property", t => + { + t.HasComment("Отчеты с данными по буровым"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Schedule", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("DrillEnd") + .HasColumnType("timestamp with time zone") + .HasColumnName("drill_end") + .HasComment("Конец вахты"); + + b.Property("DrillStart") + .HasColumnType("timestamp with time zone") + .HasColumnName("drill_start") + .HasComment("Начало вахты"); + + b.Property("IdDriller") + .HasColumnType("integer") + .HasColumnName("id_driller") + .HasComment("Идентификатор бурильщика"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Идентификатор скважины"); + + b.Property("ShiftEnd") + .HasColumnType("time without time zone") + .HasColumnName("shift_end") + .HasComment("Конец смены"); + + b.Property("ShiftStart") + .HasColumnType("time without time zone") + .HasColumnName("shift_start") + .HasComment("Начало смены"); + + b.HasKey("Id"); + + b.HasIndex("IdDriller"); + + b.HasIndex("IdWell"); + + b.ToTable("t_schedule", t => + { + t.HasComment("График работы бурильщика"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.SetpointsRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Comment") + .HasColumnType("text") + .HasColumnName("comment") + .HasComment("комментарий для оператора"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Id пользователя, загрузившего файл"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("0: неизвестно, 1:ожидает отправки, 2: отправлено, 3: принято оператором, 4: отклонено оператором, 5: устарело"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("id скважины"); + + b.Property("ObsolescenceSec") + .HasColumnType("integer") + .HasColumnName("obsolescence") + .HasComment("сек. до устаревания"); + + b.Property("Setpoints") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("setpoint_set") + .HasComment("Набор уставок"); + + b.Property("UploadDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdWell"); + + b.ToTable("t_setpoints_rquest", t => + { + t.HasComment("Запросы на изменение уставок панели оператора"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Subsystem", 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"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name"); + + b.HasKey("Id"); + + b.ToTable("t_subsystem", t => + { + t.HasComment("Описание подсистем"); + }); + + b.HasData( + new + { + Id = 1, + Description = "Совместная работа режимов \"Бурение в роторе\" и \"Бурение в слайде\"", + Name = "АПД" + }, + new + { + Id = 11, + Description = "Режим работы \"Бурение в роторе\"", + Name = "АПД ротор" + }, + new + { + Id = 12, + Description = "Режим работы \"Бурение в слайде\"", + Name = "АПД слайд" + }, + new + { + Id = 65536, + Description = "Осцилляция", + Name = "Осцилляция" + }, + new + { + Id = 65537, + Description = "Демпфер", + Name = "Демпфер" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Telemetry", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Info") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("info") + .HasComment("Информация с панели о скважине"); + + b.Property("RemoteUid") + .IsRequired() + .HasColumnType("text") + .HasColumnName("remote_uid") + .HasComment("Идентификатор передающего устройства. Может повторяться в списке, так как комплекты оборудования переезжают от скв. к скв."); + + b.Property("TimeZone") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("timezone") + .HasComment("Смещение часового пояса от UTC"); + + b.HasKey("Id"); + + b.HasIndex(new[] { "RemoteUid" }, "t_telemetry_remote_uid_index"); + + b.ToTable("t_telemetry", t => + { + t.HasComment("таблица привязки телеметрии от комплектов к конкретной скважине."); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaub", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date") + .HasComment("'2021-10-19 18:23:54+05'"); + + b.Property("AxialLoad") + .HasColumnType("real") + .HasColumnName("axial_load") + .HasComment("Осевая нагрузка"); + + b.Property("AxialLoadLimitMax") + .HasColumnType("real") + .HasColumnName("axial_load_limit_max") + .HasComment("Осевая нагрузка. Аварийная макс."); + + b.Property("AxialLoadSp") + .HasColumnType("real") + .HasColumnName("axial_load_sp") + .HasComment("Осевая нагрузка. Задание"); + + b.Property("BitDepth") + .HasColumnType("real") + .HasColumnName("bit_depth") + .HasComment("Положение инструмента"); + + b.Property("BlockPosition") + .HasColumnType("real") + .HasColumnName("block_position") + .HasComment("Высота талевого блока"); + + b.Property("BlockPositionMax") + .HasColumnType("real") + .HasColumnName("block_position_max") + .HasComment("Талевый блок. Макс положение"); + + b.Property("BlockPositionMin") + .HasColumnType("real") + .HasColumnName("block_position_min") + .HasComment("Талевый блок. Мин положение"); + + b.Property("BlockSpeed") + .HasColumnType("real") + .HasColumnName("block_speed") + .HasComment("Скорость талевого блока"); + + b.Property("BlockSpeedSp") + .HasColumnType("real") + .HasColumnName("block_speed_sp") + .HasComment("Скорости талевого блока. Задание"); + + b.Property("BlockSpeedSpDevelop") + .HasColumnType("real") + .HasColumnName("block_speed_sp_develop") + .HasComment("Талевый блок. Задание скорости для проработки"); + + b.Property("BlockSpeedSpRotor") + .HasColumnType("real") + .HasColumnName("block_speed_sp_rotor") + .HasComment("Талевый блок. Задание скорости для роторного бурения"); + + b.Property("BlockSpeedSpSlide") + .HasColumnType("real") + .HasColumnName("block_speed_sp_slide") + .HasComment("Талевый блок. Задание скорости для режима слайда"); + + b.Property("Flow") + .HasColumnType("real") + .HasColumnName("flow") + .HasComment("Расход"); + + b.Property("FlowDeltaLimitMax") + .HasColumnType("real") + .HasColumnName("flow_delta_limit_max") + .HasComment("Расход. Аварийный макс."); + + b.Property("FlowIdle") + .HasColumnType("real") + .HasColumnName("flow_idle") + .HasComment("Расход. Холостой ход"); + + b.Property("HookWeight") + .HasColumnType("real") + .HasColumnName("hook_weight") + .HasComment("Вес на крюке"); + + b.Property("HookWeightIdle") + .HasColumnType("real") + .HasColumnName("hook_weight_idle") + .HasComment("Вес на крюке. Холостой ход"); + + b.Property("HookWeightLimitMax") + .HasColumnType("real") + .HasColumnName("hook_weight_limit_max") + .HasComment("Вес на крюке. Затяжка"); + + b.Property("HookWeightLimitMin") + .HasColumnType("real") + .HasColumnName("hook_weight_limit_min") + .HasComment("Вес на крюке. Посадка"); + + b.Property("IdFeedRegulator") + .HasColumnType("smallint") + .HasColumnName("id_feed_regulator") + .HasComment("Текущий критерий бурения"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user") + .HasComment("Пользователь САУБ"); + + b.Property("Mode") + .HasColumnType("smallint") + .HasColumnName("mode") + .HasComment("Режим САУБ"); + + b.Property("Mse") + .HasColumnType("real") + .HasColumnName("mse") + .HasComment("MSE"); + + b.Property("MseState") + .HasColumnType("smallint") + .HasColumnName("mse_state") + .HasComment("Текущее состояние работы MSE"); + + b.Property("Pressure") + .HasColumnType("real") + .HasColumnName("pressure") + .HasComment("Давление"); + + b.Property("PressureDeltaLimitMax") + .HasColumnType("real") + .HasColumnName("pressure_delta_limit_max") + .HasComment("Давление дифф. Аварийное макс."); + + b.Property("PressureIdle") + .HasColumnType("real") + .HasColumnName("pressure_idle") + .HasComment("Давление. Холостой ход"); + + b.Property("PressureSp") + .HasColumnType("real") + .HasColumnName("pressure_sp") + .HasComment("Давление. Задание"); + + b.Property("PressureSpDevelop") + .HasColumnType("real") + .HasColumnName("pressure_sp_develop") + .HasComment("Давление. Задание для проработки"); + + b.Property("PressureSpRotor") + .HasColumnType("real") + .HasColumnName("pressure_sp_rotor") + .HasComment("Давление. Задание для роторного бурения"); + + b.Property("PressureSpSlide") + .HasColumnType("real") + .HasColumnName("pressure_sp_slide") + .HasComment("Давление. Задание для режима слайда"); + + b.Property("Pump0Flow") + .HasColumnType("real") + .HasColumnName("pump0_flow") + .HasComment("Расход. Буровой насос 1"); + + b.Property("Pump1Flow") + .HasColumnType("real") + .HasColumnName("pump1_flow") + .HasComment("Расход. Буровой насос 2"); + + b.Property("Pump2Flow") + .HasColumnType("real") + .HasColumnName("pump2_flow") + .HasComment("Расход. Буровой насос 3"); + + b.Property("RotorSpeed") + .HasColumnType("real") + .HasColumnName("rotor_speed") + .HasComment("Обороты ротора"); + + b.Property("RotorTorque") + .HasColumnType("real") + .HasColumnName("rotor_torque") + .HasComment("Момент на роторе"); + + b.Property("RotorTorqueIdle") + .HasColumnType("real") + .HasColumnName("rotor_torque_idle") + .HasComment("Момент на роторе. Холостой ход"); + + b.Property("RotorTorqueLimitMax") + .HasColumnType("real") + .HasColumnName("rotor_torque_limit_max") + .HasComment("Момент на роторе. Аварийный макс."); + + b.Property("RotorTorqueSp") + .HasColumnType("real") + .HasColumnName("rotor_torque_sp") + .HasComment("Момент на роторе. Задание"); + + b.Property("WellDepth") + .HasColumnType("real") + .HasColumnName("well_depth") + .HasComment("Глубина забоя"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_data_saub", t => + { + t.HasComment("набор основных данных по SAUB"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaubStat", b => + { + b.Property("Count") + .HasColumnType("bigint") + .HasColumnName("count_items"); + + b.Property("DateMax") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_max"); + + b.Property("DateMin") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_min"); + + b.Property("DepthMax") + .HasColumnType("real") + .HasColumnName("depth_max"); + + b.Property("DepthMin") + .HasColumnType("real") + .HasColumnName("depth_min"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.ToTable((string)null); + + b.ToView("mw_telemetry_datas_saub_stat", (string)null); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSpin", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date") + .HasComment("'2021-10-19 18:23:54+05'"); + + b.Property("Mode") + .HasColumnType("smallint") + .HasColumnName("mode") + .HasComment("Выбранный режим управления"); + + b.Property("PositionRight") + .HasColumnType("real") + .HasColumnName("position_right") + .HasComment("Крайний правый угол осцилляции"); + + b.Property("PositionZero") + .HasColumnType("real") + .HasColumnName("position_zero") + .HasComment("Нулевая позиция осцилляции"); + + b.Property("RevolsLeftLimit") + .HasColumnType("real") + .HasColumnName("revols_left_limit") + .HasComment("Ограничение числа оборотов влево"); + + b.Property("RevolsLeftTotal") + .HasColumnType("real") + .HasColumnName("revols_left_total") + .HasComment("Суммарное количество оборотов влево"); + + b.Property("RevolsRightLimit") + .HasColumnType("real") + .HasColumnName("revols_right_limit") + .HasComment("Ограничение числа оборотов вправо"); + + b.Property("RevolsRightTotal") + .HasColumnType("real") + .HasColumnName("revols_right_total") + .HasComment("Суммарное количество оборотов вправо"); + + b.Property("SpeedLeftSp") + .HasColumnType("real") + .HasColumnName("speed_left_sp") + .HasComment("Заданная скорость вращения влево"); + + b.Property("SpeedRightSp") + .HasColumnType("real") + .HasColumnName("speed_right_sp") + .HasComment("Заданная скорость вращения вправо"); + + b.Property("State") + .HasColumnType("smallint") + .HasColumnName("state") + .HasComment("Переменная этапа"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_data_spin", t => + { + t.HasComment("набор основных данных по SpinMaster"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryEvent", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdEvent") + .HasColumnType("integer") + .HasColumnName("id_event"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category"); + + b.Property("MessageTemplate") + .IsRequired() + .HasColumnType("text") + .HasColumnName("message_template"); + + b.HasKey("IdTelemetry", "IdEvent"); + + b.ToTable("t_telemetry_event", t => + { + t.HasComment("Справочник событий. События формируют сообщения. Разделено по версиям посылок от телеметрии."); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Arg0") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg0") + .HasComment("Аргумент №0 для вставки в шаблон сообщения"); + + b.Property("Arg1") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg1"); + + b.Property("Arg2") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg2"); + + b.Property("Arg3") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg3"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("IdEvent") + .HasColumnType("integer") + .HasColumnName("id_event"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdTelemetryUser") + .HasColumnType("integer") + .HasColumnName("id_telemetry_user") + .HasComment("Пользователь панели отправляющей телеметрию. не пользователь облака."); + + b.Property("WellDepth") + .HasColumnType("double precision") + .HasColumnName("well_depth"); + + b.HasKey("Id"); + + b.HasIndex("IdTelemetry"); + + b.ToTable("t_telemetry_message", t => + { + t.HasComment("Сообщения на буровых"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryUser", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("Level") + .HasColumnType("integer") + .HasColumnName("level"); + + b.Property("Name") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name"); + + b.Property("Patronymic") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("patronymic"); + + b.Property("Surname") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("surname"); + + b.HasKey("IdTelemetry", "IdUser"); + + b.ToTable("t_telemetry_user", t => + { + t.HasComment("Пользователи панели САУБ. Для сообщений."); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryWirelineRunOut", b => + { + b.Property("IdTelemetry") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id_telemetry") + .HasComment("Идентификатор телеметрии"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("IdTelemetry")); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_time") + .HasComment("Отметка времени"); + + b.Property("Hauling") + .HasColumnType("real") + .HasColumnName("hauling") + .HasComment("Наработка талевого каната с момента перетяжки каната, т*км"); + + b.Property("HaulingWarnSp") + .HasColumnType("real") + .HasColumnName("hauling_warn_sp") + .HasComment("Наработка талевого каната до сигнализации о необходимости перетяжки, т*км"); + + b.Property("Replace") + .HasColumnType("real") + .HasColumnName("replace") + .HasComment("Наработка талевого каната с момента замены каната, т*км"); + + b.Property("ReplaceWarnSp") + .HasColumnType("real") + .HasColumnName("replace_warn_sp") + .HasComment("Наработка талевого каната до сигнализации о необходимости замены, т*км"); + + b.HasKey("IdTelemetry"); + + b.ToTable("t_telemetry_wireline_run_out", t => + { + t.HasComment("Наработка талевого каната"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Trajectory.TrajectoryFact", 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("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_trajectory_fact", t => + { + t.HasComment("Загрузка фактической траектории"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Trajectory.TrajectoryPlan", 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_trajectory_plan", t => + { + t.HasComment("Загрузка плановой траектории"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Email") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("email") + .HasComment("должность"); + + b.Property("IdCompany") + .HasColumnType("integer") + .HasColumnName("id_company"); + + b.Property("IdState") + .HasColumnType("smallint") + .HasColumnName("state") + .HasComment("состояние:\n0 - не активен, \n1 - активен, \n2 - заблокирован"); + + b.Property("Login") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("login"); + + b.Property("Name") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name") + .HasComment("имя"); + + b.Property("PasswordHash") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("password_hash") + .HasComment("соленый хэш пароля.\nпервые 5 символов - соль"); + + b.Property("Patronymic") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("patronymic") + .HasComment("отчество"); + + b.Property("Phone") + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .HasColumnName("phone") + .HasComment("номер телефона"); + + b.Property("Position") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("position") + .HasComment("email"); + + b.Property("Surname") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("surname") + .HasComment("фамилия"); + + b.HasKey("Id"); + + b.HasIndex("IdCompany"); + + b.HasIndex("Login") + .IsUnique(); + + b.ToTable("t_user", t => + { + t.HasComment("Пользователи облака"); + }); + + b.HasData( + new + { + Id = 1, + Email = "", + IdCompany = 1, + IdState = (short)1, + Login = "dev", + Name = "Разработчик", + PasswordHash = "Vlcj|4fa529103dde7ff72cfe76185f344d4aa87931f8e1b2044e8a7739947c3d18923464eaad93843e4f809c5e126d013072" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserRole", 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("IdType") + .HasColumnType("integer") + .HasColumnName("id_type") + .HasComment("0-роль из стандартной матрицы, \n1-специальная роль для какого-либо пользователя"); + + b.HasKey("Id"); + + b.ToTable("t_user_role", t => + { + t.HasComment("Роли пользователей в системе"); + }); + + b.HasData( + new + { + Id = 1, + Caption = "root", + IdType = 1 + }, + new + { + Id = 1100, + Caption = "admin_cluster.view", + IdType = 1 + }, + new + { + Id = 1101, + Caption = "admin_cluster.edit", + IdType = 1 + }, + new + { + Id = 1102, + Caption = "admin_company.view", + IdType = 1 + }, + new + { + Id = 1103, + Caption = "admin_company.edit", + IdType = 1 + }, + new + { + Id = 1104, + Caption = "admin_company_type.view", + IdType = 1 + }, + new + { + Id = 1105, + Caption = "admin_company_type.edit", + IdType = 1 + }, + new + { + Id = 1106, + Caption = "admin_deposit.view", + IdType = 1 + }, + new + { + Id = 1107, + Caption = "admin_deposit.edit", + IdType = 1 + }, + new + { + Id = 1108, + Caption = "admin_permission.view", + IdType = 1 + }, + new + { + Id = 1109, + Caption = "admin_permission.edit", + IdType = 1 + }, + new + { + Id = 1110, + Caption = "admin_role.view", + IdType = 1 + }, + new + { + Id = 1111, + Caption = "admin_role.edit", + IdType = 1 + }, + new + { + Id = 1112, + Caption = "admin_telemetry.view", + IdType = 1 + }, + new + { + Id = 1113, + Caption = "admin_user.view", + IdType = 1 + }, + new + { + Id = 1114, + Caption = "admin_user.edit", + IdType = 1 + }, + new + { + Id = 1115, + Caption = "admin_visit_log.view", + IdType = 1 + }, + new + { + Id = 1116, + Caption = "admin_well.view", + IdType = 1 + }, + new + { + Id = 1117, + Caption = "admin_well.edit", + IdType = 1 + }, + new + { + Id = 1200, + Caption = "archive.view", + IdType = 1 + }, + new + { + Id = 1201, + Caption = "cluster.view", + IdType = 1 + }, + new + { + Id = 1202, + Caption = "composite.view", + IdType = 1 + }, + new + { + Id = 1203, + Caption = "composite.edit", + IdType = 1 + }, + new + { + Id = 1204, + Caption = "deposit.view", + IdType = 1 + }, + new + { + Id = 1205, + Caption = "document.view", + IdType = 1 + }, + new + { + Id = 1206, + Caption = "drillProcessFlow.view", + IdType = 1 + }, + new + { + Id = 1207, + Caption = "drillProcessFlow.edit", + IdType = 1 + }, + new + { + Id = 1208, + Caption = "measure.view", + IdType = 1 + }, + new + { + Id = 1209, + Caption = "measure.edit", + IdType = 1 + }, + new + { + Id = 1210, + Caption = "message.view", + IdType = 1 + }, + new + { + Id = 1211, + Caption = "operations.view", + IdType = 1 + }, + new + { + Id = 1212, + Caption = "operations.edit", + IdType = 1 + }, + new + { + Id = 1213, + Caption = "params.view", + IdType = 1 + }, + new + { + Id = 1214, + Caption = "params.edit", + IdType = 1 + }, + new + { + Id = 1215, + Caption = "report.view", + IdType = 1 + }, + new + { + Id = 1216, + Caption = "report.edit", + IdType = 1 + }, + new + { + Id = 1217, + Caption = "setpoints.view", + IdType = 1 + }, + new + { + Id = 1218, + Caption = "setpoints.edit", + IdType = 1 + }, + new + { + Id = 1219, + Caption = "telemetry.view", + IdType = 1 + }, + new + { + Id = 1220, + Caption = "telemetryAnalysis.view", + IdType = 1 + }, + new + { + Id = 1221, + Caption = "well.view", + IdType = 1 + }, + new + { + Id = 1500, + Caption = "Просмотр всего", + IdType = 1 + }, + new + { + Id = 1501, + Caption = "file.edit", + IdType = 1 + }, + new + { + Id = 1502, + Caption = "drillingProgram.edit", + IdType = 1 + }, + new + { + Id = 2000, + Caption = "Заказчик", + IdType = 0 + }, + new + { + Id = 2001, + Caption = "Супервайзер", + IdType = 0 + }, + new + { + Id = 2002, + Caption = "Буровой подрядчик", + IdType = 0 + }, + new + { + Id = 2003, + Caption = "Растворщик", + IdType = 0 + }, + new + { + Id = 2004, + Caption = "Телеметрист", + IdType = 0 + }, + new + { + Id = 2005, + Caption = "Долотный сервис", + IdType = 0 + }, + new + { + Id = 2006, + Caption = "ГТИ", + IdType = 0 + }, + new + { + Id = 2007, + Caption = "Цементирование", + IdType = 0 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserSetting", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("Key") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("key") + .HasComment("Ключ настроек пользователя"); + + b.Property("Value") + .HasColumnType("jsonb") + .HasColumnName("setting_value") + .HasComment("Значение настроек пользователя"); + + b.HasKey("IdUser", "Key"); + + b.ToTable("t_user_settings", t => + { + t.HasComment("настройки интерфейса пользователя"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.RecordBase", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("Actcod") + .HasColumnType("smallint") + .HasColumnName("ACTCOD"); + + b.Property("Date") + .HasColumnType("integer") + .HasColumnName("DATE"); + + b.Property("Recid") + .HasColumnType("smallint") + .HasColumnName("RECID"); + + b.Property("Seqid") + .HasColumnType("integer") + .HasColumnName("SEQID"); + + b.Property("Stknum") + .HasColumnType("smallint") + .HasColumnName("STKNUM"); + + b.Property("Time") + .HasColumnType("integer") + .HasColumnName("TIME"); + + b.Property("Wellid") + .HasColumnType("text") + .HasColumnName("WELLID"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_wits_base"); + + b.UseTptMappingStrategy(); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", 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("IdCluster") + .HasColumnType("integer") + .HasColumnName("id_cluster"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("state") + .HasComment("0 - неизвестно, 1 - в работе, 2 - завершена"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdWellType") + .HasColumnType("integer") + .HasColumnName("id_well_type"); + + 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("IdCluster"); + + b.HasIndex("IdTelemetry") + .IsUnique(); + + b.HasIndex("IdWellType"); + + b.ToTable("t_well", t => + { + t.HasComment("скважины"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellComposite", b => + { + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины получателя"); + + b.Property("IdWellSrc") + .HasColumnType("integer") + .HasColumnName("id_well_src") + .HasComment("Id скважины композита"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_well_section_type") + .HasComment("Id тип секции композита"); + + b.HasKey("IdWell", "IdWellSrc", "IdWellSectionType"); + + b.HasIndex("IdWellSectionType"); + + b.HasIndex("IdWellSrc"); + + b.ToTable("t_well_composite", t => + { + t.HasComment("Композитная скважина"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellFinalDocument", b => + { + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category"); + + b.HasKey("IdWell", "IdUser", "IdCategory") + .HasName("t_well_final_documents_pk"); + + b.HasIndex("IdCategory"); + + b.HasIndex("IdUser"); + + b.ToTable("t_well_final_documents", t => + { + t.HasComment("Дело скважины"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CategoryInfo") + .HasColumnType("text") + .HasColumnName("category_info") + .HasComment("Доп. информация к выбраной категории"); + + b.Property("Comment") + .HasColumnType("text") + .HasColumnName("comment") + .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("DurationHours") + .HasColumnType("double precision") + .HasColumnName("duration_hours") + .HasComment("Продолжительность, часы"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category") + .HasComment("Id категории операции"); + + b.Property("IdPlan") + .HasColumnType("integer") + .HasColumnName("id_plan") + .HasComment("Id плановой операции"); + + b.Property("IdType") + .HasColumnType("integer") + .HasColumnName("id_type") + .HasComment("0 = План или 1 = Факт"); + + b.Property("IdUser") + .HasColumnType("integer"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_well_section_type") + .HasComment("Id тип секции скважины"); + + b.Property("LastUpdateDate") + .HasColumnType("timestamp with time zone"); + + b.HasKey("Id"); + + b.HasIndex("DateStart"); + + b.HasIndex("DepthEnd"); + + b.HasIndex("IdCategory"); + + b.HasIndex("IdPlan"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_well_operation", t => + { + t.HasComment("Данные по операциям на скважине"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperationCategory", 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("IsHidden") + .HasColumnType("boolean"); + + b.Property("KeyValueName") + .HasMaxLength(32) + .HasColumnType("character varying(32)") + .HasColumnName("key_value_name") + .HasComment("Название ключевого показателя операции"); + + b.Property("KeyValueUnits") + .HasMaxLength(16) + .HasColumnType("character varying(16)") + .HasColumnName("key_value_units") + .HasComment("Единицы измерения ключевого показателя операции"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name") + .HasComment("Название категории операции"); + + b.HasKey("Id"); + + b.HasIndex("IdParent"); + + b.ToTable("t_well_operation_category", t => + { + t.HasComment("Справочник операций на скважине"); + }); + + b.HasData( + new + { + Id = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "м/ч", + Name = "БУРЕНИЕ" + }, + new + { + Id = 3001, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО" + }, + new + { + Id = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "КРЕПЛЕНИЕ" + }, + new + { + Id = 3003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ГФР" + }, + new + { + Id = 3004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Вспомогательные операции" + }, + new + { + Id = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Непроизводительное время (НПВ)" + }, + new + { + Id = 3006, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Заключительные работы" + }, + new + { + Id = 4000, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "КНБК" + }, + new + { + Id = 4001, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "м/ч", + Name = "Механическое. бурение" + }, + new + { + Id = 4002, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Статический замер" + }, + new + { + Id = 4003, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Нормализация диаметра скважины" + }, + new + { + Id = 4004, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Наращивание" + }, + new + { + Id = 4005, + IdParent = 3001, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО" + }, + new + { + Id = 4006, + IdParent = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск обсадной колонны" + }, + new + { + Id = 4018, + IdParent = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Крепление" + }, + new + { + Id = 4007, + IdParent = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Цементирование" + }, + new + { + Id = 4008, + IdParent = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Вспомогательные работы при креплении" + }, + new + { + Id = 4009, + IdParent = 3003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка/разборка приборов ГИС" + }, + new + { + Id = 4010, + IdParent = 3003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО" + }, + new + { + Id = 4011, + IdParent = 3003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ГИС" + }, + new + { + Id = 4012, + IdParent = 3004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка, ОБР" + }, + new + { + Id = 4013, + IdParent = 3004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Вспомогательные работы" + }, + new + { + Id = 4014, + IdParent = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ремонт оборудования" + }, + new + { + Id = 4015, + IdParent = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Аварийные работы" + }, + new + { + Id = 4016, + IdParent = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Осложнение" + }, + new + { + Id = 4017, + IdParent = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Незаложенные в ГГД операции" + }, + new + { + Id = 4019, + IdParent = 3006, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Заключительные операции" + }, + new + { + Id = 5000, + IdParent = 4000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Разборка КНБК" + }, + new + { + Id = 5001, + IdParent = 4000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка КНБК" + }, + new + { + Id = 5002, + IdParent = 4001, + IsHidden = true, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", + Name = "Бурение слайдом" + }, + new + { + Id = 5003, + IdParent = 4001, + IsHidden = true, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", + Name = "Бурение ротором" + }, + new + { + Id = 5004, + IdParent = 4002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Замер ЗТС (запись MWD)" + }, + new + { + Id = 5005, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка перед наращиванием" + }, + new + { + Id = 5006, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Проработка во время бурения" + }, + new + { + Id = 5007, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Проработка" + }, + new + { + Id = 5008, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонировка во время бурения" + }, + new + { + Id = 5009, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонировка перед наращиванием" + }, + new + { + Id = 5010, + IdParent = 4004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Наращивание" + }, + new + { + Id = 5011, + IdParent = 4004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Удержание в клиньях" + }, + new + { + Id = 5012, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем инструмента" + }, + new + { + Id = 5013, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем КНБК" + }, + new + { + Id = 5014, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск инструмента" + }, + new + { + Id = 5015, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск КНБК" + }, + new + { + Id = 5016, + IdParent = 4006, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка при спуске ОК" + }, + new + { + Id = 5017, + IdParent = 4006, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск ОК" + }, + new + { + Id = 5018, + IdParent = 4007, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ОЗЦ" + }, + new + { + Id = 5019, + IdParent = 4007, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Цементирование" + }, + new + { + Id = 5020, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Опрессовка БИ" + }, + new + { + Id = 5021, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Опрессовка ОК" + }, + new + { + Id = 5022, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПЗР при спуске ОК" + }, + new + { + Id = 5023, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПЗР при цементировании" + }, + new + { + Id = 5024, + IdParent = 4009, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Разборка комплекса приборов ГИС" + }, + new + { + Id = 5025, + IdParent = 4009, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка комплекса приборов ГИС" + }, + new + { + Id = 5026, + IdParent = 4010, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем приборов ГИС (на трубах)" + }, + new + { + Id = 5027, + IdParent = 4010, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск приборов ГИС (на трубах)" + }, + new + { + Id = 5028, + IdParent = 4011, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Комплекс ГИС на жестком кабеле" + }, + new + { + Id = 5029, + IdParent = 4011, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Комплекс ГИС на кабеле" + }, + new + { + Id = 5030, + IdParent = 4011, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Комплекс ГИС на трубах" + }, + new + { + Id = 5031, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Закачка/прокачка пачки" + }, + new + { + Id = 5032, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Обработка БР" + }, + new + { + Id = 5033, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ориентирование ТС при бурении" + }, + new + { + Id = 5034, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Перезапись гаммы-каротажа" + }, + new + { + Id = 5035, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Приготовление БР" + }, + new + { + Id = 5036, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка" + }, + new + { + Id = 5037, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Разбуривание тех.оснастки" + }, + new + { + Id = 5038, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск инструмента с проработкой" + }, + new + { + Id = 5039, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ВМР" + }, + new + { + Id = 5040, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Демонтаж ПВО" + }, + new + { + Id = 5041, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Долив затруба при подъёме" + }, + new + { + Id = 5042, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Монтаж ПВО" + }, + new + { + Id = 5043, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Наработка жёлоба" + }, + new + { + Id = 5044, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Обвязка устья с циркуляционной системой" + }, + new + { + Id = 5045, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Оборудование устья" + }, + new + { + Id = 5046, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Опрессовка ПВО" + }, + new + { + Id = 5047, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Перемонтаж ПВО " + }, + new + { + Id = 5048, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Перетяжка талевого каната" + }, + new + { + Id = 5049, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПЗР при сборке КНБК" + }, + new + { + Id = 5050, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Полная замена талевого каната" + }, + new + { + Id = 5051, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПР перед забуркой направления" + }, + new + { + Id = 5052, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Продувка манифольда" + }, + new + { + Id = 5053, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Срезка" + }, + new + { + Id = 5054, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Тайм-дриллинг" + }, + new + { + Id = 5055, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Тех.отстой" + }, + new + { + Id = 5056, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Учебная тревога \"Выброс\"" + }, + new + { + Id = 5057, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Чистка ЦСГО/емкостного блока" + }, + new + { + Id = 5058, + IdParent = 4014, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ремонт бурового оборудования" + }, + new + { + Id = 5059, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ловильные работы" + }, + new + { + Id = 5060, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ожидание" + }, + new + { + Id = 5061, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Определение места прихвата и ЛМ" + }, + new + { + Id = 5062, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Работа яссом" + }, + new + { + Id = 5063, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Расхаживание" + }, + new + { + Id = 5064, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО - колокол" + }, + new + { + Id = 5065, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО - метчик" + }, + new + { + Id = 5066, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО - овершот" + }, + new + { + Id = 5067, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО - труболовка" + }, + new + { + Id = 5068, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Торпедирование (встряхивание)" + }, + new + { + Id = 5069, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Торпедирование (отстрел)" + }, + new + { + Id = 5070, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Установка ванн" + }, + new + { + Id = 5071, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Фрезеровка" + }, + new + { + Id = 5072, + IdParent = 4016, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Контролируемое ГНВП" + }, + new + { + Id = 5073, + IdParent = 4016, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Поглощение" + }, + new + { + Id = 5074, + IdParent = 4016, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сальникообразование" + }, + new + { + Id = 5075, + IdParent = 4016, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Утяжеление БР" + }, + new + { + Id = 5076, + IdParent = 4017, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "НПВ / прочее" + }, + new + { + Id = 5077, + IdParent = 4017, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Обработка раствора (несоответствие параметров)" + }, + new + { + Id = 5078, + IdParent = 4017, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "подъем ОК" + }, + new + { + Id = 5079, + IdParent = 4017, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ревизия КНБК/инструмента/ЗТС" + }, + new + { + Id = 5082, + IdParent = 4000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка устройства ориентирования КО" + }, + new + { + Id = 5083, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Проработка принудительная" + }, + new + { + Id = 5084, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонировка подъем БИ, продувка" + }, + new + { + Id = 5085, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск бурильного инструмента со сборкой с мостков" + }, + new + { + Id = 5086, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем БИ с выбросом на мостки" + }, + new + { + Id = 5087, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск БИ со сборкой с мостков" + }, + new + { + Id = 5088, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка и спуск ТБТ" + }, + new + { + Id = 5089, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск КО на транспортной колонне" + }, + new + { + Id = 5090, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Отворот допускной трубы" + }, + new + { + Id = 5091, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Активация подвески, опрессовка" + }, + new + { + Id = 5092, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Монтаж, опрессовка ФА" + }, + new + { + Id = 5093, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка хвостовика 114мм (согласно схеме)" + }, + new + { + Id = 5094, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПЗР к спуску УЭЦН" + }, + new + { + Id = 5095, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Активация подвески (потайной колонны, хвостовика)" + }, + new + { + Id = 5096, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонирование перед спуском" + }, + new + { + Id = 5097, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка - перевод скважины на новый раствор" + }, + new + { + Id = 5098, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка БИ с мостков на подсвечник" + }, + new + { + Id = 5099, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подготовка ствола скважины. Перезапись ГК в интервале установки КО." + }, + new + { + Id = 5100, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Смена рабочего переводника ВСП" + }, + new + { + Id = 5101, + IdParent = 4014, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ремонт" + }, + new + { + Id = 5102, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск пакера" + }, + new + { + Id = 5103, + IdParent = 4011, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Запись гамма-каратожа" + }, + new + { + Id = 5104, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонирование спуск БИ" + }, + new + { + Id = 5105, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка клин-отклонителя" + }, + new + { + Id = 5106, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ориентирование и посадка клина-отклонителя" + }, + new + { + Id = 5107, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Протяжка подъемного патрубка подвески" + }, + new + { + Id = 5108, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем клина-отклонителя" + }, + new + { + Id = 5109, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Стыковка стингера с хвостовиком основного ствола" + }, + new + { + Id = 5110, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ориентирование и установка стыковочного узла хвостовика" + }, + new + { + Id = 5111, + IdParent = 4001, + IsHidden = false, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", + Name = "Бурение с отбором керна" + }, + new + { + Id = 5112, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Работа пакером в обсадной колонне" + }, + new + { + Id = 5113, + IdParent = 4001, + IsHidden = false, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", + Name = "Бурение" + }, + new + { + Id = 5114, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ТО оборудования" + }, + new + { + Id = 5115, + IdParent = 4019, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск НКТ" + }, + new + { + Id = 5116, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Вырезка окна" + }, + new + { + Id = 5117, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Расширение ствола" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSectionType", 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("Order") + .HasColumnType("real") + .HasColumnName("order") + .HasComment("Порядок"); + + b.HasKey("Id"); + + b.ToTable("t_well_section_type", t => + { + t.HasComment("конструкция секции скважины"); + }); + + b.HasData( + new + { + Id = 1, + Caption = "Пилотный ствол", + Order = 4f + }, + new + { + Id = 2, + Caption = "Направление", + Order = 0f + }, + new + { + Id = 3, + Caption = "Кондуктор", + Order = 1f + }, + new + { + Id = 4, + Caption = "Эксплуатационная колонна", + Order = 3f + }, + new + { + Id = 5, + Caption = "Транспортный ствол", + Order = 5f + }, + new + { + Id = 6, + Caption = "Хвостовик", + Order = 6f + }, + new + { + Id = 7, + Caption = "Пилотный ствол 2", + Order = 4.1f + }, + new + { + Id = 8, + Caption = "Направление 2", + Order = 0.1f + }, + new + { + Id = 9, + Caption = "Кондуктор 2", + Order = 1.1f + }, + new + { + Id = 10, + Caption = "Эксплуатационная колонна 2", + Order = 3.1f + }, + new + { + Id = 11, + Caption = "Транспортный ствол 2", + Order = 5.1f + }, + new + { + Id = 12, + Caption = "Хвостовик 2", + Order = 6.1f + }, + new + { + Id = 13, + Caption = "Пилотный ствол 3", + Order = 4.2f + }, + new + { + Id = 14, + Caption = "Направление 3", + Order = 0.2f + }, + new + { + Id = 15, + Caption = "Кондуктор 3", + Order = 1.2f + }, + new + { + Id = 16, + Caption = "Эксплуатационная колонна 3", + Order = 3.2f + }, + new + { + Id = 17, + Caption = "Транспортный ствол 3", + Order = 5.2f + }, + new + { + Id = 18, + Caption = "Хвостовик 3", + Order = 6.2f + }, + new + { + Id = 19, + Caption = "Пилотный ствол 4", + Order = 4.3f + }, + new + { + Id = 20, + Caption = "Направление 4", + Order = 0.3f + }, + new + { + Id = 21, + Caption = "Кондуктор 4", + Order = 1.3f + }, + new + { + Id = 22, + Caption = "Эксплуатационная колонна 4", + Order = 3.3f + }, + new + { + Id = 23, + Caption = "Транспортный ствол 4", + Order = 5.3f + }, + new + { + Id = 24, + Caption = "Хвостовик 4", + Order = 6.3f + }, + new + { + Id = 25, + Caption = "Пилотный ствол 5", + Order = 4.4f + }, + new + { + Id = 26, + Caption = "Направление 5", + Order = 0.4f + }, + new + { + Id = 27, + Caption = "Кондуктор 5", + Order = 1.4f + }, + new + { + Id = 28, + Caption = "Эксплуатационная колонна 5", + Order = 3.4f + }, + new + { + Id = 29, + Caption = "Транспортный ствол 5", + Order = 5.4f + }, + new + { + Id = 30, + Caption = "Хвостовик 5", + Order = 6.4f + }, + new + { + Id = 31, + Caption = "Техническая колонна", + Order = 2f + }, + new + { + Id = 32, + Caption = "Техническая колонна 2", + Order = 2.1f + }, + new + { + Id = 33, + Caption = "Техническая колонна 3", + Order = 2.2f + }, + new + { + Id = 34, + Caption = "Хвостовик 6", + Order = 6.5f + }, + new + { + Id = 35, + Caption = "Хвостовик 7", + Order = 6.6f + }, + new + { + Id = 36, + Caption = "Хвостовик 8", + Order = 6.7f + }, + new + { + Id = 37, + Caption = "Хвостовик 9", + Order = 6.8f + }, + new + { + Id = 38, + Caption = "Хвостовик 10", + Order = 6.9f + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSections.WellSectionPlan", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + 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("IdSectionType") + .HasColumnType("integer") + .HasColumnName("id_section_type") + .HasComment("Тип секции"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user") + .HasComment("Id пользователя"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("InnerDiameter") + .HasColumnType("double precision") + .HasColumnName("inner_diameter") + .HasComment("Внутренний диаметр"); + + b.Property("LastUpdateDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_last_update") + .HasComment("Дата последнего обновления"); + + b.Property("OuterDiameter") + .HasColumnType("double precision") + .HasColumnName("outer_diameter") + .HasComment("Внешний диаметр"); + + b.HasKey("Id"); + + b.HasIndex("IdSectionType"); + + b.HasIndex("IdWell", "IdSectionType") + .IsUnique(); + + b.ToTable("t_well_section_plan"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellType", 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.HasKey("Id"); + + b.ToTable("t_well_type", t => + { + t.HasComment("конструкция скважины"); + }); + + b.HasData( + new + { + Id = 1, + Caption = "Наклонно-направленная" + }, + new + { + Id = 2, + Caption = "Горизонтальная" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record1", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Blkpos") + .HasColumnType("real") + .HasColumnName("BLKPOS"); + + b.Property("Chkp") + .HasColumnType("real") + .HasColumnName("CHKP"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptbitv") + .HasColumnType("real") + .HasColumnName("DEPTBITV"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptretm") + .HasColumnType("real") + .HasColumnName("DEPTRETM"); + + b.Property("Deptvert") + .HasColumnType("real") + .HasColumnName("DEPTVERT"); + + b.Property("Gasa") + .HasColumnType("real") + .HasColumnName("GASA"); + + b.Property("Hkla") + .HasColumnType("real") + .HasColumnName("HKLA"); + + b.Property("Hklx") + .HasColumnType("real") + .HasColumnName("HKLX"); + + b.Property("Lagstks") + .HasColumnType("smallint") + .HasColumnName("LAGSTKS"); + + b.Property("Mcia") + .HasColumnType("real") + .HasColumnName("MCIA"); + + b.Property("Mcoa") + .HasColumnType("real") + .HasColumnName("MCOA"); + + b.Property("Mdia") + .HasColumnType("real") + .HasColumnName("MDIA"); + + b.Property("Mdoa") + .HasColumnType("real") + .HasColumnName("MDOA"); + + b.Property("Mfia") + .HasColumnType("real") + .HasColumnName("MFIA"); + + b.Property("Mfoa") + .HasColumnType("real") + .HasColumnName("MFOA"); + + b.Property("Mfop") + .HasColumnType("smallint") + .HasColumnName("MFOP"); + + b.Property("Mtia") + .HasColumnType("real") + .HasColumnName("MTIA"); + + b.Property("Mtoa") + .HasColumnType("real") + .HasColumnName("MTOA"); + + b.Property("Ropa") + .HasColumnType("real") + .HasColumnName("ROPA"); + + b.Property("Rpma") + .HasColumnType("smallint") + .HasColumnName("RPMA"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Spm1") + .HasColumnType("smallint") + .HasColumnName("SPM1"); + + b.Property("Spm2") + .HasColumnType("smallint") + .HasColumnName("SPM2"); + + b.Property("Spm3") + .HasColumnType("smallint") + .HasColumnName("SPM3"); + + b.Property("Sppa") + .HasColumnType("real") + .HasColumnName("SPPA"); + + b.Property("Stkc") + .HasColumnType("integer") + .HasColumnName("STKC"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.Property("Torqa") + .HasColumnType("real") + .HasColumnName("TORQA"); + + b.Property("Torqx") + .HasColumnType("real") + .HasColumnName("TORQX"); + + b.Property("Tvolact") + .HasColumnType("real") + .HasColumnName("TVOLACT"); + + b.Property("Tvolcact") + .HasColumnType("real") + .HasColumnName("TVOLCACT"); + + b.Property("Woba") + .HasColumnType("real") + .HasColumnName("WOBA"); + + b.Property("Wobx") + .HasColumnType("real") + .HasColumnName("WOBX"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_1"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record50", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("DeptmeasGdpMc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_GDP_mc"); + + b.Property("DeptmeasMcrstat") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_MCRSTAT"); + + b.Property("DeptmeasRa33Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33_mc"); + + b.Property("DeptmeasRa33f2Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33F2_mc"); + + b.Property("DeptmeasRa33f4Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33F4_mc"); + + b.Property("DeptmeasRp33Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33_mc"); + + b.Property("DeptmeasRp33f2Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33F2_mc"); + + b.Property("DeptmeasRp33f4Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33F4_mc"); + + b.Property("DeptmeasSlvlMc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_SLVL_mc"); + + b.Property("GdpMc") + .HasColumnType("real") + .HasColumnName("GDP_mc"); + + b.Property("Mcrstat") + .HasColumnType("real") + .HasColumnName("MCRSTAT"); + + b.Property("Ra33Mc") + .HasColumnType("real") + .HasColumnName("RA33_mc"); + + b.Property("Ra33f2Mc") + .HasColumnType("real") + .HasColumnName("RA33F2_mc"); + + b.Property("Ra33f4Mc") + .HasColumnType("real") + .HasColumnName("RA33F4_mc"); + + b.Property("Rp33Mc") + .HasColumnType("real") + .HasColumnName("RP33_mc"); + + b.Property("Rp33f2Mc") + .HasColumnType("real") + .HasColumnName("RP33F2_mc"); + + b.Property("Rp33f4Mc") + .HasColumnType("real") + .HasColumnName("RP33F4_mc"); + + b.Property("SlvlMc") + .HasColumnType("real") + .HasColumnName("SLVL_mc"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_50"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record60", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Btot") + .HasColumnType("real") + .HasColumnName("Btot"); + + b.Property("Bx") + .HasColumnType("real") + .HasColumnName("Bx"); + + b.Property("By") + .HasColumnType("real") + .HasColumnName("By"); + + b.Property("Bz") + .HasColumnType("real") + .HasColumnName("Bz"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Gtot") + .HasColumnType("real") + .HasColumnName("Gtot"); + + b.Property("Gx") + .HasColumnType("real") + .HasColumnName("Gx"); + + b.Property("Gy") + .HasColumnType("real") + .HasColumnName("Gy"); + + b.Property("Gz") + .HasColumnType("real") + .HasColumnName("Gz"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_60"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record61", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Att06h") + .HasColumnType("real") + .HasColumnName("ATT06H"); + + b.Property("Att06l") + .HasColumnType("real") + .HasColumnName("ATT06L"); + + b.Property("Att10h") + .HasColumnType("real") + .HasColumnName("ATT10H"); + + b.Property("Att10l") + .HasColumnType("real") + .HasColumnName("ATT10L"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Phl1f1") + .HasColumnType("real") + .HasColumnName("PHL1F1"); + + b.Property("Phl1f2") + .HasColumnType("real") + .HasColumnName("PHL1F2"); + + b.Property("Phl2f1") + .HasColumnType("real") + .HasColumnName("PHL2F1"); + + b.Property("Phl2f2") + .HasColumnType("real") + .HasColumnName("PHL2F2"); + + b.Property("Status") + .HasColumnType("real") + .HasColumnName("Status"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_61"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record7", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptsvym") + .HasColumnType("real") + .HasColumnName("DEPTSVYM"); + + b.Property("Deptsvyv") + .HasColumnType("real") + .HasColumnName("DEPTSVYV"); + + b.Property("Passnum") + .HasColumnType("smallint") + .HasColumnName("PASSNUM"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Svyazc") + .HasColumnType("real") + .HasColumnName("SVYAZC"); + + b.Property("Svyazu") + .HasColumnType("real") + .HasColumnName("SVYAZU"); + + b.Property("Svydls") + .HasColumnType("real") + .HasColumnName("SVYDLS"); + + b.Property("Svyew") + .HasColumnType("real") + .HasColumnName("SVYEW"); + + b.Property("Svygtf") + .HasColumnType("real") + .HasColumnName("SVYGTF"); + + b.Property("Svyinc") + .HasColumnType("real") + .HasColumnName("SVYINC"); + + b.Property("Svymtf") + .HasColumnType("real") + .HasColumnName("SVYMTF"); + + b.Property("Svyns") + .HasColumnType("real") + .HasColumnName("SVYNS"); + + b.Property("Svytype") + .HasColumnType("text") + .HasColumnName("SVYTYPE"); + + b.Property("Svywalk") + .HasColumnType("real") + .HasColumnName("SVYWALK"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_7"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record8", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptbitv") + .HasColumnType("real") + .HasColumnName("DEPTBITV"); + + b.Property("Deptcalm") + .HasColumnType("real") + .HasColumnName("DEPTCALM"); + + b.Property("Deptcalv") + .HasColumnType("real") + .HasColumnName("DEPTCALV"); + + b.Property("Deptfdm") + .HasColumnType("real") + .HasColumnName("DEPTFDM"); + + b.Property("Deptfdv") + .HasColumnType("real") + .HasColumnName("DEPTFDV"); + + b.Property("Deptgr1m") + .HasColumnType("real") + .HasColumnName("DEPTGR1M"); + + b.Property("Deptgr1v") + .HasColumnType("real") + .HasColumnName("DEPTGR1V"); + + b.Property("Deptgr2m") + .HasColumnType("real") + .HasColumnName("DEPTGR2M"); + + b.Property("Deptgr2v") + .HasColumnType("real") + .HasColumnName("DEPTGR2V"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptp1m") + .HasColumnType("real") + .HasColumnName("DEPTP1M"); + + b.Property("Deptp1v") + .HasColumnType("real") + .HasColumnName("DEPTP1V"); + + b.Property("Deptp2m") + .HasColumnType("real") + .HasColumnName("DEPTP2M"); + + b.Property("Deptp2v") + .HasColumnType("real") + .HasColumnName("DEPTP2V"); + + b.Property("Deptrs1m") + .HasColumnType("real") + .HasColumnName("DEPTRS1M"); + + b.Property("Deptrs1v") + .HasColumnType("real") + .HasColumnName("DEPTRS1V"); + + b.Property("Deptrs2m") + .HasColumnType("real") + .HasColumnName("DEPTRS2M"); + + b.Property("Deptrs2v") + .HasColumnType("real") + .HasColumnName("DEPTRS2V"); + + b.Property("Deptvert") + .HasColumnType("real") + .HasColumnName("DEPTVERT"); + + b.Property("Mclp") + .HasColumnType("real") + .HasColumnName("MCLP"); + + b.Property("Mfd") + .HasColumnType("real") + .HasColumnName("MFD"); + + b.Property("Mffp") + .HasColumnType("real") + .HasColumnName("MFFP"); + + b.Property("Mfpp") + .HasColumnType("real") + .HasColumnName("MFPP"); + + b.Property("Mfrann") + .HasColumnType("real") + .HasColumnName("MFRANN"); + + b.Property("Mfrpipe") + .HasColumnType("real") + .HasColumnName("MFRPIPE"); + + b.Property("Mftann") + .HasColumnType("real") + .HasColumnName("MFTANN"); + + b.Property("Mftpipe") + .HasColumnType("real") + .HasColumnName("MFTPIPE"); + + b.Property("Mg1") + .HasColumnType("real") + .HasColumnName("MG1"); + + b.Property("Mg1c") + .HasColumnType("real") + .HasColumnName("MG1C"); + + b.Property("Mg2") + .HasColumnType("real") + .HasColumnName("MG2"); + + b.Property("Mg2c") + .HasColumnType("real") + .HasColumnName("MG2C"); + + b.Property("Mpo1") + .HasColumnType("real") + .HasColumnName("MPO1"); + + b.Property("Mpo2") + .HasColumnType("real") + .HasColumnName("MPO2"); + + b.Property("Mr1") + .HasColumnType("real") + .HasColumnName("MR1"); + + b.Property("Mr1c") + .HasColumnType("real") + .HasColumnName("MR1C"); + + b.Property("Mr2") + .HasColumnType("real") + .HasColumnName("MR2"); + + b.Property("Mr2c") + .HasColumnType("real") + .HasColumnName("MR2C"); + + b.Property("Passnum") + .HasColumnType("smallint") + .HasColumnName("PASSNUM"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Spare6") + .HasColumnType("real") + .HasColumnName("SPARE6"); + + b.Property("Spare7") + .HasColumnType("real") + .HasColumnName("SPARE7"); + + b.Property("Spare8") + .HasColumnType("real") + .HasColumnName("SPARE8"); + + b.Property("Spare9") + .HasColumnType("real") + .HasColumnName("SPARE9"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_8"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Cluster", b => + { + b.HasOne("AsbCloudDb.Model.Deposit", "Deposit") + .WithMany("Clusters") + .HasForeignKey("IdDeposit") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_cluster_t_deposit_id_fk"); + + b.Navigation("Deposit"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Company", b => + { + b.HasOne("AsbCloudDb.Model.CompanyType", "CompanyType") + .WithMany("Companies") + .HasForeignKey("IdCompanyType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("CompanyType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Contact", b => + { + b.HasOne("AsbCloudDb.Model.CompanyType", "CompanyType") + .WithMany("Contacts") + .HasForeignKey("IdCompanyType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("Contacts") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("CompanyType"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DailyReports.DailyReport", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DataSaubStat", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DetectedOperation", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillTest", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillingProgramPart", b => + { + b.HasOne("AsbCloudDb.Model.FileCategory", "FileCategory") + .WithMany() + .HasForeignKey("IdFileCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("DrillingProgramParts") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("FileCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Faq", b => + { + b.HasOne("AsbCloudDb.Model.User", "AuthorAnswer") + .WithMany() + .HasForeignKey("IdAuthorAnswer"); + + b.HasOne("AsbCloudDb.Model.User", "AuthorQuestion") + .WithMany() + .HasForeignKey("IdAuthorQuestion") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("AuthorAnswer"); + + b.Navigation("AuthorQuestion"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileInfo", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany("Files") + .HasForeignKey("IdAuthor"); + + b.HasOne("AsbCloudDb.Model.FileCategory", "FileCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("FileCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileMark", b => + { + b.HasOne("AsbCloudDb.Model.FileInfo", "FileInfo") + .WithMany("FileMarks") + .HasForeignKey("IdFile") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_file_mark_t_file_info_fk"); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany("FileMarks") + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_user_t_file_mark_fk"); + + b.Navigation("FileInfo"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemFloat", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemInt", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemString", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.HelpPage", b => + { + b.HasOne("AsbCloudDb.Model.FileCategory", "FileCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("FileCategory"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.LimitingParameter", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Manuals.Manual", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.FileCategory", "Category") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Manuals.ManualDirectory", "Directory") + .WithMany("Manuals") + .HasForeignKey("IdDirectory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Category"); + + b.Navigation("Directory"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Manuals.ManualDirectory", b => + { + b.HasOne("AsbCloudDb.Model.Manuals.ManualDirectory", "Parent") + .WithMany("Children") + .HasForeignKey("IdParent") + .OnDelete(DeleteBehavior.Cascade); + + b.Navigation("Parent"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Measure", b => + { + b.HasOne("AsbCloudDb.Model.MeasureCategory", "Category") + .WithMany("Measures") + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Category"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Notification", b => + { + b.HasOne("AsbCloudDb.Model.NotificationCategory", "NotificationCategory") + .WithMany("Notifications") + .HasForeignKey("IdNotificationCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("NotificationCategory"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.OperationValue", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdOperationCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMaps.ProcessMapPlanReam", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMaps.ProcessMapPlanRotor", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMaps.ProcessMapPlanRotor", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMaps.ProcessMapPlanSlide", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMaps.ProcessMapPlanSlide", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => + { + b.HasOne("AsbCloudDb.Model.Company", "Company") + .WithMany("RelationCompaniesWells") + .HasForeignKey("IdCompany") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_relation_company_well_t_company_id_fk"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("RelationCompaniesWells") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_relation_company_well_t_well_id_fk"); + + b.Navigation("Company"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationContactWell", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany("RelationContactsWells") + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserDrillingProgramPart", b => + { + b.HasOne("AsbCloudDb.Model.DrillingProgramPart", "DrillingProgramPart") + .WithMany("RelatedUsers") + .HasForeignKey("IdDrillingProgramPart") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("DrillingProgramPart"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRolePermission", b => + { + b.HasOne("AsbCloudDb.Model.Permission", "Permission") + .WithMany("RelationUserRolePermissions") + .HasForeignKey("IdPermission") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "UserRole") + .WithMany("RelationUserRolePermissions") + .HasForeignKey("IdUserRole") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Permission"); + + b.Navigation("UserRole"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRoleUserRole", b => + { + b.HasOne("AsbCloudDb.Model.UserRole", "Role") + .WithMany("RelationUserRoleUserRoles") + .HasForeignKey("Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "IncludeRole") + .WithMany() + .HasForeignKey("IdInclude") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("IncludeRole"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserUserRole", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany("RelationUsersUserRoles") + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "UserRole") + .WithMany("RelationUsersUserRoles") + .HasForeignKey("IdUserRole") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + + b.Navigation("UserRole"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ReportProperty", b => + { + b.HasOne("AsbCloudDb.Model.FileInfo", "File") + .WithMany() + .HasForeignKey("IdFile") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("File"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Schedule", b => + { + b.HasOne("AsbCloudDb.Model.Driller", "Driller") + .WithMany("Schedule") + .HasForeignKey("IdDriller") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_schedule_t_driller_id_driller"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Driller"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.SetpointsRequest", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaub", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("DataSaub") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_data_saub_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSpin", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("DataSpin") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_data_spin_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryEvent", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Events") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_event_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryMessage", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Messages") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_messages_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryUser", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Users") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_user_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Trajectory.TrajectoryFact", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Trajectory.TrajectoryPlan", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.HasOne("AsbCloudDb.Model.Company", "Company") + .WithMany("Users") + .HasForeignKey("IdCompany") + .OnDelete(DeleteBehavior.SetNull) + .IsRequired() + .HasConstraintName("t_user_t_company_id_fk"); + + b.Navigation("Company"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserSetting", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", b => + { + b.HasOne("AsbCloudDb.Model.Cluster", "Cluster") + .WithMany("Wells") + .HasForeignKey("IdCluster") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_t_cluster_id_fk"); + + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithOne("Well") + .HasForeignKey("AsbCloudDb.Model.Well", "IdTelemetry") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("t_well_t_telemetry_id_fk"); + + b.HasOne("AsbCloudDb.Model.WellType", "WellType") + .WithMany("Wells") + .HasForeignKey("IdWellType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Cluster"); + + b.Navigation("Telemetry"); + + b.Navigation("WellType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellComposite", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("WellComposites") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_t_well_id_fk"); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany("WellComposites") + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_t_well_section_type_id_fk"); + + b.HasOne("AsbCloudDb.Model.Well", "WellSrc") + .WithMany("WellCompositeSrcs") + .HasForeignKey("IdWellSrc") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_src_t_well_id_fk"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + + b.Navigation("WellSrc"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellFinalDocument", b => + { + b.HasOne("AsbCloudDb.Model.FileCategory", "Category") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Category"); + + b.Navigation("User"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperation", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellOperation", "OperationPlan") + .WithMany() + .HasForeignKey("IdPlan") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("WellOperations") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany("WellOperations") + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("OperationPlan"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperationCategory", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "Parent") + .WithMany() + .HasForeignKey("IdParent"); + + b.Navigation("Parent"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSections.WellSectionPlan", b => + { + b.HasOne("AsbCloudDb.Model.WellSectionType", "SectionType") + .WithMany() + .HasForeignKey("IdSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("SectionType"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record1", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record1", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record50", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record50", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record60", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record60", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record61", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record61", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record7", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record7", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record8", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record8", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Cluster", b => + { + b.Navigation("Wells"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Company", b => + { + b.Navigation("RelationCompaniesWells"); + + b.Navigation("Users"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.CompanyType", b => + { + b.Navigation("Companies"); + + b.Navigation("Contacts"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Deposit", b => + { + b.Navigation("Clusters"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Driller", b => + { + b.Navigation("Schedule"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillingProgramPart", b => + { + b.Navigation("RelatedUsers"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileInfo", b => + { + b.Navigation("FileMarks"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Manuals.ManualDirectory", b => + { + b.Navigation("Children"); + + b.Navigation("Manuals"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.MeasureCategory", b => + { + b.Navigation("Measures"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.NotificationCategory", b => + { + b.Navigation("Notifications"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Permission", b => + { + b.Navigation("RelationUserRolePermissions"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Telemetry", b => + { + b.Navigation("DataSaub"); + + b.Navigation("DataSpin"); + + b.Navigation("Events"); + + b.Navigation("Messages"); + + b.Navigation("Users"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.Navigation("FileMarks"); + + b.Navigation("Files"); + + b.Navigation("RelationContactsWells"); + + b.Navigation("RelationUsersUserRoles"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserRole", b => + { + b.Navigation("RelationUserRolePermissions"); + + b.Navigation("RelationUserRoleUserRoles"); + + b.Navigation("RelationUsersUserRoles"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", b => + { + b.Navigation("Contacts"); + + b.Navigation("DrillingProgramParts"); + + b.Navigation("RelationCompaniesWells"); + + b.Navigation("WellCompositeSrcs"); + + b.Navigation("WellComposites"); + + b.Navigation("WellOperations"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSectionType", b => + { + b.Navigation("WellComposites"); + + b.Navigation("WellOperations"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellType", b => + { + b.Navigation("Wells"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/AsbCloudDb/Migrations/20240613110103_Add_ProcessMapPlanRotor_And_Slide.cs b/AsbCloudDb/Migrations/20240613110103_Add_ProcessMapPlanRotor_And_Slide.cs new file mode 100644 index 00000000..e68f31b7 --- /dev/null +++ b/AsbCloudDb/Migrations/20240613110103_Add_ProcessMapPlanRotor_And_Slide.cs @@ -0,0 +1,324 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; + +#nullable disable + +#pragma warning disable CA1814 // Prefer jagged arrays over multidimensional + +namespace AsbCloudDb.Migrations +{ + /// + public partial class Add_ProcessMapPlanRotor_And_Slide : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "t_process_map_plan_rotor", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + rop_limit_max = table.Column(type: "double precision", nullable: false, comment: "Максимально допустимая скорость, м/ч"), + pressure_limit_max = table.Column(type: "double precision", nullable: false, comment: "Максимально допустимое давление, атм"), + differential_pressure = table.Column(type: "double precision", nullable: false, comment: "Перепад давления, атм. Уставка"), + differential_pressure_limit_max = table.Column(type: "double precision", nullable: false, comment: "Перепад давления, атм. Ограничение"), + weight_on_bit = table.Column(type: "double precision", nullable: false, comment: "Нагрузка, т. Уставка"), + weight_on_bit_limit_max = table.Column(type: "double precision", nullable: false, comment: "Нагрузка, т. Ограничение"), + top_drive_torque = table.Column(type: "double precision", nullable: false, comment: "Момент на ВСП, кН*м. Уставка"), + top_drive_torque_limit_max = table.Column(type: "double precision", nullable: false, comment: "Момент на ВСП, кН*м. Ограничение"), + revolution_per_minute = table.Column(type: "double precision", nullable: false, comment: "Обороты на ВСП, об/мин. Уставка"), + revolutions_per_minute_limit_max = table.Column(type: "double precision", nullable: false, comment: "Обороты на ВСП, об/мин. Ограничение"), + flow_rate = table.Column(type: "double precision", nullable: false, comment: "Расход л/с. Уставка"), + flow_rate_limit_max = table.Column(type: "double precision", nullable: false, comment: "Расход л/с. Ограничение"), + note = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false, comment: "Примечание"), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания"), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_plan_rotor", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_plan_rotor_t_process_map_plan_rotor_id_previo~", + column: x => x.id_previous, + principalTable: "t_process_map_plan_rotor", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_plan_rotor_t_user_id_author", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_rotor_t_user_id_editor", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_rotor_t_well_id_well", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_rotor_t_well_section_type_id_wellsection~", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "РТК план бурение ротор"); + + migrationBuilder.CreateTable( + name: "t_process_map_plan_slide", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + rop_limit_max = table.Column(type: "double precision", nullable: false, comment: "Максимально допустимая скорость, м/ч"), + pressure_limit_max = table.Column(type: "double precision", nullable: false, comment: "Максимально допустимое давление, атм"), + differential_pressure = table.Column(type: "double precision", nullable: false, comment: "Перепад давления, атм. Уставка"), + differential_pressure_limit_max = table.Column(type: "double precision", nullable: false, comment: "Перепад давления, атм. Ограничение"), + weight_on_bit = table.Column(type: "double precision", nullable: false, comment: "Нагрузка, т. Уставка"), + weight_on_bit_limit_max = table.Column(type: "double precision", nullable: false, comment: "Нагрузка, т. Ограничение"), + flow_rate = table.Column(type: "double precision", nullable: false, comment: "Расход л/с. Уставка"), + flow_rate_limit_max = table.Column(type: "double precision", nullable: false, comment: "Расход л/с. Ограничение"), + spring = table.Column(type: "double precision", nullable: false, comment: "Расчётная пружина, градус"), + tool_buckling = table.Column(type: "double precision", nullable: false, comment: "Складывание инструмента, м"), + note = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false, comment: "Примечание"), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания"), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_plan_slide", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_plan_slide_t_process_map_plan_slide_id_previo~", + column: x => x.id_previous, + principalTable: "t_process_map_plan_slide", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_plan_slide_t_user_id_author", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_slide_t_user_id_editor", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_slide_t_well_id_well", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_slide_t_well_section_type_id_wellsection~", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "РТК план бурение слайд"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_rotor_id_author", + table: "t_process_map_plan_rotor", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_rotor_id_editor", + table: "t_process_map_plan_rotor", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_rotor_id_previous", + table: "t_process_map_plan_rotor", + column: "id_previous"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_rotor_id_well", + table: "t_process_map_plan_rotor", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_rotor_id_wellsection_type", + table: "t_process_map_plan_rotor", + column: "id_wellsection_type"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_slide_id_author", + table: "t_process_map_plan_slide", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_slide_id_editor", + table: "t_process_map_plan_slide", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_slide_id_previous", + table: "t_process_map_plan_slide", + column: "id_previous"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_slide_id_well", + table: "t_process_map_plan_slide", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_slide_id_wellsection_type", + table: "t_process_map_plan_slide", + column: "id_wellsection_type"); + + migrationBuilder.Sql(@"INSERT INTO public.t_process_map_plan_rotor + (id, id_wellsection_type, rop_limit_max, depth_start, depth_end, differential_pressure, + differential_pressure_limit_max, weight_on_bit, weight_on_bit_limit_max, + top_drive_torque, top_drive_torque_limit_max, revolution_per_minute, + revolutions_per_minute_limit_max, flow_rate, flow_rate_limit_max, note, + pressure_limit_max, id_author, creation, id_state, id_well, id_editor) + SELECT id, id_wellsection_type, rop_plan, depth_start, depth_end, delta_pressure_plan, + delta_pressure_limit_max, axial_load_plan, axial_load_limit_max, + top_drive_torque_plan, top_drive_torque_limit_max, top_drive_speed_plan, + top_drive_speed_limit_max, flow_plan, flow_limit_max, comment, 0, id_author, creation, id_state, id_well, + id_editor + FROM public.t_process_map_plan_drilling WHERE id_mode = 1 AND obsolete is null"); + + migrationBuilder.Sql(@"INSERT INTO public.t_process_map_plan_slide + (id, id_wellsection_type, rop_limit_max, depth_start, depth_end, differential_pressure, + differential_pressure_limit_max, weight_on_bit, weight_on_bit_limit_max, + flow_rate, flow_rate_limit_max, note, pressure_limit_max, id_author, creation, + id_state, id_well, spring, tool_buckling, id_editor) + SELECT id, id_wellsection_type, rop_plan, depth_start, depth_end, delta_pressure_plan, + delta_pressure_limit_max, axial_load_plan, axial_load_limit_max, + flow_plan, flow_limit_max, comment, 0, id_author, creation, id_state, id_well, 0, 0, id_editor + FROM public.t_process_map_plan_drilling + WHERE id_mode = 2 AND obsolete is null"); + + migrationBuilder.DropTable(name: "t_process_map_plan_drilling"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "t_process_map_plan_rotor"); + + migrationBuilder.DropTable( + name: "t_process_map_plan_slide"); + + migrationBuilder.CreateTable( + name: "t_process_map_plan_drilling", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + axial_load_limit_max = table.Column(type: "double precision", nullable: false, comment: "Осевая нагрузка, т, допустимый максимум"), + axial_load_plan = table.Column(type: "double precision", nullable: false, comment: "Осевая нагрузка, т, план"), + comment = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false, comment: "Комментарий"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + delta_pressure_limit_max = table.Column(type: "double precision", nullable: false, comment: "Перепад давления, атм, допустимый максимум"), + delta_pressure_plan = table.Column(type: "double precision", nullable: false, comment: "Перепад давления, атм, план"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + flow_limit_max = table.Column(type: "double precision", nullable: false, comment: "Расход, л/с, допустимый максимум"), + flow_plan = table.Column(type: "double precision", nullable: false, comment: "Расход, л/с, план"), + id_mode = table.Column(type: "integer", nullable: false, comment: "Id режима (1- ротор, 2 слайд)"), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания"), + rop_plan = table.Column(type: "double precision", nullable: false, comment: "Плановая механическая скорость, м/ч"), + top_drive_speed_limit_max = table.Column(type: "double precision", nullable: false, comment: "Обороты на ВСП, допустимый максимум"), + top_drive_speed_plan = table.Column(type: "double precision", nullable: false, comment: "Обороты на ВСП, план"), + top_drive_torque_limit_max = table.Column(type: "double precision", nullable: false, comment: "Момент на ВСП, допустимый максимум"), + top_drive_torque_plan = table.Column(type: "double precision", nullable: false, comment: "Момент на ВСП, план"), + usage_saub = table.Column(type: "double precision", nullable: false, comment: "Плановый процент использования АКБ"), + usage_spin = table.Column(type: "double precision", nullable: false, comment: "Плановый процент использования spin master") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_plan_drilling", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_plan_drilling_t_process_map_plan_drilling_id_~", + column: x => x.id_previous, + principalTable: "t_process_map_plan_drilling", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_plan_drilling_t_user_id_author", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_drilling_t_user_id_editor", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_drilling_t_well_id_well", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_drilling_t_well_section_type_id_wellsect~", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "РТК план бурение"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_drilling_id_author", + table: "t_process_map_plan_drilling", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_drilling_id_editor", + table: "t_process_map_plan_drilling", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_drilling_id_previous", + table: "t_process_map_plan_drilling", + column: "id_previous"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_drilling_id_well", + table: "t_process_map_plan_drilling", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_drilling_id_wellsection_type", + table: "t_process_map_plan_drilling", + column: "id_wellsection_type"); + } + } +} diff --git a/AsbCloudDb/Migrations/20240630162502_Add_Tables_ProcessMapOperationsAndFunctions.Designer.cs b/AsbCloudDb/Migrations/20240630162502_Add_Tables_ProcessMapOperationsAndFunctions.Designer.cs new file mode 100644 index 00000000..919f84a2 --- /dev/null +++ b/AsbCloudDb/Migrations/20240630162502_Add_Tables_ProcessMapOperationsAndFunctions.Designer.cs @@ -0,0 +1,12939 @@ +// +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("20240630162502_Add_Tables_ProcessMapOperationsAndFunctions")] + partial class Add_Tables_ProcessMapOperationsAndFunctions + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .UseCollation("Russian_Russia.1251") + .HasAnnotation("ProductVersion", "8.0.2") + .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", t => + { + t.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") + .HasColumnName("is_contact"); + + b.Property("Order") + .HasColumnType("integer") + .HasColumnName("order"); + + b.HasKey("Id"); + + b.ToTable("t_company_type"); + + b.HasData( + new + { + Id = 1, + Caption = "Недропользователь", + IsContact = true, + Order = 3 + }, + new + { + Id = 2, + Caption = "Буровой подрядчик", + IsContact = true, + Order = 2 + }, + new + { + Id = 3, + Caption = "Сервис автоматизации бурения", + IsContact = true, + Order = 0 + }, + new + { + Id = 4, + Caption = "Сервис по ГТИ", + IsContact = true, + Order = 6 + }, + new + { + Id = 5, + Caption = "Растворный сервис", + IsContact = true, + Order = 4 + }, + new + { + Id = 6, + Caption = "Сервис по ННБ", + IsContact = true, + Order = 5 + }, + new + { + Id = 7, + Caption = "Служба супервайзинга", + IsContact = false, + Order = 1 + }, + new + { + Id = 9, + Caption = "Сервис по цементированию", + IsContact = true, + Order = 7 + }, + new + { + Id = 11, + Caption = "Дизельный сервис", + IsContact = false, + Order = 9 + }, + new + { + Id = 12, + Caption = "Сервис по обслуживанию верхних силовых приводов", + IsContact = true, + Order = 8 + }); + }); + + 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") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("email") + .HasComment("email"); + + b.Property("FullName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("full_name") + .HasComment("ФИО"); + + b.Property("IdCompanyType") + .HasMaxLength(255) + .HasColumnType("integer") + .HasColumnName("id_company_type") + .HasComment("вид деятельности"); + + b.Property("IdWell") + .HasMaxLength(255) + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("ключ скважины"); + + b.Property("Phone") + .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.HasIndex("IdWell"); + + b.ToTable("t_contact", t => + { + t.HasComment("Контакты"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DailyReports.DailyReport", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Date") + .HasColumnType("date") + .HasColumnName("date") + .HasComment("Дата формирования отчёта"); + + b.Property("DateLastUpdate") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_last_update") + .HasComment("Дата последнего обновления"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("ID скважины"); + + b.Property("SignBlock") + .HasColumnType("jsonb") + .HasColumnName("sign_block") + .HasComment("Подпись"); + + b.Property("SubsystemBlock") + .HasColumnType("jsonb") + .HasColumnName("subsystem_block") + .HasComment("Наработкой подсистем"); + + b.Property("TimeBalanceBlock") + .HasColumnType("jsonb") + .HasColumnName("time_balance_block") + .HasComment("Баланс времени"); + + b.HasKey("Id"); + + b.HasIndex("IdWell", "Date") + .IsUnique(); + + b.ToTable("t_daily_report", t => + { + t.HasComment("Ежедневные отчёты"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DataSaubStat", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AxialLoad") + .HasColumnType("double precision") + .HasColumnName("axial_load") + .HasComment("Фактическая нагрузка"); + + b.Property("AxialLoadLimitMax") + .HasColumnType("double precision") + .HasColumnName("axial_load_limit_max") + .HasComment("Максимально допустимая нагрузка"); + + b.Property("AxialLoadSp") + .HasColumnType("double precision") + .HasColumnName("axial_load_sp") + .HasComment("Ограничение факт. нагрузки"); + + b.Property("BlockSpeedSp") + .HasColumnType("double precision") + .HasColumnName("block_speed_sp") + .HasComment("Ограничение скорости блока"); + + 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("EnabledSubsystems") + .HasColumnType("integer") + .HasColumnName("enabled_subsystems") + .HasComment("Флаги подсистем"); + + b.Property("Flow") + .HasColumnType("double precision") + .HasColumnName("flow") + .HasComment("Фактический расход"); + + b.Property("HasOscillation") + .HasColumnType("boolean") + .HasColumnName("has_oscillation") + .HasComment("Наличие или отсутствие осцилляции"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category") + .HasComment("Название автоопределённой операции"); + + b.Property("IdFeedRegulator") + .HasColumnType("smallint") + .HasColumnName("id_feed_regulator") + .HasComment("Работа при достижении ограничения"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry") + .HasComment("Ключ телеметрии"); + + b.Property("Pressure") + .HasColumnType("double precision") + .HasColumnName("pressure") + .HasComment("Давление"); + + b.Property("PressureIdle") + .HasColumnType("double precision") + .HasColumnName("pressure_idle") + .HasComment("Давление холостого хода"); + + b.Property("PressureSp") + .HasColumnType("double precision") + .HasColumnName("pressure_sp") + .HasComment("Ограничение фактического давления"); + + b.Property("RotorSpeed") + .HasColumnType("double precision") + .HasColumnName("rotor_speed") + .HasComment("Фактическая скорость оборотов ВСП"); + + b.Property("RotorTorque") + .HasColumnType("double precision") + .HasColumnName("rotor_torque") + .HasComment("Фактический момент"); + + b.Property("RotorTorqueLimitMax") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_limit_max") + .HasComment("Максимально допустимый момент"); + + b.Property("RotorTorqueSp") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_sp") + .HasComment("Ограничение факт. момента"); + + b.Property("Speed") + .HasColumnType("double precision") + .HasColumnName("speed") + .HasComment("Скорость бурения"); + + b.HasKey("Id"); + + b.HasIndex("IdCategory"); + + b.HasIndex("IdTelemetry"); + + b.ToTable("t_data_saub_stat", t => + { + t.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", t => + { + t.HasComment("Месторождение"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DetectedOperation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + 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("EnabledSubsystems") + .HasColumnType("integer") + .HasColumnName("enabled_subsystems") + .HasComment("флаги включенных подсистем"); + + b.Property("ExtraData") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("extra_data") + .HasComment("доп. инфо по операции"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category") + .HasComment("Id категории операции"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .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", t => + { + t.HasComment("автоматически определенные операции по телеметрии"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillTest", b => + { + b.Property("Id") + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry") + .HasComment("Идентификатор телеметрии"); + + b.Property("DepthStart") + .HasColumnType("real") + .HasColumnName("depthStart") + .HasComment("Глубина начала"); + + b.Property("Params") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("t_drill_test_params") + .HasComment("Параметры записи drill test"); + + b.Property("TimeStampStart") + .HasColumnType("timestamp with time zone") + .HasColumnName("timestamp_start") + .HasComment("Время начала"); + + b.HasKey("Id", "IdTelemetry"); + + b.HasIndex("IdTelemetry"); + + b.ToTable("t_drill_test", t => + { + t.HasComment("Drill_test"); + }); + }); + + 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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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 = 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" + }, + new + { + Id = 528, + Description = "Разрешение на удаление контакта", + Name = "WellContact.delete" + }, + new + { + Id = 530, + Description = "Разрешение на редактирование плановой конструкции скважины", + Name = "WellSectionPlan.edit" + }, + new + { + Id = 531, + Description = "Разрешение на удаление плановой конструкции скважины", + Name = "WellSectionPlan.delete" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAntiCrashRotation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("TopDriveRpmMin") + .HasColumnType("double precision") + .HasColumnName("top_drive_rpm_min") + .HasComment("Минимальные обороты ВСП, об/мин"); + + b.Property("TopDriveStartMinFlowRate") + .HasColumnType("double precision") + .HasColumnName("top_drive_start_min_flow_rate") + .HasComment("Минимальный расход для запуска оборотов ВСП, л/сек"); + + b.Property("TopDriveTorqueMax") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque_max") + .HasComment("Максимально допустимый момент на ВСП при противоаварийном вращении, кН*м"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_anti_crash_rotation", t => + { + t.HasComment("Противоаварийное вращение"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAutoHoldTF", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("ZenithAngle") + .HasColumnType("double precision") + .HasColumnName("zenit_angle") + .HasComment("Зенитный угол, градусы"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_auto_hold_tf", t => + { + t.HasComment("Автоудержание TF"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDamper", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("StickSlip") + .HasColumnType("double precision") + .HasColumnName("stick_slip") + .HasComment("StickSlip"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_functions_damper", t => + { + t.HasComment("Демпфер"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDrillTest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("LengthStep") + .HasColumnType("double precision") + .HasColumnName("length_step") + .HasComment("Величина проходки шага, м."); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("RpmMin") + .HasColumnType("double precision") + .HasColumnName("rpm_min") + .HasComment("Минимальные обороты на ВСП, об/мин."); + + b.Property("RpmStepsCount") + .HasColumnType("integer") + .HasColumnName("rpm_steps_count") + .HasComment("Количество шагов оборотов на ВСП, об/мин."); + + b.Property("WeightOnBitMin") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_min") + .HasComment("Нагрузка минимальная, т"); + + b.Property("WeightOnBitStepsCount") + .HasColumnType("integer") + .HasColumnName("weight_on_bit_steps_count") + .HasComment("Количество шагов по нагрузке"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_drilltest", t => + { + t.HasComment("DrillTest"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanOscillation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Mode") + .HasColumnType("integer") + .HasColumnName("mode") + .HasComment("Режим Авто/Руч"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("OptimalOscillationAngle") + .HasColumnType("double precision") + .HasColumnName("optimal_oscillation_angle") + .HasComment("Оптимальный угол осцилляции, градусы"); + + b.Property("RpmLeft") + .HasColumnType("double precision") + .HasColumnName("Rpm_left") + .HasComment("Скорость влево, об/мин"); + + b.Property("RpmRight") + .HasColumnType("double precision") + .HasColumnName("Rpm_right") + .HasComment("Скорость вправо, об/мин"); + + b.Property("TorqueMaxLeft") + .HasColumnType("double precision") + .HasColumnName("torque_max_left") + .HasComment("Ограничение момента влево, кН*м"); + + b.Property("TorqueMaxRight") + .HasColumnType("double precision") + .HasColumnName("torque_max_right") + .HasComment("Ограничение момента вправо, кН*м"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_oscillation", t => + { + t.HasComment("Осцилляция"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanShockTest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AxialVibrations") + .HasColumnType("double precision") + .HasColumnName("axial_vibrations") + .HasComment("Осевые вибрации"); + + b.Property("CombinedVibrations") + .HasColumnType("double precision") + .HasColumnName("combined_vibrations") + .HasComment("Комбинированные вибрации"); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("RpmMin") + .HasColumnType("double precision") + .HasColumnName("rpm_min") + .HasComment("Минимальные обороты на ВСП, об/мин."); + + b.Property("StickSlip") + .HasColumnType("double precision") + .HasColumnName("stick_slip") + .HasComment("stickSlip"); + + b.Property("WeightOnBitMin") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_min") + .HasComment("Нагрузка минимальная, т"); + + b.Property("Whirl") + .HasColumnType("double precision") + .HasColumnName("whirl") + .HasComment("Whirl"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_shock_test", t => + { + t.HasComment("ShockTest"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanStaticMeasurementOutput", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("SignalWaitingTime") + .HasColumnType("double precision") + .HasColumnName("signal_waiting_time") + .HasComment("Время ожидания выхода сигнала с ТМС, сек."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_static_measurement_output", t => + { + t.HasComment("Выход статического замера"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanUpdatingNoloadParameters", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdDeclineSocketColumn") + .HasColumnType("boolean") + .HasColumnName("id_decline_socket_column") + .HasComment("СПУСК ОК Да/Нет"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_updating_noload_parameters", t => + { + t.HasComment("Обновление холостого хода"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanLoadCapacity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressureMin") + .HasColumnType("double precision") + .HasColumnName("differential_pressure_min") + .HasComment("Перепад давления минимальный, атм"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("TimeLoadCapacityMin") + .HasColumnType("double precision") + .HasColumnName("time_load_capacity_min") + .HasComment("Время выработки минимальное, сек"); + + b.Property("WeightOnBitMin") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_min") + .HasComment("Нагрузка минимальная, т"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_load_capacity", t => + { + t.HasComment("РТК выработка нагрузки"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanOscillationAngles", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("Rpm") + .HasColumnType("double precision") + .HasColumnName("rpm") + .HasComment("Обороты на ВСП, об/мин., Уставка"); + + b.Property("RpmMax") + .HasColumnType("double precision") + .HasColumnName("rpm_max") + .HasComment("Обороты на ВСП, об/мин., Ограничение"); + + b.Property("TopDriveTorque") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque") + .HasComment("Момент на ВСП, кН*м., Уставка"); + + b.Property("TopDriveTorqueMax") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque_max") + .HasComment("Момент на ВСП, кН*м., Ограничение"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_operation_oscillation_angels", t => + { + t.HasComment("Определение углов осцилляции"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanPositioningOffTheBottom", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления уставка, атм."); + + b.Property("FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("flow_rate_down") + .HasComment("Расход вниз, л/с."); + + b.Property("FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("flow_rate_up") + .HasComment("Расход вверх, л/с."); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("RopDown") + .HasColumnType("double precision") + .HasColumnName("rop_down") + .HasComment("Скорость вниз, м/ч."); + + b.Property("RopUp") + .HasColumnType("double precision") + .HasColumnName("rop_up") + .HasComment("Скорость вверх, м/ч."); + + b.Property("RpmDown") + .HasColumnType("double precision") + .HasColumnName("rpm_down") + .HasComment("Обороты вниз, об/мин."); + + b.Property("RpmUp") + .HasColumnType("double precision") + .HasColumnName("rpm_up") + .HasComment("Обороты вверх, об/мин."); + + b.Property("SlackingOff") + .HasColumnType("double precision") + .HasColumnName("slacking_off") + .HasComment("Посадка, т."); + + b.Property("StopOffTheBottom") + .HasColumnType("double precision") + .HasColumnName("stop_off_the_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Tight") + .HasColumnType("double precision") + .HasColumnName("tight") + .HasComment("Затяжка, т."); + + b.Property("TorqueMax") + .HasColumnType("double precision") + .HasColumnName("torque_max") + .HasComment("Максимально допустимый момент, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_positioning_off_the_bottom", t => + { + t.HasComment("Позиционирование над забоем"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReam", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .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("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_ream", t => + { + t.HasComment("РТК проработка скважины"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingRotor", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления уставка, атм."); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("Reaming1FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_flow_rate_down") + .HasComment("Проработка 1, Расход, л/с., Вниз"); + + b.Property("Reaming1FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_flow_rate_up") + .HasComment("Проработка 1, Расход, л/с., Вверх"); + + b.Property("Reaming1Interval") + .HasColumnType("double precision") + .HasColumnName("reaming1_interval") + .HasComment("Проработка 1, Интервал проработки, м."); + + b.Property("Reaming1RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("reaming1_repetitions_count") + .HasComment("Проработка 1. Количество повторений, шт."); + + b.Property("Reaming1RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_rop_down") + .HasComment("Проработка 1, Скорость, м/ч., Вниз"); + + b.Property("Reaming1RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_rop_up") + .HasComment("Проработка 1. Скорость вверх, м/ч."); + + b.Property("Reaming1RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_rpm_down") + .HasComment("Проработка 1, Обороты, об/мин., Вниз"); + + b.Property("Reaming1RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_rpm_up") + .HasComment("Проработка 1, Обороты, об/мин., Вверх"); + + b.Property("Reaming1StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming1_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Reaming2FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_flow_rate_down") + .HasComment("Проработка 2, Расход, л/с., Вниз"); + + b.Property("Reaming2FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_flow_rate_up") + .HasComment("Проработка 2, Расход, л/с., Вверх"); + + b.Property("Reaming2Interval") + .HasColumnType("double precision") + .HasColumnName("reaming2_interval") + .HasComment("Проработка 2, Интервал проработки, м."); + + b.Property("Reaming2RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("reaming2_repetitions_count") + .HasComment("Проработка 2, Количество повторений, шт."); + + b.Property("Reaming2RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_rop_down") + .HasComment("Проработка 2, Скорость, м/ч., Вниз"); + + b.Property("Reaming2RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_rop_up") + .HasComment("Проработка 2, Скорость, м/ч., Вверх"); + + b.Property("Reaming2RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_rpm_down") + .HasComment("Проработка 2, Обороты, об/мин., Вниз"); + + b.Property("Reaming2RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_rpm_up") + .HasComment("Проработка 2, Обороты, об/мин., Вверх"); + + b.Property("Reaming2StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming2_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Reaming3FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_flow_rate_down") + .HasComment("Проработка 3, Расход, л/с., Вниз"); + + b.Property("Reaming3FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_flow_rate_up") + .HasComment("Проработка 3, Расход, л/с., Вверх"); + + b.Property("Reaming3Interval") + .HasColumnType("double precision") + .HasColumnName("reaming3_interval") + .HasComment("Проработка 3, Интервал проработки, м."); + + b.Property("Reaming3RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("reaming3_repetitions_count") + .HasComment("Проработка 3, Количество повторений, шт."); + + b.Property("Reaming3RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_rop_down") + .HasComment("Проработка 3, Скорость, м/ч., Вниз"); + + b.Property("Reaming3RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_rop_up") + .HasComment("Проработка 3, Скорость, м/ч., Вверх"); + + b.Property("Reaming3RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_rpm_down") + .HasComment("Проработка 3, Обороты, об/мин., Вниз"); + + b.Property("Reaming3RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_rpm_up") + .HasComment("Проработка 3, Обороты, об/мин., Вверх"); + + b.Property("Reaming3StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming3_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("SlackingOff") + .HasColumnType("double precision") + .HasColumnName("slacking_off") + .HasComment("Посадка, т."); + + b.Property("Tight") + .HasColumnType("double precision") + .HasColumnName("tight") + .HasComment("Затяжка, т."); + + b.Property("TorqueMax") + .HasColumnType("double precision") + .HasColumnName("torque_max") + .HasComment("Максимально допустимый момент, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_operation_reaming_rotor", t => + { + t.HasComment("РТК проработка ротор"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingSlide", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления уставка, атм."); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("Reaming1FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_flow_rate_down") + .HasComment("Проработка 1, Расход, л/с., Вниз"); + + b.Property("Reaming1FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_flow_rate_up") + .HasComment("Проработка 1, Расход, л/с., Вверх"); + + b.Property("Reaming1Interval") + .HasColumnType("double precision") + .HasColumnName("reaming1_interval") + .HasComment("Проработка 1, Интервал проработки, м."); + + b.Property("Reaming1RepetitionsCount") + .HasColumnType("double precision") + .HasColumnName("reaming1_repetitions_count") + .HasComment("Проработка 1. Количество повторений, шт."); + + b.Property("Reaming1RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_rop_down") + .HasComment("Проработка 1. Скорость вниз, м/ч."); + + b.Property("Reaming1RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_rop_up") + .HasComment("Проработка 1. Скорость вверх, м/ч."); + + b.Property("Reaming1RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_rpm_down") + .HasComment("Проработка 1, Обороты, об/мин., Вниз"); + + b.Property("Reaming1RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_rpm_up") + .HasComment("Проработка 1, Обороты, об/мин., Вверх"); + + b.Property("Reaming1StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming1_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Reaming2FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_flow_rate_down") + .HasComment("Проработка 2, Расход, л/с., Вниз"); + + b.Property("Reaming2FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_flow_rate_up") + .HasComment("Проработка 2, Расход, л/с., Вверх"); + + b.Property("Reaming2Interval") + .HasColumnType("double precision") + .HasColumnName("reaming2_interval") + .HasComment("Проработка 2, Интервал проработки, м."); + + b.Property("Reaming2RepetitionsCount") + .HasColumnType("double precision") + .HasColumnName("reaming2_repetitions_count") + .HasComment("Проработка 2, Количество повторений, шт."); + + b.Property("Reaming2RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_rop_down") + .HasComment("Проработка 2, Скорость, м/ч., Вниз"); + + b.Property("Reaming2RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_rop_up") + .HasComment("Проработка 2, Скорость, м/ч., Вверх"); + + b.Property("Reaming2RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_rpm_down") + .HasComment("Проработка 2, Обороты, об/мин., Вниз"); + + b.Property("Reaming2RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_rpm_up") + .HasComment("Проработка 2, Обороты, об/мин., Вверх"); + + b.Property("Reaming2StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming2_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Reaming3FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_flow_rate_down") + .HasComment("Проработка 3, Расход, л/с., Вниз"); + + b.Property("Reaming3FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_flow_rate_up") + .HasComment("Проработка 3, Расход, л/с., Вверх"); + + b.Property("Reaming3Interval") + .HasColumnType("double precision") + .HasColumnName("reaming3_interval") + .HasComment("Проработка 3, Интервал проработки, м."); + + b.Property("Reaming3RepetitionsCount") + .HasColumnType("double precision") + .HasColumnName("reaming3_repetitions_count") + .HasComment("Проработка 3, Количество повторений, шт."); + + b.Property("Reaming3RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_rop_down") + .HasComment("Проработка 3, Скорость, м/ч., Вниз"); + + b.Property("Reaming3RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_rop_up") + .HasComment("Проработка 3, Скорость, м/ч., Вверх"); + + b.Property("Reaming3RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_rpm_down") + .HasComment("Проработка 3, Обороты, об/мин., Вниз"); + + b.Property("Reaming3RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_rpm_up") + .HasComment("Проработка 3, Обороты, об/мин., Вверх"); + + b.Property("Reaming3StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming3_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("SlackingOff") + .HasColumnType("double precision") + .HasColumnName("slacking_off") + .HasComment("Посадка, т."); + + b.Property("Tight") + .HasColumnType("double precision") + .HasColumnName("tight") + .HasComment("Затяжка, т."); + + b.Property("TorqueMax") + .HasColumnType("double precision") + .HasColumnName("torque_max") + .HasComment("Максимально допустимый момент, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_reaming_slide", t => + { + t.HasComment("РТК проработка слайд"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRecordingStaticMeasurement", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("MeasurementRecordingTime") + .HasColumnType("double precision") + .HasColumnName("measurement_recording_time") + .HasComment("Время записи замера, сек"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_recording_static_measurement", t => + { + t.HasComment("Запись статического замера"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRotor", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления, атм. Уставка"); + + b.Property("DifferentialPressureMax") + .HasColumnType("double precision") + .HasColumnName("differential_pressure_max") + .HasComment("Перепад давления, атм. Ограничение"); + + b.Property("FlowRate") + .HasColumnType("double precision") + .HasColumnName("flow_rate") + .HasComment("Расход л/с. Уставка"); + + b.Property("FlowRateMax") + .HasColumnType("double precision") + .HasColumnName("flow_rate_max") + .HasComment("Расход л/с. Ограничение"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureLimitMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм"); + + b.Property("RopMax") + .HasColumnType("double precision") + .HasColumnName("rop_max") + .HasComment("Максимально допустимая скорость, м/ч"); + + b.Property("Rpm") + .HasColumnType("double precision") + .HasColumnName("rpm") + .HasComment("Обороты на ВСП, об/мин. Уставка"); + + b.Property("RpmMax") + .HasColumnType("double precision") + .HasColumnName("rpm_max") + .HasComment("Обороты на ВСП, об/мин. Ограничение"); + + b.Property("TopDriveTorque") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque") + .HasComment("Момент на ВСП, кН*м. Уставка"); + + b.Property("TopDriveTorqueMax") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque_max") + .HasComment("Момент на ВСП, кН*м. Ограничение"); + + b.Property("WeightOnBit") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit") + .HasComment("Нагрузка, т. Уставка"); + + b.Property("WeightOnBitMax") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_max") + .HasComment("Нагрузка, т. Ограничение"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_rotor", t => + { + t.HasComment("РТК план бурение ротор"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRotorLoweringBit", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления уставка, атм."); + + b.Property("FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("flow_rate_down") + .HasComment("Расход вниз, л/с."); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("RopDown") + .HasColumnType("double precision") + .HasColumnName("rop_down") + .HasComment("Скорость вниз, м/ч."); + + b.Property("RpmDown") + .HasColumnType("double precision") + .HasColumnName("rpm_down") + .HasComment("Обороты вниз, об/мин."); + + b.Property("SlackingOff") + .HasColumnType("double precision") + .HasColumnName("slacking_off") + .HasComment("Посадка, т."); + + b.Property("TorqueMax") + .HasColumnType("double precision") + .HasColumnName("torque_max") + .HasComment("Максимально допустимый момент, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_rotor_lowering_bit", t => + { + t.HasComment("РТК подход к забою в роторе"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRotorRpmAcceleration", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Buckling") + .HasColumnType("double precision") + .HasColumnName("buckling") + .HasComment("Складывание, м"); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("ZenithAngle") + .HasColumnType("double precision") + .HasColumnName("zenit_angle") + .HasComment("Зенитный угол, градусы"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_rotor_rpm_acceleration", t => + { + t.HasComment("Выход на обороты перед ротором"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSlide", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Buckling") + .HasColumnType("double precision") + .HasColumnName("buckling") + .HasComment("Складывание инструмента, м."); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления уставка, атм."); + + b.Property("DifferentialPressureMax") + .HasColumnType("double precision") + .HasColumnName("differential_pressure_max") + .HasComment("Перепад давления ограничение, атм."); + + b.Property("FlowRate") + .HasColumnType("double precision") + .HasColumnName("flow_rate") + .HasComment("Расход уставка, л/с."); + + b.Property("FlowRateMax") + .HasColumnType("double precision") + .HasColumnName("flow_rate_max") + .HasComment("Расход ограничение, л/с."); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("RopMax") + .HasColumnType("double precision") + .HasColumnName("rop_max") + .HasComment("Максимально допустимая скорость, м/ч."); + + b.Property("Spring") + .HasColumnType("double precision") + .HasColumnName("spring") + .HasComment("Расчётная пружина, градус"); + + b.Property("WeightOnBit") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit") + .HasComment("Нагрузка уставка, т."); + + b.Property("WeightOnBitMax") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_max") + .HasComment("Нагрузка ограничение, т."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_slide", t => + { + t.HasComment("РТК план бурение слайд"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSlideLoweringBit", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления уставка, атм."); + + b.Property("FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("flow_rate_down") + .HasComment("Расход вниз, л/с."); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("RopDown") + .HasColumnType("double precision") + .HasColumnName("rop_down") + .HasComment("Скорость вниз, м/ч."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_slide_lowering_bit", t => + { + t.HasComment("РТК подход к забою в слайде"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingOffThePump", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("Duration") + .HasColumnType("double precision") + .HasColumnName("duration") + .HasComment("Продолжительность, сек."); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("ResidualPressureLimit") + .HasColumnType("double precision") + .HasColumnName("residual_pressure_limit") + .HasComment("Лимит остаточного давления, атм."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_operation_switching_off_the_pump", t => + { + t.HasComment("Выключение насоса"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingToTheMode", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("FlowRate") + .HasColumnType("double precision") + .HasColumnName("flow_rate") + .HasComment("Расход, л/с"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_limit") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("RampTime") + .HasColumnType("double precision") + .HasColumnName("ramp_time") + .HasComment("Время выхода буровых насосов на плановый расход, сек."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_switching_to_the_mode", t => + { + t.HasComment("Выход на плановый расход"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanTFOrientation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления, атм."); + + b.Property("FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("flow_rate_down") + .HasComment("Расход вниз, л/с."); + + b.Property("FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("flow_rate_up") + .HasComment("Расход вверх, л/с."); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Interval") + .HasColumnType("double precision") + .HasColumnName("interval") + .HasComment("Интервал расхаживания, м."); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимальное давление, атм."); + + b.Property("RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("repetitions_count") + .HasComment("Количество расхаживаний, шт."); + + b.Property("RopDown") + .HasColumnType("double precision") + .HasColumnName("rop_down") + .HasComment("Скорость вниз, м/ч."); + + b.Property("RopUp") + .HasColumnType("double precision") + .HasColumnName("rop_up") + .HasComment("Скорость вверх, м/ч."); + + b.Property("SlackingOff") + .HasColumnType("double precision") + .HasColumnName("slacking_off") + .HasComment("Посадка, т."); + + b.Property("Spring") + .HasColumnType("double precision") + .HasColumnName("spring") + .HasComment("Пружина, град."); + + b.Property("StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("TFSetpoint") + .HasColumnType("double precision") + .HasColumnName("tf_setpoint") + .HasComment("Задание TF, град."); + + b.Property("Tight") + .HasColumnType("double precision") + .HasColumnName("tight") + .HasComment("Затяжка, т."); + + b.Property("TorqueMax") + .HasColumnType("double precision") + .HasColumnName("torque_max") + .HasComment("Максимально допустимый момент, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_tf_orientation", t => + { + t.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", t => + { + t.HasComment("отношение скважин и компаний"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationContactWell", b => + { + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.HasKey("IdWell", "IdUser"); + + b.HasIndex("IdUser"); + + b.ToTable("t_relation_contact_well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserDrillingProgramPart", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("IdDrillingProgramPart") + .HasColumnType("integer") + .HasColumnName("id_drilling_program_part"); + + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_role") + .HasComment("1 - publisher, 2 - approver"); + + b.HasKey("IdUser", "IdDrillingProgramPart") + .HasName("t_relation_user_drilling_program_part_pk"); + + b.HasIndex("IdDrillingProgramPart"); + + b.ToTable("t_relation_user_drilling_program_part", t => + { + t.HasComment("Отношение пользователей и частей ПБ"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRolePermission", b => + { + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.Property("IdPermission") + .HasColumnType("integer") + .HasColumnName("id_permission"); + + b.HasKey("IdUserRole", "IdPermission"); + + b.HasIndex("IdPermission"); + + b.ToTable("t_relation_user_role_permission", t => + { + t.HasComment("Отношение ролей пользователей и разрешений доступа"); + }); + + b.HasData( + new + { + IdUserRole = 1100, + IdPermission = 102 + }, + new + { + IdUserRole = 1100, + IdPermission = 111 + }, + new + { + IdUserRole = 1101, + IdPermission = 101 + }, + new + { + IdUserRole = 1101, + IdPermission = 100 + }, + new + { + IdUserRole = 1102, + IdPermission = 105 + }, + new + { + IdUserRole = 1102, + IdPermission = 108 + }, + new + { + IdUserRole = 1103, + IdPermission = 104 + }, + new + { + IdUserRole = 1103, + IdPermission = 103 + }, + new + { + IdUserRole = 1104, + IdPermission = 108 + }, + new + { + IdUserRole = 1105, + IdPermission = 107 + }, + new + { + IdUserRole = 1105, + IdPermission = 106 + }, + new + { + IdUserRole = 1106, + IdPermission = 111 + }, + new + { + IdUserRole = 1107, + IdPermission = 110 + }, + new + { + IdUserRole = 1107, + IdPermission = 109 + }, + new + { + IdUserRole = 1108, + IdPermission = 114 + }, + new + { + IdUserRole = 1109, + IdPermission = 113 + }, + new + { + IdUserRole = 1109, + IdPermission = 112 + }, + new + { + IdUserRole = 1110, + IdPermission = 123 + }, + new + { + IdUserRole = 1110, + IdPermission = 114 + }, + new + { + IdUserRole = 1111, + IdPermission = 122 + }, + new + { + IdUserRole = 1111, + IdPermission = 121 + }, + new + { + IdUserRole = 1112, + IdPermission = 117 + }, + new + { + IdUserRole = 1113, + IdPermission = 105 + }, + new + { + IdUserRole = 1113, + IdPermission = 123 + }, + new + { + IdUserRole = 1113, + IdPermission = 120 + }, + new + { + IdUserRole = 1114, + IdPermission = 119 + }, + new + { + IdUserRole = 1114, + IdPermission = 118 + }, + new + { + IdUserRole = 1114, + IdPermission = 200 + }, + new + { + IdUserRole = 1115, + IdPermission = 223 + }, + new + { + IdUserRole = 1116, + IdPermission = 105 + }, + new + { + IdUserRole = 1116, + IdPermission = 102 + }, + new + { + IdUserRole = 1116, + IdPermission = 117 + }, + new + { + IdUserRole = 1116, + IdPermission = 126 + }, + new + { + IdUserRole = 1117, + IdPermission = 125 + }, + new + { + IdUserRole = 1117, + IdPermission = 124 + }, + new + { + IdUserRole = 1200, + IdPermission = 203 + }, + new + { + IdUserRole = 1200, + IdPermission = 230 + }, + new + { + IdUserRole = 1201, + IdPermission = 202 + }, + new + { + IdUserRole = 1201, + IdPermission = 203 + }, + new + { + IdUserRole = 1201, + IdPermission = 220 + }, + new + { + IdUserRole = 1202, + IdPermission = 203 + }, + new + { + IdUserRole = 1202, + IdPermission = 220 + }, + new + { + IdUserRole = 1202, + IdPermission = 236 + }, + new + { + IdUserRole = 1202, + IdPermission = 212 + }, + new + { + IdUserRole = 1203, + IdPermission = 235 + }, + new + { + IdUserRole = 1204, + IdPermission = 202 + }, + new + { + IdUserRole = 1204, + IdPermission = 203 + }, + new + { + IdUserRole = 1205, + IdPermission = 215 + }, + new + { + IdUserRole = 1206, + IdPermission = 203 + }, + new + { + IdUserRole = 1206, + IdPermission = 206 + }, + new + { + IdUserRole = 1207, + IdPermission = 205 + }, + new + { + IdUserRole = 1208, + IdPermission = 218 + }, + new + { + IdUserRole = 1209, + IdPermission = 217 + }, + new + { + IdUserRole = 1210, + IdPermission = 203 + }, + new + { + IdUserRole = 1210, + IdPermission = 230 + }, + new + { + IdUserRole = 1210, + IdPermission = 219 + }, + new + { + IdUserRole = 1211, + IdPermission = 203 + }, + new + { + IdUserRole = 1211, + IdPermission = 220 + }, + new + { + IdUserRole = 1211, + IdPermission = 239 + }, + new + { + IdUserRole = 1212, + IdPermission = 238 + }, + new + { + IdUserRole = 1212, + IdPermission = 237 + }, + new + { + IdUserRole = 1213, + IdPermission = 203 + }, + new + { + IdUserRole = 1213, + IdPermission = 239 + }, + new + { + IdUserRole = 1213, + IdPermission = 212 + }, + new + { + IdUserRole = 1214, + IdPermission = 211 + }, + new + { + IdUserRole = 1214, + IdPermission = 210 + }, + new + { + IdUserRole = 1215, + IdPermission = 203 + }, + new + { + IdUserRole = 1215, + IdPermission = 222 + }, + new + { + IdUserRole = 1216, + IdPermission = 221 + }, + new + { + IdUserRole = 1217, + IdPermission = 226 + }, + new + { + IdUserRole = 1218, + IdPermission = 225 + }, + new + { + IdUserRole = 1218, + IdPermission = 224 + }, + new + { + IdUserRole = 1219, + IdPermission = 203 + }, + new + { + IdUserRole = 1219, + IdPermission = 206 + }, + new + { + IdUserRole = 1219, + IdPermission = 230 + }, + new + { + IdUserRole = 1219, + IdPermission = 232 + }, + new + { + IdUserRole = 1220, + IdPermission = 203 + }, + new + { + IdUserRole = 1220, + IdPermission = 228 + }, + new + { + IdUserRole = 1221, + IdPermission = 202 + }, + new + { + IdUserRole = 1221, + IdPermission = 203 + }, + new + { + IdUserRole = 1221, + IdPermission = 220 + }, + new + { + IdUserRole = 1221, + IdPermission = 234 + }, + new + { + IdUserRole = 1500, + IdPermission = 507 + }, + new + { + IdUserRole = 1500, + IdPermission = 510 + }, + new + { + IdUserRole = 1501, + IdPermission = 214 + }, + new + { + IdUserRole = 1501, + IdPermission = 213 + }, + new + { + IdUserRole = 1502, + IdPermission = 207 + }, + new + { + IdUserRole = 1502, + IdPermission = 208 + }, + new + { + IdUserRole = 2000, + IdPermission = 205 + }, + new + { + IdUserRole = 2000, + IdPermission = 204 + }, + new + { + IdUserRole = 2000, + IdPermission = 245 + }, + new + { + IdUserRole = 2001, + IdPermission = 244 + }, + new + { + IdUserRole = 2001, + IdPermission = 245 + }, + new + { + IdUserRole = 2002, + IdPermission = 244 + }, + new + { + IdUserRole = 2002, + IdPermission = 246 + }, + new + { + IdUserRole = 2002, + IdPermission = 237 + }, + new + { + IdUserRole = 2002, + IdPermission = 238 + }, + new + { + IdUserRole = 2003, + IdPermission = 240 + }, + new + { + IdUserRole = 2003, + IdPermission = 217 + }, + new + { + IdUserRole = 2003, + IdPermission = 216 + }, + new + { + IdUserRole = 2004, + IdPermission = 242 + }, + new + { + IdUserRole = 2004, + IdPermission = 217 + }, + new + { + IdUserRole = 2004, + IdPermission = 216 + }, + new + { + IdUserRole = 2004, + IdPermission = 205 + }, + new + { + IdUserRole = 2004, + IdPermission = 204 + }, + new + { + IdUserRole = 2005, + IdPermission = 247 + }, + new + { + IdUserRole = 2005, + IdPermission = 205 + }, + new + { + IdUserRole = 2005, + IdPermission = 204 + }, + new + { + IdUserRole = 2006, + IdPermission = 243 + }, + new + { + IdUserRole = 2006, + IdPermission = 205 + }, + new + { + IdUserRole = 2006, + IdPermission = 204 + }, + new + { + IdUserRole = 2007, + IdPermission = 241 + }, + new + { + IdUserRole = 2007, + IdPermission = 205 + }, + new + { + IdUserRole = 2007, + IdPermission = 204 + }, + new + { + IdUserRole = 1, + IdPermission = 100 + }, + new + { + IdUserRole = 1, + IdPermission = 101 + }, + new + { + IdUserRole = 1, + IdPermission = 102 + }, + new + { + IdUserRole = 1, + IdPermission = 103 + }, + new + { + IdUserRole = 1, + IdPermission = 104 + }, + new + { + IdUserRole = 1, + IdPermission = 105 + }, + new + { + IdUserRole = 1, + IdPermission = 106 + }, + new + { + IdUserRole = 1, + IdPermission = 107 + }, + new + { + IdUserRole = 1, + IdPermission = 108 + }, + new + { + IdUserRole = 1, + IdPermission = 109 + }, + new + { + IdUserRole = 1, + IdPermission = 110 + }, + new + { + IdUserRole = 1, + IdPermission = 111 + }, + new + { + IdUserRole = 1, + IdPermission = 112 + }, + new + { + IdUserRole = 1, + IdPermission = 113 + }, + new + { + IdUserRole = 1, + IdPermission = 114 + }, + new + { + IdUserRole = 1, + IdPermission = 115 + }, + new + { + IdUserRole = 1, + IdPermission = 116 + }, + new + { + IdUserRole = 1, + IdPermission = 117 + }, + new + { + IdUserRole = 1, + IdPermission = 118 + }, + new + { + IdUserRole = 1, + IdPermission = 119 + }, + new + { + IdUserRole = 1, + IdPermission = 120 + }, + new + { + IdUserRole = 1, + IdPermission = 121 + }, + new + { + IdUserRole = 1, + IdPermission = 122 + }, + new + { + IdUserRole = 1, + IdPermission = 123 + }, + new + { + IdUserRole = 1, + IdPermission = 124 + }, + new + { + IdUserRole = 1, + IdPermission = 125 + }, + new + { + IdUserRole = 1, + IdPermission = 126 + }, + new + { + IdUserRole = 1, + IdPermission = 127 + }, + new + { + IdUserRole = 1, + IdPermission = 128 + }, + new + { + IdUserRole = 1, + IdPermission = 129 + }, + new + { + IdUserRole = 1, + IdPermission = 200 + }, + new + { + IdUserRole = 1, + IdPermission = 201 + }, + new + { + IdUserRole = 1, + IdPermission = 202 + }, + new + { + IdUserRole = 1, + IdPermission = 203 + }, + new + { + IdUserRole = 1, + IdPermission = 204 + }, + new + { + IdUserRole = 1, + IdPermission = 205 + }, + new + { + IdUserRole = 1, + IdPermission = 206 + }, + new + { + IdUserRole = 1, + IdPermission = 207 + }, + new + { + IdUserRole = 1, + IdPermission = 208 + }, + new + { + IdUserRole = 1, + IdPermission = 209 + }, + new + { + IdUserRole = 1, + IdPermission = 210 + }, + new + { + IdUserRole = 1, + IdPermission = 211 + }, + new + { + IdUserRole = 1, + IdPermission = 212 + }, + new + { + IdUserRole = 1, + IdPermission = 213 + }, + new + { + IdUserRole = 1, + IdPermission = 214 + }, + new + { + IdUserRole = 1, + IdPermission = 215 + }, + new + { + IdUserRole = 1, + IdPermission = 216 + }, + new + { + IdUserRole = 1, + IdPermission = 217 + }, + new + { + IdUserRole = 1, + IdPermission = 218 + }, + new + { + IdUserRole = 1, + IdPermission = 219 + }, + new + { + IdUserRole = 1, + IdPermission = 220 + }, + new + { + IdUserRole = 1, + IdPermission = 221 + }, + new + { + IdUserRole = 1, + IdPermission = 222 + }, + new + { + IdUserRole = 1, + IdPermission = 223 + }, + new + { + IdUserRole = 1, + IdPermission = 224 + }, + new + { + IdUserRole = 1, + IdPermission = 225 + }, + new + { + IdUserRole = 1, + IdPermission = 226 + }, + new + { + IdUserRole = 1, + IdPermission = 227 + }, + new + { + IdUserRole = 1, + IdPermission = 228 + }, + new + { + IdUserRole = 1, + IdPermission = 229 + }, + new + { + IdUserRole = 1, + IdPermission = 230 + }, + new + { + IdUserRole = 1, + IdPermission = 231 + }, + new + { + IdUserRole = 1, + IdPermission = 232 + }, + new + { + IdUserRole = 1, + IdPermission = 233 + }, + new + { + IdUserRole = 1, + IdPermission = 234 + }, + new + { + IdUserRole = 1, + IdPermission = 235 + }, + new + { + IdUserRole = 1, + IdPermission = 236 + }, + new + { + IdUserRole = 1, + IdPermission = 237 + }, + new + { + IdUserRole = 1, + IdPermission = 238 + }, + new + { + IdUserRole = 1, + IdPermission = 239 + }, + new + { + IdUserRole = 1, + IdPermission = 240 + }, + new + { + IdUserRole = 1, + IdPermission = 241 + }, + new + { + IdUserRole = 1, + IdPermission = 242 + }, + new + { + IdUserRole = 1, + IdPermission = 243 + }, + new + { + IdUserRole = 1, + IdPermission = 244 + }, + new + { + IdUserRole = 1, + IdPermission = 245 + }, + new + { + IdUserRole = 1, + IdPermission = 246 + }, + new + { + IdUserRole = 1, + IdPermission = 247 + }, + new + { + IdUserRole = 1, + IdPermission = 248 + }, + new + { + IdUserRole = 1, + IdPermission = 249 + }, + new + { + IdUserRole = 1, + IdPermission = 250 + }, + new + { + IdUserRole = 1, + IdPermission = 251 + }, + new + { + IdUserRole = 1, + IdPermission = 252 + }, + new + { + IdUserRole = 1, + IdPermission = 253 + }, + new + { + IdUserRole = 1, + IdPermission = 254 + }, + new + { + IdUserRole = 1, + IdPermission = 255 + }, + new + { + IdUserRole = 1, + IdPermission = 256 + }, + new + { + IdUserRole = 1, + IdPermission = 257 + }, + new + { + IdUserRole = 1, + IdPermission = 258 + }, + new + { + IdUserRole = 1, + IdPermission = 259 + }, + new + { + IdUserRole = 1, + IdPermission = 260 + }, + new + { + IdUserRole = 1, + IdPermission = 261 + }, + new + { + IdUserRole = 1, + IdPermission = 262 + }, + new + { + IdUserRole = 1, + IdPermission = 263 + }, + new + { + IdUserRole = 1, + IdPermission = 264 + }, + new + { + IdUserRole = 1, + IdPermission = 265 + }, + new + { + IdUserRole = 1, + IdPermission = 266 + }, + new + { + IdUserRole = 1, + IdPermission = 267 + }, + new + { + IdUserRole = 1, + IdPermission = 268 + }, + new + { + IdUserRole = 1, + IdPermission = 269 + }, + new + { + IdUserRole = 1, + IdPermission = 380 + }, + new + { + IdUserRole = 1, + IdPermission = 381 + }, + new + { + IdUserRole = 1, + IdPermission = 382 + }, + new + { + IdUserRole = 1, + IdPermission = 383 + }, + new + { + IdUserRole = 1, + IdPermission = 384 + }, + new + { + IdUserRole = 1, + IdPermission = 385 + }, + new + { + IdUserRole = 1, + IdPermission = 386 + }, + new + { + IdUserRole = 1, + IdPermission = 387 + }, + new + { + IdUserRole = 1, + IdPermission = 388 + }, + new + { + IdUserRole = 1, + IdPermission = 389 + }, + new + { + IdUserRole = 1, + IdPermission = 390 + }, + new + { + IdUserRole = 1, + IdPermission = 391 + }, + new + { + IdUserRole = 1, + IdPermission = 400 + }, + new + { + IdUserRole = 1, + IdPermission = 401 + }, + new + { + IdUserRole = 1, + IdPermission = 407 + }, + new + { + IdUserRole = 1, + IdPermission = 408 + }, + new + { + IdUserRole = 1, + IdPermission = 450 + }, + new + { + IdUserRole = 1, + IdPermission = 460 + }, + new + { + IdUserRole = 1, + IdPermission = 461 + }, + new + { + IdUserRole = 1, + IdPermission = 500 + }, + new + { + IdUserRole = 1, + IdPermission = 501 + }, + new + { + IdUserRole = 1, + IdPermission = 502 + }, + new + { + IdUserRole = 1, + IdPermission = 503 + }, + new + { + IdUserRole = 1, + IdPermission = 504 + }, + new + { + IdUserRole = 1, + IdPermission = 505 + }, + new + { + IdUserRole = 1, + IdPermission = 506 + }, + new + { + IdUserRole = 1, + IdPermission = 507 + }, + new + { + IdUserRole = 1, + IdPermission = 510 + }, + new + { + IdUserRole = 1, + IdPermission = 511 + }, + new + { + IdUserRole = 1, + IdPermission = 512 + }, + new + { + IdUserRole = 1, + IdPermission = 516 + }, + new + { + IdUserRole = 1, + IdPermission = 517 + }, + new + { + IdUserRole = 1, + IdPermission = 518 + }, + new + { + IdUserRole = 1, + IdPermission = 519 + }, + new + { + IdUserRole = 1, + IdPermission = 520 + }, + new + { + IdUserRole = 1, + IdPermission = 521 + }, + new + { + IdUserRole = 1, + IdPermission = 522 + }, + new + { + IdUserRole = 1, + IdPermission = 523 + }, + new + { + IdUserRole = 1, + IdPermission = 524 + }, + new + { + IdUserRole = 1, + IdPermission = 525 + }, + new + { + IdUserRole = 1, + IdPermission = 526 + }, + new + { + IdUserRole = 1, + IdPermission = 527 + }, + new + { + IdUserRole = 1, + IdPermission = 528 + }, + new + { + IdUserRole = 1, + IdPermission = 530 + }, + new + { + IdUserRole = 1, + IdPermission = 531 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRoleUserRole", b => + { + b.Property("Id") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.Property("IdInclude") + .HasColumnType("integer") + .HasColumnName("id_include_user_role"); + + b.HasKey("Id", "IdInclude") + .HasName("t_relation_user_role_user_role_pk"); + + b.HasIndex("IdInclude"); + + b.ToTable("t_relation_user_role_user_role", t => + { + t.HasComment("Отношение ролей к ролям"); + }); + + b.HasData( + new + { + Id = 1101, + IdInclude = 1100 + }, + new + { + Id = 1103, + IdInclude = 1102 + }, + new + { + Id = 1105, + IdInclude = 1104 + }, + new + { + Id = 1107, + IdInclude = 1106 + }, + new + { + Id = 1109, + IdInclude = 1108 + }, + new + { + Id = 1111, + IdInclude = 1110 + }, + new + { + Id = 1114, + IdInclude = 1113 + }, + new + { + Id = 1117, + IdInclude = 1116 + }, + new + { + Id = 1203, + IdInclude = 1202 + }, + new + { + Id = 1207, + IdInclude = 1206 + }, + new + { + Id = 1209, + IdInclude = 1208 + }, + new + { + Id = 1212, + IdInclude = 1211 + }, + new + { + Id = 1214, + IdInclude = 1213 + }, + new + { + Id = 1216, + IdInclude = 1215 + }, + new + { + Id = 1218, + IdInclude = 1217 + }, + new + { + Id = 2000, + IdInclude = 1200 + }, + new + { + Id = 2000, + IdInclude = 1201 + }, + new + { + Id = 2000, + IdInclude = 1202 + }, + new + { + Id = 2000, + IdInclude = 1204 + }, + new + { + Id = 2000, + IdInclude = 1205 + }, + new + { + Id = 2000, + IdInclude = 1206 + }, + new + { + Id = 2000, + IdInclude = 1208 + }, + new + { + Id = 2000, + IdInclude = 1210 + }, + new + { + Id = 2000, + IdInclude = 1211 + }, + new + { + Id = 2000, + IdInclude = 1213 + }, + new + { + Id = 2000, + IdInclude = 1215 + }, + new + { + Id = 2000, + IdInclude = 1217 + }, + new + { + Id = 2000, + IdInclude = 1219 + }, + new + { + Id = 2000, + IdInclude = 1220 + }, + new + { + Id = 2000, + IdInclude = 1221 + }, + new + { + Id = 2000, + IdInclude = 1500 + }, + new + { + Id = 2000, + IdInclude = 1501 + }, + new + { + Id = 2000, + IdInclude = 1502 + }, + new + { + Id = 2001, + IdInclude = 1500 + }, + new + { + Id = 2001, + IdInclude = 1501 + }, + new + { + Id = 2001, + IdInclude = 1502 + }, + new + { + Id = 2002, + IdInclude = 1500 + }, + new + { + Id = 2002, + IdInclude = 1501 + }, + new + { + Id = 2002, + IdInclude = 1502 + }, + new + { + Id = 2003, + IdInclude = 1500 + }, + new + { + Id = 2003, + IdInclude = 1501 + }, + new + { + Id = 2003, + IdInclude = 1502 + }, + new + { + Id = 2004, + IdInclude = 1500 + }, + new + { + Id = 2004, + IdInclude = 1501 + }, + new + { + Id = 2004, + IdInclude = 1502 + }, + new + { + Id = 2005, + IdInclude = 1500 + }, + new + { + Id = 2005, + IdInclude = 1501 + }, + new + { + Id = 2005, + IdInclude = 1502 + }, + new + { + Id = 2006, + IdInclude = 1500 + }, + new + { + Id = 2006, + IdInclude = 1501 + }, + new + { + Id = 2006, + IdInclude = 1502 + }, + new + { + Id = 2007, + IdInclude = 1500 + }, + new + { + Id = 2007, + IdInclude = 1501 + }, + new + { + Id = 2007, + IdInclude = 1502 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserUserRole", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.HasKey("IdUser", "IdUserRole"); + + b.HasIndex("IdUserRole"); + + b.ToTable("t_relation_user_user_role", t => + { + t.HasComment("Отношение пользователей и ролей"); + }); + + b.HasData( + new + { + IdUser = 1, + IdUserRole = 1 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ReportProperty", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Begin") + .HasColumnType("timestamp with time zone") + .HasColumnName("begin"); + + b.Property("End") + .HasColumnType("timestamp with time zone") + .HasColumnName("end") + .HasComment("timestamp with time zone"); + + b.Property("Format") + .HasColumnType("integer") + .HasColumnName("format") + .HasComment("Формат отчета"); + + b.Property("IdFile") + .HasColumnType("integer") + .HasColumnName("id_file") + .HasComment("id файла-родителя"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("id скважины"); + + b.Property("Step") + .HasColumnType("integer") + .HasColumnName("step") + .HasComment("размер шага в секундах"); + + b.HasKey("Id"); + + b.HasIndex("IdFile"); + + b.HasIndex("IdWell"); + + b.ToTable("t_report_property", t => + { + t.HasComment("Отчеты с данными по буровым"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Schedule", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("DrillEnd") + .HasColumnType("timestamp with time zone") + .HasColumnName("drill_end") + .HasComment("Конец вахты"); + + b.Property("DrillStart") + .HasColumnType("timestamp with time zone") + .HasColumnName("drill_start") + .HasComment("Начало вахты"); + + b.Property("IdDriller") + .HasColumnType("integer") + .HasColumnName("id_driller") + .HasComment("Идентификатор бурильщика"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Идентификатор скважины"); + + b.Property("ShiftEnd") + .HasColumnType("time without time zone") + .HasColumnName("shift_end") + .HasComment("Конец смены"); + + b.Property("ShiftStart") + .HasColumnType("time without time zone") + .HasColumnName("shift_start") + .HasComment("Начало смены"); + + b.HasKey("Id"); + + b.HasIndex("IdDriller"); + + b.HasIndex("IdWell"); + + b.ToTable("t_schedule", t => + { + t.HasComment("График работы бурильщика"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.SetpointsRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Comment") + .HasColumnType("text") + .HasColumnName("comment") + .HasComment("комментарий для оператора"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Id пользователя, загрузившего файл"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("0: неизвестно, 1:ожидает отправки, 2: отправлено, 3: принято оператором, 4: отклонено оператором, 5: устарело"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("id скважины"); + + b.Property("ObsolescenceSec") + .HasColumnType("integer") + .HasColumnName("obsolescence") + .HasComment("сек. до устаревания"); + + b.Property("Setpoints") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("setpoint_set") + .HasComment("Набор уставок"); + + b.Property("UploadDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdWell"); + + b.ToTable("t_setpoints_rquest", t => + { + t.HasComment("Запросы на изменение уставок панели оператора"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Subsystem", 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"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name"); + + b.HasKey("Id"); + + b.ToTable("t_subsystem", t => + { + t.HasComment("Описание подсистем"); + }); + + b.HasData( + new + { + Id = 1, + Description = "Совместная работа режимов \"Бурение в роторе\" и \"Бурение в слайде\"", + Name = "АПД" + }, + new + { + Id = 11, + Description = "Режим работы \"Бурение в роторе\"", + Name = "АПД ротор" + }, + new + { + Id = 12, + Description = "Режим работы \"Бурение в слайде\"", + Name = "АПД слайд" + }, + new + { + Id = 65536, + Description = "Осцилляция", + Name = "Осцилляция" + }, + new + { + Id = 65537, + Description = "Демпфер", + Name = "Демпфер" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Telemetry", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Info") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("info") + .HasComment("Информация с панели о скважине"); + + b.Property("RemoteUid") + .IsRequired() + .HasColumnType("text") + .HasColumnName("remote_uid") + .HasComment("Идентификатор передающего устройства. Может повторяться в списке, так как комплекты оборудования переезжают от скв. к скв."); + + b.Property("TimeZone") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("timezone") + .HasComment("Смещение часового пояса от UTC"); + + b.HasKey("Id"); + + b.HasIndex(new[] { "RemoteUid" }, "t_telemetry_remote_uid_index"); + + b.ToTable("t_telemetry", t => + { + t.HasComment("таблица привязки телеметрии от комплектов к конкретной скважине."); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaub", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date") + .HasComment("'2021-10-19 18:23:54+05'"); + + b.Property("AxialLoad") + .HasColumnType("real") + .HasColumnName("axial_load") + .HasComment("Осевая нагрузка"); + + b.Property("AxialLoadLimitMax") + .HasColumnType("real") + .HasColumnName("axial_load_limit_max") + .HasComment("Осевая нагрузка. Аварийная макс."); + + b.Property("AxialLoadSp") + .HasColumnType("real") + .HasColumnName("axial_load_sp") + .HasComment("Осевая нагрузка. Задание"); + + b.Property("BitDepth") + .HasColumnType("real") + .HasColumnName("bit_depth") + .HasComment("Положение инструмента"); + + b.Property("BlockPosition") + .HasColumnType("real") + .HasColumnName("block_position") + .HasComment("Высота талевого блока"); + + b.Property("BlockPositionMax") + .HasColumnType("real") + .HasColumnName("block_position_max") + .HasComment("Талевый блок. Макс положение"); + + b.Property("BlockPositionMin") + .HasColumnType("real") + .HasColumnName("block_position_min") + .HasComment("Талевый блок. Мин положение"); + + b.Property("BlockSpeed") + .HasColumnType("real") + .HasColumnName("block_speed") + .HasComment("Скорость талевого блока"); + + b.Property("BlockSpeedSp") + .HasColumnType("real") + .HasColumnName("block_speed_sp") + .HasComment("Скорости талевого блока. Задание"); + + b.Property("BlockSpeedSpDevelop") + .HasColumnType("real") + .HasColumnName("block_speed_sp_develop") + .HasComment("Талевый блок. Задание скорости для проработки"); + + b.Property("BlockSpeedSpRotor") + .HasColumnType("real") + .HasColumnName("block_speed_sp_rotor") + .HasComment("Талевый блок. Задание скорости для роторного бурения"); + + b.Property("BlockSpeedSpSlide") + .HasColumnType("real") + .HasColumnName("block_speed_sp_slide") + .HasComment("Талевый блок. Задание скорости для режима слайда"); + + b.Property("Flow") + .HasColumnType("real") + .HasColumnName("flow") + .HasComment("Расход"); + + b.Property("FlowDeltaLimitMax") + .HasColumnType("real") + .HasColumnName("flow_delta_limit_max") + .HasComment("Расход. Аварийный макс."); + + b.Property("FlowIdle") + .HasColumnType("real") + .HasColumnName("flow_idle") + .HasComment("Расход. Холостой ход"); + + b.Property("HookWeight") + .HasColumnType("real") + .HasColumnName("hook_weight") + .HasComment("Вес на крюке"); + + b.Property("HookWeightIdle") + .HasColumnType("real") + .HasColumnName("hook_weight_idle") + .HasComment("Вес на крюке. Холостой ход"); + + b.Property("HookWeightLimitMax") + .HasColumnType("real") + .HasColumnName("hook_weight_limit_max") + .HasComment("Вес на крюке. Затяжка"); + + b.Property("HookWeightLimitMin") + .HasColumnType("real") + .HasColumnName("hook_weight_limit_min") + .HasComment("Вес на крюке. Посадка"); + + b.Property("IdFeedRegulator") + .HasColumnType("smallint") + .HasColumnName("id_feed_regulator") + .HasComment("Текущий критерий бурения"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user") + .HasComment("Пользователь САУБ"); + + b.Property("Mode") + .HasColumnType("smallint") + .HasColumnName("mode") + .HasComment("Режим САУБ"); + + b.Property("Mse") + .HasColumnType("real") + .HasColumnName("mse") + .HasComment("MSE"); + + b.Property("MseState") + .HasColumnType("smallint") + .HasColumnName("mse_state") + .HasComment("Текущее состояние работы MSE"); + + b.Property("Pressure") + .HasColumnType("real") + .HasColumnName("pressure") + .HasComment("Давление"); + + b.Property("PressureDeltaLimitMax") + .HasColumnType("real") + .HasColumnName("pressure_delta_limit_max") + .HasComment("Давление дифф. Аварийное макс."); + + b.Property("PressureIdle") + .HasColumnType("real") + .HasColumnName("pressure_idle") + .HasComment("Давление. Холостой ход"); + + b.Property("PressureSp") + .HasColumnType("real") + .HasColumnName("pressure_sp") + .HasComment("Давление. Задание"); + + b.Property("PressureSpDevelop") + .HasColumnType("real") + .HasColumnName("pressure_sp_develop") + .HasComment("Давление. Задание для проработки"); + + b.Property("PressureSpRotor") + .HasColumnType("real") + .HasColumnName("pressure_sp_rotor") + .HasComment("Давление. Задание для роторного бурения"); + + b.Property("PressureSpSlide") + .HasColumnType("real") + .HasColumnName("pressure_sp_slide") + .HasComment("Давление. Задание для режима слайда"); + + b.Property("Pump0Flow") + .HasColumnType("real") + .HasColumnName("pump0_flow") + .HasComment("Расход. Буровой насос 1"); + + b.Property("Pump1Flow") + .HasColumnType("real") + .HasColumnName("pump1_flow") + .HasComment("Расход. Буровой насос 2"); + + b.Property("Pump2Flow") + .HasColumnType("real") + .HasColumnName("pump2_flow") + .HasComment("Расход. Буровой насос 3"); + + b.Property("RotorSpeed") + .HasColumnType("real") + .HasColumnName("rotor_speed") + .HasComment("Обороты ротора"); + + b.Property("RotorTorque") + .HasColumnType("real") + .HasColumnName("rotor_torque") + .HasComment("Момент на роторе"); + + b.Property("RotorTorqueIdle") + .HasColumnType("real") + .HasColumnName("rotor_torque_idle") + .HasComment("Момент на роторе. Холостой ход"); + + b.Property("RotorTorqueLimitMax") + .HasColumnType("real") + .HasColumnName("rotor_torque_limit_max") + .HasComment("Момент на роторе. Аварийный макс."); + + b.Property("RotorTorqueSp") + .HasColumnType("real") + .HasColumnName("rotor_torque_sp") + .HasComment("Момент на роторе. Задание"); + + b.Property("WellDepth") + .HasColumnType("real") + .HasColumnName("well_depth") + .HasComment("Глубина забоя"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_data_saub", t => + { + t.HasComment("набор основных данных по SAUB"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaubStat", b => + { + b.Property("Count") + .HasColumnType("bigint") + .HasColumnName("count_items"); + + b.Property("DateMax") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_max"); + + b.Property("DateMin") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_min"); + + b.Property("DepthMax") + .HasColumnType("real") + .HasColumnName("depth_max"); + + b.Property("DepthMin") + .HasColumnType("real") + .HasColumnName("depth_min"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.ToTable((string)null); + + b.ToView("mw_telemetry_datas_saub_stat", (string)null); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSpin", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date") + .HasComment("'2021-10-19 18:23:54+05'"); + + b.Property("Mode") + .HasColumnType("smallint") + .HasColumnName("mode") + .HasComment("Выбранный режим управления"); + + b.Property("PositionRight") + .HasColumnType("real") + .HasColumnName("position_right") + .HasComment("Крайний правый угол осцилляции"); + + b.Property("PositionZero") + .HasColumnType("real") + .HasColumnName("position_zero") + .HasComment("Нулевая позиция осцилляции"); + + b.Property("RevolsLeftLimit") + .HasColumnType("real") + .HasColumnName("revols_left_limit") + .HasComment("Ограничение числа оборотов влево"); + + b.Property("RevolsLeftTotal") + .HasColumnType("real") + .HasColumnName("revols_left_total") + .HasComment("Суммарное количество оборотов влево"); + + b.Property("RevolsRightLimit") + .HasColumnType("real") + .HasColumnName("revols_right_limit") + .HasComment("Ограничение числа оборотов вправо"); + + b.Property("RevolsRightTotal") + .HasColumnType("real") + .HasColumnName("revols_right_total") + .HasComment("Суммарное количество оборотов вправо"); + + b.Property("SpeedLeftSp") + .HasColumnType("real") + .HasColumnName("speed_left_sp") + .HasComment("Заданная скорость вращения влево"); + + b.Property("SpeedRightSp") + .HasColumnType("real") + .HasColumnName("speed_right_sp") + .HasComment("Заданная скорость вращения вправо"); + + b.Property("State") + .HasColumnType("smallint") + .HasColumnName("state") + .HasComment("Переменная этапа"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_data_spin", t => + { + t.HasComment("набор основных данных по SpinMaster"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryEvent", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdEvent") + .HasColumnType("integer") + .HasColumnName("id_event"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category"); + + b.Property("MessageTemplate") + .IsRequired() + .HasColumnType("text") + .HasColumnName("message_template"); + + b.HasKey("IdTelemetry", "IdEvent"); + + b.ToTable("t_telemetry_event", t => + { + t.HasComment("Справочник событий. События формируют сообщения. Разделено по версиям посылок от телеметрии."); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Arg0") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg0") + .HasComment("Аргумент №0 для вставки в шаблон сообщения"); + + b.Property("Arg1") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg1"); + + b.Property("Arg2") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg2"); + + b.Property("Arg3") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg3"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("IdEvent") + .HasColumnType("integer") + .HasColumnName("id_event"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdTelemetryUser") + .HasColumnType("integer") + .HasColumnName("id_telemetry_user") + .HasComment("Пользователь панели отправляющей телеметрию. не пользователь облака."); + + b.Property("WellDepth") + .HasColumnType("double precision") + .HasColumnName("well_depth"); + + b.HasKey("Id"); + + b.HasIndex("IdTelemetry"); + + b.ToTable("t_telemetry_message", t => + { + t.HasComment("Сообщения на буровых"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryUser", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("Level") + .HasColumnType("integer") + .HasColumnName("level"); + + b.Property("Name") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name"); + + b.Property("Patronymic") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("patronymic"); + + b.Property("Surname") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("surname"); + + b.HasKey("IdTelemetry", "IdUser"); + + b.ToTable("t_telemetry_user", t => + { + t.HasComment("Пользователи панели САУБ. Для сообщений."); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryWirelineRunOut", b => + { + b.Property("IdTelemetry") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id_telemetry") + .HasComment("Идентификатор телеметрии"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("IdTelemetry")); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_time") + .HasComment("Отметка времени"); + + b.Property("Hauling") + .HasColumnType("real") + .HasColumnName("hauling") + .HasComment("Наработка талевого каната с момента перетяжки каната, т*км"); + + b.Property("HaulingWarnSp") + .HasColumnType("real") + .HasColumnName("hauling_warn_sp") + .HasComment("Наработка талевого каната до сигнализации о необходимости перетяжки, т*км"); + + b.Property("Replace") + .HasColumnType("real") + .HasColumnName("replace") + .HasComment("Наработка талевого каната с момента замены каната, т*км"); + + b.Property("ReplaceWarnSp") + .HasColumnType("real") + .HasColumnName("replace_warn_sp") + .HasComment("Наработка талевого каната до сигнализации о необходимости замены, т*км"); + + b.HasKey("IdTelemetry"); + + b.ToTable("t_telemetry_wireline_run_out", t => + { + t.HasComment("Наработка талевого каната"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Trajectory.TrajectoryFact", 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("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_trajectory_fact", t => + { + t.HasComment("Загрузка фактической траектории"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Trajectory.TrajectoryPlan", 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_trajectory_plan", t => + { + t.HasComment("Загрузка плановой траектории"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Email") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("email") + .HasComment("должность"); + + b.Property("IdCompany") + .HasColumnType("integer") + .HasColumnName("id_company"); + + b.Property("IdState") + .HasColumnType("smallint") + .HasColumnName("state") + .HasComment("состояние:\n0 - не активен, \n1 - активен, \n2 - заблокирован"); + + b.Property("Login") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("login"); + + b.Property("Name") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name") + .HasComment("имя"); + + b.Property("PasswordHash") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("password_hash") + .HasComment("соленый хэш пароля.\nпервые 5 символов - соль"); + + b.Property("Patronymic") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("patronymic") + .HasComment("отчество"); + + b.Property("Phone") + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .HasColumnName("phone") + .HasComment("номер телефона"); + + b.Property("Position") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("position") + .HasComment("email"); + + b.Property("Surname") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("surname") + .HasComment("фамилия"); + + b.HasKey("Id"); + + b.HasIndex("IdCompany"); + + b.HasIndex("Login") + .IsUnique(); + + b.ToTable("t_user", t => + { + t.HasComment("Пользователи облака"); + }); + + b.HasData( + new + { + Id = 1, + Email = "", + IdCompany = 1, + IdState = (short)1, + Login = "dev", + Name = "Разработчик", + PasswordHash = "Vlcj|4fa529103dde7ff72cfe76185f344d4aa87931f8e1b2044e8a7739947c3d18923464eaad93843e4f809c5e126d013072" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserRole", 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("IdType") + .HasColumnType("integer") + .HasColumnName("id_type") + .HasComment("0-роль из стандартной матрицы, \n1-специальная роль для какого-либо пользователя"); + + b.HasKey("Id"); + + b.ToTable("t_user_role", t => + { + t.HasComment("Роли пользователей в системе"); + }); + + b.HasData( + new + { + Id = 1, + Caption = "root", + IdType = 1 + }, + new + { + Id = 1100, + Caption = "admin_cluster.view", + IdType = 1 + }, + new + { + Id = 1101, + Caption = "admin_cluster.edit", + IdType = 1 + }, + new + { + Id = 1102, + Caption = "admin_company.view", + IdType = 1 + }, + new + { + Id = 1103, + Caption = "admin_company.edit", + IdType = 1 + }, + new + { + Id = 1104, + Caption = "admin_company_type.view", + IdType = 1 + }, + new + { + Id = 1105, + Caption = "admin_company_type.edit", + IdType = 1 + }, + new + { + Id = 1106, + Caption = "admin_deposit.view", + IdType = 1 + }, + new + { + Id = 1107, + Caption = "admin_deposit.edit", + IdType = 1 + }, + new + { + Id = 1108, + Caption = "admin_permission.view", + IdType = 1 + }, + new + { + Id = 1109, + Caption = "admin_permission.edit", + IdType = 1 + }, + new + { + Id = 1110, + Caption = "admin_role.view", + IdType = 1 + }, + new + { + Id = 1111, + Caption = "admin_role.edit", + IdType = 1 + }, + new + { + Id = 1112, + Caption = "admin_telemetry.view", + IdType = 1 + }, + new + { + Id = 1113, + Caption = "admin_user.view", + IdType = 1 + }, + new + { + Id = 1114, + Caption = "admin_user.edit", + IdType = 1 + }, + new + { + Id = 1115, + Caption = "admin_visit_log.view", + IdType = 1 + }, + new + { + Id = 1116, + Caption = "admin_well.view", + IdType = 1 + }, + new + { + Id = 1117, + Caption = "admin_well.edit", + IdType = 1 + }, + new + { + Id = 1200, + Caption = "archive.view", + IdType = 1 + }, + new + { + Id = 1201, + Caption = "cluster.view", + IdType = 1 + }, + new + { + Id = 1202, + Caption = "composite.view", + IdType = 1 + }, + new + { + Id = 1203, + Caption = "composite.edit", + IdType = 1 + }, + new + { + Id = 1204, + Caption = "deposit.view", + IdType = 1 + }, + new + { + Id = 1205, + Caption = "document.view", + IdType = 1 + }, + new + { + Id = 1206, + Caption = "drillProcessFlow.view", + IdType = 1 + }, + new + { + Id = 1207, + Caption = "drillProcessFlow.edit", + IdType = 1 + }, + new + { + Id = 1208, + Caption = "measure.view", + IdType = 1 + }, + new + { + Id = 1209, + Caption = "measure.edit", + IdType = 1 + }, + new + { + Id = 1210, + Caption = "message.view", + IdType = 1 + }, + new + { + Id = 1211, + Caption = "operations.view", + IdType = 1 + }, + new + { + Id = 1212, + Caption = "operations.edit", + IdType = 1 + }, + new + { + Id = 1213, + Caption = "params.view", + IdType = 1 + }, + new + { + Id = 1214, + Caption = "params.edit", + IdType = 1 + }, + new + { + Id = 1215, + Caption = "report.view", + IdType = 1 + }, + new + { + Id = 1216, + Caption = "report.edit", + IdType = 1 + }, + new + { + Id = 1217, + Caption = "setpoints.view", + IdType = 1 + }, + new + { + Id = 1218, + Caption = "setpoints.edit", + IdType = 1 + }, + new + { + Id = 1219, + Caption = "telemetry.view", + IdType = 1 + }, + new + { + Id = 1220, + Caption = "telemetryAnalysis.view", + IdType = 1 + }, + new + { + Id = 1221, + Caption = "well.view", + IdType = 1 + }, + new + { + Id = 1500, + Caption = "Просмотр всего", + IdType = 1 + }, + new + { + Id = 1501, + Caption = "file.edit", + IdType = 1 + }, + new + { + Id = 1502, + Caption = "drillingProgram.edit", + IdType = 1 + }, + new + { + Id = 2000, + Caption = "Заказчик", + IdType = 0 + }, + new + { + Id = 2001, + Caption = "Супервайзер", + IdType = 0 + }, + new + { + Id = 2002, + Caption = "Буровой подрядчик", + IdType = 0 + }, + new + { + Id = 2003, + Caption = "Растворщик", + IdType = 0 + }, + new + { + Id = 2004, + Caption = "Телеметрист", + IdType = 0 + }, + new + { + Id = 2005, + Caption = "Долотный сервис", + IdType = 0 + }, + new + { + Id = 2006, + Caption = "ГТИ", + IdType = 0 + }, + new + { + Id = 2007, + Caption = "Цементирование", + IdType = 0 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserSetting", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("Key") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("key") + .HasComment("Ключ настроек пользователя"); + + b.Property("Value") + .HasColumnType("jsonb") + .HasColumnName("setting_value") + .HasComment("Значение настроек пользователя"); + + b.HasKey("IdUser", "Key"); + + b.ToTable("t_user_settings", t => + { + t.HasComment("настройки интерфейса пользователя"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.RecordBase", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("Actcod") + .HasColumnType("smallint") + .HasColumnName("ACTCOD"); + + b.Property("Date") + .HasColumnType("integer") + .HasColumnName("DATE"); + + b.Property("Recid") + .HasColumnType("smallint") + .HasColumnName("RECID"); + + b.Property("Seqid") + .HasColumnType("integer") + .HasColumnName("SEQID"); + + b.Property("Stknum") + .HasColumnType("smallint") + .HasColumnName("STKNUM"); + + b.Property("Time") + .HasColumnType("integer") + .HasColumnName("TIME"); + + b.Property("Wellid") + .HasColumnType("text") + .HasColumnName("WELLID"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_wits_base"); + + b.UseTptMappingStrategy(); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", 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("IdCluster") + .HasColumnType("integer") + .HasColumnName("id_cluster"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("state") + .HasComment("0 - неизвестно, 1 - в работе, 2 - завершена"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdWellType") + .HasColumnType("integer") + .HasColumnName("id_well_type"); + + 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("IdCluster"); + + b.HasIndex("IdTelemetry") + .IsUnique(); + + b.HasIndex("IdWellType"); + + b.ToTable("t_well", t => + { + t.HasComment("скважины"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellComposite", b => + { + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины получателя"); + + b.Property("IdWellSrc") + .HasColumnType("integer") + .HasColumnName("id_well_src") + .HasComment("Id скважины композита"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_well_section_type") + .HasComment("Id тип секции композита"); + + b.HasKey("IdWell", "IdWellSrc", "IdWellSectionType"); + + b.HasIndex("IdWellSectionType"); + + b.HasIndex("IdWellSrc"); + + b.ToTable("t_well_composite", t => + { + t.HasComment("Композитная скважина"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellFinalDocument", b => + { + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category"); + + b.HasKey("IdWell", "IdUser", "IdCategory") + .HasName("t_well_final_documents_pk"); + + b.HasIndex("IdCategory"); + + b.HasIndex("IdUser"); + + b.ToTable("t_well_final_documents", t => + { + t.HasComment("Дело скважины"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CategoryInfo") + .HasColumnType("text") + .HasColumnName("category_info") + .HasComment("Доп. информация к выбраной категории"); + + b.Property("Comment") + .HasColumnType("text") + .HasColumnName("comment") + .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("DurationHours") + .HasColumnType("double precision") + .HasColumnName("duration_hours") + .HasComment("Продолжительность, часы"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category") + .HasComment("Id категории операции"); + + b.Property("IdPlan") + .HasColumnType("integer") + .HasColumnName("id_plan") + .HasComment("Id плановой операции"); + + b.Property("IdType") + .HasColumnType("integer") + .HasColumnName("id_type") + .HasComment("0 = План или 1 = Факт"); + + b.Property("IdUser") + .HasColumnType("integer"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_well_section_type") + .HasComment("Id тип секции скважины"); + + b.Property("LastUpdateDate") + .HasColumnType("timestamp with time zone"); + + b.HasKey("Id"); + + b.HasIndex("DateStart"); + + b.HasIndex("DepthEnd"); + + b.HasIndex("IdCategory"); + + b.HasIndex("IdPlan"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_well_operation", t => + { + t.HasComment("Данные по операциям на скважине"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperationCategory", 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("IsHidden") + .HasColumnType("boolean"); + + b.Property("KeyValueName") + .HasMaxLength(32) + .HasColumnType("character varying(32)") + .HasColumnName("key_value_name") + .HasComment("Название ключевого показателя операции"); + + b.Property("KeyValueUnits") + .HasMaxLength(16) + .HasColumnType("character varying(16)") + .HasColumnName("key_value_units") + .HasComment("Единицы измерения ключевого показателя операции"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name") + .HasComment("Название категории операции"); + + b.HasKey("Id"); + + b.HasIndex("IdParent"); + + b.ToTable("t_well_operation_category", t => + { + t.HasComment("Справочник операций на скважине"); + }); + + b.HasData( + new + { + Id = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "м/ч", + Name = "БУРЕНИЕ" + }, + new + { + Id = 3001, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО" + }, + new + { + Id = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "КРЕПЛЕНИЕ" + }, + new + { + Id = 3003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ГФР" + }, + new + { + Id = 3004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Вспомогательные операции" + }, + new + { + Id = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Непроизводительное время (НПВ)" + }, + new + { + Id = 3006, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Заключительные работы" + }, + new + { + Id = 4000, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "КНБК" + }, + new + { + Id = 4001, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "м/ч", + Name = "Механическое. бурение" + }, + new + { + Id = 4002, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Статический замер" + }, + new + { + Id = 4003, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Нормализация диаметра скважины" + }, + new + { + Id = 4004, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Наращивание" + }, + new + { + Id = 4005, + IdParent = 3001, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО" + }, + new + { + Id = 4006, + IdParent = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск обсадной колонны" + }, + new + { + Id = 4018, + IdParent = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Крепление" + }, + new + { + Id = 4007, + IdParent = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Цементирование" + }, + new + { + Id = 4008, + IdParent = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Вспомогательные работы при креплении" + }, + new + { + Id = 4009, + IdParent = 3003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка/разборка приборов ГИС" + }, + new + { + Id = 4010, + IdParent = 3003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО" + }, + new + { + Id = 4011, + IdParent = 3003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ГИС" + }, + new + { + Id = 4012, + IdParent = 3004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка, ОБР" + }, + new + { + Id = 4013, + IdParent = 3004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Вспомогательные работы" + }, + new + { + Id = 4014, + IdParent = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ремонт оборудования" + }, + new + { + Id = 4015, + IdParent = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Аварийные работы" + }, + new + { + Id = 4016, + IdParent = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Осложнение" + }, + new + { + Id = 4017, + IdParent = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Незаложенные в ГГД операции" + }, + new + { + Id = 4019, + IdParent = 3006, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Заключительные операции" + }, + new + { + Id = 5000, + IdParent = 4000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Разборка КНБК" + }, + new + { + Id = 5001, + IdParent = 4000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка КНБК" + }, + new + { + Id = 5002, + IdParent = 4001, + IsHidden = true, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", + Name = "Бурение слайдом" + }, + new + { + Id = 5003, + IdParent = 4001, + IsHidden = true, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", + Name = "Бурение ротором" + }, + new + { + Id = 5004, + IdParent = 4002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Замер ЗТС (запись MWD)" + }, + new + { + Id = 5005, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка перед наращиванием" + }, + new + { + Id = 5006, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Проработка во время бурения" + }, + new + { + Id = 5007, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Проработка" + }, + new + { + Id = 5008, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонировка во время бурения" + }, + new + { + Id = 5009, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонировка перед наращиванием" + }, + new + { + Id = 5010, + IdParent = 4004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Наращивание" + }, + new + { + Id = 5011, + IdParent = 4004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Удержание в клиньях" + }, + new + { + Id = 5012, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем инструмента" + }, + new + { + Id = 5013, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем КНБК" + }, + new + { + Id = 5014, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск инструмента" + }, + new + { + Id = 5015, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск КНБК" + }, + new + { + Id = 5016, + IdParent = 4006, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка при спуске ОК" + }, + new + { + Id = 5017, + IdParent = 4006, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск ОК" + }, + new + { + Id = 5018, + IdParent = 4007, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ОЗЦ" + }, + new + { + Id = 5019, + IdParent = 4007, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Цементирование" + }, + new + { + Id = 5020, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Опрессовка БИ" + }, + new + { + Id = 5021, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Опрессовка ОК" + }, + new + { + Id = 5022, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПЗР при спуске ОК" + }, + new + { + Id = 5023, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПЗР при цементировании" + }, + new + { + Id = 5024, + IdParent = 4009, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Разборка комплекса приборов ГИС" + }, + new + { + Id = 5025, + IdParent = 4009, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка комплекса приборов ГИС" + }, + new + { + Id = 5026, + IdParent = 4010, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем приборов ГИС (на трубах)" + }, + new + { + Id = 5027, + IdParent = 4010, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск приборов ГИС (на трубах)" + }, + new + { + Id = 5028, + IdParent = 4011, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Комплекс ГИС на жестком кабеле" + }, + new + { + Id = 5029, + IdParent = 4011, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Комплекс ГИС на кабеле" + }, + new + { + Id = 5030, + IdParent = 4011, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Комплекс ГИС на трубах" + }, + new + { + Id = 5031, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Закачка/прокачка пачки" + }, + new + { + Id = 5032, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Обработка БР" + }, + new + { + Id = 5033, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ориентирование ТС при бурении" + }, + new + { + Id = 5034, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Перезапись гаммы-каротажа" + }, + new + { + Id = 5035, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Приготовление БР" + }, + new + { + Id = 5036, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка" + }, + new + { + Id = 5037, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Разбуривание тех.оснастки" + }, + new + { + Id = 5038, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск инструмента с проработкой" + }, + new + { + Id = 5039, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ВМР" + }, + new + { + Id = 5040, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Демонтаж ПВО" + }, + new + { + Id = 5041, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Долив затруба при подъёме" + }, + new + { + Id = 5042, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Монтаж ПВО" + }, + new + { + Id = 5043, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Наработка жёлоба" + }, + new + { + Id = 5044, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Обвязка устья с циркуляционной системой" + }, + new + { + Id = 5045, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Оборудование устья" + }, + new + { + Id = 5046, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Опрессовка ПВО" + }, + new + { + Id = 5047, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Перемонтаж ПВО " + }, + new + { + Id = 5048, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Перетяжка талевого каната" + }, + new + { + Id = 5049, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПЗР при сборке КНБК" + }, + new + { + Id = 5050, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Полная замена талевого каната" + }, + new + { + Id = 5051, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПР перед забуркой направления" + }, + new + { + Id = 5052, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Продувка манифольда" + }, + new + { + Id = 5053, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Срезка" + }, + new + { + Id = 5054, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Тайм-дриллинг" + }, + new + { + Id = 5055, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Тех.отстой" + }, + new + { + Id = 5056, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Учебная тревога \"Выброс\"" + }, + new + { + Id = 5057, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Чистка ЦСГО/емкостного блока" + }, + new + { + Id = 5058, + IdParent = 4014, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ремонт бурового оборудования" + }, + new + { + Id = 5059, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ловильные работы" + }, + new + { + Id = 5060, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ожидание" + }, + new + { + Id = 5061, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Определение места прихвата и ЛМ" + }, + new + { + Id = 5062, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Работа яссом" + }, + new + { + Id = 5063, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Расхаживание" + }, + new + { + Id = 5064, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО - колокол" + }, + new + { + Id = 5065, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО - метчик" + }, + new + { + Id = 5066, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО - овершот" + }, + new + { + Id = 5067, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО - труболовка" + }, + new + { + Id = 5068, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Торпедирование (встряхивание)" + }, + new + { + Id = 5069, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Торпедирование (отстрел)" + }, + new + { + Id = 5070, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Установка ванн" + }, + new + { + Id = 5071, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Фрезеровка" + }, + new + { + Id = 5072, + IdParent = 4016, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Контролируемое ГНВП" + }, + new + { + Id = 5073, + IdParent = 4016, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Поглощение" + }, + new + { + Id = 5074, + IdParent = 4016, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сальникообразование" + }, + new + { + Id = 5075, + IdParent = 4016, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Утяжеление БР" + }, + new + { + Id = 5076, + IdParent = 4017, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "НПВ / прочее" + }, + new + { + Id = 5077, + IdParent = 4017, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Обработка раствора (несоответствие параметров)" + }, + new + { + Id = 5078, + IdParent = 4017, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "подъем ОК" + }, + new + { + Id = 5079, + IdParent = 4017, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ревизия КНБК/инструмента/ЗТС" + }, + new + { + Id = 5082, + IdParent = 4000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка устройства ориентирования КО" + }, + new + { + Id = 5083, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Проработка принудительная" + }, + new + { + Id = 5084, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонировка подъем БИ, продувка" + }, + new + { + Id = 5085, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск бурильного инструмента со сборкой с мостков" + }, + new + { + Id = 5086, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем БИ с выбросом на мостки" + }, + new + { + Id = 5087, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск БИ со сборкой с мостков" + }, + new + { + Id = 5088, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка и спуск ТБТ" + }, + new + { + Id = 5089, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск КО на транспортной колонне" + }, + new + { + Id = 5090, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Отворот допускной трубы" + }, + new + { + Id = 5091, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Активация подвески, опрессовка" + }, + new + { + Id = 5092, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Монтаж, опрессовка ФА" + }, + new + { + Id = 5093, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка хвостовика 114мм (согласно схеме)" + }, + new + { + Id = 5094, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПЗР к спуску УЭЦН" + }, + new + { + Id = 5095, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Активация подвески (потайной колонны, хвостовика)" + }, + new + { + Id = 5096, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонирование перед спуском" + }, + new + { + Id = 5097, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка - перевод скважины на новый раствор" + }, + new + { + Id = 5098, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка БИ с мостков на подсвечник" + }, + new + { + Id = 5099, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подготовка ствола скважины. Перезапись ГК в интервале установки КО." + }, + new + { + Id = 5100, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Смена рабочего переводника ВСП" + }, + new + { + Id = 5101, + IdParent = 4014, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ремонт" + }, + new + { + Id = 5102, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск пакера" + }, + new + { + Id = 5103, + IdParent = 4011, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Запись гамма-каратожа" + }, + new + { + Id = 5104, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонирование спуск БИ" + }, + new + { + Id = 5105, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка клин-отклонителя" + }, + new + { + Id = 5106, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ориентирование и посадка клина-отклонителя" + }, + new + { + Id = 5107, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Протяжка подъемного патрубка подвески" + }, + new + { + Id = 5108, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем клина-отклонителя" + }, + new + { + Id = 5109, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Стыковка стингера с хвостовиком основного ствола" + }, + new + { + Id = 5110, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ориентирование и установка стыковочного узла хвостовика" + }, + new + { + Id = 5111, + IdParent = 4001, + IsHidden = false, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", + Name = "Бурение с отбором керна" + }, + new + { + Id = 5112, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Работа пакером в обсадной колонне" + }, + new + { + Id = 5113, + IdParent = 4001, + IsHidden = false, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", + Name = "Бурение" + }, + new + { + Id = 5114, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ТО оборудования" + }, + new + { + Id = 5115, + IdParent = 4019, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск НКТ" + }, + new + { + Id = 5116, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Вырезка окна" + }, + new + { + Id = 5117, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Расширение ствола" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSectionType", 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("Order") + .HasColumnType("real") + .HasColumnName("order") + .HasComment("Порядок"); + + b.HasKey("Id"); + + b.ToTable("t_well_section_type", t => + { + t.HasComment("конструкция секции скважины"); + }); + + b.HasData( + new + { + Id = 1, + Caption = "Пилотный ствол", + Order = 4f + }, + new + { + Id = 2, + Caption = "Направление", + Order = 0f + }, + new + { + Id = 3, + Caption = "Кондуктор", + Order = 1f + }, + new + { + Id = 4, + Caption = "Эксплуатационная колонна", + Order = 3f + }, + new + { + Id = 5, + Caption = "Транспортный ствол", + Order = 5f + }, + new + { + Id = 6, + Caption = "Хвостовик", + Order = 6f + }, + new + { + Id = 7, + Caption = "Пилотный ствол 2", + Order = 4.1f + }, + new + { + Id = 8, + Caption = "Направление 2", + Order = 0.1f + }, + new + { + Id = 9, + Caption = "Кондуктор 2", + Order = 1.1f + }, + new + { + Id = 10, + Caption = "Эксплуатационная колонна 2", + Order = 3.1f + }, + new + { + Id = 11, + Caption = "Транспортный ствол 2", + Order = 5.1f + }, + new + { + Id = 12, + Caption = "Хвостовик 2", + Order = 6.1f + }, + new + { + Id = 13, + Caption = "Пилотный ствол 3", + Order = 4.2f + }, + new + { + Id = 14, + Caption = "Направление 3", + Order = 0.2f + }, + new + { + Id = 15, + Caption = "Кондуктор 3", + Order = 1.2f + }, + new + { + Id = 16, + Caption = "Эксплуатационная колонна 3", + Order = 3.2f + }, + new + { + Id = 17, + Caption = "Транспортный ствол 3", + Order = 5.2f + }, + new + { + Id = 18, + Caption = "Хвостовик 3", + Order = 6.2f + }, + new + { + Id = 19, + Caption = "Пилотный ствол 4", + Order = 4.3f + }, + new + { + Id = 20, + Caption = "Направление 4", + Order = 0.3f + }, + new + { + Id = 21, + Caption = "Кондуктор 4", + Order = 1.3f + }, + new + { + Id = 22, + Caption = "Эксплуатационная колонна 4", + Order = 3.3f + }, + new + { + Id = 23, + Caption = "Транспортный ствол 4", + Order = 5.3f + }, + new + { + Id = 24, + Caption = "Хвостовик 4", + Order = 6.3f + }, + new + { + Id = 25, + Caption = "Пилотный ствол 5", + Order = 4.4f + }, + new + { + Id = 26, + Caption = "Направление 5", + Order = 0.4f + }, + new + { + Id = 27, + Caption = "Кондуктор 5", + Order = 1.4f + }, + new + { + Id = 28, + Caption = "Эксплуатационная колонна 5", + Order = 3.4f + }, + new + { + Id = 29, + Caption = "Транспортный ствол 5", + Order = 5.4f + }, + new + { + Id = 30, + Caption = "Хвостовик 5", + Order = 6.4f + }, + new + { + Id = 31, + Caption = "Техническая колонна", + Order = 2f + }, + new + { + Id = 32, + Caption = "Техническая колонна 2", + Order = 2.1f + }, + new + { + Id = 33, + Caption = "Техническая колонна 3", + Order = 2.2f + }, + new + { + Id = 34, + Caption = "Хвостовик 6", + Order = 6.5f + }, + new + { + Id = 35, + Caption = "Хвостовик 7", + Order = 6.6f + }, + new + { + Id = 36, + Caption = "Хвостовик 8", + Order = 6.7f + }, + new + { + Id = 37, + Caption = "Хвостовик 9", + Order = 6.8f + }, + new + { + Id = 38, + Caption = "Хвостовик 10", + Order = 6.9f + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSections.WellSectionPlan", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + 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("IdSectionType") + .HasColumnType("integer") + .HasColumnName("id_section_type") + .HasComment("Тип секции"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user") + .HasComment("Id пользователя"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("InnerDiameter") + .HasColumnType("double precision") + .HasColumnName("inner_diameter") + .HasComment("Внутренний диаметр"); + + b.Property("LastUpdateDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_last_update") + .HasComment("Дата последнего обновления"); + + b.Property("OuterDiameter") + .HasColumnType("double precision") + .HasColumnName("outer_diameter") + .HasComment("Внешний диаметр"); + + b.HasKey("Id"); + + b.HasIndex("IdSectionType"); + + b.HasIndex("IdWell", "IdSectionType") + .IsUnique(); + + b.ToTable("t_well_section_plan"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellType", 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.HasKey("Id"); + + b.ToTable("t_well_type", t => + { + t.HasComment("конструкция скважины"); + }); + + b.HasData( + new + { + Id = 1, + Caption = "Наклонно-направленная" + }, + new + { + Id = 2, + Caption = "Горизонтальная" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record1", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Blkpos") + .HasColumnType("real") + .HasColumnName("BLKPOS"); + + b.Property("Chkp") + .HasColumnType("real") + .HasColumnName("CHKP"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptbitv") + .HasColumnType("real") + .HasColumnName("DEPTBITV"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptretm") + .HasColumnType("real") + .HasColumnName("DEPTRETM"); + + b.Property("Deptvert") + .HasColumnType("real") + .HasColumnName("DEPTVERT"); + + b.Property("Gasa") + .HasColumnType("real") + .HasColumnName("GASA"); + + b.Property("Hkla") + .HasColumnType("real") + .HasColumnName("HKLA"); + + b.Property("Hklx") + .HasColumnType("real") + .HasColumnName("HKLX"); + + b.Property("Lagstks") + .HasColumnType("smallint") + .HasColumnName("LAGSTKS"); + + b.Property("Mcia") + .HasColumnType("real") + .HasColumnName("MCIA"); + + b.Property("Mcoa") + .HasColumnType("real") + .HasColumnName("MCOA"); + + b.Property("Mdia") + .HasColumnType("real") + .HasColumnName("MDIA"); + + b.Property("Mdoa") + .HasColumnType("real") + .HasColumnName("MDOA"); + + b.Property("Mfia") + .HasColumnType("real") + .HasColumnName("MFIA"); + + b.Property("Mfoa") + .HasColumnType("real") + .HasColumnName("MFOA"); + + b.Property("Mfop") + .HasColumnType("smallint") + .HasColumnName("MFOP"); + + b.Property("Mtia") + .HasColumnType("real") + .HasColumnName("MTIA"); + + b.Property("Mtoa") + .HasColumnType("real") + .HasColumnName("MTOA"); + + b.Property("Ropa") + .HasColumnType("real") + .HasColumnName("ROPA"); + + b.Property("Rpma") + .HasColumnType("smallint") + .HasColumnName("RPMA"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Spm1") + .HasColumnType("smallint") + .HasColumnName("SPM1"); + + b.Property("Spm2") + .HasColumnType("smallint") + .HasColumnName("SPM2"); + + b.Property("Spm3") + .HasColumnType("smallint") + .HasColumnName("SPM3"); + + b.Property("Sppa") + .HasColumnType("real") + .HasColumnName("SPPA"); + + b.Property("Stkc") + .HasColumnType("integer") + .HasColumnName("STKC"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.Property("Torqa") + .HasColumnType("real") + .HasColumnName("TORQA"); + + b.Property("Torqx") + .HasColumnType("real") + .HasColumnName("TORQX"); + + b.Property("Tvolact") + .HasColumnType("real") + .HasColumnName("TVOLACT"); + + b.Property("Tvolcact") + .HasColumnType("real") + .HasColumnName("TVOLCACT"); + + b.Property("Woba") + .HasColumnType("real") + .HasColumnName("WOBA"); + + b.Property("Wobx") + .HasColumnType("real") + .HasColumnName("WOBX"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_1"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record50", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("DeptmeasGdpMc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_GDP_mc"); + + b.Property("DeptmeasMcrstat") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_MCRSTAT"); + + b.Property("DeptmeasRa33Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33_mc"); + + b.Property("DeptmeasRa33f2Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33F2_mc"); + + b.Property("DeptmeasRa33f4Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33F4_mc"); + + b.Property("DeptmeasRp33Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33_mc"); + + b.Property("DeptmeasRp33f2Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33F2_mc"); + + b.Property("DeptmeasRp33f4Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33F4_mc"); + + b.Property("DeptmeasSlvlMc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_SLVL_mc"); + + b.Property("GdpMc") + .HasColumnType("real") + .HasColumnName("GDP_mc"); + + b.Property("Mcrstat") + .HasColumnType("real") + .HasColumnName("MCRSTAT"); + + b.Property("Ra33Mc") + .HasColumnType("real") + .HasColumnName("RA33_mc"); + + b.Property("Ra33f2Mc") + .HasColumnType("real") + .HasColumnName("RA33F2_mc"); + + b.Property("Ra33f4Mc") + .HasColumnType("real") + .HasColumnName("RA33F4_mc"); + + b.Property("Rp33Mc") + .HasColumnType("real") + .HasColumnName("RP33_mc"); + + b.Property("Rp33f2Mc") + .HasColumnType("real") + .HasColumnName("RP33F2_mc"); + + b.Property("Rp33f4Mc") + .HasColumnType("real") + .HasColumnName("RP33F4_mc"); + + b.Property("SlvlMc") + .HasColumnType("real") + .HasColumnName("SLVL_mc"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_50"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record60", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Btot") + .HasColumnType("real") + .HasColumnName("Btot"); + + b.Property("Bx") + .HasColumnType("real") + .HasColumnName("Bx"); + + b.Property("By") + .HasColumnType("real") + .HasColumnName("By"); + + b.Property("Bz") + .HasColumnType("real") + .HasColumnName("Bz"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Gtot") + .HasColumnType("real") + .HasColumnName("Gtot"); + + b.Property("Gx") + .HasColumnType("real") + .HasColumnName("Gx"); + + b.Property("Gy") + .HasColumnType("real") + .HasColumnName("Gy"); + + b.Property("Gz") + .HasColumnType("real") + .HasColumnName("Gz"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_60"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record61", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Att06h") + .HasColumnType("real") + .HasColumnName("ATT06H"); + + b.Property("Att06l") + .HasColumnType("real") + .HasColumnName("ATT06L"); + + b.Property("Att10h") + .HasColumnType("real") + .HasColumnName("ATT10H"); + + b.Property("Att10l") + .HasColumnType("real") + .HasColumnName("ATT10L"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Phl1f1") + .HasColumnType("real") + .HasColumnName("PHL1F1"); + + b.Property("Phl1f2") + .HasColumnType("real") + .HasColumnName("PHL1F2"); + + b.Property("Phl2f1") + .HasColumnType("real") + .HasColumnName("PHL2F1"); + + b.Property("Phl2f2") + .HasColumnType("real") + .HasColumnName("PHL2F2"); + + b.Property("Status") + .HasColumnType("real") + .HasColumnName("Status"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_61"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record7", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptsvym") + .HasColumnType("real") + .HasColumnName("DEPTSVYM"); + + b.Property("Deptsvyv") + .HasColumnType("real") + .HasColumnName("DEPTSVYV"); + + b.Property("Passnum") + .HasColumnType("smallint") + .HasColumnName("PASSNUM"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Svyazc") + .HasColumnType("real") + .HasColumnName("SVYAZC"); + + b.Property("Svyazu") + .HasColumnType("real") + .HasColumnName("SVYAZU"); + + b.Property("Svydls") + .HasColumnType("real") + .HasColumnName("SVYDLS"); + + b.Property("Svyew") + .HasColumnType("real") + .HasColumnName("SVYEW"); + + b.Property("Svygtf") + .HasColumnType("real") + .HasColumnName("SVYGTF"); + + b.Property("Svyinc") + .HasColumnType("real") + .HasColumnName("SVYINC"); + + b.Property("Svymtf") + .HasColumnType("real") + .HasColumnName("SVYMTF"); + + b.Property("Svyns") + .HasColumnType("real") + .HasColumnName("SVYNS"); + + b.Property("Svytype") + .HasColumnType("text") + .HasColumnName("SVYTYPE"); + + b.Property("Svywalk") + .HasColumnType("real") + .HasColumnName("SVYWALK"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_7"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record8", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptbitv") + .HasColumnType("real") + .HasColumnName("DEPTBITV"); + + b.Property("Deptcalm") + .HasColumnType("real") + .HasColumnName("DEPTCALM"); + + b.Property("Deptcalv") + .HasColumnType("real") + .HasColumnName("DEPTCALV"); + + b.Property("Deptfdm") + .HasColumnType("real") + .HasColumnName("DEPTFDM"); + + b.Property("Deptfdv") + .HasColumnType("real") + .HasColumnName("DEPTFDV"); + + b.Property("Deptgr1m") + .HasColumnType("real") + .HasColumnName("DEPTGR1M"); + + b.Property("Deptgr1v") + .HasColumnType("real") + .HasColumnName("DEPTGR1V"); + + b.Property("Deptgr2m") + .HasColumnType("real") + .HasColumnName("DEPTGR2M"); + + b.Property("Deptgr2v") + .HasColumnType("real") + .HasColumnName("DEPTGR2V"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptp1m") + .HasColumnType("real") + .HasColumnName("DEPTP1M"); + + b.Property("Deptp1v") + .HasColumnType("real") + .HasColumnName("DEPTP1V"); + + b.Property("Deptp2m") + .HasColumnType("real") + .HasColumnName("DEPTP2M"); + + b.Property("Deptp2v") + .HasColumnType("real") + .HasColumnName("DEPTP2V"); + + b.Property("Deptrs1m") + .HasColumnType("real") + .HasColumnName("DEPTRS1M"); + + b.Property("Deptrs1v") + .HasColumnType("real") + .HasColumnName("DEPTRS1V"); + + b.Property("Deptrs2m") + .HasColumnType("real") + .HasColumnName("DEPTRS2M"); + + b.Property("Deptrs2v") + .HasColumnType("real") + .HasColumnName("DEPTRS2V"); + + b.Property("Deptvert") + .HasColumnType("real") + .HasColumnName("DEPTVERT"); + + b.Property("Mclp") + .HasColumnType("real") + .HasColumnName("MCLP"); + + b.Property("Mfd") + .HasColumnType("real") + .HasColumnName("MFD"); + + b.Property("Mffp") + .HasColumnType("real") + .HasColumnName("MFFP"); + + b.Property("Mfpp") + .HasColumnType("real") + .HasColumnName("MFPP"); + + b.Property("Mfrann") + .HasColumnType("real") + .HasColumnName("MFRANN"); + + b.Property("Mfrpipe") + .HasColumnType("real") + .HasColumnName("MFRPIPE"); + + b.Property("Mftann") + .HasColumnType("real") + .HasColumnName("MFTANN"); + + b.Property("Mftpipe") + .HasColumnType("real") + .HasColumnName("MFTPIPE"); + + b.Property("Mg1") + .HasColumnType("real") + .HasColumnName("MG1"); + + b.Property("Mg1c") + .HasColumnType("real") + .HasColumnName("MG1C"); + + b.Property("Mg2") + .HasColumnType("real") + .HasColumnName("MG2"); + + b.Property("Mg2c") + .HasColumnType("real") + .HasColumnName("MG2C"); + + b.Property("Mpo1") + .HasColumnType("real") + .HasColumnName("MPO1"); + + b.Property("Mpo2") + .HasColumnType("real") + .HasColumnName("MPO2"); + + b.Property("Mr1") + .HasColumnType("real") + .HasColumnName("MR1"); + + b.Property("Mr1c") + .HasColumnType("real") + .HasColumnName("MR1C"); + + b.Property("Mr2") + .HasColumnType("real") + .HasColumnName("MR2"); + + b.Property("Mr2c") + .HasColumnType("real") + .HasColumnName("MR2C"); + + b.Property("Passnum") + .HasColumnType("smallint") + .HasColumnName("PASSNUM"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Spare6") + .HasColumnType("real") + .HasColumnName("SPARE6"); + + b.Property("Spare7") + .HasColumnType("real") + .HasColumnName("SPARE7"); + + b.Property("Spare8") + .HasColumnType("real") + .HasColumnName("SPARE8"); + + b.Property("Spare9") + .HasColumnType("real") + .HasColumnName("SPARE9"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_8"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Cluster", b => + { + b.HasOne("AsbCloudDb.Model.Deposit", "Deposit") + .WithMany("Clusters") + .HasForeignKey("IdDeposit") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_cluster_t_deposit_id_fk"); + + b.Navigation("Deposit"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Company", b => + { + b.HasOne("AsbCloudDb.Model.CompanyType", "CompanyType") + .WithMany("Companies") + .HasForeignKey("IdCompanyType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("CompanyType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Contact", b => + { + b.HasOne("AsbCloudDb.Model.CompanyType", "CompanyType") + .WithMany("Contacts") + .HasForeignKey("IdCompanyType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("Contacts") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("CompanyType"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DailyReports.DailyReport", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DataSaubStat", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DetectedOperation", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillTest", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillingProgramPart", b => + { + b.HasOne("AsbCloudDb.Model.FileCategory", "FileCategory") + .WithMany() + .HasForeignKey("IdFileCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("DrillingProgramParts") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("FileCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Faq", b => + { + b.HasOne("AsbCloudDb.Model.User", "AuthorAnswer") + .WithMany() + .HasForeignKey("IdAuthorAnswer"); + + b.HasOne("AsbCloudDb.Model.User", "AuthorQuestion") + .WithMany() + .HasForeignKey("IdAuthorQuestion") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("AuthorAnswer"); + + b.Navigation("AuthorQuestion"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileInfo", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany("Files") + .HasForeignKey("IdAuthor"); + + b.HasOne("AsbCloudDb.Model.FileCategory", "FileCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("FileCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileMark", b => + { + b.HasOne("AsbCloudDb.Model.FileInfo", "FileInfo") + .WithMany("FileMarks") + .HasForeignKey("IdFile") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_file_mark_t_file_info_fk"); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany("FileMarks") + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_user_t_file_mark_fk"); + + b.Navigation("FileInfo"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemFloat", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemInt", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemString", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.HelpPage", b => + { + b.HasOne("AsbCloudDb.Model.FileCategory", "FileCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("FileCategory"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.LimitingParameter", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Manuals.Manual", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.FileCategory", "Category") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Manuals.ManualDirectory", "Directory") + .WithMany("Manuals") + .HasForeignKey("IdDirectory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Category"); + + b.Navigation("Directory"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Manuals.ManualDirectory", b => + { + b.HasOne("AsbCloudDb.Model.Manuals.ManualDirectory", "Parent") + .WithMany("Children") + .HasForeignKey("IdParent") + .OnDelete(DeleteBehavior.Cascade); + + b.Navigation("Parent"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Measure", b => + { + b.HasOne("AsbCloudDb.Model.MeasureCategory", "Category") + .WithMany("Measures") + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Category"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Notification", b => + { + b.HasOne("AsbCloudDb.Model.NotificationCategory", "NotificationCategory") + .WithMany("Notifications") + .HasForeignKey("IdNotificationCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("NotificationCategory"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.OperationValue", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdOperationCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAntiCrashRotation", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAntiCrashRotation", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAutoHoldTF", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAutoHoldTF", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDamper", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDamper", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDrillTest", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDrillTest", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanOscillation", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanOscillation", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanShockTest", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanShockTest", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanStaticMeasurementOutput", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanStaticMeasurementOutput", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanUpdatingNoloadParameters", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanUpdatingNoloadParameters", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanLoadCapacity", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanLoadCapacity", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanOscillationAngles", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanOscillationAngles", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanPositioningOffTheBottom", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanPositioningOffTheBottom", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReam", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingRotor", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingRotor", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingSlide", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingSlide", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRecordingStaticMeasurement", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRecordingStaticMeasurement", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRotor", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRotor", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRotorLoweringBit", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRotorLoweringBit", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRotorRpmAcceleration", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRotorRpmAcceleration", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSlide", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSlide", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSlideLoweringBit", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSlideLoweringBit", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingOffThePump", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict) + .HasConstraintName("FK_t_process_map_plan_operation_switching_off_the_pump_t_user~1"); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingOffThePump", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_t_process_map_plan_operation_switching_off_the_pump_t_well~1"); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingToTheMode", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingToTheMode", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanTFOrientation", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanTFOrientation", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => + { + b.HasOne("AsbCloudDb.Model.Company", "Company") + .WithMany("RelationCompaniesWells") + .HasForeignKey("IdCompany") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_relation_company_well_t_company_id_fk"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("RelationCompaniesWells") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_relation_company_well_t_well_id_fk"); + + b.Navigation("Company"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationContactWell", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany("RelationContactsWells") + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserDrillingProgramPart", b => + { + b.HasOne("AsbCloudDb.Model.DrillingProgramPart", "DrillingProgramPart") + .WithMany("RelatedUsers") + .HasForeignKey("IdDrillingProgramPart") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("DrillingProgramPart"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRolePermission", b => + { + b.HasOne("AsbCloudDb.Model.Permission", "Permission") + .WithMany("RelationUserRolePermissions") + .HasForeignKey("IdPermission") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "UserRole") + .WithMany("RelationUserRolePermissions") + .HasForeignKey("IdUserRole") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Permission"); + + b.Navigation("UserRole"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRoleUserRole", b => + { + b.HasOne("AsbCloudDb.Model.UserRole", "Role") + .WithMany("RelationUserRoleUserRoles") + .HasForeignKey("Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "IncludeRole") + .WithMany() + .HasForeignKey("IdInclude") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("IncludeRole"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserUserRole", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany("RelationUsersUserRoles") + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "UserRole") + .WithMany("RelationUsersUserRoles") + .HasForeignKey("IdUserRole") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + + b.Navigation("UserRole"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ReportProperty", b => + { + b.HasOne("AsbCloudDb.Model.FileInfo", "File") + .WithMany() + .HasForeignKey("IdFile") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("File"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Schedule", b => + { + b.HasOne("AsbCloudDb.Model.Driller", "Driller") + .WithMany("Schedule") + .HasForeignKey("IdDriller") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_schedule_t_driller_id_driller"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Driller"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.SetpointsRequest", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaub", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("DataSaub") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_data_saub_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSpin", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("DataSpin") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_data_spin_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryEvent", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Events") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_event_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryMessage", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Messages") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_messages_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryUser", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Users") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_user_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Trajectory.TrajectoryFact", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Trajectory.TrajectoryPlan", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.HasOne("AsbCloudDb.Model.Company", "Company") + .WithMany("Users") + .HasForeignKey("IdCompany") + .OnDelete(DeleteBehavior.SetNull) + .IsRequired() + .HasConstraintName("t_user_t_company_id_fk"); + + b.Navigation("Company"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserSetting", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", b => + { + b.HasOne("AsbCloudDb.Model.Cluster", "Cluster") + .WithMany("Wells") + .HasForeignKey("IdCluster") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_t_cluster_id_fk"); + + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithOne("Well") + .HasForeignKey("AsbCloudDb.Model.Well", "IdTelemetry") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("t_well_t_telemetry_id_fk"); + + b.HasOne("AsbCloudDb.Model.WellType", "WellType") + .WithMany("Wells") + .HasForeignKey("IdWellType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Cluster"); + + b.Navigation("Telemetry"); + + b.Navigation("WellType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellComposite", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("WellComposites") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_t_well_id_fk"); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany("WellComposites") + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_t_well_section_type_id_fk"); + + b.HasOne("AsbCloudDb.Model.Well", "WellSrc") + .WithMany("WellCompositeSrcs") + .HasForeignKey("IdWellSrc") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_src_t_well_id_fk"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + + b.Navigation("WellSrc"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellFinalDocument", b => + { + b.HasOne("AsbCloudDb.Model.FileCategory", "Category") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Category"); + + b.Navigation("User"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperation", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellOperation", "OperationPlan") + .WithMany() + .HasForeignKey("IdPlan") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("WellOperations") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany("WellOperations") + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("OperationPlan"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperationCategory", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "Parent") + .WithMany() + .HasForeignKey("IdParent"); + + b.Navigation("Parent"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSections.WellSectionPlan", b => + { + b.HasOne("AsbCloudDb.Model.WellSectionType", "SectionType") + .WithMany() + .HasForeignKey("IdSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("SectionType"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record1", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record1", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record50", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record50", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record60", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record60", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record61", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record61", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record7", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record7", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record8", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record8", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Cluster", b => + { + b.Navigation("Wells"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Company", b => + { + b.Navigation("RelationCompaniesWells"); + + b.Navigation("Users"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.CompanyType", b => + { + b.Navigation("Companies"); + + b.Navigation("Contacts"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Deposit", b => + { + b.Navigation("Clusters"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Driller", b => + { + b.Navigation("Schedule"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillingProgramPart", b => + { + b.Navigation("RelatedUsers"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileInfo", b => + { + b.Navigation("FileMarks"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Manuals.ManualDirectory", b => + { + b.Navigation("Children"); + + b.Navigation("Manuals"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.MeasureCategory", b => + { + b.Navigation("Measures"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.NotificationCategory", b => + { + b.Navigation("Notifications"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Permission", b => + { + b.Navigation("RelationUserRolePermissions"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Telemetry", b => + { + b.Navigation("DataSaub"); + + b.Navigation("DataSpin"); + + b.Navigation("Events"); + + b.Navigation("Messages"); + + b.Navigation("Users"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.Navigation("FileMarks"); + + b.Navigation("Files"); + + b.Navigation("RelationContactsWells"); + + b.Navigation("RelationUsersUserRoles"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserRole", b => + { + b.Navigation("RelationUserRolePermissions"); + + b.Navigation("RelationUserRoleUserRoles"); + + b.Navigation("RelationUsersUserRoles"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", b => + { + b.Navigation("Contacts"); + + b.Navigation("DrillingProgramParts"); + + b.Navigation("RelationCompaniesWells"); + + b.Navigation("WellCompositeSrcs"); + + b.Navigation("WellComposites"); + + b.Navigation("WellOperations"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSectionType", b => + { + b.Navigation("WellComposites"); + + b.Navigation("WellOperations"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellType", b => + { + b.Navigation("Wells"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/AsbCloudDb/Migrations/20240630162502_Add_Tables_ProcessMapOperationsAndFunctions.cs b/AsbCloudDb/Migrations/20240630162502_Add_Tables_ProcessMapOperationsAndFunctions.cs new file mode 100644 index 00000000..6564d68c --- /dev/null +++ b/AsbCloudDb/Migrations/20240630162502_Add_Tables_ProcessMapOperationsAndFunctions.cs @@ -0,0 +1,2060 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; + +#nullable disable + +namespace AsbCloudDb.Migrations +{ + /// + public partial class Add_Tables_ProcessMapOperationsAndFunctions : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "differential_pressure_limit_max", + table: "t_process_map_plan_slide"); + + migrationBuilder.DropColumn( + name: "flow_rate_limit_max", + table: "t_process_map_plan_slide"); + + migrationBuilder.DropColumn( + name: "pressure_limit_max", + table: "t_process_map_plan_slide"); + + migrationBuilder.DropColumn( + name: "rop_limit_max", + table: "t_process_map_plan_slide"); + + migrationBuilder.DropColumn( + name: "tool_buckling", + table: "t_process_map_plan_slide"); + + migrationBuilder.DropColumn( + name: "weight_on_bit_limit_max", + table: "t_process_map_plan_slide"); + + migrationBuilder.RenameColumn( + name: "pressure_limit_max", + table: "t_process_map_plan_rotor", + newName: "pressure_max"); + + migrationBuilder.RenameColumn( + name: "weight_on_bit_limit_max", + table: "t_process_map_plan_rotor", + newName: "weight_on_bit_max"); + + migrationBuilder.RenameColumn( + name: "top_drive_torque_limit_max", + table: "t_process_map_plan_rotor", + newName: "top_drive_torque_max"); + + migrationBuilder.RenameColumn( + name: "rop_limit_max", + table: "t_process_map_plan_rotor", + newName: "rop_max"); + + migrationBuilder.RenameColumn( + name: "revolutions_per_minute_limit_max", + table: "t_process_map_plan_rotor", + newName: "rpm_max"); + + migrationBuilder.RenameColumn( + name: "revolution_per_minute", + table: "t_process_map_plan_rotor", + newName: "rpm"); + + migrationBuilder.RenameColumn( + name: "flow_rate_limit_max", + table: "t_process_map_plan_rotor", + newName: "flow_rate_max"); + + migrationBuilder.RenameColumn( + name: "differential_pressure_limit_max", + table: "t_process_map_plan_rotor", + newName: "differential_pressure_max"); + + migrationBuilder.AlterColumn( + name: "weight_on_bit", + table: "t_process_map_plan_slide", + type: "double precision", + nullable: false, + comment: "Нагрузка уставка, т.", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Нагрузка, т. Уставка"); + + migrationBuilder.AlterColumn( + name: "flow_rate", + table: "t_process_map_plan_slide", + type: "double precision", + nullable: false, + comment: "Расход уставка, л/с.", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Расход л/с. Уставка"); + + migrationBuilder.AlterColumn( + name: "differential_pressure", + table: "t_process_map_plan_slide", + type: "double precision", + nullable: false, + comment: "Перепад давления уставка, атм.", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Перепад давления, атм. Уставка"); + + migrationBuilder.AddColumn( + name: "buckling", + table: "t_process_map_plan_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Складывание инструмента, м."); + + migrationBuilder.AddColumn( + name: "differential_pressure_max", + table: "t_process_map_plan_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Перепад давления ограничение, атм."); + + migrationBuilder.AddColumn( + name: "flow_rate_max", + table: "t_process_map_plan_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Расход ограничение, л/с."); + + migrationBuilder.AddColumn( + name: "pressure_max", + table: "t_process_map_plan_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Максимально допустимое давление, атм."); + + migrationBuilder.AddColumn( + name: "rop_max", + table: "t_process_map_plan_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Максимально допустимая скорость, м/ч."); + + migrationBuilder.AddColumn( + name: "weight_on_bit_max", + table: "t_process_map_plan_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Нагрузка ограничение, т."); + + migrationBuilder.CreateTable( + name: "t_process_map_plan_anti_crash_rotation", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + top_drive_rpm_min = table.Column(type: "double precision", nullable: false, comment: "Минимальные обороты ВСП, об/мин"), + top_drive_start_min_flow_rate = table.Column(type: "double precision", nullable: false, comment: "Минимальный расход для запуска оборотов ВСП, л/сек"), + top_drive_torque_max = table.Column(type: "double precision", nullable: false, comment: "Максимально допустимый момент на ВСП при противоаварийном вращении, кН*м"), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания"), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_plan_anti_crash_rotation", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_plan_anti_crash_rotation_t_process_map_plan_a~", + column: x => x.id_previous, + principalTable: "t_process_map_plan_anti_crash_rotation", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_plan_anti_crash_rotation_t_user_id_author", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_anti_crash_rotation_t_user_id_editor", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_anti_crash_rotation_t_well_id_well", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_anti_crash_rotation_t_well_section_type_~", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "Противоаварийное вращение"); + + migrationBuilder.CreateTable( + name: "t_process_map_plan_auto_hold_tf", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + zenit_angle = table.Column(type: "double precision", nullable: false, comment: "Зенитный угол, градусы"), + note = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false, comment: "Примечание"), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания"), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_plan_auto_hold_tf", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_plan_auto_hold_tf_t_process_map_plan_auto_hol~", + column: x => x.id_previous, + principalTable: "t_process_map_plan_auto_hold_tf", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_plan_auto_hold_tf_t_user_id_author", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_auto_hold_tf_t_user_id_editor", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_auto_hold_tf_t_well_id_well", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_auto_hold_tf_t_well_section_type_id_well~", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "Автоудержание TF"); + + migrationBuilder.CreateTable( + name: "t_process_map_plan_drilltest", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + weight_on_bit_min = table.Column(type: "double precision", nullable: false, comment: "Нагрузка минимальная, т"), + weight_on_bit_steps_count = table.Column(type: "integer", nullable: false, comment: "Количество шагов по нагрузке"), + rpm_min = table.Column(type: "double precision", nullable: false, comment: "Минимальные обороты на ВСП, об/мин."), + rpm_steps_count = table.Column(type: "integer", nullable: false, comment: "Количество шагов оборотов на ВСП, об/мин."), + length_step = table.Column(type: "double precision", nullable: false, comment: "Величина проходки шага, м."), + note = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false, comment: "Примечание"), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания"), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_plan_drilltest", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_plan_drilltest_t_process_map_plan_drilltest_i~", + column: x => x.id_previous, + principalTable: "t_process_map_plan_drilltest", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_plan_drilltest_t_user_id_author", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_drilltest_t_user_id_editor", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_drilltest_t_well_id_well", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_drilltest_t_well_section_type_id_wellsec~", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "DrillTest"); + + migrationBuilder.CreateTable( + name: "t_process_map_plan_functions_damper", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + stick_slip = table.Column(type: "double precision", nullable: false, comment: "StickSlip"), + note = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false, comment: "Примечание"), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания"), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_plan_functions_damper", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_plan_functions_damper_t_process_map_plan_func~", + column: x => x.id_previous, + principalTable: "t_process_map_plan_functions_damper", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_plan_functions_damper_t_user_id_author", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_functions_damper_t_user_id_editor", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_functions_damper_t_well_id_well", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_functions_damper_t_well_section_type_id_~", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "Демпфер"); + + migrationBuilder.CreateTable( + name: "t_process_map_plan_load_capacity", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + time_load_capacity_min = table.Column(type: "double precision", nullable: false, comment: "Время выработки минимальное, сек"), + differential_pressure_min = table.Column(type: "double precision", nullable: false, comment: "Перепад давления минимальный, атм"), + weight_on_bit_min = table.Column(type: "double precision", nullable: false, comment: "Нагрузка минимальная, т"), + note = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false, comment: "Примечание"), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания"), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_plan_load_capacity", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_plan_load_capacity_t_process_map_plan_load_ca~", + column: x => x.id_previous, + principalTable: "t_process_map_plan_load_capacity", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_plan_load_capacity_t_user_id_author", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_load_capacity_t_user_id_editor", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_load_capacity_t_well_id_well", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_load_capacity_t_well_section_type_id_wel~", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "РТК выработка нагрузки"); + + migrationBuilder.CreateTable( + name: "t_process_map_plan_operation_oscillation_angels", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + top_drive_torque = table.Column(type: "double precision", nullable: false, comment: "Момент на ВСП, кН*м., Уставка"), + top_drive_torque_max = table.Column(type: "double precision", nullable: false, comment: "Момент на ВСП, кН*м., Ограничение"), + rpm = table.Column(type: "double precision", nullable: false, comment: "Обороты на ВСП, об/мин., Уставка"), + rpm_max = table.Column(type: "double precision", nullable: false, comment: "Обороты на ВСП, об/мин., Ограничение"), + note = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false, comment: "Примечание"), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания"), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_plan_operation_oscillation_angels", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_plan_operation_oscillation_angels_t_process_m~", + column: x => x.id_previous, + principalTable: "t_process_map_plan_operation_oscillation_angels", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_plan_operation_oscillation_angels_t_user_id_a~", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_operation_oscillation_angels_t_user_id_e~", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_operation_oscillation_angels_t_well_id_w~", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_operation_oscillation_angels_t_well_sect~", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "Определение углов осцилляции"); + + migrationBuilder.CreateTable( + name: "t_process_map_plan_operation_reaming_rotor", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + pressure_max = table.Column(type: "double precision", nullable: false, comment: "Максимально допустимое давление, атм."), + differential_pressure = table.Column(type: "double precision", nullable: false, comment: "Перепад давления уставка, атм."), + tight = table.Column(type: "double precision", nullable: false, comment: "Затяжка, т."), + slacking_off = table.Column(type: "double precision", nullable: false, comment: "Посадка, т."), + torque_max = table.Column(type: "double precision", nullable: false, comment: "Максимально допустимый момент, кН*м."), + reaming1_repetitions_count = table.Column(type: "integer", nullable: false, comment: "Проработка 1. Количество повторений, шт."), + reaming1_rop_up = table.Column(type: "double precision", nullable: false, comment: "Проработка 1. Скорость вверх, м/ч."), + reaming1_rop_down = table.Column(type: "double precision", nullable: false, comment: "Проработка 1, Скорость, м/ч., Вниз"), + reaming1_rpm_up = table.Column(type: "double precision", nullable: false, comment: "Проработка 1, Обороты, об/мин., Вверх"), + reaming1_rpm_down = table.Column(type: "double precision", nullable: false, comment: "Проработка 1, Обороты, об/мин., Вниз"), + reaming1_flow_rate_up = table.Column(type: "double precision", nullable: false, comment: "Проработка 1, Расход, л/с., Вверх"), + reaming1_flow_rate_down = table.Column(type: "double precision", nullable: false, comment: "Проработка 1, Расход, л/с., Вниз"), + reaming1_interval = table.Column(type: "double precision", nullable: false, comment: "Проработка 1, Интервал проработки, м."), + reaming1_stop_point_off_bottom = table.Column(type: "double precision", nullable: false, comment: "Остановка над забоем, м."), + reaming2_repetitions_count = table.Column(type: "integer", nullable: false, comment: "Проработка 2, Количество повторений, шт."), + reaming2_rop_up = table.Column(type: "double precision", nullable: false, comment: "Проработка 2, Скорость, м/ч., Вверх"), + reaming2_rop_down = table.Column(type: "double precision", nullable: false, comment: "Проработка 2, Скорость, м/ч., Вниз"), + reaming2_rpm_up = table.Column(type: "double precision", nullable: false, comment: "Проработка 2, Обороты, об/мин., Вверх"), + reaming2_rpm_down = table.Column(type: "double precision", nullable: false, comment: "Проработка 2, Обороты, об/мин., Вниз"), + reaming2_flow_rate_up = table.Column(type: "double precision", nullable: false, comment: "Проработка 2, Расход, л/с., Вверх"), + reaming2_flow_rate_down = table.Column(type: "double precision", nullable: false, comment: "Проработка 2, Расход, л/с., Вниз"), + reaming2_interval = table.Column(type: "double precision", nullable: false, comment: "Проработка 2, Интервал проработки, м."), + reaming2_stop_point_off_bottom = table.Column(type: "double precision", nullable: false, comment: "Остановка над забоем, м."), + reaming3_repetitions_count = table.Column(type: "integer", nullable: false, comment: "Проработка 3, Количество повторений, шт."), + reaming3_rop_up = table.Column(type: "double precision", nullable: false, comment: "Проработка 3, Скорость, м/ч., Вверх"), + reaming3_rop_down = table.Column(type: "double precision", nullable: false, comment: "Проработка 3, Скорость, м/ч., Вниз"), + reaming3_rpm_up = table.Column(type: "double precision", nullable: false, comment: "Проработка 3, Обороты, об/мин., Вверх"), + reaming3_rpm_down = table.Column(type: "double precision", nullable: false, comment: "Проработка 3, Обороты, об/мин., Вниз"), + reaming3_flow_rate_up = table.Column(type: "double precision", nullable: false, comment: "Проработка 3, Расход, л/с., Вверх"), + reaming3_flow_rate_down = table.Column(type: "double precision", nullable: false, comment: "Проработка 3, Расход, л/с., Вниз"), + reaming3_interval = table.Column(type: "double precision", nullable: false, comment: "Проработка 3, Интервал проработки, м."), + reaming3_stop_point_off_bottom = table.Column(type: "double precision", nullable: false, comment: "Остановка над забоем, м."), + note = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false, comment: "Примечание"), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания"), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_plan_operation_reaming_rotor", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_plan_operation_reaming_rotor_t_process_map_pl~", + column: x => x.id_previous, + principalTable: "t_process_map_plan_operation_reaming_rotor", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_plan_operation_reaming_rotor_t_user_id_author", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_operation_reaming_rotor_t_user_id_editor", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_operation_reaming_rotor_t_well_id_well", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_operation_reaming_rotor_t_well_section_t~", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "РТК проработка ротор"); + + migrationBuilder.CreateTable( + name: "t_process_map_plan_operation_switching_off_the_pump", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + duration = table.Column(type: "double precision", nullable: false, comment: "Продолжительность, сек."), + residual_pressure_limit = table.Column(type: "double precision", nullable: false, comment: "Лимит остаточного давления, атм."), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания"), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_plan_operation_switching_off_the_pump", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_plan_operation_switching_off_the_pump_t_proce~", + column: x => x.id_previous, + principalTable: "t_process_map_plan_operation_switching_off_the_pump", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_plan_operation_switching_off_the_pump_t_user_~", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_operation_switching_off_the_pump_t_user~1", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_operation_switching_off_the_pump_t_well_~", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_operation_switching_off_the_pump_t_well~1", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "Выключение насоса"); + + migrationBuilder.CreateTable( + name: "t_process_map_plan_oscillation", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + optimal_oscillation_angle = table.Column(type: "double precision", nullable: false, comment: "Оптимальный угол осцилляции, градусы"), + Rpm_right = table.Column(type: "double precision", nullable: false, comment: "Скорость вправо, об/мин"), + Rpm_left = table.Column(type: "double precision", nullable: false, comment: "Скорость влево, об/мин"), + torque_max_right = table.Column(type: "double precision", nullable: false, comment: "Ограничение момента вправо, кН*м"), + torque_max_left = table.Column(type: "double precision", nullable: false, comment: "Ограничение момента влево, кН*м"), + mode = table.Column(type: "integer", nullable: false, comment: "Режим Авто/Руч"), + note = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false, comment: "Примечание"), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания"), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_plan_oscillation", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_plan_oscillation_t_process_map_plan_oscillati~", + column: x => x.id_previous, + principalTable: "t_process_map_plan_oscillation", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_plan_oscillation_t_user_id_author", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_oscillation_t_user_id_editor", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_oscillation_t_well_id_well", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_oscillation_t_well_section_type_id_wells~", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "Осцилляция"); + + migrationBuilder.CreateTable( + name: "t_process_map_plan_positioning_off_the_bottom", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + stop_off_the_bottom = table.Column(type: "double precision", nullable: false, comment: "Остановка над забоем, м."), + pressure_max = table.Column(type: "double precision", nullable: false, comment: "Максимально допустимое давление, атм."), + differential_pressure = table.Column(type: "double precision", nullable: false, comment: "Перепад давления уставка, атм."), + tight = table.Column(type: "double precision", nullable: false, comment: "Затяжка, т."), + slacking_off = table.Column(type: "double precision", nullable: false, comment: "Посадка, т."), + torque_max = table.Column(type: "double precision", nullable: false, comment: "Максимально допустимый момент, кН*м."), + rop_up = table.Column(type: "double precision", nullable: false, comment: "Скорость вверх, м/ч."), + rop_down = table.Column(type: "double precision", nullable: false, comment: "Скорость вниз, м/ч."), + rpm_up = table.Column(type: "double precision", nullable: false, comment: "Обороты вверх, об/мин."), + rpm_down = table.Column(type: "double precision", nullable: false, comment: "Обороты вниз, об/мин."), + flow_rate_up = table.Column(type: "double precision", nullable: false, comment: "Расход вверх, л/с."), + flow_rate_down = table.Column(type: "double precision", nullable: false, comment: "Расход вниз, л/с."), + note = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false, comment: "Примечание"), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания"), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_plan_positioning_off_the_bottom", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_plan_positioning_off_the_bottom_t_process_map~", + column: x => x.id_previous, + principalTable: "t_process_map_plan_positioning_off_the_bottom", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_plan_positioning_off_the_bottom_t_user_id_aut~", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_positioning_off_the_bottom_t_user_id_edi~", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_positioning_off_the_bottom_t_well_id_well", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_positioning_off_the_bottom_t_well_sectio~", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "Позиционирование над забоем"); + + migrationBuilder.CreateTable( + name: "t_process_map_plan_reaming_slide", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + pressure_max = table.Column(type: "double precision", nullable: false, comment: "Максимально допустимое давление, атм."), + differential_pressure = table.Column(type: "double precision", nullable: false, comment: "Перепад давления уставка, атм."), + tight = table.Column(type: "double precision", nullable: false, comment: "Затяжка, т."), + slacking_off = table.Column(type: "double precision", nullable: false, comment: "Посадка, т."), + torque_max = table.Column(type: "double precision", nullable: false, comment: "Максимально допустимый момент, кН*м."), + reaming1_repetitions_count = table.Column(type: "double precision", nullable: false, comment: "Проработка 1. Количество повторений, шт."), + reaming1_rop_up = table.Column(type: "double precision", nullable: false, comment: "Проработка 1. Скорость вверх, м/ч."), + reaming1_rop_down = table.Column(type: "double precision", nullable: false, comment: "Проработка 1. Скорость вниз, м/ч."), + reaming1_rpm_up = table.Column(type: "double precision", nullable: false, comment: "Проработка 1, Обороты, об/мин., Вверх"), + reaming1_rpm_down = table.Column(type: "double precision", nullable: false, comment: "Проработка 1, Обороты, об/мин., Вниз"), + reaming1_flow_rate_up = table.Column(type: "double precision", nullable: false, comment: "Проработка 1, Расход, л/с., Вверх"), + reaming1_flow_rate_down = table.Column(type: "double precision", nullable: false, comment: "Проработка 1, Расход, л/с., Вниз"), + reaming1_interval = table.Column(type: "double precision", nullable: false, comment: "Проработка 1, Интервал проработки, м."), + reaming1_stop_point_off_bottom = table.Column(type: "double precision", nullable: false, comment: "Остановка над забоем, м."), + reaming2_repetitions_count = table.Column(type: "double precision", nullable: false, comment: "Проработка 2, Количество повторений, шт."), + reaming2_rop_up = table.Column(type: "double precision", nullable: false, comment: "Проработка 2, Скорость, м/ч., Вверх"), + reaming2_rop_down = table.Column(type: "double precision", nullable: false, comment: "Проработка 2, Скорость, м/ч., Вниз"), + reaming2_rpm_up = table.Column(type: "double precision", nullable: false, comment: "Проработка 2, Обороты, об/мин., Вверх"), + reaming2_rpm_down = table.Column(type: "double precision", nullable: false, comment: "Проработка 2, Обороты, об/мин., Вниз"), + reaming2_flow_rate_up = table.Column(type: "double precision", nullable: false, comment: "Проработка 2, Расход, л/с., Вверх"), + reaming2_flow_rate_down = table.Column(type: "double precision", nullable: false, comment: "Проработка 2, Расход, л/с., Вниз"), + reaming2_interval = table.Column(type: "double precision", nullable: false, comment: "Проработка 2, Интервал проработки, м."), + reaming2_stop_point_off_bottom = table.Column(type: "double precision", nullable: false, comment: "Остановка над забоем, м."), + reaming3_repetitions_count = table.Column(type: "double precision", nullable: false, comment: "Проработка 3, Количество повторений, шт."), + reaming3_rop_up = table.Column(type: "double precision", nullable: false, comment: "Проработка 3, Скорость, м/ч., Вверх"), + reaming3_rop_down = table.Column(type: "double precision", nullable: false, comment: "Проработка 3, Скорость, м/ч., Вниз"), + reaming3_rpm_up = table.Column(type: "double precision", nullable: false, comment: "Проработка 3, Обороты, об/мин., Вверх"), + reaming3_rpm_down = table.Column(type: "double precision", nullable: false, comment: "Проработка 3, Обороты, об/мин., Вниз"), + reaming3_flow_rate_up = table.Column(type: "double precision", nullable: false, comment: "Проработка 3, Расход, л/с., Вверх"), + reaming3_flow_rate_down = table.Column(type: "double precision", nullable: false, comment: "Проработка 3, Расход, л/с., Вниз"), + reaming3_interval = table.Column(type: "double precision", nullable: false, comment: "Проработка 3, Интервал проработки, м."), + reaming3_stop_point_off_bottom = table.Column(type: "double precision", nullable: false, comment: "Остановка над забоем, м."), + note = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false, comment: "Примечание"), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания"), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_plan_reaming_slide", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_plan_reaming_slide_t_process_map_plan_reaming~", + column: x => x.id_previous, + principalTable: "t_process_map_plan_reaming_slide", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_plan_reaming_slide_t_user_id_author", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_reaming_slide_t_user_id_editor", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_reaming_slide_t_well_id_well", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_reaming_slide_t_well_section_type_id_wel~", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "РТК проработка слайд"); + + migrationBuilder.CreateTable( + name: "t_process_map_plan_recording_static_measurement", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + measurement_recording_time = table.Column(type: "double precision", nullable: false, comment: "Время записи замера, сек"), + note = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false, comment: "Примечание"), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания"), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_plan_recording_static_measurement", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_plan_recording_static_measurement_t_process_m~", + column: x => x.id_previous, + principalTable: "t_process_map_plan_recording_static_measurement", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_plan_recording_static_measurement_t_user_id_a~", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_recording_static_measurement_t_user_id_e~", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_recording_static_measurement_t_well_id_w~", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_recording_static_measurement_t_well_sect~", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "Запись статического замера"); + + migrationBuilder.CreateTable( + name: "t_process_map_plan_rotor_lowering_bit", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + pressure_max = table.Column(type: "double precision", nullable: false, comment: "Максимально допустимое давление, атм."), + differential_pressure = table.Column(type: "double precision", nullable: false, comment: "Перепад давления уставка, атм."), + slacking_off = table.Column(type: "double precision", nullable: false, comment: "Посадка, т."), + torque_max = table.Column(type: "double precision", nullable: false, comment: "Максимально допустимый момент, кН*м."), + rop_down = table.Column(type: "double precision", nullable: false, comment: "Скорость вниз, м/ч."), + rpm_down = table.Column(type: "double precision", nullable: false, comment: "Обороты вниз, об/мин."), + flow_rate_down = table.Column(type: "double precision", nullable: false, comment: "Расход вниз, л/с."), + note = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false, comment: "Примечание"), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания"), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_plan_rotor_lowering_bit", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_plan_rotor_lowering_bit_t_process_map_plan_ro~", + column: x => x.id_previous, + principalTable: "t_process_map_plan_rotor_lowering_bit", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_plan_rotor_lowering_bit_t_user_id_author", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_rotor_lowering_bit_t_user_id_editor", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_rotor_lowering_bit_t_well_id_well", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_rotor_lowering_bit_t_well_section_type_i~", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "РТК подход к забою в роторе"); + + migrationBuilder.CreateTable( + name: "t_process_map_plan_rotor_rpm_acceleration", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + zenit_angle = table.Column(type: "double precision", nullable: false, comment: "Зенитный угол, градусы"), + buckling = table.Column(type: "double precision", nullable: false, comment: "Складывание, м"), + note = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false, comment: "Примечание"), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания"), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_plan_rotor_rpm_acceleration", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_plan_rotor_rpm_acceleration_t_process_map_pla~", + column: x => x.id_previous, + principalTable: "t_process_map_plan_rotor_rpm_acceleration", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_plan_rotor_rpm_acceleration_t_user_id_author", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_rotor_rpm_acceleration_t_user_id_editor", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_rotor_rpm_acceleration_t_well_id_well", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_rotor_rpm_acceleration_t_well_section_ty~", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "Выход на обороты перед ротором"); + + migrationBuilder.CreateTable( + name: "t_process_map_plan_slide_lowering_bit", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + pressure_max = table.Column(type: "double precision", nullable: false, comment: "Максимально допустимое давление, атм."), + differential_pressure = table.Column(type: "double precision", nullable: false, comment: "Перепад давления уставка, атм."), + rop_down = table.Column(type: "double precision", nullable: false, comment: "Скорость вниз, м/ч."), + flow_rate_down = table.Column(type: "double precision", nullable: false, comment: "Расход вниз, л/с."), + note = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false, comment: "Примечание"), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания"), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_plan_slide_lowering_bit", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_plan_slide_lowering_bit_t_process_map_plan_sl~", + column: x => x.id_previous, + principalTable: "t_process_map_plan_slide_lowering_bit", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_plan_slide_lowering_bit_t_user_id_author", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_slide_lowering_bit_t_user_id_editor", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_slide_lowering_bit_t_well_id_well", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_slide_lowering_bit_t_well_section_type_i~", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "РТК подход к забою в слайде"); + + migrationBuilder.CreateTable( + name: "t_process_map_plan_static_measurement_output", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + signal_waiting_time = table.Column(type: "double precision", nullable: false, comment: "Время ожидания выхода сигнала с ТМС, сек."), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания"), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_plan_static_measurement_output", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_plan_static_measurement_output_t_process_map_~", + column: x => x.id_previous, + principalTable: "t_process_map_plan_static_measurement_output", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_plan_static_measurement_output_t_user_id_auth~", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_static_measurement_output_t_user_id_edit~", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_static_measurement_output_t_well_id_well", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_static_measurement_output_t_well_section~", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "Выход статического замера"); + + migrationBuilder.CreateTable( + name: "t_process_map_plan_switching_to_the_mode", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + ramp_time = table.Column(type: "double precision", nullable: false, comment: "Время выхода буровых насосов на плановый расход, сек."), + flow_rate = table.Column(type: "double precision", nullable: false, comment: "Расход, л/с"), + pressure_limit = table.Column(type: "double precision", nullable: false, comment: "Максимально допустимое давление, атм."), + note = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false, comment: "Примечание"), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания"), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_plan_switching_to_the_mode", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_plan_switching_to_the_mode_t_process_map_plan~", + column: x => x.id_previous, + principalTable: "t_process_map_plan_switching_to_the_mode", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_plan_switching_to_the_mode_t_user_id_author", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_switching_to_the_mode_t_user_id_editor", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_switching_to_the_mode_t_well_id_well", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_switching_to_the_mode_t_well_section_typ~", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "Выход на плановый расход"); + + migrationBuilder.CreateTable( + name: "t_process_map_plan_tf_orientation", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + tf_setpoint = table.Column(type: "double precision", nullable: false, comment: "Задание TF, град."), + spring = table.Column(type: "double precision", nullable: false, comment: "Пружина, град."), + pressure_max = table.Column(type: "double precision", nullable: false, comment: "Максимальное давление, атм."), + differential_pressure = table.Column(type: "double precision", nullable: false, comment: "Перепад давления, атм."), + tight = table.Column(type: "double precision", nullable: false, comment: "Затяжка, т."), + slacking_off = table.Column(type: "double precision", nullable: false, comment: "Посадка, т."), + torque_max = table.Column(type: "double precision", nullable: false, comment: "Максимально допустимый момент, кН*м."), + repetitions_count = table.Column(type: "integer", nullable: false, comment: "Количество расхаживаний, шт."), + rop_up = table.Column(type: "double precision", nullable: false, comment: "Скорость вверх, м/ч."), + rop_down = table.Column(type: "double precision", nullable: false, comment: "Скорость вниз, м/ч."), + flow_rate_up = table.Column(type: "double precision", nullable: false, comment: "Расход вверх, л/с."), + flow_rate_down = table.Column(type: "double precision", nullable: false, comment: "Расход вниз, л/с."), + interval = table.Column(type: "double precision", nullable: false, comment: "Интервал расхаживания, м."), + stop_point_off_bottom = table.Column(type: "double precision", nullable: false, comment: "Остановка над забоем, м."), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания"), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_plan_tf_orientation", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_plan_tf_orientation_t_process_map_plan_tf_ori~", + column: x => x.id_previous, + principalTable: "t_process_map_plan_tf_orientation", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_plan_tf_orientation_t_user_id_author", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_tf_orientation_t_user_id_editor", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_tf_orientation_t_well_id_well", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_tf_orientation_t_well_section_type_id_we~", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "Выставление"); + + migrationBuilder.CreateTable( + name: "t_process_map_plan_updating_noload_parameters", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + id_decline_socket_column = table.Column(type: "boolean", nullable: false, comment: "СПУСК ОК Да/Нет"), + note = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false, comment: "Примечание"), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания"), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_plan_updating_noload_parameters", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_plan_updating_noload_parameters_t_process_map~", + column: x => x.id_previous, + principalTable: "t_process_map_plan_updating_noload_parameters", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_plan_updating_noload_parameters_t_user_id_aut~", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_updating_noload_parameters_t_user_id_edi~", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_updating_noload_parameters_t_well_id_well", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_updating_noload_parameters_t_well_sectio~", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "Обновление холостого хода"); + + migrationBuilder.CreateTable( + name: "t_process_map_shock_test", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + stick_slip = table.Column(type: "double precision", nullable: false, comment: "stickSlip"), + whirl = table.Column(type: "double precision", nullable: false, comment: "Whirl"), + axial_vibrations = table.Column(type: "double precision", nullable: false, comment: "Осевые вибрации"), + combined_vibrations = table.Column(type: "double precision", nullable: false, comment: "Комбинированные вибрации"), + weight_on_bit_min = table.Column(type: "double precision", nullable: false, comment: "Нагрузка минимальная, т"), + rpm_min = table.Column(type: "double precision", nullable: false, comment: "Минимальные обороты на ВСП, об/мин."), + note = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false, comment: "Примечание"), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания"), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_shock_test", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_shock_test_t_process_map_shock_test_id_previo~", + column: x => x.id_previous, + principalTable: "t_process_map_shock_test", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_shock_test_t_user_id_author", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_shock_test_t_user_id_editor", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_shock_test_t_well_id_well", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_shock_test_t_well_section_type_id_wellsection~", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "ShockTest"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_anti_crash_rotation_id_author", + table: "t_process_map_plan_anti_crash_rotation", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_anti_crash_rotation_id_editor", + table: "t_process_map_plan_anti_crash_rotation", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_anti_crash_rotation_id_previous", + table: "t_process_map_plan_anti_crash_rotation", + column: "id_previous"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_anti_crash_rotation_id_well", + table: "t_process_map_plan_anti_crash_rotation", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_anti_crash_rotation_id_wellsection_type", + table: "t_process_map_plan_anti_crash_rotation", + column: "id_wellsection_type"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_auto_hold_tf_id_author", + table: "t_process_map_plan_auto_hold_tf", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_auto_hold_tf_id_editor", + table: "t_process_map_plan_auto_hold_tf", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_auto_hold_tf_id_previous", + table: "t_process_map_plan_auto_hold_tf", + column: "id_previous"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_auto_hold_tf_id_well", + table: "t_process_map_plan_auto_hold_tf", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_auto_hold_tf_id_wellsection_type", + table: "t_process_map_plan_auto_hold_tf", + column: "id_wellsection_type"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_drilltest_id_author", + table: "t_process_map_plan_drilltest", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_drilltest_id_editor", + table: "t_process_map_plan_drilltest", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_drilltest_id_previous", + table: "t_process_map_plan_drilltest", + column: "id_previous"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_drilltest_id_well", + table: "t_process_map_plan_drilltest", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_drilltest_id_wellsection_type", + table: "t_process_map_plan_drilltest", + column: "id_wellsection_type"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_functions_damper_id_author", + table: "t_process_map_plan_functions_damper", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_functions_damper_id_editor", + table: "t_process_map_plan_functions_damper", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_functions_damper_id_previous", + table: "t_process_map_plan_functions_damper", + column: "id_previous"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_functions_damper_id_well", + table: "t_process_map_plan_functions_damper", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_functions_damper_id_wellsection_type", + table: "t_process_map_plan_functions_damper", + column: "id_wellsection_type"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_load_capacity_id_author", + table: "t_process_map_plan_load_capacity", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_load_capacity_id_editor", + table: "t_process_map_plan_load_capacity", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_load_capacity_id_previous", + table: "t_process_map_plan_load_capacity", + column: "id_previous"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_load_capacity_id_well", + table: "t_process_map_plan_load_capacity", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_load_capacity_id_wellsection_type", + table: "t_process_map_plan_load_capacity", + column: "id_wellsection_type"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_operation_oscillation_angels_id_author", + table: "t_process_map_plan_operation_oscillation_angels", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_operation_oscillation_angels_id_editor", + table: "t_process_map_plan_operation_oscillation_angels", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_operation_oscillation_angels_id_previous", + table: "t_process_map_plan_operation_oscillation_angels", + column: "id_previous"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_operation_oscillation_angels_id_well", + table: "t_process_map_plan_operation_oscillation_angels", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_operation_oscillation_angels_id_wellsect~", + table: "t_process_map_plan_operation_oscillation_angels", + column: "id_wellsection_type"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_operation_reaming_rotor_id_author", + table: "t_process_map_plan_operation_reaming_rotor", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_operation_reaming_rotor_id_editor", + table: "t_process_map_plan_operation_reaming_rotor", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_operation_reaming_rotor_id_previous", + table: "t_process_map_plan_operation_reaming_rotor", + column: "id_previous"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_operation_reaming_rotor_id_well", + table: "t_process_map_plan_operation_reaming_rotor", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_operation_reaming_rotor_id_wellsection_t~", + table: "t_process_map_plan_operation_reaming_rotor", + column: "id_wellsection_type"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_operation_switching_off_the_pump_id_auth~", + table: "t_process_map_plan_operation_switching_off_the_pump", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_operation_switching_off_the_pump_id_edit~", + table: "t_process_map_plan_operation_switching_off_the_pump", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_operation_switching_off_the_pump_id_prev~", + table: "t_process_map_plan_operation_switching_off_the_pump", + column: "id_previous"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_operation_switching_off_the_pump_id_well", + table: "t_process_map_plan_operation_switching_off_the_pump", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_operation_switching_off_the_pump_id_well~", + table: "t_process_map_plan_operation_switching_off_the_pump", + column: "id_wellsection_type"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_oscillation_id_author", + table: "t_process_map_plan_oscillation", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_oscillation_id_editor", + table: "t_process_map_plan_oscillation", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_oscillation_id_previous", + table: "t_process_map_plan_oscillation", + column: "id_previous"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_oscillation_id_well", + table: "t_process_map_plan_oscillation", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_oscillation_id_wellsection_type", + table: "t_process_map_plan_oscillation", + column: "id_wellsection_type"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_positioning_off_the_bottom_id_author", + table: "t_process_map_plan_positioning_off_the_bottom", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_positioning_off_the_bottom_id_editor", + table: "t_process_map_plan_positioning_off_the_bottom", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_positioning_off_the_bottom_id_previous", + table: "t_process_map_plan_positioning_off_the_bottom", + column: "id_previous"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_positioning_off_the_bottom_id_well", + table: "t_process_map_plan_positioning_off_the_bottom", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_positioning_off_the_bottom_id_wellsectio~", + table: "t_process_map_plan_positioning_off_the_bottom", + column: "id_wellsection_type"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_reaming_slide_id_author", + table: "t_process_map_plan_reaming_slide", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_reaming_slide_id_editor", + table: "t_process_map_plan_reaming_slide", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_reaming_slide_id_previous", + table: "t_process_map_plan_reaming_slide", + column: "id_previous"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_reaming_slide_id_well", + table: "t_process_map_plan_reaming_slide", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_reaming_slide_id_wellsection_type", + table: "t_process_map_plan_reaming_slide", + column: "id_wellsection_type"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_recording_static_measurement_id_author", + table: "t_process_map_plan_recording_static_measurement", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_recording_static_measurement_id_editor", + table: "t_process_map_plan_recording_static_measurement", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_recording_static_measurement_id_previous", + table: "t_process_map_plan_recording_static_measurement", + column: "id_previous"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_recording_static_measurement_id_well", + table: "t_process_map_plan_recording_static_measurement", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_recording_static_measurement_id_wellsect~", + table: "t_process_map_plan_recording_static_measurement", + column: "id_wellsection_type"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_rotor_lowering_bit_id_author", + table: "t_process_map_plan_rotor_lowering_bit", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_rotor_lowering_bit_id_editor", + table: "t_process_map_plan_rotor_lowering_bit", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_rotor_lowering_bit_id_previous", + table: "t_process_map_plan_rotor_lowering_bit", + column: "id_previous"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_rotor_lowering_bit_id_well", + table: "t_process_map_plan_rotor_lowering_bit", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_rotor_lowering_bit_id_wellsection_type", + table: "t_process_map_plan_rotor_lowering_bit", + column: "id_wellsection_type"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_rotor_rpm_acceleration_id_author", + table: "t_process_map_plan_rotor_rpm_acceleration", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_rotor_rpm_acceleration_id_editor", + table: "t_process_map_plan_rotor_rpm_acceleration", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_rotor_rpm_acceleration_id_previous", + table: "t_process_map_plan_rotor_rpm_acceleration", + column: "id_previous"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_rotor_rpm_acceleration_id_well", + table: "t_process_map_plan_rotor_rpm_acceleration", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_rotor_rpm_acceleration_id_wellsection_ty~", + table: "t_process_map_plan_rotor_rpm_acceleration", + column: "id_wellsection_type"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_slide_lowering_bit_id_author", + table: "t_process_map_plan_slide_lowering_bit", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_slide_lowering_bit_id_editor", + table: "t_process_map_plan_slide_lowering_bit", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_slide_lowering_bit_id_previous", + table: "t_process_map_plan_slide_lowering_bit", + column: "id_previous"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_slide_lowering_bit_id_well", + table: "t_process_map_plan_slide_lowering_bit", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_slide_lowering_bit_id_wellsection_type", + table: "t_process_map_plan_slide_lowering_bit", + column: "id_wellsection_type"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_static_measurement_output_id_author", + table: "t_process_map_plan_static_measurement_output", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_static_measurement_output_id_editor", + table: "t_process_map_plan_static_measurement_output", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_static_measurement_output_id_previous", + table: "t_process_map_plan_static_measurement_output", + column: "id_previous"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_static_measurement_output_id_well", + table: "t_process_map_plan_static_measurement_output", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_static_measurement_output_id_wellsection~", + table: "t_process_map_plan_static_measurement_output", + column: "id_wellsection_type"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_switching_to_the_mode_id_author", + table: "t_process_map_plan_switching_to_the_mode", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_switching_to_the_mode_id_editor", + table: "t_process_map_plan_switching_to_the_mode", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_switching_to_the_mode_id_previous", + table: "t_process_map_plan_switching_to_the_mode", + column: "id_previous"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_switching_to_the_mode_id_well", + table: "t_process_map_plan_switching_to_the_mode", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_switching_to_the_mode_id_wellsection_type", + table: "t_process_map_plan_switching_to_the_mode", + column: "id_wellsection_type"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_tf_orientation_id_author", + table: "t_process_map_plan_tf_orientation", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_tf_orientation_id_editor", + table: "t_process_map_plan_tf_orientation", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_tf_orientation_id_previous", + table: "t_process_map_plan_tf_orientation", + column: "id_previous"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_tf_orientation_id_well", + table: "t_process_map_plan_tf_orientation", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_tf_orientation_id_wellsection_type", + table: "t_process_map_plan_tf_orientation", + column: "id_wellsection_type"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_updating_noload_parameters_id_author", + table: "t_process_map_plan_updating_noload_parameters", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_updating_noload_parameters_id_editor", + table: "t_process_map_plan_updating_noload_parameters", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_updating_noload_parameters_id_previous", + table: "t_process_map_plan_updating_noload_parameters", + column: "id_previous"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_updating_noload_parameters_id_well", + table: "t_process_map_plan_updating_noload_parameters", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_updating_noload_parameters_id_wellsectio~", + table: "t_process_map_plan_updating_noload_parameters", + column: "id_wellsection_type"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_shock_test_id_author", + table: "t_process_map_shock_test", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_shock_test_id_editor", + table: "t_process_map_shock_test", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_shock_test_id_previous", + table: "t_process_map_shock_test", + column: "id_previous"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_shock_test_id_well", + table: "t_process_map_shock_test", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_shock_test_id_wellsection_type", + table: "t_process_map_shock_test", + column: "id_wellsection_type"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "t_process_map_plan_anti_crash_rotation"); + + migrationBuilder.DropTable( + name: "t_process_map_plan_auto_hold_tf"); + + migrationBuilder.DropTable( + name: "t_process_map_plan_drilltest"); + + migrationBuilder.DropTable( + name: "t_process_map_plan_functions_damper"); + + migrationBuilder.DropTable( + name: "t_process_map_plan_load_capacity"); + + migrationBuilder.DropTable( + name: "t_process_map_plan_operation_oscillation_angels"); + + migrationBuilder.DropTable( + name: "t_process_map_plan_operation_reaming_rotor"); + + migrationBuilder.DropTable( + name: "t_process_map_plan_operation_switching_off_the_pump"); + + migrationBuilder.DropTable( + name: "t_process_map_plan_oscillation"); + + migrationBuilder.DropTable( + name: "t_process_map_plan_positioning_off_the_bottom"); + + migrationBuilder.DropTable( + name: "t_process_map_plan_reaming_slide"); + + migrationBuilder.DropTable( + name: "t_process_map_plan_recording_static_measurement"); + + migrationBuilder.DropTable( + name: "t_process_map_plan_rotor_lowering_bit"); + + migrationBuilder.DropTable( + name: "t_process_map_plan_rotor_rpm_acceleration"); + + migrationBuilder.DropTable( + name: "t_process_map_plan_slide_lowering_bit"); + + migrationBuilder.DropTable( + name: "t_process_map_plan_static_measurement_output"); + + migrationBuilder.DropTable( + name: "t_process_map_plan_switching_to_the_mode"); + + migrationBuilder.DropTable( + name: "t_process_map_plan_tf_orientation"); + + migrationBuilder.DropTable( + name: "t_process_map_plan_updating_noload_parameters"); + + migrationBuilder.DropTable( + name: "t_process_map_shock_test"); + + migrationBuilder.DropColumn( + name: "buckling", + table: "t_process_map_plan_slide"); + + migrationBuilder.DropColumn( + name: "differential_pressure_max", + table: "t_process_map_plan_slide"); + + migrationBuilder.DropColumn( + name: "flow_rate_max", + table: "t_process_map_plan_slide"); + + migrationBuilder.DropColumn( + name: "pressure_max", + table: "t_process_map_plan_slide"); + + migrationBuilder.DropColumn( + name: "rop_max", + table: "t_process_map_plan_slide"); + + migrationBuilder.DropColumn( + name: "weight_on_bit_max", + table: "t_process_map_plan_slide"); + + migrationBuilder.RenameColumn( + name: "pressure_max", + table: "t_process_map_plan_rotor", + newName: "pressure_limit_max"); + + migrationBuilder.RenameColumn( + name: "weight_on_bit_max", + table: "t_process_map_plan_rotor", + newName: "weight_on_bit_limit_max"); + + migrationBuilder.RenameColumn( + name: "top_drive_torque_max", + table: "t_process_map_plan_rotor", + newName: "top_drive_torque_limit_max"); + + migrationBuilder.RenameColumn( + name: "rpm_max", + table: "t_process_map_plan_rotor", + newName: "revolutions_per_minute_limit_max"); + + migrationBuilder.RenameColumn( + name: "rpm", + table: "t_process_map_plan_rotor", + newName: "revolution_per_minute"); + + migrationBuilder.RenameColumn( + name: "rop_max", + table: "t_process_map_plan_rotor", + newName: "rop_limit_max"); + + migrationBuilder.RenameColumn( + name: "flow_rate_max", + table: "t_process_map_plan_rotor", + newName: "flow_rate_limit_max"); + + migrationBuilder.RenameColumn( + name: "differential_pressure_max", + table: "t_process_map_plan_rotor", + newName: "differential_pressure_limit_max"); + + migrationBuilder.AlterColumn( + name: "weight_on_bit", + table: "t_process_map_plan_slide", + type: "double precision", + nullable: false, + comment: "Нагрузка, т. Уставка", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Нагрузка уставка, т."); + + migrationBuilder.AlterColumn( + name: "flow_rate", + table: "t_process_map_plan_slide", + type: "double precision", + nullable: false, + comment: "Расход л/с. Уставка", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Расход уставка, л/с."); + + migrationBuilder.AlterColumn( + name: "differential_pressure", + table: "t_process_map_plan_slide", + type: "double precision", + nullable: false, + comment: "Перепад давления, атм. Уставка", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Перепад давления уставка, атм."); + + migrationBuilder.AddColumn( + name: "differential_pressure_limit_max", + table: "t_process_map_plan_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Перепад давления, атм. Ограничение"); + + migrationBuilder.AddColumn( + name: "flow_rate_limit_max", + table: "t_process_map_plan_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Расход л/с. Ограничение"); + + migrationBuilder.AddColumn( + name: "pressure_limit_max", + table: "t_process_map_plan_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Максимально допустимое давление, атм"); + + migrationBuilder.AddColumn( + name: "rop_limit_max", + table: "t_process_map_plan_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Максимально допустимая скорость, м/ч"); + + migrationBuilder.AddColumn( + name: "tool_buckling", + table: "t_process_map_plan_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Складывание инструмента, м"); + + migrationBuilder.AddColumn( + name: "weight_on_bit_limit_max", + table: "t_process_map_plan_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Нагрузка, т. Ограничение"); + } + } +} diff --git a/AsbCloudDb/Migrations/20240701051003_Update_Tables_ProcessMapOperationsAndFunctions.Designer.cs b/AsbCloudDb/Migrations/20240701051003_Update_Tables_ProcessMapOperationsAndFunctions.Designer.cs new file mode 100644 index 00000000..76bd0b18 --- /dev/null +++ b/AsbCloudDb/Migrations/20240701051003_Update_Tables_ProcessMapOperationsAndFunctions.Designer.cs @@ -0,0 +1,12977 @@ +// +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("20240701051003_Update_Tables_ProcessMapOperationsAndFunctions")] + partial class Update_Tables_ProcessMapOperationsAndFunctions + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .UseCollation("Russian_Russia.1251") + .HasAnnotation("ProductVersion", "8.0.2") + .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", t => + { + t.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") + .HasColumnName("is_contact"); + + b.Property("Order") + .HasColumnType("integer") + .HasColumnName("order"); + + b.HasKey("Id"); + + b.ToTable("t_company_type"); + + b.HasData( + new + { + Id = 1, + Caption = "Недропользователь", + IsContact = true, + Order = 3 + }, + new + { + Id = 2, + Caption = "Буровой подрядчик", + IsContact = true, + Order = 2 + }, + new + { + Id = 3, + Caption = "Сервис автоматизации бурения", + IsContact = true, + Order = 0 + }, + new + { + Id = 4, + Caption = "Сервис по ГТИ", + IsContact = true, + Order = 6 + }, + new + { + Id = 5, + Caption = "Растворный сервис", + IsContact = true, + Order = 4 + }, + new + { + Id = 6, + Caption = "Сервис по ННБ", + IsContact = true, + Order = 5 + }, + new + { + Id = 7, + Caption = "Служба супервайзинга", + IsContact = false, + Order = 1 + }, + new + { + Id = 9, + Caption = "Сервис по цементированию", + IsContact = true, + Order = 7 + }, + new + { + Id = 11, + Caption = "Дизельный сервис", + IsContact = false, + Order = 9 + }, + new + { + Id = 12, + Caption = "Сервис по обслуживанию верхних силовых приводов", + IsContact = true, + Order = 8 + }); + }); + + 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") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("email") + .HasComment("email"); + + b.Property("FullName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("full_name") + .HasComment("ФИО"); + + b.Property("IdCompanyType") + .HasMaxLength(255) + .HasColumnType("integer") + .HasColumnName("id_company_type") + .HasComment("вид деятельности"); + + b.Property("IdWell") + .HasMaxLength(255) + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("ключ скважины"); + + b.Property("Phone") + .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.HasIndex("IdWell"); + + b.ToTable("t_contact", t => + { + t.HasComment("Контакты"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DailyReports.DailyReport", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Date") + .HasColumnType("date") + .HasColumnName("date") + .HasComment("Дата формирования отчёта"); + + b.Property("DateLastUpdate") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_last_update") + .HasComment("Дата последнего обновления"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("ID скважины"); + + b.Property("SignBlock") + .HasColumnType("jsonb") + .HasColumnName("sign_block") + .HasComment("Подпись"); + + b.Property("SubsystemBlock") + .HasColumnType("jsonb") + .HasColumnName("subsystem_block") + .HasComment("Наработкой подсистем"); + + b.Property("TimeBalanceBlock") + .HasColumnType("jsonb") + .HasColumnName("time_balance_block") + .HasComment("Баланс времени"); + + b.HasKey("Id"); + + b.HasIndex("IdWell", "Date") + .IsUnique(); + + b.ToTable("t_daily_report", t => + { + t.HasComment("Ежедневные отчёты"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DataSaubStat", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AxialLoad") + .HasColumnType("double precision") + .HasColumnName("axial_load") + .HasComment("Фактическая нагрузка"); + + b.Property("AxialLoadLimitMax") + .HasColumnType("double precision") + .HasColumnName("axial_load_limit_max") + .HasComment("Максимально допустимая нагрузка"); + + b.Property("AxialLoadSp") + .HasColumnType("double precision") + .HasColumnName("axial_load_sp") + .HasComment("Ограничение факт. нагрузки"); + + b.Property("BlockSpeedSp") + .HasColumnType("double precision") + .HasColumnName("block_speed_sp") + .HasComment("Ограничение скорости блока"); + + 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("EnabledSubsystems") + .HasColumnType("integer") + .HasColumnName("enabled_subsystems") + .HasComment("Флаги подсистем"); + + b.Property("Flow") + .HasColumnType("double precision") + .HasColumnName("flow") + .HasComment("Фактический расход"); + + b.Property("HasOscillation") + .HasColumnType("boolean") + .HasColumnName("has_oscillation") + .HasComment("Наличие или отсутствие осцилляции"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category") + .HasComment("Название автоопределённой операции"); + + b.Property("IdFeedRegulator") + .HasColumnType("smallint") + .HasColumnName("id_feed_regulator") + .HasComment("Работа при достижении ограничения"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry") + .HasComment("Ключ телеметрии"); + + b.Property("Pressure") + .HasColumnType("double precision") + .HasColumnName("pressure") + .HasComment("Давление"); + + b.Property("PressureIdle") + .HasColumnType("double precision") + .HasColumnName("pressure_idle") + .HasComment("Давление холостого хода"); + + b.Property("PressureSp") + .HasColumnType("double precision") + .HasColumnName("pressure_sp") + .HasComment("Ограничение фактического давления"); + + b.Property("RotorSpeed") + .HasColumnType("double precision") + .HasColumnName("rotor_speed") + .HasComment("Фактическая скорость оборотов ВСП"); + + b.Property("RotorTorque") + .HasColumnType("double precision") + .HasColumnName("rotor_torque") + .HasComment("Фактический момент"); + + b.Property("RotorTorqueLimitMax") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_limit_max") + .HasComment("Максимально допустимый момент"); + + b.Property("RotorTorqueSp") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_sp") + .HasComment("Ограничение факт. момента"); + + b.Property("Speed") + .HasColumnType("double precision") + .HasColumnName("speed") + .HasComment("Скорость бурения"); + + b.HasKey("Id"); + + b.HasIndex("IdCategory"); + + b.HasIndex("IdTelemetry"); + + b.ToTable("t_data_saub_stat", t => + { + t.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", t => + { + t.HasComment("Месторождение"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DetectedOperation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + 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("EnabledSubsystems") + .HasColumnType("integer") + .HasColumnName("enabled_subsystems") + .HasComment("флаги включенных подсистем"); + + b.Property("ExtraData") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("extra_data") + .HasComment("доп. инфо по операции"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category") + .HasComment("Id категории операции"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .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", t => + { + t.HasComment("автоматически определенные операции по телеметрии"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillTest", b => + { + b.Property("Id") + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry") + .HasComment("Идентификатор телеметрии"); + + b.Property("DepthStart") + .HasColumnType("real") + .HasColumnName("depthStart") + .HasComment("Глубина начала"); + + b.Property("Params") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("t_drill_test_params") + .HasComment("Параметры записи drill test"); + + b.Property("TimeStampStart") + .HasColumnType("timestamp with time zone") + .HasColumnName("timestamp_start") + .HasComment("Время начала"); + + b.HasKey("Id", "IdTelemetry"); + + b.HasIndex("IdTelemetry"); + + b.ToTable("t_drill_test", t => + { + t.HasComment("Drill_test"); + }); + }); + + 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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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 = 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" + }, + new + { + Id = 528, + Description = "Разрешение на удаление контакта", + Name = "WellContact.delete" + }, + new + { + Id = 530, + Description = "Разрешение на редактирование плановой конструкции скважины", + Name = "WellSectionPlan.edit" + }, + new + { + Id = 531, + Description = "Разрешение на удаление плановой конструкции скважины", + Name = "WellSectionPlan.delete" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAntiCrashRotation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("TopDriveRpmMin") + .HasColumnType("double precision") + .HasColumnName("top_drive_rpm_min") + .HasComment("Минимальные обороты ВСП, об/мин"); + + b.Property("TopDriveStartMinFlowRate") + .HasColumnType("double precision") + .HasColumnName("top_drive_start_min_flow_rate") + .HasComment("Минимальный расход для запуска оборотов ВСП, л/сек"); + + b.Property("TopDriveTorqueMax") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque_max") + .HasComment("Максимально допустимый момент на ВСП при противоаварийном вращении, кН*м"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_anti_crash_rotation", t => + { + t.HasComment("Противоаварийное вращение"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAutoHoldTF", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("ZenithAngle") + .HasColumnType("double precision") + .HasColumnName("zenit_angle") + .HasComment("Зенитный угол, градусы"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_auto_hold_tf", t => + { + t.HasComment("Автоудержание TF"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDamper", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("StickSlip") + .HasColumnType("double precision") + .HasColumnName("stick_slip") + .HasComment("StickSlip"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_functions_damper", t => + { + t.HasComment("Демпфер"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDrillTest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("LengthStep") + .HasColumnType("double precision") + .HasColumnName("length_step") + .HasComment("Величина проходки шага, м."); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("RpmMin") + .HasColumnType("double precision") + .HasColumnName("rpm_min") + .HasComment("Минимальные обороты на ВСП, об/мин."); + + b.Property("RpmStepsCount") + .HasColumnType("integer") + .HasColumnName("rpm_steps_count") + .HasComment("Количество шагов оборотов на ВСП, об/мин."); + + b.Property("WeightOnBitMin") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_min") + .HasComment("Нагрузка минимальная, т"); + + b.Property("WeightOnBitStepsCount") + .HasColumnType("integer") + .HasColumnName("weight_on_bit_steps_count") + .HasComment("Количество шагов по нагрузке"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_drilltest", t => + { + t.HasComment("DrillTest"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanOscillation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Mode") + .HasColumnType("integer") + .HasColumnName("mode") + .HasComment("Режим Авто/Руч"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("OptimalOscillationAngle") + .HasColumnType("double precision") + .HasColumnName("optimal_oscillation_angle") + .HasComment("Оптимальный угол осцилляции, градусы"); + + b.Property("RpmLeft") + .HasColumnType("double precision") + .HasColumnName("Rpm_left") + .HasComment("Скорость влево, об/мин"); + + b.Property("RpmRight") + .HasColumnType("double precision") + .HasColumnName("Rpm_right") + .HasComment("Скорость вправо, об/мин"); + + b.Property("TorqueMaxLeft") + .HasColumnType("double precision") + .HasColumnName("torque_max_left") + .HasComment("Ограничение момента влево, кН*м"); + + b.Property("TorqueMaxRight") + .HasColumnType("double precision") + .HasColumnName("torque_max_right") + .HasComment("Ограничение момента вправо, кН*м"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_oscillation", t => + { + t.HasComment("Осцилляция"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanShockTest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AxialVibrations") + .HasColumnType("double precision") + .HasColumnName("axial_vibrations") + .HasComment("Осевые вибрации"); + + b.Property("CombinedVibrations") + .HasColumnType("double precision") + .HasColumnName("combined_vibrations") + .HasComment("Комбинированные вибрации"); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("RpmMin") + .HasColumnType("double precision") + .HasColumnName("rpm_min") + .HasComment("Минимальные обороты на ВСП, об/мин."); + + b.Property("StickSlip") + .HasColumnType("double precision") + .HasColumnName("stick_slip") + .HasComment("stickSlip"); + + b.Property("WeightOnBitMin") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_min") + .HasComment("Нагрузка минимальная, т"); + + b.Property("Whirl") + .HasColumnType("double precision") + .HasColumnName("whirl") + .HasComment("Whirl"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_shock_test", t => + { + t.HasComment("ShockTest"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanStaticMeasurementOutput", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("SignalWaitingTime") + .HasColumnType("double precision") + .HasColumnName("signal_waiting_time") + .HasComment("Время ожидания выхода сигнала с ТМС, сек."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_static_measurement_output", t => + { + t.HasComment("Выход статического замера"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanUpdatingNoloadParameters", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdDeclineSocketColumn") + .HasColumnType("boolean") + .HasColumnName("id_decline_socket_column") + .HasComment("СПУСК ОК Да/Нет"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_updating_noload_parameters", t => + { + t.HasComment("Обновление холостого хода"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanLoadCapacity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressureMin") + .HasColumnType("double precision") + .HasColumnName("differential_pressure_min") + .HasComment("Перепад давления минимальный, атм"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("TimeLoadCapacityMin") + .HasColumnType("double precision") + .HasColumnName("time_load_capacity_min") + .HasComment("Время выработки минимальное, сек"); + + b.Property("WeightOnBitMin") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_min") + .HasComment("Нагрузка минимальная, т"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_load_capacity", t => + { + t.HasComment("РТК выработка нагрузки"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanOscillationAngles", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("Rpm") + .HasColumnType("double precision") + .HasColumnName("rpm") + .HasComment("Обороты на ВСП, об/мин., Уставка"); + + b.Property("RpmMax") + .HasColumnType("double precision") + .HasColumnName("rpm_max") + .HasComment("Обороты на ВСП, об/мин., Ограничение"); + + b.Property("TopDriveTorque") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque") + .HasComment("Момент на ВСП, кН*м., Уставка"); + + b.Property("TopDriveTorqueMax") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque_max") + .HasComment("Момент на ВСП, кН*м., Ограничение"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_operation_oscillation_angels", t => + { + t.HasComment("Определение углов осцилляции"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanPositioningOffTheBottom", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления уставка, атм."); + + b.Property("FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("flow_rate_down") + .HasComment("Расход вниз, л/с."); + + b.Property("FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("flow_rate_up") + .HasComment("Расход вверх, л/с."); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("RopDown") + .HasColumnType("double precision") + .HasColumnName("rop_down") + .HasComment("Скорость вниз, м/ч."); + + b.Property("RopUp") + .HasColumnType("double precision") + .HasColumnName("rop_up") + .HasComment("Скорость вверх, м/ч."); + + b.Property("RpmDown") + .HasColumnType("double precision") + .HasColumnName("rpm_down") + .HasComment("Обороты вниз, об/мин."); + + b.Property("RpmUp") + .HasColumnType("double precision") + .HasColumnName("rpm_up") + .HasComment("Обороты вверх, об/мин."); + + b.Property("SlackingOff") + .HasColumnType("double precision") + .HasColumnName("slacking_off") + .HasComment("Посадка, т."); + + b.Property("StopOffTheBottom") + .HasColumnType("double precision") + .HasColumnName("stop_off_the_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Tight") + .HasColumnType("double precision") + .HasColumnName("tight") + .HasComment("Затяжка, т."); + + b.Property("TorqueMax") + .HasColumnType("double precision") + .HasColumnName("torque_max") + .HasComment("Максимально допустимый момент, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_positioning_off_the_bottom", t => + { + t.HasComment("Позиционирование над забоем"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReam", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .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("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_ream", t => + { + t.HasComment("РТК проработка скважины"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingRotor", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления уставка, атм."); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("Reaming1FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_flow_rate_down") + .HasComment("Проработка 1, Расход, л/с., Вниз"); + + b.Property("Reaming1FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_flow_rate_up") + .HasComment("Проработка 1, Расход, л/с., Вверх"); + + b.Property("Reaming1Interval") + .HasColumnType("double precision") + .HasColumnName("reaming1_interval") + .HasComment("Проработка 1, Интервал проработки, м."); + + b.Property("Reaming1RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("reaming1_repetitions_count") + .HasComment("Проработка 1. Количество повторений, шт."); + + b.Property("Reaming1RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_rop_down") + .HasComment("Проработка 1, Скорость, м/ч., Вниз"); + + b.Property("Reaming1RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_rop_up") + .HasComment("Проработка 1. Скорость вверх, м/ч."); + + b.Property("Reaming1RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_rpm_down") + .HasComment("Проработка 1, Обороты, об/мин., Вниз"); + + b.Property("Reaming1RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_rpm_up") + .HasComment("Проработка 1, Обороты, об/мин., Вверх"); + + b.Property("Reaming1StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming1_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Reaming2FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_flow_rate_down") + .HasComment("Проработка 2, Расход, л/с., Вниз"); + + b.Property("Reaming2FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_flow_rate_up") + .HasComment("Проработка 2, Расход, л/с., Вверх"); + + b.Property("Reaming2Interval") + .HasColumnType("double precision") + .HasColumnName("reaming2_interval") + .HasComment("Проработка 2, Интервал проработки, м."); + + b.Property("Reaming2RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("reaming2_repetitions_count") + .HasComment("Проработка 2, Количество повторений, шт."); + + b.Property("Reaming2RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_rop_down") + .HasComment("Проработка 2, Скорость, м/ч., Вниз"); + + b.Property("Reaming2RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_rop_up") + .HasComment("Проработка 2, Скорость, м/ч., Вверх"); + + b.Property("Reaming2RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_rpm_down") + .HasComment("Проработка 2, Обороты, об/мин., Вниз"); + + b.Property("Reaming2RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_rpm_up") + .HasComment("Проработка 2, Обороты, об/мин., Вверх"); + + b.Property("Reaming2StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming2_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Reaming3FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_flow_rate_down") + .HasComment("Проработка 3, Расход, л/с., Вниз"); + + b.Property("Reaming3FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_flow_rate_up") + .HasComment("Проработка 3, Расход, л/с., Вверх"); + + b.Property("Reaming3Interval") + .HasColumnType("double precision") + .HasColumnName("reaming3_interval") + .HasComment("Проработка 3, Интервал проработки, м."); + + b.Property("Reaming3RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("reaming3_repetitions_count") + .HasComment("Проработка 3, Количество повторений, шт."); + + b.Property("Reaming3RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_rop_down") + .HasComment("Проработка 3, Скорость, м/ч., Вниз"); + + b.Property("Reaming3RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_rop_up") + .HasComment("Проработка 3, Скорость, м/ч., Вверх"); + + b.Property("Reaming3RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_rpm_down") + .HasComment("Проработка 3, Обороты, об/мин., Вниз"); + + b.Property("Reaming3RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_rpm_up") + .HasComment("Проработка 3, Обороты, об/мин., Вверх"); + + b.Property("Reaming3StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming3_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("SlackingOff") + .HasColumnType("double precision") + .HasColumnName("slacking_off") + .HasComment("Посадка, т."); + + b.Property("Tight") + .HasColumnType("double precision") + .HasColumnName("tight") + .HasComment("Затяжка, т."); + + b.Property("TorqueMax") + .HasColumnType("double precision") + .HasColumnName("torque_max") + .HasComment("Максимально допустимый момент, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_operation_reaming_rotor", t => + { + t.HasComment("РТК проработка ротор"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingSlide", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления уставка, атм."); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("Reaming1FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_flow_rate_down") + .HasComment("Проработка 1, Расход, л/с., Вниз"); + + b.Property("Reaming1FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_flow_rate_up") + .HasComment("Проработка 1, Расход, л/с., Вверх"); + + b.Property("Reaming1Interval") + .HasColumnType("double precision") + .HasColumnName("reaming1_interval") + .HasComment("Проработка 1, Интервал проработки, м."); + + b.Property("Reaming1RepetitionsCount") + .HasColumnType("double precision") + .HasColumnName("reaming1_repetitions_count") + .HasComment("Проработка 1. Количество повторений, шт."); + + b.Property("Reaming1RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_rop_down") + .HasComment("Проработка 1. Скорость вниз, м/ч."); + + b.Property("Reaming1RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_rop_up") + .HasComment("Проработка 1. Скорость вверх, м/ч."); + + b.Property("Reaming1RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_rpm_down") + .HasComment("Проработка 1, Обороты, об/мин., Вниз"); + + b.Property("Reaming1RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_rpm_up") + .HasComment("Проработка 1, Обороты, об/мин., Вверх"); + + b.Property("Reaming1StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming1_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Reaming2FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_flow_rate_down") + .HasComment("Проработка 2, Расход, л/с., Вниз"); + + b.Property("Reaming2FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_flow_rate_up") + .HasComment("Проработка 2, Расход, л/с., Вверх"); + + b.Property("Reaming2Interval") + .HasColumnType("double precision") + .HasColumnName("reaming2_interval") + .HasComment("Проработка 2, Интервал проработки, м."); + + b.Property("Reaming2RepetitionsCount") + .HasColumnType("double precision") + .HasColumnName("reaming2_repetitions_count") + .HasComment("Проработка 2, Количество повторений, шт."); + + b.Property("Reaming2RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_rop_down") + .HasComment("Проработка 2, Скорость, м/ч., Вниз"); + + b.Property("Reaming2RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_rop_up") + .HasComment("Проработка 2, Скорость, м/ч., Вверх"); + + b.Property("Reaming2RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_rpm_down") + .HasComment("Проработка 2, Обороты, об/мин., Вниз"); + + b.Property("Reaming2RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_rpm_up") + .HasComment("Проработка 2, Обороты, об/мин., Вверх"); + + b.Property("Reaming2StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming2_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Reaming3FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_flow_rate_down") + .HasComment("Проработка 3, Расход, л/с., Вниз"); + + b.Property("Reaming3FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_flow_rate_up") + .HasComment("Проработка 3, Расход, л/с., Вверх"); + + b.Property("Reaming3Interval") + .HasColumnType("double precision") + .HasColumnName("reaming3_interval") + .HasComment("Проработка 3, Интервал проработки, м."); + + b.Property("Reaming3RepetitionsCount") + .HasColumnType("double precision") + .HasColumnName("reaming3_repetitions_count") + .HasComment("Проработка 3, Количество повторений, шт."); + + b.Property("Reaming3RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_rop_down") + .HasComment("Проработка 3, Скорость, м/ч., Вниз"); + + b.Property("Reaming3RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_rop_up") + .HasComment("Проработка 3, Скорость, м/ч., Вверх"); + + b.Property("Reaming3RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_rpm_down") + .HasComment("Проработка 3, Обороты, об/мин., Вниз"); + + b.Property("Reaming3RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_rpm_up") + .HasComment("Проработка 3, Обороты, об/мин., Вверх"); + + b.Property("Reaming3StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming3_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("SlackingOff") + .HasColumnType("double precision") + .HasColumnName("slacking_off") + .HasComment("Посадка, т."); + + b.Property("Tight") + .HasColumnType("double precision") + .HasColumnName("tight") + .HasComment("Затяжка, т."); + + b.Property("TorqueMax") + .HasColumnType("double precision") + .HasColumnName("torque_max") + .HasComment("Максимально допустимый момент, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_reaming_slide", t => + { + t.HasComment("РТК проработка слайд"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRecordingStaticMeasurement", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("MeasurementRecordingTime") + .HasColumnType("double precision") + .HasColumnName("measurement_recording_time") + .HasComment("Время записи замера, сек"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_recording_static_measurement", t => + { + t.HasComment("Запись статического замера"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRotor", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления, атм. Уставка"); + + b.Property("DifferentialPressureMax") + .HasColumnType("double precision") + .HasColumnName("differential_pressure_max") + .HasComment("Перепад давления, атм. Ограничение"); + + b.Property("FlowRate") + .HasColumnType("double precision") + .HasColumnName("flow_rate") + .HasComment("Расход л/с. Уставка"); + + b.Property("FlowRateMax") + .HasColumnType("double precision") + .HasColumnName("flow_rate_max") + .HasComment("Расход л/с. Ограничение"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureLimitMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм"); + + b.Property("RopMax") + .HasColumnType("double precision") + .HasColumnName("rop_max") + .HasComment("Максимально допустимая скорость, м/ч"); + + b.Property("Rpm") + .HasColumnType("double precision") + .HasColumnName("rpm") + .HasComment("Обороты на ВСП, об/мин. Уставка"); + + b.Property("RpmMax") + .HasColumnType("double precision") + .HasColumnName("rpm_max") + .HasComment("Обороты на ВСП, об/мин. Ограничение"); + + b.Property("TopDriveTorque") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque") + .HasComment("Момент на ВСП, кН*м. Уставка"); + + b.Property("TopDriveTorqueMax") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque_max") + .HasComment("Момент на ВСП, кН*м. Ограничение"); + + b.Property("WeightOnBit") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit") + .HasComment("Нагрузка, т. Уставка"); + + b.Property("WeightOnBitMax") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_max") + .HasComment("Нагрузка, т. Ограничение"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_rotor", t => + { + t.HasComment("РТК план бурение ротор"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRotorLoweringBit", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления уставка, атм."); + + b.Property("FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("flow_rate_down") + .HasComment("Расход вниз, л/с."); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("RopDown") + .HasColumnType("double precision") + .HasColumnName("rop_down") + .HasComment("Скорость вниз, м/ч."); + + b.Property("RpmDown") + .HasColumnType("double precision") + .HasColumnName("rpm_down") + .HasComment("Обороты вниз, об/мин."); + + b.Property("SlackingOff") + .HasColumnType("double precision") + .HasColumnName("slacking_off") + .HasComment("Посадка, т."); + + b.Property("TorqueMax") + .HasColumnType("double precision") + .HasColumnName("torque_max") + .HasComment("Максимально допустимый момент, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_rotor_lowering_bit", t => + { + t.HasComment("РТК подход к забою в роторе"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRotorRpmAcceleration", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("Rpm") + .HasColumnType("double precision") + .HasColumnName("rpm") + .HasComment("Обороты на ВСП уставка, об/мин."); + + b.Property("RpmMax") + .HasColumnType("double precision") + .HasColumnName("rpm_max") + .HasComment("Обороты на ВСП ограничение, об/мин."); + + b.Property("TopDriveTorque") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque") + .HasComment("Момент на ВСП уставка, кН*м."); + + b.Property("TopDriveTorqueMax") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque_max") + .HasComment("Момент на ВСП ограничение, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_rotor_rpm_acceleration", t => + { + t.HasComment("Выход на обороты перед ротором"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSlide", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Buckling") + .HasColumnType("double precision") + .HasColumnName("buckling") + .HasComment("Складывание инструмента, м."); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления уставка, атм."); + + b.Property("DifferentialPressureMax") + .HasColumnType("double precision") + .HasColumnName("differential_pressure_max") + .HasComment("Перепад давления ограничение, атм."); + + b.Property("FlowRate") + .HasColumnType("double precision") + .HasColumnName("flow_rate") + .HasComment("Расход уставка, л/с."); + + b.Property("FlowRateMax") + .HasColumnType("double precision") + .HasColumnName("flow_rate_max") + .HasComment("Расход ограничение, л/с."); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("RopMax") + .HasColumnType("double precision") + .HasColumnName("rop_max") + .HasComment("Максимально допустимая скорость, м/ч."); + + b.Property("Spring") + .HasColumnType("double precision") + .HasColumnName("spring") + .HasComment("Расчётная пружина, градус"); + + b.Property("WeightOnBit") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit") + .HasComment("Нагрузка уставка, т."); + + b.Property("WeightOnBitMax") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_max") + .HasComment("Нагрузка ограничение, т."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_slide", t => + { + t.HasComment("РТК план бурение слайд"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSlideLoweringBit", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления уставка, атм."); + + b.Property("FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("flow_rate_down") + .HasComment("Расход вниз, л/с."); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("RopDown") + .HasColumnType("double precision") + .HasColumnName("rop_down") + .HasComment("Скорость вниз, м/ч."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_slide_lowering_bit", t => + { + t.HasComment("РТК подход к забою в слайде"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingOffThePump", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("Duration") + .HasColumnType("double precision") + .HasColumnName("duration") + .HasComment("Продолжительность, сек."); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("ResidualPressureLimit") + .HasColumnType("double precision") + .HasColumnName("residual_pressure_limit") + .HasComment("Лимит остаточного давления, атм."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_operation_switching_off_the_pump", t => + { + t.HasComment("Выключение насоса"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingToTheMode", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("FlowRate") + .HasColumnType("double precision") + .HasColumnName("flow_rate") + .HasComment("Расход, л/с"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_limit") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("RampTime") + .HasColumnType("double precision") + .HasColumnName("ramp_time") + .HasComment("Время выхода буровых насосов на плановый расход, сек."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_switching_to_the_mode", t => + { + t.HasComment("Выход на плановый расход"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanTFOrientation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления, атм."); + + b.Property("FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("flow_rate_down") + .HasComment("Расход вниз, л/с."); + + b.Property("FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("flow_rate_up") + .HasComment("Расход вверх, л/с."); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Interval") + .HasColumnType("double precision") + .HasColumnName("interval") + .HasComment("Интервал расхаживания, м."); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимальное давление, атм."); + + b.Property("RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("repetitions_count") + .HasComment("Количество расхаживаний, шт."); + + b.Property("RopDown") + .HasColumnType("double precision") + .HasColumnName("rop_down") + .HasComment("Скорость вниз, м/ч."); + + b.Property("RopUp") + .HasColumnType("double precision") + .HasColumnName("rop_up") + .HasComment("Скорость вверх, м/ч."); + + b.Property("SlackingOff") + .HasColumnType("double precision") + .HasColumnName("slacking_off") + .HasComment("Посадка, т."); + + b.Property("Spring") + .HasColumnType("double precision") + .HasColumnName("spring") + .HasComment("Пружина, град."); + + b.Property("StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("TFSetpoint") + .HasColumnType("double precision") + .HasColumnName("tf_setpoint") + .HasComment("Задание TF, град."); + + b.Property("Tight") + .HasColumnType("double precision") + .HasColumnName("tight") + .HasComment("Затяжка, т."); + + b.Property("TorqueMax") + .HasColumnType("double precision") + .HasColumnName("torque_max") + .HasComment("Максимально допустимый момент, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_tf_orientation", t => + { + t.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", t => + { + t.HasComment("отношение скважин и компаний"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationContactWell", b => + { + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.HasKey("IdWell", "IdUser"); + + b.HasIndex("IdUser"); + + b.ToTable("t_relation_contact_well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserDrillingProgramPart", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("IdDrillingProgramPart") + .HasColumnType("integer") + .HasColumnName("id_drilling_program_part"); + + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_role") + .HasComment("1 - publisher, 2 - approver"); + + b.HasKey("IdUser", "IdDrillingProgramPart") + .HasName("t_relation_user_drilling_program_part_pk"); + + b.HasIndex("IdDrillingProgramPart"); + + b.ToTable("t_relation_user_drilling_program_part", t => + { + t.HasComment("Отношение пользователей и частей ПБ"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRolePermission", b => + { + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.Property("IdPermission") + .HasColumnType("integer") + .HasColumnName("id_permission"); + + b.HasKey("IdUserRole", "IdPermission"); + + b.HasIndex("IdPermission"); + + b.ToTable("t_relation_user_role_permission", t => + { + t.HasComment("Отношение ролей пользователей и разрешений доступа"); + }); + + b.HasData( + new + { + IdUserRole = 1100, + IdPermission = 102 + }, + new + { + IdUserRole = 1100, + IdPermission = 111 + }, + new + { + IdUserRole = 1101, + IdPermission = 101 + }, + new + { + IdUserRole = 1101, + IdPermission = 100 + }, + new + { + IdUserRole = 1102, + IdPermission = 105 + }, + new + { + IdUserRole = 1102, + IdPermission = 108 + }, + new + { + IdUserRole = 1103, + IdPermission = 104 + }, + new + { + IdUserRole = 1103, + IdPermission = 103 + }, + new + { + IdUserRole = 1104, + IdPermission = 108 + }, + new + { + IdUserRole = 1105, + IdPermission = 107 + }, + new + { + IdUserRole = 1105, + IdPermission = 106 + }, + new + { + IdUserRole = 1106, + IdPermission = 111 + }, + new + { + IdUserRole = 1107, + IdPermission = 110 + }, + new + { + IdUserRole = 1107, + IdPermission = 109 + }, + new + { + IdUserRole = 1108, + IdPermission = 114 + }, + new + { + IdUserRole = 1109, + IdPermission = 113 + }, + new + { + IdUserRole = 1109, + IdPermission = 112 + }, + new + { + IdUserRole = 1110, + IdPermission = 123 + }, + new + { + IdUserRole = 1110, + IdPermission = 114 + }, + new + { + IdUserRole = 1111, + IdPermission = 122 + }, + new + { + IdUserRole = 1111, + IdPermission = 121 + }, + new + { + IdUserRole = 1112, + IdPermission = 117 + }, + new + { + IdUserRole = 1113, + IdPermission = 105 + }, + new + { + IdUserRole = 1113, + IdPermission = 123 + }, + new + { + IdUserRole = 1113, + IdPermission = 120 + }, + new + { + IdUserRole = 1114, + IdPermission = 119 + }, + new + { + IdUserRole = 1114, + IdPermission = 118 + }, + new + { + IdUserRole = 1114, + IdPermission = 200 + }, + new + { + IdUserRole = 1115, + IdPermission = 223 + }, + new + { + IdUserRole = 1116, + IdPermission = 105 + }, + new + { + IdUserRole = 1116, + IdPermission = 102 + }, + new + { + IdUserRole = 1116, + IdPermission = 117 + }, + new + { + IdUserRole = 1116, + IdPermission = 126 + }, + new + { + IdUserRole = 1117, + IdPermission = 125 + }, + new + { + IdUserRole = 1117, + IdPermission = 124 + }, + new + { + IdUserRole = 1200, + IdPermission = 203 + }, + new + { + IdUserRole = 1200, + IdPermission = 230 + }, + new + { + IdUserRole = 1201, + IdPermission = 202 + }, + new + { + IdUserRole = 1201, + IdPermission = 203 + }, + new + { + IdUserRole = 1201, + IdPermission = 220 + }, + new + { + IdUserRole = 1202, + IdPermission = 203 + }, + new + { + IdUserRole = 1202, + IdPermission = 220 + }, + new + { + IdUserRole = 1202, + IdPermission = 236 + }, + new + { + IdUserRole = 1202, + IdPermission = 212 + }, + new + { + IdUserRole = 1203, + IdPermission = 235 + }, + new + { + IdUserRole = 1204, + IdPermission = 202 + }, + new + { + IdUserRole = 1204, + IdPermission = 203 + }, + new + { + IdUserRole = 1205, + IdPermission = 215 + }, + new + { + IdUserRole = 1206, + IdPermission = 203 + }, + new + { + IdUserRole = 1206, + IdPermission = 206 + }, + new + { + IdUserRole = 1207, + IdPermission = 205 + }, + new + { + IdUserRole = 1208, + IdPermission = 218 + }, + new + { + IdUserRole = 1209, + IdPermission = 217 + }, + new + { + IdUserRole = 1210, + IdPermission = 203 + }, + new + { + IdUserRole = 1210, + IdPermission = 230 + }, + new + { + IdUserRole = 1210, + IdPermission = 219 + }, + new + { + IdUserRole = 1211, + IdPermission = 203 + }, + new + { + IdUserRole = 1211, + IdPermission = 220 + }, + new + { + IdUserRole = 1211, + IdPermission = 239 + }, + new + { + IdUserRole = 1212, + IdPermission = 238 + }, + new + { + IdUserRole = 1212, + IdPermission = 237 + }, + new + { + IdUserRole = 1213, + IdPermission = 203 + }, + new + { + IdUserRole = 1213, + IdPermission = 239 + }, + new + { + IdUserRole = 1213, + IdPermission = 212 + }, + new + { + IdUserRole = 1214, + IdPermission = 211 + }, + new + { + IdUserRole = 1214, + IdPermission = 210 + }, + new + { + IdUserRole = 1215, + IdPermission = 203 + }, + new + { + IdUserRole = 1215, + IdPermission = 222 + }, + new + { + IdUserRole = 1216, + IdPermission = 221 + }, + new + { + IdUserRole = 1217, + IdPermission = 226 + }, + new + { + IdUserRole = 1218, + IdPermission = 225 + }, + new + { + IdUserRole = 1218, + IdPermission = 224 + }, + new + { + IdUserRole = 1219, + IdPermission = 203 + }, + new + { + IdUserRole = 1219, + IdPermission = 206 + }, + new + { + IdUserRole = 1219, + IdPermission = 230 + }, + new + { + IdUserRole = 1219, + IdPermission = 232 + }, + new + { + IdUserRole = 1220, + IdPermission = 203 + }, + new + { + IdUserRole = 1220, + IdPermission = 228 + }, + new + { + IdUserRole = 1221, + IdPermission = 202 + }, + new + { + IdUserRole = 1221, + IdPermission = 203 + }, + new + { + IdUserRole = 1221, + IdPermission = 220 + }, + new + { + IdUserRole = 1221, + IdPermission = 234 + }, + new + { + IdUserRole = 1500, + IdPermission = 507 + }, + new + { + IdUserRole = 1500, + IdPermission = 510 + }, + new + { + IdUserRole = 1501, + IdPermission = 214 + }, + new + { + IdUserRole = 1501, + IdPermission = 213 + }, + new + { + IdUserRole = 1502, + IdPermission = 207 + }, + new + { + IdUserRole = 1502, + IdPermission = 208 + }, + new + { + IdUserRole = 2000, + IdPermission = 205 + }, + new + { + IdUserRole = 2000, + IdPermission = 204 + }, + new + { + IdUserRole = 2000, + IdPermission = 245 + }, + new + { + IdUserRole = 2001, + IdPermission = 244 + }, + new + { + IdUserRole = 2001, + IdPermission = 245 + }, + new + { + IdUserRole = 2002, + IdPermission = 244 + }, + new + { + IdUserRole = 2002, + IdPermission = 246 + }, + new + { + IdUserRole = 2002, + IdPermission = 237 + }, + new + { + IdUserRole = 2002, + IdPermission = 238 + }, + new + { + IdUserRole = 2003, + IdPermission = 240 + }, + new + { + IdUserRole = 2003, + IdPermission = 217 + }, + new + { + IdUserRole = 2003, + IdPermission = 216 + }, + new + { + IdUserRole = 2004, + IdPermission = 242 + }, + new + { + IdUserRole = 2004, + IdPermission = 217 + }, + new + { + IdUserRole = 2004, + IdPermission = 216 + }, + new + { + IdUserRole = 2004, + IdPermission = 205 + }, + new + { + IdUserRole = 2004, + IdPermission = 204 + }, + new + { + IdUserRole = 2005, + IdPermission = 247 + }, + new + { + IdUserRole = 2005, + IdPermission = 205 + }, + new + { + IdUserRole = 2005, + IdPermission = 204 + }, + new + { + IdUserRole = 2006, + IdPermission = 243 + }, + new + { + IdUserRole = 2006, + IdPermission = 205 + }, + new + { + IdUserRole = 2006, + IdPermission = 204 + }, + new + { + IdUserRole = 2007, + IdPermission = 241 + }, + new + { + IdUserRole = 2007, + IdPermission = 205 + }, + new + { + IdUserRole = 2007, + IdPermission = 204 + }, + new + { + IdUserRole = 1, + IdPermission = 100 + }, + new + { + IdUserRole = 1, + IdPermission = 101 + }, + new + { + IdUserRole = 1, + IdPermission = 102 + }, + new + { + IdUserRole = 1, + IdPermission = 103 + }, + new + { + IdUserRole = 1, + IdPermission = 104 + }, + new + { + IdUserRole = 1, + IdPermission = 105 + }, + new + { + IdUserRole = 1, + IdPermission = 106 + }, + new + { + IdUserRole = 1, + IdPermission = 107 + }, + new + { + IdUserRole = 1, + IdPermission = 108 + }, + new + { + IdUserRole = 1, + IdPermission = 109 + }, + new + { + IdUserRole = 1, + IdPermission = 110 + }, + new + { + IdUserRole = 1, + IdPermission = 111 + }, + new + { + IdUserRole = 1, + IdPermission = 112 + }, + new + { + IdUserRole = 1, + IdPermission = 113 + }, + new + { + IdUserRole = 1, + IdPermission = 114 + }, + new + { + IdUserRole = 1, + IdPermission = 115 + }, + new + { + IdUserRole = 1, + IdPermission = 116 + }, + new + { + IdUserRole = 1, + IdPermission = 117 + }, + new + { + IdUserRole = 1, + IdPermission = 118 + }, + new + { + IdUserRole = 1, + IdPermission = 119 + }, + new + { + IdUserRole = 1, + IdPermission = 120 + }, + new + { + IdUserRole = 1, + IdPermission = 121 + }, + new + { + IdUserRole = 1, + IdPermission = 122 + }, + new + { + IdUserRole = 1, + IdPermission = 123 + }, + new + { + IdUserRole = 1, + IdPermission = 124 + }, + new + { + IdUserRole = 1, + IdPermission = 125 + }, + new + { + IdUserRole = 1, + IdPermission = 126 + }, + new + { + IdUserRole = 1, + IdPermission = 127 + }, + new + { + IdUserRole = 1, + IdPermission = 128 + }, + new + { + IdUserRole = 1, + IdPermission = 129 + }, + new + { + IdUserRole = 1, + IdPermission = 200 + }, + new + { + IdUserRole = 1, + IdPermission = 201 + }, + new + { + IdUserRole = 1, + IdPermission = 202 + }, + new + { + IdUserRole = 1, + IdPermission = 203 + }, + new + { + IdUserRole = 1, + IdPermission = 204 + }, + new + { + IdUserRole = 1, + IdPermission = 205 + }, + new + { + IdUserRole = 1, + IdPermission = 206 + }, + new + { + IdUserRole = 1, + IdPermission = 207 + }, + new + { + IdUserRole = 1, + IdPermission = 208 + }, + new + { + IdUserRole = 1, + IdPermission = 209 + }, + new + { + IdUserRole = 1, + IdPermission = 210 + }, + new + { + IdUserRole = 1, + IdPermission = 211 + }, + new + { + IdUserRole = 1, + IdPermission = 212 + }, + new + { + IdUserRole = 1, + IdPermission = 213 + }, + new + { + IdUserRole = 1, + IdPermission = 214 + }, + new + { + IdUserRole = 1, + IdPermission = 215 + }, + new + { + IdUserRole = 1, + IdPermission = 216 + }, + new + { + IdUserRole = 1, + IdPermission = 217 + }, + new + { + IdUserRole = 1, + IdPermission = 218 + }, + new + { + IdUserRole = 1, + IdPermission = 219 + }, + new + { + IdUserRole = 1, + IdPermission = 220 + }, + new + { + IdUserRole = 1, + IdPermission = 221 + }, + new + { + IdUserRole = 1, + IdPermission = 222 + }, + new + { + IdUserRole = 1, + IdPermission = 223 + }, + new + { + IdUserRole = 1, + IdPermission = 224 + }, + new + { + IdUserRole = 1, + IdPermission = 225 + }, + new + { + IdUserRole = 1, + IdPermission = 226 + }, + new + { + IdUserRole = 1, + IdPermission = 227 + }, + new + { + IdUserRole = 1, + IdPermission = 228 + }, + new + { + IdUserRole = 1, + IdPermission = 229 + }, + new + { + IdUserRole = 1, + IdPermission = 230 + }, + new + { + IdUserRole = 1, + IdPermission = 231 + }, + new + { + IdUserRole = 1, + IdPermission = 232 + }, + new + { + IdUserRole = 1, + IdPermission = 233 + }, + new + { + IdUserRole = 1, + IdPermission = 234 + }, + new + { + IdUserRole = 1, + IdPermission = 235 + }, + new + { + IdUserRole = 1, + IdPermission = 236 + }, + new + { + IdUserRole = 1, + IdPermission = 237 + }, + new + { + IdUserRole = 1, + IdPermission = 238 + }, + new + { + IdUserRole = 1, + IdPermission = 239 + }, + new + { + IdUserRole = 1, + IdPermission = 240 + }, + new + { + IdUserRole = 1, + IdPermission = 241 + }, + new + { + IdUserRole = 1, + IdPermission = 242 + }, + new + { + IdUserRole = 1, + IdPermission = 243 + }, + new + { + IdUserRole = 1, + IdPermission = 244 + }, + new + { + IdUserRole = 1, + IdPermission = 245 + }, + new + { + IdUserRole = 1, + IdPermission = 246 + }, + new + { + IdUserRole = 1, + IdPermission = 247 + }, + new + { + IdUserRole = 1, + IdPermission = 248 + }, + new + { + IdUserRole = 1, + IdPermission = 249 + }, + new + { + IdUserRole = 1, + IdPermission = 250 + }, + new + { + IdUserRole = 1, + IdPermission = 251 + }, + new + { + IdUserRole = 1, + IdPermission = 252 + }, + new + { + IdUserRole = 1, + IdPermission = 253 + }, + new + { + IdUserRole = 1, + IdPermission = 254 + }, + new + { + IdUserRole = 1, + IdPermission = 255 + }, + new + { + IdUserRole = 1, + IdPermission = 256 + }, + new + { + IdUserRole = 1, + IdPermission = 257 + }, + new + { + IdUserRole = 1, + IdPermission = 258 + }, + new + { + IdUserRole = 1, + IdPermission = 259 + }, + new + { + IdUserRole = 1, + IdPermission = 260 + }, + new + { + IdUserRole = 1, + IdPermission = 261 + }, + new + { + IdUserRole = 1, + IdPermission = 262 + }, + new + { + IdUserRole = 1, + IdPermission = 263 + }, + new + { + IdUserRole = 1, + IdPermission = 264 + }, + new + { + IdUserRole = 1, + IdPermission = 265 + }, + new + { + IdUserRole = 1, + IdPermission = 266 + }, + new + { + IdUserRole = 1, + IdPermission = 267 + }, + new + { + IdUserRole = 1, + IdPermission = 268 + }, + new + { + IdUserRole = 1, + IdPermission = 269 + }, + new + { + IdUserRole = 1, + IdPermission = 380 + }, + new + { + IdUserRole = 1, + IdPermission = 381 + }, + new + { + IdUserRole = 1, + IdPermission = 382 + }, + new + { + IdUserRole = 1, + IdPermission = 383 + }, + new + { + IdUserRole = 1, + IdPermission = 384 + }, + new + { + IdUserRole = 1, + IdPermission = 385 + }, + new + { + IdUserRole = 1, + IdPermission = 386 + }, + new + { + IdUserRole = 1, + IdPermission = 387 + }, + new + { + IdUserRole = 1, + IdPermission = 388 + }, + new + { + IdUserRole = 1, + IdPermission = 389 + }, + new + { + IdUserRole = 1, + IdPermission = 390 + }, + new + { + IdUserRole = 1, + IdPermission = 391 + }, + new + { + IdUserRole = 1, + IdPermission = 400 + }, + new + { + IdUserRole = 1, + IdPermission = 401 + }, + new + { + IdUserRole = 1, + IdPermission = 407 + }, + new + { + IdUserRole = 1, + IdPermission = 408 + }, + new + { + IdUserRole = 1, + IdPermission = 450 + }, + new + { + IdUserRole = 1, + IdPermission = 460 + }, + new + { + IdUserRole = 1, + IdPermission = 461 + }, + new + { + IdUserRole = 1, + IdPermission = 500 + }, + new + { + IdUserRole = 1, + IdPermission = 501 + }, + new + { + IdUserRole = 1, + IdPermission = 502 + }, + new + { + IdUserRole = 1, + IdPermission = 503 + }, + new + { + IdUserRole = 1, + IdPermission = 504 + }, + new + { + IdUserRole = 1, + IdPermission = 505 + }, + new + { + IdUserRole = 1, + IdPermission = 506 + }, + new + { + IdUserRole = 1, + IdPermission = 507 + }, + new + { + IdUserRole = 1, + IdPermission = 510 + }, + new + { + IdUserRole = 1, + IdPermission = 511 + }, + new + { + IdUserRole = 1, + IdPermission = 512 + }, + new + { + IdUserRole = 1, + IdPermission = 516 + }, + new + { + IdUserRole = 1, + IdPermission = 517 + }, + new + { + IdUserRole = 1, + IdPermission = 518 + }, + new + { + IdUserRole = 1, + IdPermission = 519 + }, + new + { + IdUserRole = 1, + IdPermission = 520 + }, + new + { + IdUserRole = 1, + IdPermission = 521 + }, + new + { + IdUserRole = 1, + IdPermission = 522 + }, + new + { + IdUserRole = 1, + IdPermission = 523 + }, + new + { + IdUserRole = 1, + IdPermission = 524 + }, + new + { + IdUserRole = 1, + IdPermission = 525 + }, + new + { + IdUserRole = 1, + IdPermission = 526 + }, + new + { + IdUserRole = 1, + IdPermission = 527 + }, + new + { + IdUserRole = 1, + IdPermission = 528 + }, + new + { + IdUserRole = 1, + IdPermission = 530 + }, + new + { + IdUserRole = 1, + IdPermission = 531 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRoleUserRole", b => + { + b.Property("Id") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.Property("IdInclude") + .HasColumnType("integer") + .HasColumnName("id_include_user_role"); + + b.HasKey("Id", "IdInclude") + .HasName("t_relation_user_role_user_role_pk"); + + b.HasIndex("IdInclude"); + + b.ToTable("t_relation_user_role_user_role", t => + { + t.HasComment("Отношение ролей к ролям"); + }); + + b.HasData( + new + { + Id = 1101, + IdInclude = 1100 + }, + new + { + Id = 1103, + IdInclude = 1102 + }, + new + { + Id = 1105, + IdInclude = 1104 + }, + new + { + Id = 1107, + IdInclude = 1106 + }, + new + { + Id = 1109, + IdInclude = 1108 + }, + new + { + Id = 1111, + IdInclude = 1110 + }, + new + { + Id = 1114, + IdInclude = 1113 + }, + new + { + Id = 1117, + IdInclude = 1116 + }, + new + { + Id = 1203, + IdInclude = 1202 + }, + new + { + Id = 1207, + IdInclude = 1206 + }, + new + { + Id = 1209, + IdInclude = 1208 + }, + new + { + Id = 1212, + IdInclude = 1211 + }, + new + { + Id = 1214, + IdInclude = 1213 + }, + new + { + Id = 1216, + IdInclude = 1215 + }, + new + { + Id = 1218, + IdInclude = 1217 + }, + new + { + Id = 2000, + IdInclude = 1200 + }, + new + { + Id = 2000, + IdInclude = 1201 + }, + new + { + Id = 2000, + IdInclude = 1202 + }, + new + { + Id = 2000, + IdInclude = 1204 + }, + new + { + Id = 2000, + IdInclude = 1205 + }, + new + { + Id = 2000, + IdInclude = 1206 + }, + new + { + Id = 2000, + IdInclude = 1208 + }, + new + { + Id = 2000, + IdInclude = 1210 + }, + new + { + Id = 2000, + IdInclude = 1211 + }, + new + { + Id = 2000, + IdInclude = 1213 + }, + new + { + Id = 2000, + IdInclude = 1215 + }, + new + { + Id = 2000, + IdInclude = 1217 + }, + new + { + Id = 2000, + IdInclude = 1219 + }, + new + { + Id = 2000, + IdInclude = 1220 + }, + new + { + Id = 2000, + IdInclude = 1221 + }, + new + { + Id = 2000, + IdInclude = 1500 + }, + new + { + Id = 2000, + IdInclude = 1501 + }, + new + { + Id = 2000, + IdInclude = 1502 + }, + new + { + Id = 2001, + IdInclude = 1500 + }, + new + { + Id = 2001, + IdInclude = 1501 + }, + new + { + Id = 2001, + IdInclude = 1502 + }, + new + { + Id = 2002, + IdInclude = 1500 + }, + new + { + Id = 2002, + IdInclude = 1501 + }, + new + { + Id = 2002, + IdInclude = 1502 + }, + new + { + Id = 2003, + IdInclude = 1500 + }, + new + { + Id = 2003, + IdInclude = 1501 + }, + new + { + Id = 2003, + IdInclude = 1502 + }, + new + { + Id = 2004, + IdInclude = 1500 + }, + new + { + Id = 2004, + IdInclude = 1501 + }, + new + { + Id = 2004, + IdInclude = 1502 + }, + new + { + Id = 2005, + IdInclude = 1500 + }, + new + { + Id = 2005, + IdInclude = 1501 + }, + new + { + Id = 2005, + IdInclude = 1502 + }, + new + { + Id = 2006, + IdInclude = 1500 + }, + new + { + Id = 2006, + IdInclude = 1501 + }, + new + { + Id = 2006, + IdInclude = 1502 + }, + new + { + Id = 2007, + IdInclude = 1500 + }, + new + { + Id = 2007, + IdInclude = 1501 + }, + new + { + Id = 2007, + IdInclude = 1502 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserUserRole", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.HasKey("IdUser", "IdUserRole"); + + b.HasIndex("IdUserRole"); + + b.ToTable("t_relation_user_user_role", t => + { + t.HasComment("Отношение пользователей и ролей"); + }); + + b.HasData( + new + { + IdUser = 1, + IdUserRole = 1 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ReportProperty", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Begin") + .HasColumnType("timestamp with time zone") + .HasColumnName("begin"); + + b.Property("End") + .HasColumnType("timestamp with time zone") + .HasColumnName("end") + .HasComment("timestamp with time zone"); + + b.Property("Format") + .HasColumnType("integer") + .HasColumnName("format") + .HasComment("Формат отчета"); + + b.Property("IdFile") + .HasColumnType("integer") + .HasColumnName("id_file") + .HasComment("id файла-родителя"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("id скважины"); + + b.Property("Step") + .HasColumnType("integer") + .HasColumnName("step") + .HasComment("размер шага в секундах"); + + b.HasKey("Id"); + + b.HasIndex("IdFile"); + + b.HasIndex("IdWell"); + + b.ToTable("t_report_property", t => + { + t.HasComment("Отчеты с данными по буровым"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Schedule", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("DrillEnd") + .HasColumnType("timestamp with time zone") + .HasColumnName("drill_end") + .HasComment("Конец вахты"); + + b.Property("DrillStart") + .HasColumnType("timestamp with time zone") + .HasColumnName("drill_start") + .HasComment("Начало вахты"); + + b.Property("IdDriller") + .HasColumnType("integer") + .HasColumnName("id_driller") + .HasComment("Идентификатор бурильщика"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Идентификатор скважины"); + + b.Property("ShiftEnd") + .HasColumnType("time without time zone") + .HasColumnName("shift_end") + .HasComment("Конец смены"); + + b.Property("ShiftStart") + .HasColumnType("time without time zone") + .HasColumnName("shift_start") + .HasComment("Начало смены"); + + b.HasKey("Id"); + + b.HasIndex("IdDriller"); + + b.HasIndex("IdWell"); + + b.ToTable("t_schedule", t => + { + t.HasComment("График работы бурильщика"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.SetpointsRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Comment") + .HasColumnType("text") + .HasColumnName("comment") + .HasComment("комментарий для оператора"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Id пользователя, загрузившего файл"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("0: неизвестно, 1:ожидает отправки, 2: отправлено, 3: принято оператором, 4: отклонено оператором, 5: устарело"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("id скважины"); + + b.Property("ObsolescenceSec") + .HasColumnType("integer") + .HasColumnName("obsolescence") + .HasComment("сек. до устаревания"); + + b.Property("Setpoints") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("setpoint_set") + .HasComment("Набор уставок"); + + b.Property("UploadDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdWell"); + + b.ToTable("t_setpoints_rquest", t => + { + t.HasComment("Запросы на изменение уставок панели оператора"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Subsystem", 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"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name"); + + b.HasKey("Id"); + + b.ToTable("t_subsystem", t => + { + t.HasComment("Описание подсистем"); + }); + + b.HasData( + new + { + Id = 1, + Description = "Совместная работа режимов \"Бурение в роторе\" и \"Бурение в слайде\"", + Name = "АПД" + }, + new + { + Id = 11, + Description = "Режим работы \"Бурение в роторе\"", + Name = "АПД ротор" + }, + new + { + Id = 12, + Description = "Режим работы \"Бурение в слайде\"", + Name = "АПД слайд" + }, + new + { + Id = 65536, + Description = "Осцилляция", + Name = "Осцилляция" + }, + new + { + Id = 65537, + Description = "Демпфер", + Name = "Демпфер" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Telemetry", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Info") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("info") + .HasComment("Информация с панели о скважине"); + + b.Property("RemoteUid") + .IsRequired() + .HasColumnType("text") + .HasColumnName("remote_uid") + .HasComment("Идентификатор передающего устройства. Может повторяться в списке, так как комплекты оборудования переезжают от скв. к скв."); + + b.Property("TimeZone") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("timezone") + .HasComment("Смещение часового пояса от UTC"); + + b.HasKey("Id"); + + b.HasIndex(new[] { "RemoteUid" }, "t_telemetry_remote_uid_index"); + + b.ToTable("t_telemetry", t => + { + t.HasComment("таблица привязки телеметрии от комплектов к конкретной скважине."); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaub", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date") + .HasComment("'2021-10-19 18:23:54+05'"); + + b.Property("AxialLoad") + .HasColumnType("real") + .HasColumnName("axial_load") + .HasComment("Осевая нагрузка"); + + b.Property("AxialLoadLimitMax") + .HasColumnType("real") + .HasColumnName("axial_load_limit_max") + .HasComment("Осевая нагрузка. Аварийная макс."); + + b.Property("AxialLoadSp") + .HasColumnType("real") + .HasColumnName("axial_load_sp") + .HasComment("Осевая нагрузка. Задание"); + + b.Property("BitDepth") + .HasColumnType("real") + .HasColumnName("bit_depth") + .HasComment("Положение инструмента"); + + b.Property("BlockPosition") + .HasColumnType("real") + .HasColumnName("block_position") + .HasComment("Высота талевого блока"); + + b.Property("BlockPositionMax") + .HasColumnType("real") + .HasColumnName("block_position_max") + .HasComment("Талевый блок. Макс положение"); + + b.Property("BlockPositionMin") + .HasColumnType("real") + .HasColumnName("block_position_min") + .HasComment("Талевый блок. Мин положение"); + + b.Property("BlockSpeed") + .HasColumnType("real") + .HasColumnName("block_speed") + .HasComment("Скорость талевого блока"); + + b.Property("BlockSpeedSp") + .HasColumnType("real") + .HasColumnName("block_speed_sp") + .HasComment("Скорости талевого блока. Задание"); + + b.Property("BlockSpeedSpDevelop") + .HasColumnType("real") + .HasColumnName("block_speed_sp_develop") + .HasComment("Талевый блок. Задание скорости для проработки"); + + b.Property("BlockSpeedSpRotor") + .HasColumnType("real") + .HasColumnName("block_speed_sp_rotor") + .HasComment("Талевый блок. Задание скорости для роторного бурения"); + + b.Property("BlockSpeedSpSlide") + .HasColumnType("real") + .HasColumnName("block_speed_sp_slide") + .HasComment("Талевый блок. Задание скорости для режима слайда"); + + b.Property("Flow") + .HasColumnType("real") + .HasColumnName("flow") + .HasComment("Расход"); + + b.Property("FlowDeltaLimitMax") + .HasColumnType("real") + .HasColumnName("flow_delta_limit_max") + .HasComment("Расход. Аварийный макс."); + + b.Property("FlowIdle") + .HasColumnType("real") + .HasColumnName("flow_idle") + .HasComment("Расход. Холостой ход"); + + b.Property("HookWeight") + .HasColumnType("real") + .HasColumnName("hook_weight") + .HasComment("Вес на крюке"); + + b.Property("HookWeightIdle") + .HasColumnType("real") + .HasColumnName("hook_weight_idle") + .HasComment("Вес на крюке. Холостой ход"); + + b.Property("HookWeightLimitMax") + .HasColumnType("real") + .HasColumnName("hook_weight_limit_max") + .HasComment("Вес на крюке. Затяжка"); + + b.Property("HookWeightLimitMin") + .HasColumnType("real") + .HasColumnName("hook_weight_limit_min") + .HasComment("Вес на крюке. Посадка"); + + b.Property("IdFeedRegulator") + .HasColumnType("smallint") + .HasColumnName("id_feed_regulator") + .HasComment("Текущий критерий бурения"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user") + .HasComment("Пользователь САУБ"); + + b.Property("Mode") + .HasColumnType("smallint") + .HasColumnName("mode") + .HasComment("Режим САУБ"); + + b.Property("Mse") + .HasColumnType("real") + .HasColumnName("mse") + .HasComment("MSE"); + + b.Property("MseState") + .HasColumnType("smallint") + .HasColumnName("mse_state") + .HasComment("Текущее состояние работы MSE"); + + b.Property("Pressure") + .HasColumnType("real") + .HasColumnName("pressure") + .HasComment("Давление"); + + b.Property("PressureDeltaLimitMax") + .HasColumnType("real") + .HasColumnName("pressure_delta_limit_max") + .HasComment("Давление дифф. Аварийное макс."); + + b.Property("PressureIdle") + .HasColumnType("real") + .HasColumnName("pressure_idle") + .HasComment("Давление. Холостой ход"); + + b.Property("PressureSp") + .HasColumnType("real") + .HasColumnName("pressure_sp") + .HasComment("Давление. Задание"); + + b.Property("PressureSpDevelop") + .HasColumnType("real") + .HasColumnName("pressure_sp_develop") + .HasComment("Давление. Задание для проработки"); + + b.Property("PressureSpRotor") + .HasColumnType("real") + .HasColumnName("pressure_sp_rotor") + .HasComment("Давление. Задание для роторного бурения"); + + b.Property("PressureSpSlide") + .HasColumnType("real") + .HasColumnName("pressure_sp_slide") + .HasComment("Давление. Задание для режима слайда"); + + b.Property("Pump0Flow") + .HasColumnType("real") + .HasColumnName("pump0_flow") + .HasComment("Расход. Буровой насос 1"); + + b.Property("Pump1Flow") + .HasColumnType("real") + .HasColumnName("pump1_flow") + .HasComment("Расход. Буровой насос 2"); + + b.Property("Pump2Flow") + .HasColumnType("real") + .HasColumnName("pump2_flow") + .HasComment("Расход. Буровой насос 3"); + + b.Property("RotorSpeed") + .HasColumnType("real") + .HasColumnName("rotor_speed") + .HasComment("Обороты ротора"); + + b.Property("RotorTorque") + .HasColumnType("real") + .HasColumnName("rotor_torque") + .HasComment("Момент на роторе"); + + b.Property("RotorTorqueIdle") + .HasColumnType("real") + .HasColumnName("rotor_torque_idle") + .HasComment("Момент на роторе. Холостой ход"); + + b.Property("RotorTorqueLimitMax") + .HasColumnType("real") + .HasColumnName("rotor_torque_limit_max") + .HasComment("Момент на роторе. Аварийный макс."); + + b.Property("RotorTorqueSp") + .HasColumnType("real") + .HasColumnName("rotor_torque_sp") + .HasComment("Момент на роторе. Задание"); + + b.Property("WellDepth") + .HasColumnType("real") + .HasColumnName("well_depth") + .HasComment("Глубина забоя"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_data_saub", t => + { + t.HasComment("набор основных данных по SAUB"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaubStat", b => + { + b.Property("Count") + .HasColumnType("bigint") + .HasColumnName("count_items"); + + b.Property("DateMax") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_max"); + + b.Property("DateMin") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_min"); + + b.Property("DepthMax") + .HasColumnType("real") + .HasColumnName("depth_max"); + + b.Property("DepthMin") + .HasColumnType("real") + .HasColumnName("depth_min"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.ToTable((string)null); + + b.ToView("mw_telemetry_datas_saub_stat", (string)null); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSpin", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date") + .HasComment("'2021-10-19 18:23:54+05'"); + + b.Property("Mode") + .HasColumnType("smallint") + .HasColumnName("mode") + .HasComment("Выбранный режим управления"); + + b.Property("PositionRight") + .HasColumnType("real") + .HasColumnName("position_right") + .HasComment("Крайний правый угол осцилляции"); + + b.Property("PositionZero") + .HasColumnType("real") + .HasColumnName("position_zero") + .HasComment("Нулевая позиция осцилляции"); + + b.Property("RevolsLeftLimit") + .HasColumnType("real") + .HasColumnName("revols_left_limit") + .HasComment("Ограничение числа оборотов влево"); + + b.Property("RevolsLeftTotal") + .HasColumnType("real") + .HasColumnName("revols_left_total") + .HasComment("Суммарное количество оборотов влево"); + + b.Property("RevolsRightLimit") + .HasColumnType("real") + .HasColumnName("revols_right_limit") + .HasComment("Ограничение числа оборотов вправо"); + + b.Property("RevolsRightTotal") + .HasColumnType("real") + .HasColumnName("revols_right_total") + .HasComment("Суммарное количество оборотов вправо"); + + b.Property("SpeedLeftSp") + .HasColumnType("real") + .HasColumnName("speed_left_sp") + .HasComment("Заданная скорость вращения влево"); + + b.Property("SpeedRightSp") + .HasColumnType("real") + .HasColumnName("speed_right_sp") + .HasComment("Заданная скорость вращения вправо"); + + b.Property("State") + .HasColumnType("smallint") + .HasColumnName("state") + .HasComment("Переменная этапа"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_data_spin", t => + { + t.HasComment("набор основных данных по SpinMaster"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryEvent", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdEvent") + .HasColumnType("integer") + .HasColumnName("id_event"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category"); + + b.Property("MessageTemplate") + .IsRequired() + .HasColumnType("text") + .HasColumnName("message_template"); + + b.HasKey("IdTelemetry", "IdEvent"); + + b.ToTable("t_telemetry_event", t => + { + t.HasComment("Справочник событий. События формируют сообщения. Разделено по версиям посылок от телеметрии."); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Arg0") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg0") + .HasComment("Аргумент №0 для вставки в шаблон сообщения"); + + b.Property("Arg1") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg1"); + + b.Property("Arg2") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg2"); + + b.Property("Arg3") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg3"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("IdEvent") + .HasColumnType("integer") + .HasColumnName("id_event"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdTelemetryUser") + .HasColumnType("integer") + .HasColumnName("id_telemetry_user") + .HasComment("Пользователь панели отправляющей телеметрию. не пользователь облака."); + + b.Property("WellDepth") + .HasColumnType("double precision") + .HasColumnName("well_depth"); + + b.HasKey("Id"); + + b.HasIndex("IdTelemetry"); + + b.ToTable("t_telemetry_message", t => + { + t.HasComment("Сообщения на буровых"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryUser", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("Level") + .HasColumnType("integer") + .HasColumnName("level"); + + b.Property("Name") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name"); + + b.Property("Patronymic") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("patronymic"); + + b.Property("Surname") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("surname"); + + b.HasKey("IdTelemetry", "IdUser"); + + b.ToTable("t_telemetry_user", t => + { + t.HasComment("Пользователи панели САУБ. Для сообщений."); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryWirelineRunOut", b => + { + b.Property("IdTelemetry") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id_telemetry") + .HasComment("Идентификатор телеметрии"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("IdTelemetry")); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_time") + .HasComment("Отметка времени"); + + b.Property("Hauling") + .HasColumnType("real") + .HasColumnName("hauling") + .HasComment("Наработка талевого каната с момента перетяжки каната, т*км"); + + b.Property("HaulingWarnSp") + .HasColumnType("real") + .HasColumnName("hauling_warn_sp") + .HasComment("Наработка талевого каната до сигнализации о необходимости перетяжки, т*км"); + + b.Property("Replace") + .HasColumnType("real") + .HasColumnName("replace") + .HasComment("Наработка талевого каната с момента замены каната, т*км"); + + b.Property("ReplaceWarnSp") + .HasColumnType("real") + .HasColumnName("replace_warn_sp") + .HasComment("Наработка талевого каната до сигнализации о необходимости замены, т*км"); + + b.HasKey("IdTelemetry"); + + b.ToTable("t_telemetry_wireline_run_out", t => + { + t.HasComment("Наработка талевого каната"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Trajectory.TrajectoryFact", 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("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_trajectory_fact", t => + { + t.HasComment("Загрузка фактической траектории"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Trajectory.TrajectoryPlan", 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_trajectory_plan", t => + { + t.HasComment("Загрузка плановой траектории"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Email") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("email") + .HasComment("должность"); + + b.Property("IdCompany") + .HasColumnType("integer") + .HasColumnName("id_company"); + + b.Property("IdState") + .HasColumnType("smallint") + .HasColumnName("state") + .HasComment("состояние:\n0 - не активен, \n1 - активен, \n2 - заблокирован"); + + b.Property("Login") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("login"); + + b.Property("Name") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name") + .HasComment("имя"); + + b.Property("PasswordHash") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("password_hash") + .HasComment("соленый хэш пароля.\nпервые 5 символов - соль"); + + b.Property("Patronymic") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("patronymic") + .HasComment("отчество"); + + b.Property("Phone") + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .HasColumnName("phone") + .HasComment("номер телефона"); + + b.Property("Position") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("position") + .HasComment("email"); + + b.Property("Surname") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("surname") + .HasComment("фамилия"); + + b.HasKey("Id"); + + b.HasIndex("IdCompany"); + + b.HasIndex("Login") + .IsUnique(); + + b.ToTable("t_user", t => + { + t.HasComment("Пользователи облака"); + }); + + b.HasData( + new + { + Id = 1, + Email = "", + IdCompany = 1, + IdState = (short)1, + Login = "dev", + Name = "Разработчик", + PasswordHash = "Vlcj|4fa529103dde7ff72cfe76185f344d4aa87931f8e1b2044e8a7739947c3d18923464eaad93843e4f809c5e126d013072" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserRole", 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("IdType") + .HasColumnType("integer") + .HasColumnName("id_type") + .HasComment("0-роль из стандартной матрицы, \n1-специальная роль для какого-либо пользователя"); + + b.HasKey("Id"); + + b.ToTable("t_user_role", t => + { + t.HasComment("Роли пользователей в системе"); + }); + + b.HasData( + new + { + Id = 1, + Caption = "root", + IdType = 1 + }, + new + { + Id = 1100, + Caption = "admin_cluster.view", + IdType = 1 + }, + new + { + Id = 1101, + Caption = "admin_cluster.edit", + IdType = 1 + }, + new + { + Id = 1102, + Caption = "admin_company.view", + IdType = 1 + }, + new + { + Id = 1103, + Caption = "admin_company.edit", + IdType = 1 + }, + new + { + Id = 1104, + Caption = "admin_company_type.view", + IdType = 1 + }, + new + { + Id = 1105, + Caption = "admin_company_type.edit", + IdType = 1 + }, + new + { + Id = 1106, + Caption = "admin_deposit.view", + IdType = 1 + }, + new + { + Id = 1107, + Caption = "admin_deposit.edit", + IdType = 1 + }, + new + { + Id = 1108, + Caption = "admin_permission.view", + IdType = 1 + }, + new + { + Id = 1109, + Caption = "admin_permission.edit", + IdType = 1 + }, + new + { + Id = 1110, + Caption = "admin_role.view", + IdType = 1 + }, + new + { + Id = 1111, + Caption = "admin_role.edit", + IdType = 1 + }, + new + { + Id = 1112, + Caption = "admin_telemetry.view", + IdType = 1 + }, + new + { + Id = 1113, + Caption = "admin_user.view", + IdType = 1 + }, + new + { + Id = 1114, + Caption = "admin_user.edit", + IdType = 1 + }, + new + { + Id = 1115, + Caption = "admin_visit_log.view", + IdType = 1 + }, + new + { + Id = 1116, + Caption = "admin_well.view", + IdType = 1 + }, + new + { + Id = 1117, + Caption = "admin_well.edit", + IdType = 1 + }, + new + { + Id = 1200, + Caption = "archive.view", + IdType = 1 + }, + new + { + Id = 1201, + Caption = "cluster.view", + IdType = 1 + }, + new + { + Id = 1202, + Caption = "composite.view", + IdType = 1 + }, + new + { + Id = 1203, + Caption = "composite.edit", + IdType = 1 + }, + new + { + Id = 1204, + Caption = "deposit.view", + IdType = 1 + }, + new + { + Id = 1205, + Caption = "document.view", + IdType = 1 + }, + new + { + Id = 1206, + Caption = "drillProcessFlow.view", + IdType = 1 + }, + new + { + Id = 1207, + Caption = "drillProcessFlow.edit", + IdType = 1 + }, + new + { + Id = 1208, + Caption = "measure.view", + IdType = 1 + }, + new + { + Id = 1209, + Caption = "measure.edit", + IdType = 1 + }, + new + { + Id = 1210, + Caption = "message.view", + IdType = 1 + }, + new + { + Id = 1211, + Caption = "operations.view", + IdType = 1 + }, + new + { + Id = 1212, + Caption = "operations.edit", + IdType = 1 + }, + new + { + Id = 1213, + Caption = "params.view", + IdType = 1 + }, + new + { + Id = 1214, + Caption = "params.edit", + IdType = 1 + }, + new + { + Id = 1215, + Caption = "report.view", + IdType = 1 + }, + new + { + Id = 1216, + Caption = "report.edit", + IdType = 1 + }, + new + { + Id = 1217, + Caption = "setpoints.view", + IdType = 1 + }, + new + { + Id = 1218, + Caption = "setpoints.edit", + IdType = 1 + }, + new + { + Id = 1219, + Caption = "telemetry.view", + IdType = 1 + }, + new + { + Id = 1220, + Caption = "telemetryAnalysis.view", + IdType = 1 + }, + new + { + Id = 1221, + Caption = "well.view", + IdType = 1 + }, + new + { + Id = 1500, + Caption = "Просмотр всего", + IdType = 1 + }, + new + { + Id = 1501, + Caption = "file.edit", + IdType = 1 + }, + new + { + Id = 1502, + Caption = "drillingProgram.edit", + IdType = 1 + }, + new + { + Id = 2000, + Caption = "Заказчик", + IdType = 0 + }, + new + { + Id = 2001, + Caption = "Супервайзер", + IdType = 0 + }, + new + { + Id = 2002, + Caption = "Буровой подрядчик", + IdType = 0 + }, + new + { + Id = 2003, + Caption = "Растворщик", + IdType = 0 + }, + new + { + Id = 2004, + Caption = "Телеметрист", + IdType = 0 + }, + new + { + Id = 2005, + Caption = "Долотный сервис", + IdType = 0 + }, + new + { + Id = 2006, + Caption = "ГТИ", + IdType = 0 + }, + new + { + Id = 2007, + Caption = "Цементирование", + IdType = 0 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserSetting", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("Key") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("key") + .HasComment("Ключ настроек пользователя"); + + b.Property("Value") + .HasColumnType("jsonb") + .HasColumnName("setting_value") + .HasComment("Значение настроек пользователя"); + + b.HasKey("IdUser", "Key"); + + b.ToTable("t_user_settings", t => + { + t.HasComment("настройки интерфейса пользователя"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.RecordBase", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("Actcod") + .HasColumnType("smallint") + .HasColumnName("ACTCOD"); + + b.Property("Date") + .HasColumnType("integer") + .HasColumnName("DATE"); + + b.Property("Recid") + .HasColumnType("smallint") + .HasColumnName("RECID"); + + b.Property("Seqid") + .HasColumnType("integer") + .HasColumnName("SEQID"); + + b.Property("Stknum") + .HasColumnType("smallint") + .HasColumnName("STKNUM"); + + b.Property("Time") + .HasColumnType("integer") + .HasColumnName("TIME"); + + b.Property("Wellid") + .HasColumnType("text") + .HasColumnName("WELLID"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_wits_base"); + + b.UseTptMappingStrategy(); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", 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("IdCluster") + .HasColumnType("integer") + .HasColumnName("id_cluster"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("state") + .HasComment("0 - неизвестно, 1 - в работе, 2 - завершена"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdWellType") + .HasColumnType("integer") + .HasColumnName("id_well_type"); + + 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("IdCluster"); + + b.HasIndex("IdTelemetry") + .IsUnique(); + + b.HasIndex("IdWellType"); + + b.ToTable("t_well", t => + { + t.HasComment("скважины"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellComposite", b => + { + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины получателя"); + + b.Property("IdWellSrc") + .HasColumnType("integer") + .HasColumnName("id_well_src") + .HasComment("Id скважины композита"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_well_section_type") + .HasComment("Id тип секции композита"); + + b.HasKey("IdWell", "IdWellSrc", "IdWellSectionType"); + + b.HasIndex("IdWellSectionType"); + + b.HasIndex("IdWellSrc"); + + b.ToTable("t_well_composite", t => + { + t.HasComment("Композитная скважина"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellFinalDocument", b => + { + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category"); + + b.HasKey("IdWell", "IdUser", "IdCategory") + .HasName("t_well_final_documents_pk"); + + b.HasIndex("IdCategory"); + + b.HasIndex("IdUser"); + + b.ToTable("t_well_final_documents", t => + { + t.HasComment("Дело скважины"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CategoryInfo") + .HasColumnType("text") + .HasColumnName("category_info") + .HasComment("Доп. информация к выбраной категории"); + + b.Property("Comment") + .HasColumnType("text") + .HasColumnName("comment") + .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("DurationHours") + .HasColumnType("double precision") + .HasColumnName("duration_hours") + .HasComment("Продолжительность, часы"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category") + .HasComment("Id категории операции"); + + b.Property("IdPlan") + .HasColumnType("integer") + .HasColumnName("id_plan") + .HasComment("Id плановой операции"); + + b.Property("IdType") + .HasColumnType("integer") + .HasColumnName("id_type") + .HasComment("0 = План или 1 = Факт"); + + b.Property("IdUser") + .HasColumnType("integer"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_well_section_type") + .HasComment("Id тип секции скважины"); + + b.Property("LastUpdateDate") + .HasColumnType("timestamp with time zone"); + + b.HasKey("Id"); + + b.HasIndex("DateStart"); + + b.HasIndex("DepthEnd"); + + b.HasIndex("IdCategory"); + + b.HasIndex("IdPlan"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_well_operation", t => + { + t.HasComment("Данные по операциям на скважине"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperationCategory", 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("IsHidden") + .HasColumnType("boolean"); + + b.Property("KeyValueName") + .HasMaxLength(32) + .HasColumnType("character varying(32)") + .HasColumnName("key_value_name") + .HasComment("Название ключевого показателя операции"); + + b.Property("KeyValueUnits") + .HasMaxLength(16) + .HasColumnType("character varying(16)") + .HasColumnName("key_value_units") + .HasComment("Единицы измерения ключевого показателя операции"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name") + .HasComment("Название категории операции"); + + b.HasKey("Id"); + + b.HasIndex("IdParent"); + + b.ToTable("t_well_operation_category", t => + { + t.HasComment("Справочник операций на скважине"); + }); + + b.HasData( + new + { + Id = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "м/ч", + Name = "БУРЕНИЕ" + }, + new + { + Id = 3001, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО" + }, + new + { + Id = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "КРЕПЛЕНИЕ" + }, + new + { + Id = 3003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ГФР" + }, + new + { + Id = 3004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Вспомогательные операции" + }, + new + { + Id = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Непроизводительное время (НПВ)" + }, + new + { + Id = 3006, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Заключительные работы" + }, + new + { + Id = 4000, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "КНБК" + }, + new + { + Id = 4001, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "м/ч", + Name = "Механическое. бурение" + }, + new + { + Id = 4002, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Статический замер" + }, + new + { + Id = 4003, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Нормализация диаметра скважины" + }, + new + { + Id = 4004, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Наращивание" + }, + new + { + Id = 4005, + IdParent = 3001, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО" + }, + new + { + Id = 4006, + IdParent = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск обсадной колонны" + }, + new + { + Id = 4018, + IdParent = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Крепление" + }, + new + { + Id = 4007, + IdParent = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Цементирование" + }, + new + { + Id = 4008, + IdParent = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Вспомогательные работы при креплении" + }, + new + { + Id = 4009, + IdParent = 3003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка/разборка приборов ГИС" + }, + new + { + Id = 4010, + IdParent = 3003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО" + }, + new + { + Id = 4011, + IdParent = 3003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ГИС" + }, + new + { + Id = 4012, + IdParent = 3004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка, ОБР" + }, + new + { + Id = 4013, + IdParent = 3004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Вспомогательные работы" + }, + new + { + Id = 4014, + IdParent = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ремонт оборудования" + }, + new + { + Id = 4015, + IdParent = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Аварийные работы" + }, + new + { + Id = 4016, + IdParent = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Осложнение" + }, + new + { + Id = 4017, + IdParent = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Незаложенные в ГГД операции" + }, + new + { + Id = 4019, + IdParent = 3006, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Заключительные операции" + }, + new + { + Id = 5000, + IdParent = 4000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Разборка КНБК" + }, + new + { + Id = 5001, + IdParent = 4000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка КНБК" + }, + new + { + Id = 5002, + IdParent = 4001, + IsHidden = true, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", + Name = "Бурение слайдом" + }, + new + { + Id = 5003, + IdParent = 4001, + IsHidden = true, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", + Name = "Бурение ротором" + }, + new + { + Id = 5004, + IdParent = 4002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Замер ЗТС (запись MWD)" + }, + new + { + Id = 5005, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка перед наращиванием" + }, + new + { + Id = 5006, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Проработка во время бурения" + }, + new + { + Id = 5007, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Проработка" + }, + new + { + Id = 5008, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонировка во время бурения" + }, + new + { + Id = 5009, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонировка перед наращиванием" + }, + new + { + Id = 5010, + IdParent = 4004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Наращивание" + }, + new + { + Id = 5011, + IdParent = 4004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Удержание в клиньях" + }, + new + { + Id = 5012, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем инструмента" + }, + new + { + Id = 5013, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем КНБК" + }, + new + { + Id = 5014, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск инструмента" + }, + new + { + Id = 5015, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск КНБК" + }, + new + { + Id = 5016, + IdParent = 4006, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка при спуске ОК" + }, + new + { + Id = 5017, + IdParent = 4006, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск ОК" + }, + new + { + Id = 5018, + IdParent = 4007, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ОЗЦ" + }, + new + { + Id = 5019, + IdParent = 4007, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Цементирование" + }, + new + { + Id = 5020, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Опрессовка БИ" + }, + new + { + Id = 5021, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Опрессовка ОК" + }, + new + { + Id = 5022, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПЗР при спуске ОК" + }, + new + { + Id = 5023, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПЗР при цементировании" + }, + new + { + Id = 5024, + IdParent = 4009, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Разборка комплекса приборов ГИС" + }, + new + { + Id = 5025, + IdParent = 4009, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка комплекса приборов ГИС" + }, + new + { + Id = 5026, + IdParent = 4010, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем приборов ГИС (на трубах)" + }, + new + { + Id = 5027, + IdParent = 4010, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск приборов ГИС (на трубах)" + }, + new + { + Id = 5028, + IdParent = 4011, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Комплекс ГИС на жестком кабеле" + }, + new + { + Id = 5029, + IdParent = 4011, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Комплекс ГИС на кабеле" + }, + new + { + Id = 5030, + IdParent = 4011, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Комплекс ГИС на трубах" + }, + new + { + Id = 5031, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Закачка/прокачка пачки" + }, + new + { + Id = 5032, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Обработка БР" + }, + new + { + Id = 5033, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ориентирование ТС при бурении" + }, + new + { + Id = 5034, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Перезапись гаммы-каротажа" + }, + new + { + Id = 5035, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Приготовление БР" + }, + new + { + Id = 5036, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка" + }, + new + { + Id = 5037, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Разбуривание тех.оснастки" + }, + new + { + Id = 5038, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск инструмента с проработкой" + }, + new + { + Id = 5039, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ВМР" + }, + new + { + Id = 5040, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Демонтаж ПВО" + }, + new + { + Id = 5041, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Долив затруба при подъёме" + }, + new + { + Id = 5042, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Монтаж ПВО" + }, + new + { + Id = 5043, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Наработка жёлоба" + }, + new + { + Id = 5044, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Обвязка устья с циркуляционной системой" + }, + new + { + Id = 5045, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Оборудование устья" + }, + new + { + Id = 5046, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Опрессовка ПВО" + }, + new + { + Id = 5047, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Перемонтаж ПВО " + }, + new + { + Id = 5048, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Перетяжка талевого каната" + }, + new + { + Id = 5049, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПЗР при сборке КНБК" + }, + new + { + Id = 5050, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Полная замена талевого каната" + }, + new + { + Id = 5051, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПР перед забуркой направления" + }, + new + { + Id = 5052, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Продувка манифольда" + }, + new + { + Id = 5053, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Срезка" + }, + new + { + Id = 5054, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Тайм-дриллинг" + }, + new + { + Id = 5055, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Тех.отстой" + }, + new + { + Id = 5056, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Учебная тревога \"Выброс\"" + }, + new + { + Id = 5057, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Чистка ЦСГО/емкостного блока" + }, + new + { + Id = 5058, + IdParent = 4014, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ремонт бурового оборудования" + }, + new + { + Id = 5059, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ловильные работы" + }, + new + { + Id = 5060, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ожидание" + }, + new + { + Id = 5061, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Определение места прихвата и ЛМ" + }, + new + { + Id = 5062, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Работа яссом" + }, + new + { + Id = 5063, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Расхаживание" + }, + new + { + Id = 5064, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО - колокол" + }, + new + { + Id = 5065, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО - метчик" + }, + new + { + Id = 5066, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО - овершот" + }, + new + { + Id = 5067, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО - труболовка" + }, + new + { + Id = 5068, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Торпедирование (встряхивание)" + }, + new + { + Id = 5069, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Торпедирование (отстрел)" + }, + new + { + Id = 5070, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Установка ванн" + }, + new + { + Id = 5071, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Фрезеровка" + }, + new + { + Id = 5072, + IdParent = 4016, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Контролируемое ГНВП" + }, + new + { + Id = 5073, + IdParent = 4016, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Поглощение" + }, + new + { + Id = 5074, + IdParent = 4016, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сальникообразование" + }, + new + { + Id = 5075, + IdParent = 4016, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Утяжеление БР" + }, + new + { + Id = 5076, + IdParent = 4017, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "НПВ / прочее" + }, + new + { + Id = 5077, + IdParent = 4017, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Обработка раствора (несоответствие параметров)" + }, + new + { + Id = 5078, + IdParent = 4017, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "подъем ОК" + }, + new + { + Id = 5079, + IdParent = 4017, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ревизия КНБК/инструмента/ЗТС" + }, + new + { + Id = 5082, + IdParent = 4000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка устройства ориентирования КО" + }, + new + { + Id = 5083, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Проработка принудительная" + }, + new + { + Id = 5084, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонировка подъем БИ, продувка" + }, + new + { + Id = 5085, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск бурильного инструмента со сборкой с мостков" + }, + new + { + Id = 5086, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем БИ с выбросом на мостки" + }, + new + { + Id = 5087, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск БИ со сборкой с мостков" + }, + new + { + Id = 5088, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка и спуск ТБТ" + }, + new + { + Id = 5089, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск КО на транспортной колонне" + }, + new + { + Id = 5090, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Отворот допускной трубы" + }, + new + { + Id = 5091, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Активация подвески, опрессовка" + }, + new + { + Id = 5092, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Монтаж, опрессовка ФА" + }, + new + { + Id = 5093, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка хвостовика 114мм (согласно схеме)" + }, + new + { + Id = 5094, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПЗР к спуску УЭЦН" + }, + new + { + Id = 5095, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Активация подвески (потайной колонны, хвостовика)" + }, + new + { + Id = 5096, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонирование перед спуском" + }, + new + { + Id = 5097, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка - перевод скважины на новый раствор" + }, + new + { + Id = 5098, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка БИ с мостков на подсвечник" + }, + new + { + Id = 5099, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подготовка ствола скважины. Перезапись ГК в интервале установки КО." + }, + new + { + Id = 5100, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Смена рабочего переводника ВСП" + }, + new + { + Id = 5101, + IdParent = 4014, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ремонт" + }, + new + { + Id = 5102, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск пакера" + }, + new + { + Id = 5103, + IdParent = 4011, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Запись гамма-каратожа" + }, + new + { + Id = 5104, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонирование спуск БИ" + }, + new + { + Id = 5105, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка клин-отклонителя" + }, + new + { + Id = 5106, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ориентирование и посадка клина-отклонителя" + }, + new + { + Id = 5107, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Протяжка подъемного патрубка подвески" + }, + new + { + Id = 5108, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем клина-отклонителя" + }, + new + { + Id = 5109, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Стыковка стингера с хвостовиком основного ствола" + }, + new + { + Id = 5110, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ориентирование и установка стыковочного узла хвостовика" + }, + new + { + Id = 5111, + IdParent = 4001, + IsHidden = false, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", + Name = "Бурение с отбором керна" + }, + new + { + Id = 5112, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Работа пакером в обсадной колонне" + }, + new + { + Id = 5113, + IdParent = 4001, + IsHidden = false, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", + Name = "Бурение" + }, + new + { + Id = 5114, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ТО оборудования" + }, + new + { + Id = 5115, + IdParent = 4019, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск НКТ" + }, + new + { + Id = 5116, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Вырезка окна" + }, + new + { + Id = 5117, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Расширение ствола" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSectionType", 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("Order") + .HasColumnType("real") + .HasColumnName("order") + .HasComment("Порядок"); + + b.HasKey("Id"); + + b.ToTable("t_well_section_type", t => + { + t.HasComment("конструкция секции скважины"); + }); + + b.HasData( + new + { + Id = 1, + Caption = "Пилотный ствол", + Order = 4f + }, + new + { + Id = 2, + Caption = "Направление", + Order = 0f + }, + new + { + Id = 3, + Caption = "Кондуктор", + Order = 1f + }, + new + { + Id = 4, + Caption = "Эксплуатационная колонна", + Order = 3f + }, + new + { + Id = 5, + Caption = "Транспортный ствол", + Order = 5f + }, + new + { + Id = 6, + Caption = "Хвостовик", + Order = 6f + }, + new + { + Id = 7, + Caption = "Пилотный ствол 2", + Order = 4.1f + }, + new + { + Id = 8, + Caption = "Направление 2", + Order = 0.1f + }, + new + { + Id = 9, + Caption = "Кондуктор 2", + Order = 1.1f + }, + new + { + Id = 10, + Caption = "Эксплуатационная колонна 2", + Order = 3.1f + }, + new + { + Id = 11, + Caption = "Транспортный ствол 2", + Order = 5.1f + }, + new + { + Id = 12, + Caption = "Хвостовик 2", + Order = 6.1f + }, + new + { + Id = 13, + Caption = "Пилотный ствол 3", + Order = 4.2f + }, + new + { + Id = 14, + Caption = "Направление 3", + Order = 0.2f + }, + new + { + Id = 15, + Caption = "Кондуктор 3", + Order = 1.2f + }, + new + { + Id = 16, + Caption = "Эксплуатационная колонна 3", + Order = 3.2f + }, + new + { + Id = 17, + Caption = "Транспортный ствол 3", + Order = 5.2f + }, + new + { + Id = 18, + Caption = "Хвостовик 3", + Order = 6.2f + }, + new + { + Id = 19, + Caption = "Пилотный ствол 4", + Order = 4.3f + }, + new + { + Id = 20, + Caption = "Направление 4", + Order = 0.3f + }, + new + { + Id = 21, + Caption = "Кондуктор 4", + Order = 1.3f + }, + new + { + Id = 22, + Caption = "Эксплуатационная колонна 4", + Order = 3.3f + }, + new + { + Id = 23, + Caption = "Транспортный ствол 4", + Order = 5.3f + }, + new + { + Id = 24, + Caption = "Хвостовик 4", + Order = 6.3f + }, + new + { + Id = 25, + Caption = "Пилотный ствол 5", + Order = 4.4f + }, + new + { + Id = 26, + Caption = "Направление 5", + Order = 0.4f + }, + new + { + Id = 27, + Caption = "Кондуктор 5", + Order = 1.4f + }, + new + { + Id = 28, + Caption = "Эксплуатационная колонна 5", + Order = 3.4f + }, + new + { + Id = 29, + Caption = "Транспортный ствол 5", + Order = 5.4f + }, + new + { + Id = 30, + Caption = "Хвостовик 5", + Order = 6.4f + }, + new + { + Id = 31, + Caption = "Техническая колонна", + Order = 2f + }, + new + { + Id = 32, + Caption = "Техническая колонна 2", + Order = 2.1f + }, + new + { + Id = 33, + Caption = "Техническая колонна 3", + Order = 2.2f + }, + new + { + Id = 34, + Caption = "Хвостовик 6", + Order = 6.5f + }, + new + { + Id = 35, + Caption = "Хвостовик 7", + Order = 6.6f + }, + new + { + Id = 36, + Caption = "Хвостовик 8", + Order = 6.7f + }, + new + { + Id = 37, + Caption = "Хвостовик 9", + Order = 6.8f + }, + new + { + Id = 38, + Caption = "Хвостовик 10", + Order = 6.9f + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSections.WellSectionPlan", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + 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("IdSectionType") + .HasColumnType("integer") + .HasColumnName("id_section_type") + .HasComment("Тип секции"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user") + .HasComment("Id пользователя"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("InnerDiameter") + .HasColumnType("double precision") + .HasColumnName("inner_diameter") + .HasComment("Внутренний диаметр"); + + b.Property("LastUpdateDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_last_update") + .HasComment("Дата последнего обновления"); + + b.Property("OuterDiameter") + .HasColumnType("double precision") + .HasColumnName("outer_diameter") + .HasComment("Внешний диаметр"); + + b.HasKey("Id"); + + b.HasIndex("IdSectionType"); + + b.HasIndex("IdWell", "IdSectionType") + .IsUnique(); + + b.ToTable("t_well_section_plan"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellType", 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.HasKey("Id"); + + b.ToTable("t_well_type", t => + { + t.HasComment("конструкция скважины"); + }); + + b.HasData( + new + { + Id = 1, + Caption = "Наклонно-направленная" + }, + new + { + Id = 2, + Caption = "Горизонтальная" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record1", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Blkpos") + .HasColumnType("real") + .HasColumnName("BLKPOS"); + + b.Property("Chkp") + .HasColumnType("real") + .HasColumnName("CHKP"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptbitv") + .HasColumnType("real") + .HasColumnName("DEPTBITV"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptretm") + .HasColumnType("real") + .HasColumnName("DEPTRETM"); + + b.Property("Deptvert") + .HasColumnType("real") + .HasColumnName("DEPTVERT"); + + b.Property("Gasa") + .HasColumnType("real") + .HasColumnName("GASA"); + + b.Property("Hkla") + .HasColumnType("real") + .HasColumnName("HKLA"); + + b.Property("Hklx") + .HasColumnType("real") + .HasColumnName("HKLX"); + + b.Property("Lagstks") + .HasColumnType("smallint") + .HasColumnName("LAGSTKS"); + + b.Property("Mcia") + .HasColumnType("real") + .HasColumnName("MCIA"); + + b.Property("Mcoa") + .HasColumnType("real") + .HasColumnName("MCOA"); + + b.Property("Mdia") + .HasColumnType("real") + .HasColumnName("MDIA"); + + b.Property("Mdoa") + .HasColumnType("real") + .HasColumnName("MDOA"); + + b.Property("Mfia") + .HasColumnType("real") + .HasColumnName("MFIA"); + + b.Property("Mfoa") + .HasColumnType("real") + .HasColumnName("MFOA"); + + b.Property("Mfop") + .HasColumnType("smallint") + .HasColumnName("MFOP"); + + b.Property("Mtia") + .HasColumnType("real") + .HasColumnName("MTIA"); + + b.Property("Mtoa") + .HasColumnType("real") + .HasColumnName("MTOA"); + + b.Property("Ropa") + .HasColumnType("real") + .HasColumnName("ROPA"); + + b.Property("Rpma") + .HasColumnType("smallint") + .HasColumnName("RPMA"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Spm1") + .HasColumnType("smallint") + .HasColumnName("SPM1"); + + b.Property("Spm2") + .HasColumnType("smallint") + .HasColumnName("SPM2"); + + b.Property("Spm3") + .HasColumnType("smallint") + .HasColumnName("SPM3"); + + b.Property("Sppa") + .HasColumnType("real") + .HasColumnName("SPPA"); + + b.Property("Stkc") + .HasColumnType("integer") + .HasColumnName("STKC"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.Property("Torqa") + .HasColumnType("real") + .HasColumnName("TORQA"); + + b.Property("Torqx") + .HasColumnType("real") + .HasColumnName("TORQX"); + + b.Property("Tvolact") + .HasColumnType("real") + .HasColumnName("TVOLACT"); + + b.Property("Tvolcact") + .HasColumnType("real") + .HasColumnName("TVOLCACT"); + + b.Property("Woba") + .HasColumnType("real") + .HasColumnName("WOBA"); + + b.Property("Wobx") + .HasColumnType("real") + .HasColumnName("WOBX"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_1"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record50", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("DeptmeasGdpMc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_GDP_mc"); + + b.Property("DeptmeasMcrstat") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_MCRSTAT"); + + b.Property("DeptmeasRa33Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33_mc"); + + b.Property("DeptmeasRa33f2Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33F2_mc"); + + b.Property("DeptmeasRa33f4Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33F4_mc"); + + b.Property("DeptmeasRp33Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33_mc"); + + b.Property("DeptmeasRp33f2Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33F2_mc"); + + b.Property("DeptmeasRp33f4Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33F4_mc"); + + b.Property("DeptmeasSlvlMc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_SLVL_mc"); + + b.Property("GdpMc") + .HasColumnType("real") + .HasColumnName("GDP_mc"); + + b.Property("Mcrstat") + .HasColumnType("real") + .HasColumnName("MCRSTAT"); + + b.Property("Ra33Mc") + .HasColumnType("real") + .HasColumnName("RA33_mc"); + + b.Property("Ra33f2Mc") + .HasColumnType("real") + .HasColumnName("RA33F2_mc"); + + b.Property("Ra33f4Mc") + .HasColumnType("real") + .HasColumnName("RA33F4_mc"); + + b.Property("Rp33Mc") + .HasColumnType("real") + .HasColumnName("RP33_mc"); + + b.Property("Rp33f2Mc") + .HasColumnType("real") + .HasColumnName("RP33F2_mc"); + + b.Property("Rp33f4Mc") + .HasColumnType("real") + .HasColumnName("RP33F4_mc"); + + b.Property("SlvlMc") + .HasColumnType("real") + .HasColumnName("SLVL_mc"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_50"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record60", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Btot") + .HasColumnType("real") + .HasColumnName("Btot"); + + b.Property("Bx") + .HasColumnType("real") + .HasColumnName("Bx"); + + b.Property("By") + .HasColumnType("real") + .HasColumnName("By"); + + b.Property("Bz") + .HasColumnType("real") + .HasColumnName("Bz"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Gtot") + .HasColumnType("real") + .HasColumnName("Gtot"); + + b.Property("Gx") + .HasColumnType("real") + .HasColumnName("Gx"); + + b.Property("Gy") + .HasColumnType("real") + .HasColumnName("Gy"); + + b.Property("Gz") + .HasColumnType("real") + .HasColumnName("Gz"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_60"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record61", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Att06h") + .HasColumnType("real") + .HasColumnName("ATT06H"); + + b.Property("Att06l") + .HasColumnType("real") + .HasColumnName("ATT06L"); + + b.Property("Att10h") + .HasColumnType("real") + .HasColumnName("ATT10H"); + + b.Property("Att10l") + .HasColumnType("real") + .HasColumnName("ATT10L"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Phl1f1") + .HasColumnType("real") + .HasColumnName("PHL1F1"); + + b.Property("Phl1f2") + .HasColumnType("real") + .HasColumnName("PHL1F2"); + + b.Property("Phl2f1") + .HasColumnType("real") + .HasColumnName("PHL2F1"); + + b.Property("Phl2f2") + .HasColumnType("real") + .HasColumnName("PHL2F2"); + + b.Property("Status") + .HasColumnType("real") + .HasColumnName("Status"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_61"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record7", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptsvym") + .HasColumnType("real") + .HasColumnName("DEPTSVYM"); + + b.Property("Deptsvyv") + .HasColumnType("real") + .HasColumnName("DEPTSVYV"); + + b.Property("Passnum") + .HasColumnType("smallint") + .HasColumnName("PASSNUM"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Svyazc") + .HasColumnType("real") + .HasColumnName("SVYAZC"); + + b.Property("Svyazu") + .HasColumnType("real") + .HasColumnName("SVYAZU"); + + b.Property("Svydls") + .HasColumnType("real") + .HasColumnName("SVYDLS"); + + b.Property("Svyew") + .HasColumnType("real") + .HasColumnName("SVYEW"); + + b.Property("Svygtf") + .HasColumnType("real") + .HasColumnName("SVYGTF"); + + b.Property("Svyinc") + .HasColumnType("real") + .HasColumnName("SVYINC"); + + b.Property("Svymtf") + .HasColumnType("real") + .HasColumnName("SVYMTF"); + + b.Property("Svyns") + .HasColumnType("real") + .HasColumnName("SVYNS"); + + b.Property("Svytype") + .HasColumnType("text") + .HasColumnName("SVYTYPE"); + + b.Property("Svywalk") + .HasColumnType("real") + .HasColumnName("SVYWALK"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_7"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record8", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptbitv") + .HasColumnType("real") + .HasColumnName("DEPTBITV"); + + b.Property("Deptcalm") + .HasColumnType("real") + .HasColumnName("DEPTCALM"); + + b.Property("Deptcalv") + .HasColumnType("real") + .HasColumnName("DEPTCALV"); + + b.Property("Deptfdm") + .HasColumnType("real") + .HasColumnName("DEPTFDM"); + + b.Property("Deptfdv") + .HasColumnType("real") + .HasColumnName("DEPTFDV"); + + b.Property("Deptgr1m") + .HasColumnType("real") + .HasColumnName("DEPTGR1M"); + + b.Property("Deptgr1v") + .HasColumnType("real") + .HasColumnName("DEPTGR1V"); + + b.Property("Deptgr2m") + .HasColumnType("real") + .HasColumnName("DEPTGR2M"); + + b.Property("Deptgr2v") + .HasColumnType("real") + .HasColumnName("DEPTGR2V"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptp1m") + .HasColumnType("real") + .HasColumnName("DEPTP1M"); + + b.Property("Deptp1v") + .HasColumnType("real") + .HasColumnName("DEPTP1V"); + + b.Property("Deptp2m") + .HasColumnType("real") + .HasColumnName("DEPTP2M"); + + b.Property("Deptp2v") + .HasColumnType("real") + .HasColumnName("DEPTP2V"); + + b.Property("Deptrs1m") + .HasColumnType("real") + .HasColumnName("DEPTRS1M"); + + b.Property("Deptrs1v") + .HasColumnType("real") + .HasColumnName("DEPTRS1V"); + + b.Property("Deptrs2m") + .HasColumnType("real") + .HasColumnName("DEPTRS2M"); + + b.Property("Deptrs2v") + .HasColumnType("real") + .HasColumnName("DEPTRS2V"); + + b.Property("Deptvert") + .HasColumnType("real") + .HasColumnName("DEPTVERT"); + + b.Property("Mclp") + .HasColumnType("real") + .HasColumnName("MCLP"); + + b.Property("Mfd") + .HasColumnType("real") + .HasColumnName("MFD"); + + b.Property("Mffp") + .HasColumnType("real") + .HasColumnName("MFFP"); + + b.Property("Mfpp") + .HasColumnType("real") + .HasColumnName("MFPP"); + + b.Property("Mfrann") + .HasColumnType("real") + .HasColumnName("MFRANN"); + + b.Property("Mfrpipe") + .HasColumnType("real") + .HasColumnName("MFRPIPE"); + + b.Property("Mftann") + .HasColumnType("real") + .HasColumnName("MFTANN"); + + b.Property("Mftpipe") + .HasColumnType("real") + .HasColumnName("MFTPIPE"); + + b.Property("Mg1") + .HasColumnType("real") + .HasColumnName("MG1"); + + b.Property("Mg1c") + .HasColumnType("real") + .HasColumnName("MG1C"); + + b.Property("Mg2") + .HasColumnType("real") + .HasColumnName("MG2"); + + b.Property("Mg2c") + .HasColumnType("real") + .HasColumnName("MG2C"); + + b.Property("Mpo1") + .HasColumnType("real") + .HasColumnName("MPO1"); + + b.Property("Mpo2") + .HasColumnType("real") + .HasColumnName("MPO2"); + + b.Property("Mr1") + .HasColumnType("real") + .HasColumnName("MR1"); + + b.Property("Mr1c") + .HasColumnType("real") + .HasColumnName("MR1C"); + + b.Property("Mr2") + .HasColumnType("real") + .HasColumnName("MR2"); + + b.Property("Mr2c") + .HasColumnType("real") + .HasColumnName("MR2C"); + + b.Property("Passnum") + .HasColumnType("smallint") + .HasColumnName("PASSNUM"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Spare6") + .HasColumnType("real") + .HasColumnName("SPARE6"); + + b.Property("Spare7") + .HasColumnType("real") + .HasColumnName("SPARE7"); + + b.Property("Spare8") + .HasColumnType("real") + .HasColumnName("SPARE8"); + + b.Property("Spare9") + .HasColumnType("real") + .HasColumnName("SPARE9"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_8"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Cluster", b => + { + b.HasOne("AsbCloudDb.Model.Deposit", "Deposit") + .WithMany("Clusters") + .HasForeignKey("IdDeposit") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_cluster_t_deposit_id_fk"); + + b.Navigation("Deposit"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Company", b => + { + b.HasOne("AsbCloudDb.Model.CompanyType", "CompanyType") + .WithMany("Companies") + .HasForeignKey("IdCompanyType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("CompanyType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Contact", b => + { + b.HasOne("AsbCloudDb.Model.CompanyType", "CompanyType") + .WithMany("Contacts") + .HasForeignKey("IdCompanyType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("Contacts") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("CompanyType"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DailyReports.DailyReport", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DataSaubStat", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DetectedOperation", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillTest", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillingProgramPart", b => + { + b.HasOne("AsbCloudDb.Model.FileCategory", "FileCategory") + .WithMany() + .HasForeignKey("IdFileCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("DrillingProgramParts") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("FileCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Faq", b => + { + b.HasOne("AsbCloudDb.Model.User", "AuthorAnswer") + .WithMany() + .HasForeignKey("IdAuthorAnswer"); + + b.HasOne("AsbCloudDb.Model.User", "AuthorQuestion") + .WithMany() + .HasForeignKey("IdAuthorQuestion") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("AuthorAnswer"); + + b.Navigation("AuthorQuestion"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileInfo", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany("Files") + .HasForeignKey("IdAuthor"); + + b.HasOne("AsbCloudDb.Model.FileCategory", "FileCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("FileCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileMark", b => + { + b.HasOne("AsbCloudDb.Model.FileInfo", "FileInfo") + .WithMany("FileMarks") + .HasForeignKey("IdFile") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_file_mark_t_file_info_fk"); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany("FileMarks") + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_user_t_file_mark_fk"); + + b.Navigation("FileInfo"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemFloat", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemInt", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemString", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.HelpPage", b => + { + b.HasOne("AsbCloudDb.Model.FileCategory", "FileCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("FileCategory"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.LimitingParameter", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Manuals.Manual", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.FileCategory", "Category") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Manuals.ManualDirectory", "Directory") + .WithMany("Manuals") + .HasForeignKey("IdDirectory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Category"); + + b.Navigation("Directory"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Manuals.ManualDirectory", b => + { + b.HasOne("AsbCloudDb.Model.Manuals.ManualDirectory", "Parent") + .WithMany("Children") + .HasForeignKey("IdParent") + .OnDelete(DeleteBehavior.Cascade); + + b.Navigation("Parent"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Measure", b => + { + b.HasOne("AsbCloudDb.Model.MeasureCategory", "Category") + .WithMany("Measures") + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Category"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Notification", b => + { + b.HasOne("AsbCloudDb.Model.NotificationCategory", "NotificationCategory") + .WithMany("Notifications") + .HasForeignKey("IdNotificationCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("NotificationCategory"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.OperationValue", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdOperationCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAntiCrashRotation", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAntiCrashRotation", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAutoHoldTF", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAutoHoldTF", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDamper", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDamper", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDrillTest", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDrillTest", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanOscillation", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanOscillation", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanShockTest", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanShockTest", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanStaticMeasurementOutput", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanStaticMeasurementOutput", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanUpdatingNoloadParameters", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanUpdatingNoloadParameters", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanLoadCapacity", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanLoadCapacity", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanOscillationAngles", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanOscillationAngles", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanPositioningOffTheBottom", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanPositioningOffTheBottom", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReam", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingRotor", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingRotor", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingSlide", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingSlide", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRecordingStaticMeasurement", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRecordingStaticMeasurement", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRotor", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRotor", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRotorLoweringBit", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRotorLoweringBit", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRotorRpmAcceleration", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRotorRpmAcceleration", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSlide", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSlide", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSlideLoweringBit", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSlideLoweringBit", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingOffThePump", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict) + .HasConstraintName("FK_t_process_map_plan_operation_switching_off_the_pump_t_user~1"); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingOffThePump", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_t_process_map_plan_operation_switching_off_the_pump_t_well~1"); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingToTheMode", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingToTheMode", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanTFOrientation", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanTFOrientation", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => + { + b.HasOne("AsbCloudDb.Model.Company", "Company") + .WithMany("RelationCompaniesWells") + .HasForeignKey("IdCompany") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_relation_company_well_t_company_id_fk"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("RelationCompaniesWells") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_relation_company_well_t_well_id_fk"); + + b.Navigation("Company"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationContactWell", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany("RelationContactsWells") + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserDrillingProgramPart", b => + { + b.HasOne("AsbCloudDb.Model.DrillingProgramPart", "DrillingProgramPart") + .WithMany("RelatedUsers") + .HasForeignKey("IdDrillingProgramPart") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("DrillingProgramPart"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRolePermission", b => + { + b.HasOne("AsbCloudDb.Model.Permission", "Permission") + .WithMany("RelationUserRolePermissions") + .HasForeignKey("IdPermission") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "UserRole") + .WithMany("RelationUserRolePermissions") + .HasForeignKey("IdUserRole") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Permission"); + + b.Navigation("UserRole"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRoleUserRole", b => + { + b.HasOne("AsbCloudDb.Model.UserRole", "Role") + .WithMany("RelationUserRoleUserRoles") + .HasForeignKey("Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "IncludeRole") + .WithMany() + .HasForeignKey("IdInclude") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("IncludeRole"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserUserRole", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany("RelationUsersUserRoles") + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "UserRole") + .WithMany("RelationUsersUserRoles") + .HasForeignKey("IdUserRole") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + + b.Navigation("UserRole"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ReportProperty", b => + { + b.HasOne("AsbCloudDb.Model.FileInfo", "File") + .WithMany() + .HasForeignKey("IdFile") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("File"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Schedule", b => + { + b.HasOne("AsbCloudDb.Model.Driller", "Driller") + .WithMany("Schedule") + .HasForeignKey("IdDriller") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_schedule_t_driller_id_driller"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Driller"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.SetpointsRequest", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaub", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("DataSaub") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_data_saub_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSpin", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("DataSpin") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_data_spin_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryEvent", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Events") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_event_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryMessage", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Messages") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_messages_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryUser", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Users") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_user_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Trajectory.TrajectoryFact", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Trajectory.TrajectoryPlan", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.HasOne("AsbCloudDb.Model.Company", "Company") + .WithMany("Users") + .HasForeignKey("IdCompany") + .OnDelete(DeleteBehavior.SetNull) + .IsRequired() + .HasConstraintName("t_user_t_company_id_fk"); + + b.Navigation("Company"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserSetting", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", b => + { + b.HasOne("AsbCloudDb.Model.Cluster", "Cluster") + .WithMany("Wells") + .HasForeignKey("IdCluster") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_t_cluster_id_fk"); + + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithOne("Well") + .HasForeignKey("AsbCloudDb.Model.Well", "IdTelemetry") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("t_well_t_telemetry_id_fk"); + + b.HasOne("AsbCloudDb.Model.WellType", "WellType") + .WithMany("Wells") + .HasForeignKey("IdWellType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Cluster"); + + b.Navigation("Telemetry"); + + b.Navigation("WellType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellComposite", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("WellComposites") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_t_well_id_fk"); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany("WellComposites") + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_t_well_section_type_id_fk"); + + b.HasOne("AsbCloudDb.Model.Well", "WellSrc") + .WithMany("WellCompositeSrcs") + .HasForeignKey("IdWellSrc") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_src_t_well_id_fk"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + + b.Navigation("WellSrc"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellFinalDocument", b => + { + b.HasOne("AsbCloudDb.Model.FileCategory", "Category") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Category"); + + b.Navigation("User"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperation", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellOperation", "OperationPlan") + .WithMany() + .HasForeignKey("IdPlan") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("WellOperations") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany("WellOperations") + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("OperationPlan"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperationCategory", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "Parent") + .WithMany() + .HasForeignKey("IdParent"); + + b.Navigation("Parent"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSections.WellSectionPlan", b => + { + b.HasOne("AsbCloudDb.Model.WellSectionType", "SectionType") + .WithMany() + .HasForeignKey("IdSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("SectionType"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record1", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record1", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record50", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record50", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record60", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record60", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record61", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record61", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record7", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record7", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record8", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record8", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Cluster", b => + { + b.Navigation("Wells"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Company", b => + { + b.Navigation("RelationCompaniesWells"); + + b.Navigation("Users"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.CompanyType", b => + { + b.Navigation("Companies"); + + b.Navigation("Contacts"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Deposit", b => + { + b.Navigation("Clusters"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Driller", b => + { + b.Navigation("Schedule"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillingProgramPart", b => + { + b.Navigation("RelatedUsers"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileInfo", b => + { + b.Navigation("FileMarks"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Manuals.ManualDirectory", b => + { + b.Navigation("Children"); + + b.Navigation("Manuals"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.MeasureCategory", b => + { + b.Navigation("Measures"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.NotificationCategory", b => + { + b.Navigation("Notifications"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Permission", b => + { + b.Navigation("RelationUserRolePermissions"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Telemetry", b => + { + b.Navigation("DataSaub"); + + b.Navigation("DataSpin"); + + b.Navigation("Events"); + + b.Navigation("Messages"); + + b.Navigation("Users"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.Navigation("FileMarks"); + + b.Navigation("Files"); + + b.Navigation("RelationContactsWells"); + + b.Navigation("RelationUsersUserRoles"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserRole", b => + { + b.Navigation("RelationUserRolePermissions"); + + b.Navigation("RelationUserRoleUserRoles"); + + b.Navigation("RelationUsersUserRoles"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", b => + { + b.Navigation("Contacts"); + + b.Navigation("DrillingProgramParts"); + + b.Navigation("RelationCompaniesWells"); + + b.Navigation("WellCompositeSrcs"); + + b.Navigation("WellComposites"); + + b.Navigation("WellOperations"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSectionType", b => + { + b.Navigation("WellComposites"); + + b.Navigation("WellOperations"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellType", b => + { + b.Navigation("Wells"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/AsbCloudDb/Migrations/20240701051003_Update_Tables_ProcessMapOperationsAndFunctions.cs b/AsbCloudDb/Migrations/20240701051003_Update_Tables_ProcessMapOperationsAndFunctions.cs new file mode 100644 index 00000000..4333d519 --- /dev/null +++ b/AsbCloudDb/Migrations/20240701051003_Update_Tables_ProcessMapOperationsAndFunctions.cs @@ -0,0 +1,142 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace AsbCloudDb.Migrations +{ + /// + public partial class Update_Tables_ProcessMapOperationsAndFunctions : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "buckling", + table: "t_process_map_plan_rotor_rpm_acceleration"); + + migrationBuilder.DropColumn( + name: "zenit_angle", + table: "t_process_map_plan_rotor_rpm_acceleration"); + + migrationBuilder.AddColumn( + name: "note", + table: "t_process_map_plan_tf_orientation", + type: "character varying(1024)", + maxLength: 1024, + nullable: false, + defaultValue: "", + comment: "Примечание"); + + migrationBuilder.AddColumn( + name: "note", + table: "t_process_map_plan_static_measurement_output", + type: "character varying(1024)", + maxLength: 1024, + nullable: false, + defaultValue: "", + comment: "Примечание"); + + migrationBuilder.AddColumn( + name: "rpm", + table: "t_process_map_plan_rotor_rpm_acceleration", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Обороты на ВСП уставка, об/мин."); + + migrationBuilder.AddColumn( + name: "rpm_max", + table: "t_process_map_plan_rotor_rpm_acceleration", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Обороты на ВСП ограничение, об/мин."); + + migrationBuilder.AddColumn( + name: "top_drive_torque", + table: "t_process_map_plan_rotor_rpm_acceleration", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Момент на ВСП уставка, кН*м."); + + migrationBuilder.AddColumn( + name: "top_drive_torque_max", + table: "t_process_map_plan_rotor_rpm_acceleration", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Момент на ВСП ограничение, кН*м."); + + migrationBuilder.AddColumn( + name: "note", + table: "t_process_map_plan_operation_switching_off_the_pump", + type: "character varying(1024)", + maxLength: 1024, + nullable: false, + defaultValue: "", + comment: "Примечание"); + + migrationBuilder.AddColumn( + name: "note", + table: "t_process_map_plan_anti_crash_rotation", + type: "character varying(1024)", + maxLength: 1024, + nullable: false, + defaultValue: "", + comment: "Примечание"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "note", + table: "t_process_map_plan_tf_orientation"); + + migrationBuilder.DropColumn( + name: "note", + table: "t_process_map_plan_static_measurement_output"); + + migrationBuilder.DropColumn( + name: "rpm", + table: "t_process_map_plan_rotor_rpm_acceleration"); + + migrationBuilder.DropColumn( + name: "rpm_max", + table: "t_process_map_plan_rotor_rpm_acceleration"); + + migrationBuilder.DropColumn( + name: "top_drive_torque", + table: "t_process_map_plan_rotor_rpm_acceleration"); + + migrationBuilder.DropColumn( + name: "top_drive_torque_max", + table: "t_process_map_plan_rotor_rpm_acceleration"); + + migrationBuilder.DropColumn( + name: "note", + table: "t_process_map_plan_operation_switching_off_the_pump"); + + migrationBuilder.DropColumn( + name: "note", + table: "t_process_map_plan_anti_crash_rotation"); + + migrationBuilder.AddColumn( + name: "buckling", + table: "t_process_map_plan_rotor_rpm_acceleration", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Складывание, м"); + + migrationBuilder.AddColumn( + name: "zenit_angle", + table: "t_process_map_plan_rotor_rpm_acceleration", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Зенитный угол, градусы"); + } + } +} diff --git a/AsbCloudDb/Migrations/20240701104026_Remove_some_processMapsPlan.Designer.cs b/AsbCloudDb/Migrations/20240701104026_Remove_some_processMapsPlan.Designer.cs new file mode 100644 index 00000000..3b5098a2 --- /dev/null +++ b/AsbCloudDb/Migrations/20240701104026_Remove_some_processMapsPlan.Designer.cs @@ -0,0 +1,12243 @@ +// +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("20240701104026_Remove_some_processMapsPlan")] + partial class Remove_some_processMapsPlan + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .UseCollation("Russian_Russia.1251") + .HasAnnotation("ProductVersion", "8.0.2") + .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", t => + { + t.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") + .HasColumnName("is_contact"); + + b.Property("Order") + .HasColumnType("integer") + .HasColumnName("order"); + + b.HasKey("Id"); + + b.ToTable("t_company_type"); + + b.HasData( + new + { + Id = 1, + Caption = "Недропользователь", + IsContact = true, + Order = 3 + }, + new + { + Id = 2, + Caption = "Буровой подрядчик", + IsContact = true, + Order = 2 + }, + new + { + Id = 3, + Caption = "Сервис автоматизации бурения", + IsContact = true, + Order = 0 + }, + new + { + Id = 4, + Caption = "Сервис по ГТИ", + IsContact = true, + Order = 6 + }, + new + { + Id = 5, + Caption = "Растворный сервис", + IsContact = true, + Order = 4 + }, + new + { + Id = 6, + Caption = "Сервис по ННБ", + IsContact = true, + Order = 5 + }, + new + { + Id = 7, + Caption = "Служба супервайзинга", + IsContact = false, + Order = 1 + }, + new + { + Id = 9, + Caption = "Сервис по цементированию", + IsContact = true, + Order = 7 + }, + new + { + Id = 11, + Caption = "Дизельный сервис", + IsContact = false, + Order = 9 + }, + new + { + Id = 12, + Caption = "Сервис по обслуживанию верхних силовых приводов", + IsContact = true, + Order = 8 + }); + }); + + 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") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("email") + .HasComment("email"); + + b.Property("FullName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("full_name") + .HasComment("ФИО"); + + b.Property("IdCompanyType") + .HasMaxLength(255) + .HasColumnType("integer") + .HasColumnName("id_company_type") + .HasComment("вид деятельности"); + + b.Property("IdWell") + .HasMaxLength(255) + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("ключ скважины"); + + b.Property("Phone") + .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.HasIndex("IdWell"); + + b.ToTable("t_contact", t => + { + t.HasComment("Контакты"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DailyReports.DailyReport", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Date") + .HasColumnType("date") + .HasColumnName("date") + .HasComment("Дата формирования отчёта"); + + b.Property("DateLastUpdate") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_last_update") + .HasComment("Дата последнего обновления"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("ID скважины"); + + b.Property("SignBlock") + .HasColumnType("jsonb") + .HasColumnName("sign_block") + .HasComment("Подпись"); + + b.Property("SubsystemBlock") + .HasColumnType("jsonb") + .HasColumnName("subsystem_block") + .HasComment("Наработкой подсистем"); + + b.Property("TimeBalanceBlock") + .HasColumnType("jsonb") + .HasColumnName("time_balance_block") + .HasComment("Баланс времени"); + + b.HasKey("Id"); + + b.HasIndex("IdWell", "Date") + .IsUnique(); + + b.ToTable("t_daily_report", t => + { + t.HasComment("Ежедневные отчёты"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DataSaubStat", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AxialLoad") + .HasColumnType("double precision") + .HasColumnName("axial_load") + .HasComment("Фактическая нагрузка"); + + b.Property("AxialLoadLimitMax") + .HasColumnType("double precision") + .HasColumnName("axial_load_limit_max") + .HasComment("Максимально допустимая нагрузка"); + + b.Property("AxialLoadSp") + .HasColumnType("double precision") + .HasColumnName("axial_load_sp") + .HasComment("Ограничение факт. нагрузки"); + + b.Property("BlockSpeedSp") + .HasColumnType("double precision") + .HasColumnName("block_speed_sp") + .HasComment("Ограничение скорости блока"); + + 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("EnabledSubsystems") + .HasColumnType("integer") + .HasColumnName("enabled_subsystems") + .HasComment("Флаги подсистем"); + + b.Property("Flow") + .HasColumnType("double precision") + .HasColumnName("flow") + .HasComment("Фактический расход"); + + b.Property("HasOscillation") + .HasColumnType("boolean") + .HasColumnName("has_oscillation") + .HasComment("Наличие или отсутствие осцилляции"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category") + .HasComment("Название автоопределённой операции"); + + b.Property("IdFeedRegulator") + .HasColumnType("smallint") + .HasColumnName("id_feed_regulator") + .HasComment("Работа при достижении ограничения"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry") + .HasComment("Ключ телеметрии"); + + b.Property("Pressure") + .HasColumnType("double precision") + .HasColumnName("pressure") + .HasComment("Давление"); + + b.Property("PressureIdle") + .HasColumnType("double precision") + .HasColumnName("pressure_idle") + .HasComment("Давление холостого хода"); + + b.Property("PressureSp") + .HasColumnType("double precision") + .HasColumnName("pressure_sp") + .HasComment("Ограничение фактического давления"); + + b.Property("RotorSpeed") + .HasColumnType("double precision") + .HasColumnName("rotor_speed") + .HasComment("Фактическая скорость оборотов ВСП"); + + b.Property("RotorTorque") + .HasColumnType("double precision") + .HasColumnName("rotor_torque") + .HasComment("Фактический момент"); + + b.Property("RotorTorqueLimitMax") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_limit_max") + .HasComment("Максимально допустимый момент"); + + b.Property("RotorTorqueSp") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_sp") + .HasComment("Ограничение факт. момента"); + + b.Property("Speed") + .HasColumnType("double precision") + .HasColumnName("speed") + .HasComment("Скорость бурения"); + + b.HasKey("Id"); + + b.HasIndex("IdCategory"); + + b.HasIndex("IdTelemetry"); + + b.ToTable("t_data_saub_stat", t => + { + t.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", t => + { + t.HasComment("Месторождение"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DetectedOperation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + 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("EnabledSubsystems") + .HasColumnType("integer") + .HasColumnName("enabled_subsystems") + .HasComment("флаги включенных подсистем"); + + b.Property("ExtraData") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("extra_data") + .HasComment("доп. инфо по операции"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category") + .HasComment("Id категории операции"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .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", t => + { + t.HasComment("автоматически определенные операции по телеметрии"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillTest", b => + { + b.Property("Id") + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry") + .HasComment("Идентификатор телеметрии"); + + b.Property("DepthStart") + .HasColumnType("real") + .HasColumnName("depthStart") + .HasComment("Глубина начала"); + + b.Property("Params") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("t_drill_test_params") + .HasComment("Параметры записи drill test"); + + b.Property("TimeStampStart") + .HasColumnType("timestamp with time zone") + .HasColumnName("timestamp_start") + .HasComment("Время начала"); + + b.HasKey("Id", "IdTelemetry"); + + b.HasIndex("IdTelemetry"); + + b.ToTable("t_drill_test", t => + { + t.HasComment("Drill_test"); + }); + }); + + 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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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 = 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" + }, + new + { + Id = 528, + Description = "Разрешение на удаление контакта", + Name = "WellContact.delete" + }, + new + { + Id = 530, + Description = "Разрешение на редактирование плановой конструкции скважины", + Name = "WellSectionPlan.edit" + }, + new + { + Id = 531, + Description = "Разрешение на удаление плановой конструкции скважины", + Name = "WellSectionPlan.delete" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAntiCrashRotation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("TopDriveRpmMin") + .HasColumnType("double precision") + .HasColumnName("top_drive_rpm_min") + .HasComment("Минимальные обороты ВСП, об/мин"); + + b.Property("TopDriveStartMinFlowRate") + .HasColumnType("double precision") + .HasColumnName("top_drive_start_min_flow_rate") + .HasComment("Минимальный расход для запуска оборотов ВСП, л/сек"); + + b.Property("TopDriveTorqueMax") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque_max") + .HasComment("Максимально допустимый момент на ВСП при противоаварийном вращении, кН*м"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_anti_crash_rotation", t => + { + t.HasComment("Противоаварийное вращение"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAutoHoldTF", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("ZenithAngle") + .HasColumnType("double precision") + .HasColumnName("zenit_angle") + .HasComment("Зенитный угол, градусы"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_auto_hold_tf", t => + { + t.HasComment("Автоудержание TF"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDamper", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("StickSlip") + .HasColumnType("double precision") + .HasColumnName("stick_slip") + .HasComment("StickSlip"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_functions_damper", t => + { + t.HasComment("Демпфер"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDrillTest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("LengthStep") + .HasColumnType("double precision") + .HasColumnName("length_step") + .HasComment("Величина проходки шага, м."); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("RpmMin") + .HasColumnType("double precision") + .HasColumnName("rpm_min") + .HasComment("Минимальные обороты на ВСП, об/мин."); + + b.Property("RpmStepsCount") + .HasColumnType("integer") + .HasColumnName("rpm_steps_count") + .HasComment("Количество шагов оборотов на ВСП, об/мин."); + + b.Property("WeightOnBitMin") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_min") + .HasComment("Нагрузка минимальная, т"); + + b.Property("WeightOnBitStepsCount") + .HasColumnType("integer") + .HasColumnName("weight_on_bit_steps_count") + .HasComment("Количество шагов по нагрузке"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_drilltest", t => + { + t.HasComment("DrillTest"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanOscillation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Mode") + .HasColumnType("integer") + .HasColumnName("mode") + .HasComment("Режим Авто/Руч"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("OptimalOscillationAngle") + .HasColumnType("double precision") + .HasColumnName("optimal_oscillation_angle") + .HasComment("Оптимальный угол осцилляции, градусы"); + + b.Property("RpmLeft") + .HasColumnType("double precision") + .HasColumnName("Rpm_left") + .HasComment("Скорость влево, об/мин"); + + b.Property("RpmRight") + .HasColumnType("double precision") + .HasColumnName("Rpm_right") + .HasComment("Скорость вправо, об/мин"); + + b.Property("TorqueMaxLeft") + .HasColumnType("double precision") + .HasColumnName("torque_max_left") + .HasComment("Ограничение момента влево, кН*м"); + + b.Property("TorqueMaxRight") + .HasColumnType("double precision") + .HasColumnName("torque_max_right") + .HasComment("Ограничение момента вправо, кН*м"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_oscillation", t => + { + t.HasComment("Осцилляция"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanShockTest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AxialVibrations") + .HasColumnType("double precision") + .HasColumnName("axial_vibrations") + .HasComment("Осевые вибрации"); + + b.Property("CombinedVibrations") + .HasColumnType("double precision") + .HasColumnName("combined_vibrations") + .HasComment("Комбинированные вибрации"); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("RpmMin") + .HasColumnType("double precision") + .HasColumnName("rpm_min") + .HasComment("Минимальные обороты на ВСП, об/мин."); + + b.Property("StickSlip") + .HasColumnType("double precision") + .HasColumnName("stick_slip") + .HasComment("stickSlip"); + + b.Property("WeightOnBitMin") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_min") + .HasComment("Нагрузка минимальная, т"); + + b.Property("Whirl") + .HasColumnType("double precision") + .HasColumnName("whirl") + .HasComment("Whirl"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_shock_test", t => + { + t.HasComment("ShockTest"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanStaticMeasurementOutput", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("SignalWaitingTime") + .HasColumnType("double precision") + .HasColumnName("signal_waiting_time") + .HasComment("Время ожидания выхода сигнала с ТМС, сек."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_static_measurement_output", t => + { + t.HasComment("Выход статического замера"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanLoadCapacity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressureMin") + .HasColumnType("double precision") + .HasColumnName("differential_pressure_min") + .HasComment("Перепад давления минимальный, атм"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("TimeLoadCapacityMin") + .HasColumnType("double precision") + .HasColumnName("time_load_capacity_min") + .HasComment("Время выработки минимальное, сек"); + + b.Property("WeightOnBitMin") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_min") + .HasComment("Нагрузка минимальная, т"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_load_capacity", t => + { + t.HasComment("РТК выработка нагрузки"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanOscillationAngles", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("Rpm") + .HasColumnType("double precision") + .HasColumnName("rpm") + .HasComment("Обороты на ВСП, об/мин., Уставка"); + + b.Property("RpmMax") + .HasColumnType("double precision") + .HasColumnName("rpm_max") + .HasComment("Обороты на ВСП, об/мин., Ограничение"); + + b.Property("TopDriveTorque") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque") + .HasComment("Момент на ВСП, кН*м., Уставка"); + + b.Property("TopDriveTorqueMax") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque_max") + .HasComment("Момент на ВСП, кН*м., Ограничение"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_operation_oscillation_angels", t => + { + t.HasComment("Определение углов осцилляции"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanPositioningOffTheBottom", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления уставка, атм."); + + b.Property("FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("flow_rate_down") + .HasComment("Расход вниз, л/с."); + + b.Property("FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("flow_rate_up") + .HasComment("Расход вверх, л/с."); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("RopDown") + .HasColumnType("double precision") + .HasColumnName("rop_down") + .HasComment("Скорость вниз, м/ч."); + + b.Property("RopUp") + .HasColumnType("double precision") + .HasColumnName("rop_up") + .HasComment("Скорость вверх, м/ч."); + + b.Property("RpmDown") + .HasColumnType("double precision") + .HasColumnName("rpm_down") + .HasComment("Обороты вниз, об/мин."); + + b.Property("RpmUp") + .HasColumnType("double precision") + .HasColumnName("rpm_up") + .HasComment("Обороты вверх, об/мин."); + + b.Property("SlackingOff") + .HasColumnType("double precision") + .HasColumnName("slacking_off") + .HasComment("Посадка, т."); + + b.Property("StopOffTheBottom") + .HasColumnType("double precision") + .HasColumnName("stop_off_the_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Tight") + .HasColumnType("double precision") + .HasColumnName("tight") + .HasComment("Затяжка, т."); + + b.Property("TorqueMax") + .HasColumnType("double precision") + .HasColumnName("torque_max") + .HasComment("Максимально допустимый момент, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_positioning_off_the_bottom", t => + { + t.HasComment("Позиционирование над забоем"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingRotor", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления уставка, атм."); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("Reaming1FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_flow_rate_down") + .HasComment("Проработка 1, Расход, л/с., Вниз"); + + b.Property("Reaming1FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_flow_rate_up") + .HasComment("Проработка 1, Расход, л/с., Вверх"); + + b.Property("Reaming1Interval") + .HasColumnType("double precision") + .HasColumnName("reaming1_interval") + .HasComment("Проработка 1, Интервал проработки, м."); + + b.Property("Reaming1RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("reaming1_repetitions_count") + .HasComment("Проработка 1. Количество повторений, шт."); + + b.Property("Reaming1RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_rop_down") + .HasComment("Проработка 1, Скорость, м/ч., Вниз"); + + b.Property("Reaming1RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_rop_up") + .HasComment("Проработка 1. Скорость вверх, м/ч."); + + b.Property("Reaming1RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_rpm_down") + .HasComment("Проработка 1, Обороты, об/мин., Вниз"); + + b.Property("Reaming1RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_rpm_up") + .HasComment("Проработка 1, Обороты, об/мин., Вверх"); + + b.Property("Reaming1StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming1_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Reaming2FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_flow_rate_down") + .HasComment("Проработка 2, Расход, л/с., Вниз"); + + b.Property("Reaming2FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_flow_rate_up") + .HasComment("Проработка 2, Расход, л/с., Вверх"); + + b.Property("Reaming2Interval") + .HasColumnType("double precision") + .HasColumnName("reaming2_interval") + .HasComment("Проработка 2, Интервал проработки, м."); + + b.Property("Reaming2RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("reaming2_repetitions_count") + .HasComment("Проработка 2, Количество повторений, шт."); + + b.Property("Reaming2RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_rop_down") + .HasComment("Проработка 2, Скорость, м/ч., Вниз"); + + b.Property("Reaming2RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_rop_up") + .HasComment("Проработка 2, Скорость, м/ч., Вверх"); + + b.Property("Reaming2RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_rpm_down") + .HasComment("Проработка 2, Обороты, об/мин., Вниз"); + + b.Property("Reaming2RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_rpm_up") + .HasComment("Проработка 2, Обороты, об/мин., Вверх"); + + b.Property("Reaming2StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming2_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Reaming3FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_flow_rate_down") + .HasComment("Проработка 3, Расход, л/с., Вниз"); + + b.Property("Reaming3FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_flow_rate_up") + .HasComment("Проработка 3, Расход, л/с., Вверх"); + + b.Property("Reaming3Interval") + .HasColumnType("double precision") + .HasColumnName("reaming3_interval") + .HasComment("Проработка 3, Интервал проработки, м."); + + b.Property("Reaming3RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("reaming3_repetitions_count") + .HasComment("Проработка 3, Количество повторений, шт."); + + b.Property("Reaming3RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_rop_down") + .HasComment("Проработка 3, Скорость, м/ч., Вниз"); + + b.Property("Reaming3RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_rop_up") + .HasComment("Проработка 3, Скорость, м/ч., Вверх"); + + b.Property("Reaming3RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_rpm_down") + .HasComment("Проработка 3, Обороты, об/мин., Вниз"); + + b.Property("Reaming3RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_rpm_up") + .HasComment("Проработка 3, Обороты, об/мин., Вверх"); + + b.Property("Reaming3StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming3_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("SlackingOff") + .HasColumnType("double precision") + .HasColumnName("slacking_off") + .HasComment("Посадка, т."); + + b.Property("Tight") + .HasColumnType("double precision") + .HasColumnName("tight") + .HasComment("Затяжка, т."); + + b.Property("TorqueMax") + .HasColumnType("double precision") + .HasColumnName("torque_max") + .HasComment("Максимально допустимый момент, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_operation_reaming_rotor", t => + { + t.HasComment("РТК проработка ротор"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingSlide", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления уставка, атм."); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("Reaming1FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_flow_rate_down") + .HasComment("Проработка 1, Расход, л/с., Вниз"); + + b.Property("Reaming1FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_flow_rate_up") + .HasComment("Проработка 1, Расход, л/с., Вверх"); + + b.Property("Reaming1Interval") + .HasColumnType("double precision") + .HasColumnName("reaming1_interval") + .HasComment("Проработка 1, Интервал проработки, м."); + + b.Property("Reaming1RepetitionsCount") + .HasColumnType("double precision") + .HasColumnName("reaming1_repetitions_count") + .HasComment("Проработка 1. Количество повторений, шт."); + + b.Property("Reaming1RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_rop_down") + .HasComment("Проработка 1. Скорость вниз, м/ч."); + + b.Property("Reaming1RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_rop_up") + .HasComment("Проработка 1. Скорость вверх, м/ч."); + + b.Property("Reaming1RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_rpm_down") + .HasComment("Проработка 1, Обороты, об/мин., Вниз"); + + b.Property("Reaming1RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_rpm_up") + .HasComment("Проработка 1, Обороты, об/мин., Вверх"); + + b.Property("Reaming1StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming1_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Reaming2FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_flow_rate_down") + .HasComment("Проработка 2, Расход, л/с., Вниз"); + + b.Property("Reaming2FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_flow_rate_up") + .HasComment("Проработка 2, Расход, л/с., Вверх"); + + b.Property("Reaming2Interval") + .HasColumnType("double precision") + .HasColumnName("reaming2_interval") + .HasComment("Проработка 2, Интервал проработки, м."); + + b.Property("Reaming2RepetitionsCount") + .HasColumnType("double precision") + .HasColumnName("reaming2_repetitions_count") + .HasComment("Проработка 2, Количество повторений, шт."); + + b.Property("Reaming2RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_rop_down") + .HasComment("Проработка 2, Скорость, м/ч., Вниз"); + + b.Property("Reaming2RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_rop_up") + .HasComment("Проработка 2, Скорость, м/ч., Вверх"); + + b.Property("Reaming2RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_rpm_down") + .HasComment("Проработка 2, Обороты, об/мин., Вниз"); + + b.Property("Reaming2RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_rpm_up") + .HasComment("Проработка 2, Обороты, об/мин., Вверх"); + + b.Property("Reaming2StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming2_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Reaming3FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_flow_rate_down") + .HasComment("Проработка 3, Расход, л/с., Вниз"); + + b.Property("Reaming3FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_flow_rate_up") + .HasComment("Проработка 3, Расход, л/с., Вверх"); + + b.Property("Reaming3Interval") + .HasColumnType("double precision") + .HasColumnName("reaming3_interval") + .HasComment("Проработка 3, Интервал проработки, м."); + + b.Property("Reaming3RepetitionsCount") + .HasColumnType("double precision") + .HasColumnName("reaming3_repetitions_count") + .HasComment("Проработка 3, Количество повторений, шт."); + + b.Property("Reaming3RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_rop_down") + .HasComment("Проработка 3, Скорость, м/ч., Вниз"); + + b.Property("Reaming3RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_rop_up") + .HasComment("Проработка 3, Скорость, м/ч., Вверх"); + + b.Property("Reaming3RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_rpm_down") + .HasComment("Проработка 3, Обороты, об/мин., Вниз"); + + b.Property("Reaming3RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_rpm_up") + .HasComment("Проработка 3, Обороты, об/мин., Вверх"); + + b.Property("Reaming3StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming3_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("SlackingOff") + .HasColumnType("double precision") + .HasColumnName("slacking_off") + .HasComment("Посадка, т."); + + b.Property("Tight") + .HasColumnType("double precision") + .HasColumnName("tight") + .HasComment("Затяжка, т."); + + b.Property("TorqueMax") + .HasColumnType("double precision") + .HasColumnName("torque_max") + .HasComment("Максимально допустимый момент, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_reaming_slide", t => + { + t.HasComment("РТК проработка слайд"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRecordingStaticMeasurement", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("MeasurementRecordingTime") + .HasColumnType("double precision") + .HasColumnName("measurement_recording_time") + .HasComment("Время записи замера, сек"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_recording_static_measurement", t => + { + t.HasComment("Запись статического замера"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRotor", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления, атм. Уставка"); + + b.Property("DifferentialPressureMax") + .HasColumnType("double precision") + .HasColumnName("differential_pressure_max") + .HasComment("Перепад давления, атм. Ограничение"); + + b.Property("FlowRate") + .HasColumnType("double precision") + .HasColumnName("flow_rate") + .HasComment("Расход л/с. Уставка"); + + b.Property("FlowRateMax") + .HasColumnType("double precision") + .HasColumnName("flow_rate_max") + .HasComment("Расход л/с. Ограничение"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм"); + + b.Property("RopMax") + .HasColumnType("double precision") + .HasColumnName("rop_max") + .HasComment("Максимально допустимая скорость, м/ч"); + + b.Property("Rpm") + .HasColumnType("double precision") + .HasColumnName("rpm") + .HasComment("Обороты на ВСП, об/мин. Уставка"); + + b.Property("RpmMax") + .HasColumnType("double precision") + .HasColumnName("rpm_max") + .HasComment("Обороты на ВСП, об/мин. Ограничение"); + + b.Property("TopDriveTorque") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque") + .HasComment("Момент на ВСП, кН*м. Уставка"); + + b.Property("TopDriveTorqueMax") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque_max") + .HasComment("Момент на ВСП, кН*м. Ограничение"); + + b.Property("WeightOnBit") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit") + .HasComment("Нагрузка, т. Уставка"); + + b.Property("WeightOnBitMax") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_max") + .HasComment("Нагрузка, т. Ограничение"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_rotor", t => + { + t.HasComment("РТК план бурение ротор"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSlide", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Buckling") + .HasColumnType("double precision") + .HasColumnName("buckling") + .HasComment("Складывание инструмента, м."); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления уставка, атм."); + + b.Property("DifferentialPressureMax") + .HasColumnType("double precision") + .HasColumnName("differential_pressure_max") + .HasComment("Перепад давления ограничение, атм."); + + b.Property("FlowRate") + .HasColumnType("double precision") + .HasColumnName("flow_rate") + .HasComment("Расход уставка, л/с."); + + b.Property("FlowRateMax") + .HasColumnType("double precision") + .HasColumnName("flow_rate_max") + .HasComment("Расход ограничение, л/с."); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("RopMax") + .HasColumnType("double precision") + .HasColumnName("rop_max") + .HasComment("Максимально допустимая скорость, м/ч."); + + b.Property("Spring") + .HasColumnType("double precision") + .HasColumnName("spring") + .HasComment("Расчётная пружина, градус"); + + b.Property("WeightOnBit") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit") + .HasComment("Нагрузка уставка, т."); + + b.Property("WeightOnBitMax") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_max") + .HasComment("Нагрузка ограничение, т."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_slide", t => + { + t.HasComment("РТК план бурение слайд"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingOffThePump", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("Duration") + .HasColumnType("double precision") + .HasColumnName("duration") + .HasComment("Продолжительность, сек."); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("ResidualPressureLimit") + .HasColumnType("double precision") + .HasColumnName("residual_pressure_limit") + .HasComment("Лимит остаточного давления, атм."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_operation_switching_off_the_pump", t => + { + t.HasComment("Выключение насоса"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingToTheMode", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("FlowRate") + .HasColumnType("double precision") + .HasColumnName("flow_rate") + .HasComment("Расход, л/с"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_limit") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("RampTime") + .HasColumnType("double precision") + .HasColumnName("ramp_time") + .HasComment("Время выхода буровых насосов на плановый расход, сек."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_switching_to_the_mode", t => + { + t.HasComment("Выход на плановый расход"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanTFOrientation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления, атм."); + + b.Property("FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("flow_rate_down") + .HasComment("Расход вниз, л/с."); + + b.Property("FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("flow_rate_up") + .HasComment("Расход вверх, л/с."); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Interval") + .HasColumnType("double precision") + .HasColumnName("interval") + .HasComment("Интервал расхаживания, м."); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимальное давление, атм."); + + b.Property("RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("repetitions_count") + .HasComment("Количество расхаживаний, шт."); + + b.Property("RopDown") + .HasColumnType("double precision") + .HasColumnName("rop_down") + .HasComment("Скорость вниз, м/ч."); + + b.Property("RopUp") + .HasColumnType("double precision") + .HasColumnName("rop_up") + .HasComment("Скорость вверх, м/ч."); + + b.Property("SlackingOff") + .HasColumnType("double precision") + .HasColumnName("slacking_off") + .HasComment("Посадка, т."); + + b.Property("Spring") + .HasColumnType("double precision") + .HasColumnName("spring") + .HasComment("Пружина, град."); + + b.Property("StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("TFSetpoint") + .HasColumnType("double precision") + .HasColumnName("tf_setpoint") + .HasComment("Задание TF, град."); + + b.Property("Tight") + .HasColumnType("double precision") + .HasColumnName("tight") + .HasComment("Затяжка, т."); + + b.Property("TorqueMax") + .HasColumnType("double precision") + .HasColumnName("torque_max") + .HasComment("Максимально допустимый момент, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_tf_orientation", t => + { + t.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", t => + { + t.HasComment("отношение скважин и компаний"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationContactWell", b => + { + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.HasKey("IdWell", "IdUser"); + + b.HasIndex("IdUser"); + + b.ToTable("t_relation_contact_well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserDrillingProgramPart", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("IdDrillingProgramPart") + .HasColumnType("integer") + .HasColumnName("id_drilling_program_part"); + + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_role") + .HasComment("1 - publisher, 2 - approver"); + + b.HasKey("IdUser", "IdDrillingProgramPart") + .HasName("t_relation_user_drilling_program_part_pk"); + + b.HasIndex("IdDrillingProgramPart"); + + b.ToTable("t_relation_user_drilling_program_part", t => + { + t.HasComment("Отношение пользователей и частей ПБ"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRolePermission", b => + { + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.Property("IdPermission") + .HasColumnType("integer") + .HasColumnName("id_permission"); + + b.HasKey("IdUserRole", "IdPermission"); + + b.HasIndex("IdPermission"); + + b.ToTable("t_relation_user_role_permission", t => + { + t.HasComment("Отношение ролей пользователей и разрешений доступа"); + }); + + b.HasData( + new + { + IdUserRole = 1100, + IdPermission = 102 + }, + new + { + IdUserRole = 1100, + IdPermission = 111 + }, + new + { + IdUserRole = 1101, + IdPermission = 101 + }, + new + { + IdUserRole = 1101, + IdPermission = 100 + }, + new + { + IdUserRole = 1102, + IdPermission = 105 + }, + new + { + IdUserRole = 1102, + IdPermission = 108 + }, + new + { + IdUserRole = 1103, + IdPermission = 104 + }, + new + { + IdUserRole = 1103, + IdPermission = 103 + }, + new + { + IdUserRole = 1104, + IdPermission = 108 + }, + new + { + IdUserRole = 1105, + IdPermission = 107 + }, + new + { + IdUserRole = 1105, + IdPermission = 106 + }, + new + { + IdUserRole = 1106, + IdPermission = 111 + }, + new + { + IdUserRole = 1107, + IdPermission = 110 + }, + new + { + IdUserRole = 1107, + IdPermission = 109 + }, + new + { + IdUserRole = 1108, + IdPermission = 114 + }, + new + { + IdUserRole = 1109, + IdPermission = 113 + }, + new + { + IdUserRole = 1109, + IdPermission = 112 + }, + new + { + IdUserRole = 1110, + IdPermission = 123 + }, + new + { + IdUserRole = 1110, + IdPermission = 114 + }, + new + { + IdUserRole = 1111, + IdPermission = 122 + }, + new + { + IdUserRole = 1111, + IdPermission = 121 + }, + new + { + IdUserRole = 1112, + IdPermission = 117 + }, + new + { + IdUserRole = 1113, + IdPermission = 105 + }, + new + { + IdUserRole = 1113, + IdPermission = 123 + }, + new + { + IdUserRole = 1113, + IdPermission = 120 + }, + new + { + IdUserRole = 1114, + IdPermission = 119 + }, + new + { + IdUserRole = 1114, + IdPermission = 118 + }, + new + { + IdUserRole = 1114, + IdPermission = 200 + }, + new + { + IdUserRole = 1115, + IdPermission = 223 + }, + new + { + IdUserRole = 1116, + IdPermission = 105 + }, + new + { + IdUserRole = 1116, + IdPermission = 102 + }, + new + { + IdUserRole = 1116, + IdPermission = 117 + }, + new + { + IdUserRole = 1116, + IdPermission = 126 + }, + new + { + IdUserRole = 1117, + IdPermission = 125 + }, + new + { + IdUserRole = 1117, + IdPermission = 124 + }, + new + { + IdUserRole = 1200, + IdPermission = 203 + }, + new + { + IdUserRole = 1200, + IdPermission = 230 + }, + new + { + IdUserRole = 1201, + IdPermission = 202 + }, + new + { + IdUserRole = 1201, + IdPermission = 203 + }, + new + { + IdUserRole = 1201, + IdPermission = 220 + }, + new + { + IdUserRole = 1202, + IdPermission = 203 + }, + new + { + IdUserRole = 1202, + IdPermission = 220 + }, + new + { + IdUserRole = 1202, + IdPermission = 236 + }, + new + { + IdUserRole = 1202, + IdPermission = 212 + }, + new + { + IdUserRole = 1203, + IdPermission = 235 + }, + new + { + IdUserRole = 1204, + IdPermission = 202 + }, + new + { + IdUserRole = 1204, + IdPermission = 203 + }, + new + { + IdUserRole = 1205, + IdPermission = 215 + }, + new + { + IdUserRole = 1206, + IdPermission = 203 + }, + new + { + IdUserRole = 1206, + IdPermission = 206 + }, + new + { + IdUserRole = 1207, + IdPermission = 205 + }, + new + { + IdUserRole = 1208, + IdPermission = 218 + }, + new + { + IdUserRole = 1209, + IdPermission = 217 + }, + new + { + IdUserRole = 1210, + IdPermission = 203 + }, + new + { + IdUserRole = 1210, + IdPermission = 230 + }, + new + { + IdUserRole = 1210, + IdPermission = 219 + }, + new + { + IdUserRole = 1211, + IdPermission = 203 + }, + new + { + IdUserRole = 1211, + IdPermission = 220 + }, + new + { + IdUserRole = 1211, + IdPermission = 239 + }, + new + { + IdUserRole = 1212, + IdPermission = 238 + }, + new + { + IdUserRole = 1212, + IdPermission = 237 + }, + new + { + IdUserRole = 1213, + IdPermission = 203 + }, + new + { + IdUserRole = 1213, + IdPermission = 239 + }, + new + { + IdUserRole = 1213, + IdPermission = 212 + }, + new + { + IdUserRole = 1214, + IdPermission = 211 + }, + new + { + IdUserRole = 1214, + IdPermission = 210 + }, + new + { + IdUserRole = 1215, + IdPermission = 203 + }, + new + { + IdUserRole = 1215, + IdPermission = 222 + }, + new + { + IdUserRole = 1216, + IdPermission = 221 + }, + new + { + IdUserRole = 1217, + IdPermission = 226 + }, + new + { + IdUserRole = 1218, + IdPermission = 225 + }, + new + { + IdUserRole = 1218, + IdPermission = 224 + }, + new + { + IdUserRole = 1219, + IdPermission = 203 + }, + new + { + IdUserRole = 1219, + IdPermission = 206 + }, + new + { + IdUserRole = 1219, + IdPermission = 230 + }, + new + { + IdUserRole = 1219, + IdPermission = 232 + }, + new + { + IdUserRole = 1220, + IdPermission = 203 + }, + new + { + IdUserRole = 1220, + IdPermission = 228 + }, + new + { + IdUserRole = 1221, + IdPermission = 202 + }, + new + { + IdUserRole = 1221, + IdPermission = 203 + }, + new + { + IdUserRole = 1221, + IdPermission = 220 + }, + new + { + IdUserRole = 1221, + IdPermission = 234 + }, + new + { + IdUserRole = 1500, + IdPermission = 507 + }, + new + { + IdUserRole = 1500, + IdPermission = 510 + }, + new + { + IdUserRole = 1501, + IdPermission = 214 + }, + new + { + IdUserRole = 1501, + IdPermission = 213 + }, + new + { + IdUserRole = 1502, + IdPermission = 207 + }, + new + { + IdUserRole = 1502, + IdPermission = 208 + }, + new + { + IdUserRole = 2000, + IdPermission = 205 + }, + new + { + IdUserRole = 2000, + IdPermission = 204 + }, + new + { + IdUserRole = 2000, + IdPermission = 245 + }, + new + { + IdUserRole = 2001, + IdPermission = 244 + }, + new + { + IdUserRole = 2001, + IdPermission = 245 + }, + new + { + IdUserRole = 2002, + IdPermission = 244 + }, + new + { + IdUserRole = 2002, + IdPermission = 246 + }, + new + { + IdUserRole = 2002, + IdPermission = 237 + }, + new + { + IdUserRole = 2002, + IdPermission = 238 + }, + new + { + IdUserRole = 2003, + IdPermission = 240 + }, + new + { + IdUserRole = 2003, + IdPermission = 217 + }, + new + { + IdUserRole = 2003, + IdPermission = 216 + }, + new + { + IdUserRole = 2004, + IdPermission = 242 + }, + new + { + IdUserRole = 2004, + IdPermission = 217 + }, + new + { + IdUserRole = 2004, + IdPermission = 216 + }, + new + { + IdUserRole = 2004, + IdPermission = 205 + }, + new + { + IdUserRole = 2004, + IdPermission = 204 + }, + new + { + IdUserRole = 2005, + IdPermission = 247 + }, + new + { + IdUserRole = 2005, + IdPermission = 205 + }, + new + { + IdUserRole = 2005, + IdPermission = 204 + }, + new + { + IdUserRole = 2006, + IdPermission = 243 + }, + new + { + IdUserRole = 2006, + IdPermission = 205 + }, + new + { + IdUserRole = 2006, + IdPermission = 204 + }, + new + { + IdUserRole = 2007, + IdPermission = 241 + }, + new + { + IdUserRole = 2007, + IdPermission = 205 + }, + new + { + IdUserRole = 2007, + IdPermission = 204 + }, + new + { + IdUserRole = 1, + IdPermission = 100 + }, + new + { + IdUserRole = 1, + IdPermission = 101 + }, + new + { + IdUserRole = 1, + IdPermission = 102 + }, + new + { + IdUserRole = 1, + IdPermission = 103 + }, + new + { + IdUserRole = 1, + IdPermission = 104 + }, + new + { + IdUserRole = 1, + IdPermission = 105 + }, + new + { + IdUserRole = 1, + IdPermission = 106 + }, + new + { + IdUserRole = 1, + IdPermission = 107 + }, + new + { + IdUserRole = 1, + IdPermission = 108 + }, + new + { + IdUserRole = 1, + IdPermission = 109 + }, + new + { + IdUserRole = 1, + IdPermission = 110 + }, + new + { + IdUserRole = 1, + IdPermission = 111 + }, + new + { + IdUserRole = 1, + IdPermission = 112 + }, + new + { + IdUserRole = 1, + IdPermission = 113 + }, + new + { + IdUserRole = 1, + IdPermission = 114 + }, + new + { + IdUserRole = 1, + IdPermission = 115 + }, + new + { + IdUserRole = 1, + IdPermission = 116 + }, + new + { + IdUserRole = 1, + IdPermission = 117 + }, + new + { + IdUserRole = 1, + IdPermission = 118 + }, + new + { + IdUserRole = 1, + IdPermission = 119 + }, + new + { + IdUserRole = 1, + IdPermission = 120 + }, + new + { + IdUserRole = 1, + IdPermission = 121 + }, + new + { + IdUserRole = 1, + IdPermission = 122 + }, + new + { + IdUserRole = 1, + IdPermission = 123 + }, + new + { + IdUserRole = 1, + IdPermission = 124 + }, + new + { + IdUserRole = 1, + IdPermission = 125 + }, + new + { + IdUserRole = 1, + IdPermission = 126 + }, + new + { + IdUserRole = 1, + IdPermission = 127 + }, + new + { + IdUserRole = 1, + IdPermission = 128 + }, + new + { + IdUserRole = 1, + IdPermission = 129 + }, + new + { + IdUserRole = 1, + IdPermission = 200 + }, + new + { + IdUserRole = 1, + IdPermission = 201 + }, + new + { + IdUserRole = 1, + IdPermission = 202 + }, + new + { + IdUserRole = 1, + IdPermission = 203 + }, + new + { + IdUserRole = 1, + IdPermission = 204 + }, + new + { + IdUserRole = 1, + IdPermission = 205 + }, + new + { + IdUserRole = 1, + IdPermission = 206 + }, + new + { + IdUserRole = 1, + IdPermission = 207 + }, + new + { + IdUserRole = 1, + IdPermission = 208 + }, + new + { + IdUserRole = 1, + IdPermission = 209 + }, + new + { + IdUserRole = 1, + IdPermission = 210 + }, + new + { + IdUserRole = 1, + IdPermission = 211 + }, + new + { + IdUserRole = 1, + IdPermission = 212 + }, + new + { + IdUserRole = 1, + IdPermission = 213 + }, + new + { + IdUserRole = 1, + IdPermission = 214 + }, + new + { + IdUserRole = 1, + IdPermission = 215 + }, + new + { + IdUserRole = 1, + IdPermission = 216 + }, + new + { + IdUserRole = 1, + IdPermission = 217 + }, + new + { + IdUserRole = 1, + IdPermission = 218 + }, + new + { + IdUserRole = 1, + IdPermission = 219 + }, + new + { + IdUserRole = 1, + IdPermission = 220 + }, + new + { + IdUserRole = 1, + IdPermission = 221 + }, + new + { + IdUserRole = 1, + IdPermission = 222 + }, + new + { + IdUserRole = 1, + IdPermission = 223 + }, + new + { + IdUserRole = 1, + IdPermission = 224 + }, + new + { + IdUserRole = 1, + IdPermission = 225 + }, + new + { + IdUserRole = 1, + IdPermission = 226 + }, + new + { + IdUserRole = 1, + IdPermission = 227 + }, + new + { + IdUserRole = 1, + IdPermission = 228 + }, + new + { + IdUserRole = 1, + IdPermission = 229 + }, + new + { + IdUserRole = 1, + IdPermission = 230 + }, + new + { + IdUserRole = 1, + IdPermission = 231 + }, + new + { + IdUserRole = 1, + IdPermission = 232 + }, + new + { + IdUserRole = 1, + IdPermission = 233 + }, + new + { + IdUserRole = 1, + IdPermission = 234 + }, + new + { + IdUserRole = 1, + IdPermission = 235 + }, + new + { + IdUserRole = 1, + IdPermission = 236 + }, + new + { + IdUserRole = 1, + IdPermission = 237 + }, + new + { + IdUserRole = 1, + IdPermission = 238 + }, + new + { + IdUserRole = 1, + IdPermission = 239 + }, + new + { + IdUserRole = 1, + IdPermission = 240 + }, + new + { + IdUserRole = 1, + IdPermission = 241 + }, + new + { + IdUserRole = 1, + IdPermission = 242 + }, + new + { + IdUserRole = 1, + IdPermission = 243 + }, + new + { + IdUserRole = 1, + IdPermission = 244 + }, + new + { + IdUserRole = 1, + IdPermission = 245 + }, + new + { + IdUserRole = 1, + IdPermission = 246 + }, + new + { + IdUserRole = 1, + IdPermission = 247 + }, + new + { + IdUserRole = 1, + IdPermission = 248 + }, + new + { + IdUserRole = 1, + IdPermission = 249 + }, + new + { + IdUserRole = 1, + IdPermission = 250 + }, + new + { + IdUserRole = 1, + IdPermission = 251 + }, + new + { + IdUserRole = 1, + IdPermission = 252 + }, + new + { + IdUserRole = 1, + IdPermission = 253 + }, + new + { + IdUserRole = 1, + IdPermission = 254 + }, + new + { + IdUserRole = 1, + IdPermission = 255 + }, + new + { + IdUserRole = 1, + IdPermission = 256 + }, + new + { + IdUserRole = 1, + IdPermission = 257 + }, + new + { + IdUserRole = 1, + IdPermission = 258 + }, + new + { + IdUserRole = 1, + IdPermission = 259 + }, + new + { + IdUserRole = 1, + IdPermission = 260 + }, + new + { + IdUserRole = 1, + IdPermission = 261 + }, + new + { + IdUserRole = 1, + IdPermission = 262 + }, + new + { + IdUserRole = 1, + IdPermission = 263 + }, + new + { + IdUserRole = 1, + IdPermission = 264 + }, + new + { + IdUserRole = 1, + IdPermission = 265 + }, + new + { + IdUserRole = 1, + IdPermission = 266 + }, + new + { + IdUserRole = 1, + IdPermission = 267 + }, + new + { + IdUserRole = 1, + IdPermission = 268 + }, + new + { + IdUserRole = 1, + IdPermission = 269 + }, + new + { + IdUserRole = 1, + IdPermission = 380 + }, + new + { + IdUserRole = 1, + IdPermission = 381 + }, + new + { + IdUserRole = 1, + IdPermission = 382 + }, + new + { + IdUserRole = 1, + IdPermission = 383 + }, + new + { + IdUserRole = 1, + IdPermission = 384 + }, + new + { + IdUserRole = 1, + IdPermission = 385 + }, + new + { + IdUserRole = 1, + IdPermission = 386 + }, + new + { + IdUserRole = 1, + IdPermission = 387 + }, + new + { + IdUserRole = 1, + IdPermission = 388 + }, + new + { + IdUserRole = 1, + IdPermission = 389 + }, + new + { + IdUserRole = 1, + IdPermission = 390 + }, + new + { + IdUserRole = 1, + IdPermission = 391 + }, + new + { + IdUserRole = 1, + IdPermission = 400 + }, + new + { + IdUserRole = 1, + IdPermission = 401 + }, + new + { + IdUserRole = 1, + IdPermission = 407 + }, + new + { + IdUserRole = 1, + IdPermission = 408 + }, + new + { + IdUserRole = 1, + IdPermission = 450 + }, + new + { + IdUserRole = 1, + IdPermission = 460 + }, + new + { + IdUserRole = 1, + IdPermission = 461 + }, + new + { + IdUserRole = 1, + IdPermission = 500 + }, + new + { + IdUserRole = 1, + IdPermission = 501 + }, + new + { + IdUserRole = 1, + IdPermission = 502 + }, + new + { + IdUserRole = 1, + IdPermission = 503 + }, + new + { + IdUserRole = 1, + IdPermission = 504 + }, + new + { + IdUserRole = 1, + IdPermission = 505 + }, + new + { + IdUserRole = 1, + IdPermission = 506 + }, + new + { + IdUserRole = 1, + IdPermission = 507 + }, + new + { + IdUserRole = 1, + IdPermission = 510 + }, + new + { + IdUserRole = 1, + IdPermission = 511 + }, + new + { + IdUserRole = 1, + IdPermission = 512 + }, + new + { + IdUserRole = 1, + IdPermission = 516 + }, + new + { + IdUserRole = 1, + IdPermission = 517 + }, + new + { + IdUserRole = 1, + IdPermission = 518 + }, + new + { + IdUserRole = 1, + IdPermission = 519 + }, + new + { + IdUserRole = 1, + IdPermission = 520 + }, + new + { + IdUserRole = 1, + IdPermission = 521 + }, + new + { + IdUserRole = 1, + IdPermission = 522 + }, + new + { + IdUserRole = 1, + IdPermission = 523 + }, + new + { + IdUserRole = 1, + IdPermission = 524 + }, + new + { + IdUserRole = 1, + IdPermission = 525 + }, + new + { + IdUserRole = 1, + IdPermission = 526 + }, + new + { + IdUserRole = 1, + IdPermission = 527 + }, + new + { + IdUserRole = 1, + IdPermission = 528 + }, + new + { + IdUserRole = 1, + IdPermission = 530 + }, + new + { + IdUserRole = 1, + IdPermission = 531 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRoleUserRole", b => + { + b.Property("Id") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.Property("IdInclude") + .HasColumnType("integer") + .HasColumnName("id_include_user_role"); + + b.HasKey("Id", "IdInclude") + .HasName("t_relation_user_role_user_role_pk"); + + b.HasIndex("IdInclude"); + + b.ToTable("t_relation_user_role_user_role", t => + { + t.HasComment("Отношение ролей к ролям"); + }); + + b.HasData( + new + { + Id = 1101, + IdInclude = 1100 + }, + new + { + Id = 1103, + IdInclude = 1102 + }, + new + { + Id = 1105, + IdInclude = 1104 + }, + new + { + Id = 1107, + IdInclude = 1106 + }, + new + { + Id = 1109, + IdInclude = 1108 + }, + new + { + Id = 1111, + IdInclude = 1110 + }, + new + { + Id = 1114, + IdInclude = 1113 + }, + new + { + Id = 1117, + IdInclude = 1116 + }, + new + { + Id = 1203, + IdInclude = 1202 + }, + new + { + Id = 1207, + IdInclude = 1206 + }, + new + { + Id = 1209, + IdInclude = 1208 + }, + new + { + Id = 1212, + IdInclude = 1211 + }, + new + { + Id = 1214, + IdInclude = 1213 + }, + new + { + Id = 1216, + IdInclude = 1215 + }, + new + { + Id = 1218, + IdInclude = 1217 + }, + new + { + Id = 2000, + IdInclude = 1200 + }, + new + { + Id = 2000, + IdInclude = 1201 + }, + new + { + Id = 2000, + IdInclude = 1202 + }, + new + { + Id = 2000, + IdInclude = 1204 + }, + new + { + Id = 2000, + IdInclude = 1205 + }, + new + { + Id = 2000, + IdInclude = 1206 + }, + new + { + Id = 2000, + IdInclude = 1208 + }, + new + { + Id = 2000, + IdInclude = 1210 + }, + new + { + Id = 2000, + IdInclude = 1211 + }, + new + { + Id = 2000, + IdInclude = 1213 + }, + new + { + Id = 2000, + IdInclude = 1215 + }, + new + { + Id = 2000, + IdInclude = 1217 + }, + new + { + Id = 2000, + IdInclude = 1219 + }, + new + { + Id = 2000, + IdInclude = 1220 + }, + new + { + Id = 2000, + IdInclude = 1221 + }, + new + { + Id = 2000, + IdInclude = 1500 + }, + new + { + Id = 2000, + IdInclude = 1501 + }, + new + { + Id = 2000, + IdInclude = 1502 + }, + new + { + Id = 2001, + IdInclude = 1500 + }, + new + { + Id = 2001, + IdInclude = 1501 + }, + new + { + Id = 2001, + IdInclude = 1502 + }, + new + { + Id = 2002, + IdInclude = 1500 + }, + new + { + Id = 2002, + IdInclude = 1501 + }, + new + { + Id = 2002, + IdInclude = 1502 + }, + new + { + Id = 2003, + IdInclude = 1500 + }, + new + { + Id = 2003, + IdInclude = 1501 + }, + new + { + Id = 2003, + IdInclude = 1502 + }, + new + { + Id = 2004, + IdInclude = 1500 + }, + new + { + Id = 2004, + IdInclude = 1501 + }, + new + { + Id = 2004, + IdInclude = 1502 + }, + new + { + Id = 2005, + IdInclude = 1500 + }, + new + { + Id = 2005, + IdInclude = 1501 + }, + new + { + Id = 2005, + IdInclude = 1502 + }, + new + { + Id = 2006, + IdInclude = 1500 + }, + new + { + Id = 2006, + IdInclude = 1501 + }, + new + { + Id = 2006, + IdInclude = 1502 + }, + new + { + Id = 2007, + IdInclude = 1500 + }, + new + { + Id = 2007, + IdInclude = 1501 + }, + new + { + Id = 2007, + IdInclude = 1502 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserUserRole", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.HasKey("IdUser", "IdUserRole"); + + b.HasIndex("IdUserRole"); + + b.ToTable("t_relation_user_user_role", t => + { + t.HasComment("Отношение пользователей и ролей"); + }); + + b.HasData( + new + { + IdUser = 1, + IdUserRole = 1 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ReportProperty", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Begin") + .HasColumnType("timestamp with time zone") + .HasColumnName("begin"); + + b.Property("End") + .HasColumnType("timestamp with time zone") + .HasColumnName("end") + .HasComment("timestamp with time zone"); + + b.Property("Format") + .HasColumnType("integer") + .HasColumnName("format") + .HasComment("Формат отчета"); + + b.Property("IdFile") + .HasColumnType("integer") + .HasColumnName("id_file") + .HasComment("id файла-родителя"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("id скважины"); + + b.Property("Step") + .HasColumnType("integer") + .HasColumnName("step") + .HasComment("размер шага в секундах"); + + b.HasKey("Id"); + + b.HasIndex("IdFile"); + + b.HasIndex("IdWell"); + + b.ToTable("t_report_property", t => + { + t.HasComment("Отчеты с данными по буровым"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Schedule", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("DrillEnd") + .HasColumnType("timestamp with time zone") + .HasColumnName("drill_end") + .HasComment("Конец вахты"); + + b.Property("DrillStart") + .HasColumnType("timestamp with time zone") + .HasColumnName("drill_start") + .HasComment("Начало вахты"); + + b.Property("IdDriller") + .HasColumnType("integer") + .HasColumnName("id_driller") + .HasComment("Идентификатор бурильщика"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Идентификатор скважины"); + + b.Property("ShiftEnd") + .HasColumnType("time without time zone") + .HasColumnName("shift_end") + .HasComment("Конец смены"); + + b.Property("ShiftStart") + .HasColumnType("time without time zone") + .HasColumnName("shift_start") + .HasComment("Начало смены"); + + b.HasKey("Id"); + + b.HasIndex("IdDriller"); + + b.HasIndex("IdWell"); + + b.ToTable("t_schedule", t => + { + t.HasComment("График работы бурильщика"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.SetpointsRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Comment") + .HasColumnType("text") + .HasColumnName("comment") + .HasComment("комментарий для оператора"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Id пользователя, загрузившего файл"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("0: неизвестно, 1:ожидает отправки, 2: отправлено, 3: принято оператором, 4: отклонено оператором, 5: устарело"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("id скважины"); + + b.Property("ObsolescenceSec") + .HasColumnType("integer") + .HasColumnName("obsolescence") + .HasComment("сек. до устаревания"); + + b.Property("Setpoints") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("setpoint_set") + .HasComment("Набор уставок"); + + b.Property("UploadDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdWell"); + + b.ToTable("t_setpoints_rquest", t => + { + t.HasComment("Запросы на изменение уставок панели оператора"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Subsystem", 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"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name"); + + b.HasKey("Id"); + + b.ToTable("t_subsystem", t => + { + t.HasComment("Описание подсистем"); + }); + + b.HasData( + new + { + Id = 1, + Description = "Совместная работа режимов \"Бурение в роторе\" и \"Бурение в слайде\"", + Name = "АПД" + }, + new + { + Id = 11, + Description = "Режим работы \"Бурение в роторе\"", + Name = "АПД ротор" + }, + new + { + Id = 12, + Description = "Режим работы \"Бурение в слайде\"", + Name = "АПД слайд" + }, + new + { + Id = 65536, + Description = "Осцилляция", + Name = "Осцилляция" + }, + new + { + Id = 65537, + Description = "Демпфер", + Name = "Демпфер" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Telemetry", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Info") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("info") + .HasComment("Информация с панели о скважине"); + + b.Property("RemoteUid") + .IsRequired() + .HasColumnType("text") + .HasColumnName("remote_uid") + .HasComment("Идентификатор передающего устройства. Может повторяться в списке, так как комплекты оборудования переезжают от скв. к скв."); + + b.Property("TimeZone") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("timezone") + .HasComment("Смещение часового пояса от UTC"); + + b.HasKey("Id"); + + b.HasIndex(new[] { "RemoteUid" }, "t_telemetry_remote_uid_index"); + + b.ToTable("t_telemetry", t => + { + t.HasComment("таблица привязки телеметрии от комплектов к конкретной скважине."); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaub", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date") + .HasComment("'2021-10-19 18:23:54+05'"); + + b.Property("AxialLoad") + .HasColumnType("real") + .HasColumnName("axial_load") + .HasComment("Осевая нагрузка"); + + b.Property("AxialLoadLimitMax") + .HasColumnType("real") + .HasColumnName("axial_load_limit_max") + .HasComment("Осевая нагрузка. Аварийная макс."); + + b.Property("AxialLoadSp") + .HasColumnType("real") + .HasColumnName("axial_load_sp") + .HasComment("Осевая нагрузка. Задание"); + + b.Property("BitDepth") + .HasColumnType("real") + .HasColumnName("bit_depth") + .HasComment("Положение инструмента"); + + b.Property("BlockPosition") + .HasColumnType("real") + .HasColumnName("block_position") + .HasComment("Высота талевого блока"); + + b.Property("BlockPositionMax") + .HasColumnType("real") + .HasColumnName("block_position_max") + .HasComment("Талевый блок. Макс положение"); + + b.Property("BlockPositionMin") + .HasColumnType("real") + .HasColumnName("block_position_min") + .HasComment("Талевый блок. Мин положение"); + + b.Property("BlockSpeed") + .HasColumnType("real") + .HasColumnName("block_speed") + .HasComment("Скорость талевого блока"); + + b.Property("BlockSpeedSp") + .HasColumnType("real") + .HasColumnName("block_speed_sp") + .HasComment("Скорости талевого блока. Задание"); + + b.Property("BlockSpeedSpDevelop") + .HasColumnType("real") + .HasColumnName("block_speed_sp_develop") + .HasComment("Талевый блок. Задание скорости для проработки"); + + b.Property("BlockSpeedSpRotor") + .HasColumnType("real") + .HasColumnName("block_speed_sp_rotor") + .HasComment("Талевый блок. Задание скорости для роторного бурения"); + + b.Property("BlockSpeedSpSlide") + .HasColumnType("real") + .HasColumnName("block_speed_sp_slide") + .HasComment("Талевый блок. Задание скорости для режима слайда"); + + b.Property("Flow") + .HasColumnType("real") + .HasColumnName("flow") + .HasComment("Расход"); + + b.Property("FlowDeltaLimitMax") + .HasColumnType("real") + .HasColumnName("flow_delta_limit_max") + .HasComment("Расход. Аварийный макс."); + + b.Property("FlowIdle") + .HasColumnType("real") + .HasColumnName("flow_idle") + .HasComment("Расход. Холостой ход"); + + b.Property("HookWeight") + .HasColumnType("real") + .HasColumnName("hook_weight") + .HasComment("Вес на крюке"); + + b.Property("HookWeightIdle") + .HasColumnType("real") + .HasColumnName("hook_weight_idle") + .HasComment("Вес на крюке. Холостой ход"); + + b.Property("HookWeightLimitMax") + .HasColumnType("real") + .HasColumnName("hook_weight_limit_max") + .HasComment("Вес на крюке. Затяжка"); + + b.Property("HookWeightLimitMin") + .HasColumnType("real") + .HasColumnName("hook_weight_limit_min") + .HasComment("Вес на крюке. Посадка"); + + b.Property("IdFeedRegulator") + .HasColumnType("smallint") + .HasColumnName("id_feed_regulator") + .HasComment("Текущий критерий бурения"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user") + .HasComment("Пользователь САУБ"); + + b.Property("Mode") + .HasColumnType("smallint") + .HasColumnName("mode") + .HasComment("Режим САУБ"); + + b.Property("Mse") + .HasColumnType("real") + .HasColumnName("mse") + .HasComment("MSE"); + + b.Property("MseState") + .HasColumnType("smallint") + .HasColumnName("mse_state") + .HasComment("Текущее состояние работы MSE"); + + b.Property("Pressure") + .HasColumnType("real") + .HasColumnName("pressure") + .HasComment("Давление"); + + b.Property("PressureDeltaLimitMax") + .HasColumnType("real") + .HasColumnName("pressure_delta_limit_max") + .HasComment("Давление дифф. Аварийное макс."); + + b.Property("PressureIdle") + .HasColumnType("real") + .HasColumnName("pressure_idle") + .HasComment("Давление. Холостой ход"); + + b.Property("PressureSp") + .HasColumnType("real") + .HasColumnName("pressure_sp") + .HasComment("Давление. Задание"); + + b.Property("PressureSpDevelop") + .HasColumnType("real") + .HasColumnName("pressure_sp_develop") + .HasComment("Давление. Задание для проработки"); + + b.Property("PressureSpRotor") + .HasColumnType("real") + .HasColumnName("pressure_sp_rotor") + .HasComment("Давление. Задание для роторного бурения"); + + b.Property("PressureSpSlide") + .HasColumnType("real") + .HasColumnName("pressure_sp_slide") + .HasComment("Давление. Задание для режима слайда"); + + b.Property("Pump0Flow") + .HasColumnType("real") + .HasColumnName("pump0_flow") + .HasComment("Расход. Буровой насос 1"); + + b.Property("Pump1Flow") + .HasColumnType("real") + .HasColumnName("pump1_flow") + .HasComment("Расход. Буровой насос 2"); + + b.Property("Pump2Flow") + .HasColumnType("real") + .HasColumnName("pump2_flow") + .HasComment("Расход. Буровой насос 3"); + + b.Property("RotorSpeed") + .HasColumnType("real") + .HasColumnName("rotor_speed") + .HasComment("Обороты ротора"); + + b.Property("RotorTorque") + .HasColumnType("real") + .HasColumnName("rotor_torque") + .HasComment("Момент на роторе"); + + b.Property("RotorTorqueIdle") + .HasColumnType("real") + .HasColumnName("rotor_torque_idle") + .HasComment("Момент на роторе. Холостой ход"); + + b.Property("RotorTorqueLimitMax") + .HasColumnType("real") + .HasColumnName("rotor_torque_limit_max") + .HasComment("Момент на роторе. Аварийный макс."); + + b.Property("RotorTorqueSp") + .HasColumnType("real") + .HasColumnName("rotor_torque_sp") + .HasComment("Момент на роторе. Задание"); + + b.Property("WellDepth") + .HasColumnType("real") + .HasColumnName("well_depth") + .HasComment("Глубина забоя"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_data_saub", t => + { + t.HasComment("набор основных данных по SAUB"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaubStat", b => + { + b.Property("Count") + .HasColumnType("bigint") + .HasColumnName("count_items"); + + b.Property("DateMax") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_max"); + + b.Property("DateMin") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_min"); + + b.Property("DepthMax") + .HasColumnType("real") + .HasColumnName("depth_max"); + + b.Property("DepthMin") + .HasColumnType("real") + .HasColumnName("depth_min"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.ToTable((string)null); + + b.ToView("mw_telemetry_datas_saub_stat", (string)null); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSpin", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date") + .HasComment("'2021-10-19 18:23:54+05'"); + + b.Property("Mode") + .HasColumnType("smallint") + .HasColumnName("mode") + .HasComment("Выбранный режим управления"); + + b.Property("PositionRight") + .HasColumnType("real") + .HasColumnName("position_right") + .HasComment("Крайний правый угол осцилляции"); + + b.Property("PositionZero") + .HasColumnType("real") + .HasColumnName("position_zero") + .HasComment("Нулевая позиция осцилляции"); + + b.Property("RevolsLeftLimit") + .HasColumnType("real") + .HasColumnName("revols_left_limit") + .HasComment("Ограничение числа оборотов влево"); + + b.Property("RevolsLeftTotal") + .HasColumnType("real") + .HasColumnName("revols_left_total") + .HasComment("Суммарное количество оборотов влево"); + + b.Property("RevolsRightLimit") + .HasColumnType("real") + .HasColumnName("revols_right_limit") + .HasComment("Ограничение числа оборотов вправо"); + + b.Property("RevolsRightTotal") + .HasColumnType("real") + .HasColumnName("revols_right_total") + .HasComment("Суммарное количество оборотов вправо"); + + b.Property("SpeedLeftSp") + .HasColumnType("real") + .HasColumnName("speed_left_sp") + .HasComment("Заданная скорость вращения влево"); + + b.Property("SpeedRightSp") + .HasColumnType("real") + .HasColumnName("speed_right_sp") + .HasComment("Заданная скорость вращения вправо"); + + b.Property("State") + .HasColumnType("smallint") + .HasColumnName("state") + .HasComment("Переменная этапа"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_data_spin", t => + { + t.HasComment("набор основных данных по SpinMaster"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryEvent", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdEvent") + .HasColumnType("integer") + .HasColumnName("id_event"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category"); + + b.Property("MessageTemplate") + .IsRequired() + .HasColumnType("text") + .HasColumnName("message_template"); + + b.HasKey("IdTelemetry", "IdEvent"); + + b.ToTable("t_telemetry_event", t => + { + t.HasComment("Справочник событий. События формируют сообщения. Разделено по версиям посылок от телеметрии."); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Arg0") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg0") + .HasComment("Аргумент №0 для вставки в шаблон сообщения"); + + b.Property("Arg1") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg1"); + + b.Property("Arg2") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg2"); + + b.Property("Arg3") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg3"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("IdEvent") + .HasColumnType("integer") + .HasColumnName("id_event"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdTelemetryUser") + .HasColumnType("integer") + .HasColumnName("id_telemetry_user") + .HasComment("Пользователь панели отправляющей телеметрию. не пользователь облака."); + + b.Property("WellDepth") + .HasColumnType("double precision") + .HasColumnName("well_depth"); + + b.HasKey("Id"); + + b.HasIndex("IdTelemetry"); + + b.ToTable("t_telemetry_message", t => + { + t.HasComment("Сообщения на буровых"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryUser", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("Level") + .HasColumnType("integer") + .HasColumnName("level"); + + b.Property("Name") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name"); + + b.Property("Patronymic") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("patronymic"); + + b.Property("Surname") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("surname"); + + b.HasKey("IdTelemetry", "IdUser"); + + b.ToTable("t_telemetry_user", t => + { + t.HasComment("Пользователи панели САУБ. Для сообщений."); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryWirelineRunOut", b => + { + b.Property("IdTelemetry") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id_telemetry") + .HasComment("Идентификатор телеметрии"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("IdTelemetry")); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_time") + .HasComment("Отметка времени"); + + b.Property("Hauling") + .HasColumnType("real") + .HasColumnName("hauling") + .HasComment("Наработка талевого каната с момента перетяжки каната, т*км"); + + b.Property("HaulingWarnSp") + .HasColumnType("real") + .HasColumnName("hauling_warn_sp") + .HasComment("Наработка талевого каната до сигнализации о необходимости перетяжки, т*км"); + + b.Property("Replace") + .HasColumnType("real") + .HasColumnName("replace") + .HasComment("Наработка талевого каната с момента замены каната, т*км"); + + b.Property("ReplaceWarnSp") + .HasColumnType("real") + .HasColumnName("replace_warn_sp") + .HasComment("Наработка талевого каната до сигнализации о необходимости замены, т*км"); + + b.HasKey("IdTelemetry"); + + b.ToTable("t_telemetry_wireline_run_out", t => + { + t.HasComment("Наработка талевого каната"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Trajectory.TrajectoryFact", 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("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_trajectory_fact", t => + { + t.HasComment("Загрузка фактической траектории"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Trajectory.TrajectoryPlan", 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_trajectory_plan", t => + { + t.HasComment("Загрузка плановой траектории"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Email") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("email") + .HasComment("должность"); + + b.Property("IdCompany") + .HasColumnType("integer") + .HasColumnName("id_company"); + + b.Property("IdState") + .HasColumnType("smallint") + .HasColumnName("state") + .HasComment("состояние:\n0 - не активен, \n1 - активен, \n2 - заблокирован"); + + b.Property("Login") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("login"); + + b.Property("Name") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name") + .HasComment("имя"); + + b.Property("PasswordHash") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("password_hash") + .HasComment("соленый хэш пароля.\nпервые 5 символов - соль"); + + b.Property("Patronymic") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("patronymic") + .HasComment("отчество"); + + b.Property("Phone") + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .HasColumnName("phone") + .HasComment("номер телефона"); + + b.Property("Position") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("position") + .HasComment("email"); + + b.Property("Surname") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("surname") + .HasComment("фамилия"); + + b.HasKey("Id"); + + b.HasIndex("IdCompany"); + + b.HasIndex("Login") + .IsUnique(); + + b.ToTable("t_user", t => + { + t.HasComment("Пользователи облака"); + }); + + b.HasData( + new + { + Id = 1, + Email = "", + IdCompany = 1, + IdState = (short)1, + Login = "dev", + Name = "Разработчик", + PasswordHash = "Vlcj|4fa529103dde7ff72cfe76185f344d4aa87931f8e1b2044e8a7739947c3d18923464eaad93843e4f809c5e126d013072" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserRole", 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("IdType") + .HasColumnType("integer") + .HasColumnName("id_type") + .HasComment("0-роль из стандартной матрицы, \n1-специальная роль для какого-либо пользователя"); + + b.HasKey("Id"); + + b.ToTable("t_user_role", t => + { + t.HasComment("Роли пользователей в системе"); + }); + + b.HasData( + new + { + Id = 1, + Caption = "root", + IdType = 1 + }, + new + { + Id = 1100, + Caption = "admin_cluster.view", + IdType = 1 + }, + new + { + Id = 1101, + Caption = "admin_cluster.edit", + IdType = 1 + }, + new + { + Id = 1102, + Caption = "admin_company.view", + IdType = 1 + }, + new + { + Id = 1103, + Caption = "admin_company.edit", + IdType = 1 + }, + new + { + Id = 1104, + Caption = "admin_company_type.view", + IdType = 1 + }, + new + { + Id = 1105, + Caption = "admin_company_type.edit", + IdType = 1 + }, + new + { + Id = 1106, + Caption = "admin_deposit.view", + IdType = 1 + }, + new + { + Id = 1107, + Caption = "admin_deposit.edit", + IdType = 1 + }, + new + { + Id = 1108, + Caption = "admin_permission.view", + IdType = 1 + }, + new + { + Id = 1109, + Caption = "admin_permission.edit", + IdType = 1 + }, + new + { + Id = 1110, + Caption = "admin_role.view", + IdType = 1 + }, + new + { + Id = 1111, + Caption = "admin_role.edit", + IdType = 1 + }, + new + { + Id = 1112, + Caption = "admin_telemetry.view", + IdType = 1 + }, + new + { + Id = 1113, + Caption = "admin_user.view", + IdType = 1 + }, + new + { + Id = 1114, + Caption = "admin_user.edit", + IdType = 1 + }, + new + { + Id = 1115, + Caption = "admin_visit_log.view", + IdType = 1 + }, + new + { + Id = 1116, + Caption = "admin_well.view", + IdType = 1 + }, + new + { + Id = 1117, + Caption = "admin_well.edit", + IdType = 1 + }, + new + { + Id = 1200, + Caption = "archive.view", + IdType = 1 + }, + new + { + Id = 1201, + Caption = "cluster.view", + IdType = 1 + }, + new + { + Id = 1202, + Caption = "composite.view", + IdType = 1 + }, + new + { + Id = 1203, + Caption = "composite.edit", + IdType = 1 + }, + new + { + Id = 1204, + Caption = "deposit.view", + IdType = 1 + }, + new + { + Id = 1205, + Caption = "document.view", + IdType = 1 + }, + new + { + Id = 1206, + Caption = "drillProcessFlow.view", + IdType = 1 + }, + new + { + Id = 1207, + Caption = "drillProcessFlow.edit", + IdType = 1 + }, + new + { + Id = 1208, + Caption = "measure.view", + IdType = 1 + }, + new + { + Id = 1209, + Caption = "measure.edit", + IdType = 1 + }, + new + { + Id = 1210, + Caption = "message.view", + IdType = 1 + }, + new + { + Id = 1211, + Caption = "operations.view", + IdType = 1 + }, + new + { + Id = 1212, + Caption = "operations.edit", + IdType = 1 + }, + new + { + Id = 1213, + Caption = "params.view", + IdType = 1 + }, + new + { + Id = 1214, + Caption = "params.edit", + IdType = 1 + }, + new + { + Id = 1215, + Caption = "report.view", + IdType = 1 + }, + new + { + Id = 1216, + Caption = "report.edit", + IdType = 1 + }, + new + { + Id = 1217, + Caption = "setpoints.view", + IdType = 1 + }, + new + { + Id = 1218, + Caption = "setpoints.edit", + IdType = 1 + }, + new + { + Id = 1219, + Caption = "telemetry.view", + IdType = 1 + }, + new + { + Id = 1220, + Caption = "telemetryAnalysis.view", + IdType = 1 + }, + new + { + Id = 1221, + Caption = "well.view", + IdType = 1 + }, + new + { + Id = 1500, + Caption = "Просмотр всего", + IdType = 1 + }, + new + { + Id = 1501, + Caption = "file.edit", + IdType = 1 + }, + new + { + Id = 1502, + Caption = "drillingProgram.edit", + IdType = 1 + }, + new + { + Id = 2000, + Caption = "Заказчик", + IdType = 0 + }, + new + { + Id = 2001, + Caption = "Супервайзер", + IdType = 0 + }, + new + { + Id = 2002, + Caption = "Буровой подрядчик", + IdType = 0 + }, + new + { + Id = 2003, + Caption = "Растворщик", + IdType = 0 + }, + new + { + Id = 2004, + Caption = "Телеметрист", + IdType = 0 + }, + new + { + Id = 2005, + Caption = "Долотный сервис", + IdType = 0 + }, + new + { + Id = 2006, + Caption = "ГТИ", + IdType = 0 + }, + new + { + Id = 2007, + Caption = "Цементирование", + IdType = 0 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserSetting", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("Key") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("key") + .HasComment("Ключ настроек пользователя"); + + b.Property("Value") + .HasColumnType("jsonb") + .HasColumnName("setting_value") + .HasComment("Значение настроек пользователя"); + + b.HasKey("IdUser", "Key"); + + b.ToTable("t_user_settings", t => + { + t.HasComment("настройки интерфейса пользователя"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.RecordBase", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("Actcod") + .HasColumnType("smallint") + .HasColumnName("ACTCOD"); + + b.Property("Date") + .HasColumnType("integer") + .HasColumnName("DATE"); + + b.Property("Recid") + .HasColumnType("smallint") + .HasColumnName("RECID"); + + b.Property("Seqid") + .HasColumnType("integer") + .HasColumnName("SEQID"); + + b.Property("Stknum") + .HasColumnType("smallint") + .HasColumnName("STKNUM"); + + b.Property("Time") + .HasColumnType("integer") + .HasColumnName("TIME"); + + b.Property("Wellid") + .HasColumnType("text") + .HasColumnName("WELLID"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_wits_base"); + + b.UseTptMappingStrategy(); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", 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("IdCluster") + .HasColumnType("integer") + .HasColumnName("id_cluster"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("state") + .HasComment("0 - неизвестно, 1 - в работе, 2 - завершена"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdWellType") + .HasColumnType("integer") + .HasColumnName("id_well_type"); + + 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("IdCluster"); + + b.HasIndex("IdTelemetry") + .IsUnique(); + + b.HasIndex("IdWellType"); + + b.ToTable("t_well", t => + { + t.HasComment("скважины"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellComposite", b => + { + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины получателя"); + + b.Property("IdWellSrc") + .HasColumnType("integer") + .HasColumnName("id_well_src") + .HasComment("Id скважины композита"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_well_section_type") + .HasComment("Id тип секции композита"); + + b.HasKey("IdWell", "IdWellSrc", "IdWellSectionType"); + + b.HasIndex("IdWellSectionType"); + + b.HasIndex("IdWellSrc"); + + b.ToTable("t_well_composite", t => + { + t.HasComment("Композитная скважина"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellFinalDocument", b => + { + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category"); + + b.HasKey("IdWell", "IdUser", "IdCategory") + .HasName("t_well_final_documents_pk"); + + b.HasIndex("IdCategory"); + + b.HasIndex("IdUser"); + + b.ToTable("t_well_final_documents", t => + { + t.HasComment("Дело скважины"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CategoryInfo") + .HasColumnType("text") + .HasColumnName("category_info") + .HasComment("Доп. информация к выбраной категории"); + + b.Property("Comment") + .HasColumnType("text") + .HasColumnName("comment") + .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("DurationHours") + .HasColumnType("double precision") + .HasColumnName("duration_hours") + .HasComment("Продолжительность, часы"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category") + .HasComment("Id категории операции"); + + b.Property("IdPlan") + .HasColumnType("integer") + .HasColumnName("id_plan") + .HasComment("Id плановой операции"); + + b.Property("IdType") + .HasColumnType("integer") + .HasColumnName("id_type") + .HasComment("0 = План или 1 = Факт"); + + b.Property("IdUser") + .HasColumnType("integer"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_well_section_type") + .HasComment("Id тип секции скважины"); + + b.Property("LastUpdateDate") + .HasColumnType("timestamp with time zone"); + + b.HasKey("Id"); + + b.HasIndex("DateStart"); + + b.HasIndex("DepthEnd"); + + b.HasIndex("IdCategory"); + + b.HasIndex("IdPlan"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_well_operation", t => + { + t.HasComment("Данные по операциям на скважине"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperationCategory", 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("IsHidden") + .HasColumnType("boolean"); + + b.Property("KeyValueName") + .HasMaxLength(32) + .HasColumnType("character varying(32)") + .HasColumnName("key_value_name") + .HasComment("Название ключевого показателя операции"); + + b.Property("KeyValueUnits") + .HasMaxLength(16) + .HasColumnType("character varying(16)") + .HasColumnName("key_value_units") + .HasComment("Единицы измерения ключевого показателя операции"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name") + .HasComment("Название категории операции"); + + b.HasKey("Id"); + + b.HasIndex("IdParent"); + + b.ToTable("t_well_operation_category", t => + { + t.HasComment("Справочник операций на скважине"); + }); + + b.HasData( + new + { + Id = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "м/ч", + Name = "БУРЕНИЕ" + }, + new + { + Id = 3001, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО" + }, + new + { + Id = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "КРЕПЛЕНИЕ" + }, + new + { + Id = 3003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ГФР" + }, + new + { + Id = 3004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Вспомогательные операции" + }, + new + { + Id = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Непроизводительное время (НПВ)" + }, + new + { + Id = 3006, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Заключительные работы" + }, + new + { + Id = 4000, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "КНБК" + }, + new + { + Id = 4001, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "м/ч", + Name = "Механическое. бурение" + }, + new + { + Id = 4002, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Статический замер" + }, + new + { + Id = 4003, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Нормализация диаметра скважины" + }, + new + { + Id = 4004, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Наращивание" + }, + new + { + Id = 4005, + IdParent = 3001, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО" + }, + new + { + Id = 4006, + IdParent = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск обсадной колонны" + }, + new + { + Id = 4018, + IdParent = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Крепление" + }, + new + { + Id = 4007, + IdParent = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Цементирование" + }, + new + { + Id = 4008, + IdParent = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Вспомогательные работы при креплении" + }, + new + { + Id = 4009, + IdParent = 3003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка/разборка приборов ГИС" + }, + new + { + Id = 4010, + IdParent = 3003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО" + }, + new + { + Id = 4011, + IdParent = 3003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ГИС" + }, + new + { + Id = 4012, + IdParent = 3004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка, ОБР" + }, + new + { + Id = 4013, + IdParent = 3004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Вспомогательные работы" + }, + new + { + Id = 4014, + IdParent = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ремонт оборудования" + }, + new + { + Id = 4015, + IdParent = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Аварийные работы" + }, + new + { + Id = 4016, + IdParent = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Осложнение" + }, + new + { + Id = 4017, + IdParent = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Незаложенные в ГГД операции" + }, + new + { + Id = 4019, + IdParent = 3006, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Заключительные операции" + }, + new + { + Id = 5000, + IdParent = 4000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Разборка КНБК" + }, + new + { + Id = 5001, + IdParent = 4000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка КНБК" + }, + new + { + Id = 5002, + IdParent = 4001, + IsHidden = true, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", + Name = "Бурение слайдом" + }, + new + { + Id = 5003, + IdParent = 4001, + IsHidden = true, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", + Name = "Бурение ротором" + }, + new + { + Id = 5004, + IdParent = 4002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Замер ЗТС (запись MWD)" + }, + new + { + Id = 5005, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка перед наращиванием" + }, + new + { + Id = 5006, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Проработка во время бурения" + }, + new + { + Id = 5007, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Проработка" + }, + new + { + Id = 5008, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонировка во время бурения" + }, + new + { + Id = 5009, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонировка перед наращиванием" + }, + new + { + Id = 5010, + IdParent = 4004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Наращивание" + }, + new + { + Id = 5011, + IdParent = 4004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Удержание в клиньях" + }, + new + { + Id = 5012, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем инструмента" + }, + new + { + Id = 5013, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем КНБК" + }, + new + { + Id = 5014, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск инструмента" + }, + new + { + Id = 5015, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск КНБК" + }, + new + { + Id = 5016, + IdParent = 4006, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка при спуске ОК" + }, + new + { + Id = 5017, + IdParent = 4006, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск ОК" + }, + new + { + Id = 5018, + IdParent = 4007, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ОЗЦ" + }, + new + { + Id = 5019, + IdParent = 4007, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Цементирование" + }, + new + { + Id = 5020, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Опрессовка БИ" + }, + new + { + Id = 5021, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Опрессовка ОК" + }, + new + { + Id = 5022, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПЗР при спуске ОК" + }, + new + { + Id = 5023, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПЗР при цементировании" + }, + new + { + Id = 5024, + IdParent = 4009, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Разборка комплекса приборов ГИС" + }, + new + { + Id = 5025, + IdParent = 4009, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка комплекса приборов ГИС" + }, + new + { + Id = 5026, + IdParent = 4010, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем приборов ГИС (на трубах)" + }, + new + { + Id = 5027, + IdParent = 4010, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск приборов ГИС (на трубах)" + }, + new + { + Id = 5028, + IdParent = 4011, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Комплекс ГИС на жестком кабеле" + }, + new + { + Id = 5029, + IdParent = 4011, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Комплекс ГИС на кабеле" + }, + new + { + Id = 5030, + IdParent = 4011, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Комплекс ГИС на трубах" + }, + new + { + Id = 5031, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Закачка/прокачка пачки" + }, + new + { + Id = 5032, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Обработка БР" + }, + new + { + Id = 5033, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ориентирование ТС при бурении" + }, + new + { + Id = 5034, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Перезапись гаммы-каротажа" + }, + new + { + Id = 5035, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Приготовление БР" + }, + new + { + Id = 5036, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка" + }, + new + { + Id = 5037, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Разбуривание тех.оснастки" + }, + new + { + Id = 5038, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск инструмента с проработкой" + }, + new + { + Id = 5039, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ВМР" + }, + new + { + Id = 5040, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Демонтаж ПВО" + }, + new + { + Id = 5041, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Долив затруба при подъёме" + }, + new + { + Id = 5042, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Монтаж ПВО" + }, + new + { + Id = 5043, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Наработка жёлоба" + }, + new + { + Id = 5044, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Обвязка устья с циркуляционной системой" + }, + new + { + Id = 5045, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Оборудование устья" + }, + new + { + Id = 5046, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Опрессовка ПВО" + }, + new + { + Id = 5047, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Перемонтаж ПВО " + }, + new + { + Id = 5048, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Перетяжка талевого каната" + }, + new + { + Id = 5049, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПЗР при сборке КНБК" + }, + new + { + Id = 5050, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Полная замена талевого каната" + }, + new + { + Id = 5051, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПР перед забуркой направления" + }, + new + { + Id = 5052, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Продувка манифольда" + }, + new + { + Id = 5053, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Срезка" + }, + new + { + Id = 5054, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Тайм-дриллинг" + }, + new + { + Id = 5055, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Тех.отстой" + }, + new + { + Id = 5056, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Учебная тревога \"Выброс\"" + }, + new + { + Id = 5057, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Чистка ЦСГО/емкостного блока" + }, + new + { + Id = 5058, + IdParent = 4014, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ремонт бурового оборудования" + }, + new + { + Id = 5059, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ловильные работы" + }, + new + { + Id = 5060, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ожидание" + }, + new + { + Id = 5061, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Определение места прихвата и ЛМ" + }, + new + { + Id = 5062, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Работа яссом" + }, + new + { + Id = 5063, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Расхаживание" + }, + new + { + Id = 5064, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО - колокол" + }, + new + { + Id = 5065, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО - метчик" + }, + new + { + Id = 5066, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО - овершот" + }, + new + { + Id = 5067, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО - труболовка" + }, + new + { + Id = 5068, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Торпедирование (встряхивание)" + }, + new + { + Id = 5069, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Торпедирование (отстрел)" + }, + new + { + Id = 5070, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Установка ванн" + }, + new + { + Id = 5071, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Фрезеровка" + }, + new + { + Id = 5072, + IdParent = 4016, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Контролируемое ГНВП" + }, + new + { + Id = 5073, + IdParent = 4016, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Поглощение" + }, + new + { + Id = 5074, + IdParent = 4016, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сальникообразование" + }, + new + { + Id = 5075, + IdParent = 4016, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Утяжеление БР" + }, + new + { + Id = 5076, + IdParent = 4017, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "НПВ / прочее" + }, + new + { + Id = 5077, + IdParent = 4017, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Обработка раствора (несоответствие параметров)" + }, + new + { + Id = 5078, + IdParent = 4017, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "подъем ОК" + }, + new + { + Id = 5079, + IdParent = 4017, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ревизия КНБК/инструмента/ЗТС" + }, + new + { + Id = 5082, + IdParent = 4000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка устройства ориентирования КО" + }, + new + { + Id = 5083, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Проработка принудительная" + }, + new + { + Id = 5084, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонировка подъем БИ, продувка" + }, + new + { + Id = 5085, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск бурильного инструмента со сборкой с мостков" + }, + new + { + Id = 5086, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем БИ с выбросом на мостки" + }, + new + { + Id = 5087, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск БИ со сборкой с мостков" + }, + new + { + Id = 5088, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка и спуск ТБТ" + }, + new + { + Id = 5089, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск КО на транспортной колонне" + }, + new + { + Id = 5090, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Отворот допускной трубы" + }, + new + { + Id = 5091, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Активация подвески, опрессовка" + }, + new + { + Id = 5092, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Монтаж, опрессовка ФА" + }, + new + { + Id = 5093, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка хвостовика 114мм (согласно схеме)" + }, + new + { + Id = 5094, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПЗР к спуску УЭЦН" + }, + new + { + Id = 5095, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Активация подвески (потайной колонны, хвостовика)" + }, + new + { + Id = 5096, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонирование перед спуском" + }, + new + { + Id = 5097, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка - перевод скважины на новый раствор" + }, + new + { + Id = 5098, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка БИ с мостков на подсвечник" + }, + new + { + Id = 5099, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подготовка ствола скважины. Перезапись ГК в интервале установки КО." + }, + new + { + Id = 5100, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Смена рабочего переводника ВСП" + }, + new + { + Id = 5101, + IdParent = 4014, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ремонт" + }, + new + { + Id = 5102, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск пакера" + }, + new + { + Id = 5103, + IdParent = 4011, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Запись гамма-каратожа" + }, + new + { + Id = 5104, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонирование спуск БИ" + }, + new + { + Id = 5105, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка клин-отклонителя" + }, + new + { + Id = 5106, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ориентирование и посадка клина-отклонителя" + }, + new + { + Id = 5107, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Протяжка подъемного патрубка подвески" + }, + new + { + Id = 5108, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем клина-отклонителя" + }, + new + { + Id = 5109, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Стыковка стингера с хвостовиком основного ствола" + }, + new + { + Id = 5110, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ориентирование и установка стыковочного узла хвостовика" + }, + new + { + Id = 5111, + IdParent = 4001, + IsHidden = false, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", + Name = "Бурение с отбором керна" + }, + new + { + Id = 5112, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Работа пакером в обсадной колонне" + }, + new + { + Id = 5113, + IdParent = 4001, + IsHidden = false, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", + Name = "Бурение" + }, + new + { + Id = 5114, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ТО оборудования" + }, + new + { + Id = 5115, + IdParent = 4019, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск НКТ" + }, + new + { + Id = 5116, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Вырезка окна" + }, + new + { + Id = 5117, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Расширение ствола" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSectionType", 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("Order") + .HasColumnType("real") + .HasColumnName("order") + .HasComment("Порядок"); + + b.HasKey("Id"); + + b.ToTable("t_well_section_type", t => + { + t.HasComment("конструкция секции скважины"); + }); + + b.HasData( + new + { + Id = 1, + Caption = "Пилотный ствол", + Order = 4f + }, + new + { + Id = 2, + Caption = "Направление", + Order = 0f + }, + new + { + Id = 3, + Caption = "Кондуктор", + Order = 1f + }, + new + { + Id = 4, + Caption = "Эксплуатационная колонна", + Order = 3f + }, + new + { + Id = 5, + Caption = "Транспортный ствол", + Order = 5f + }, + new + { + Id = 6, + Caption = "Хвостовик", + Order = 6f + }, + new + { + Id = 7, + Caption = "Пилотный ствол 2", + Order = 4.1f + }, + new + { + Id = 8, + Caption = "Направление 2", + Order = 0.1f + }, + new + { + Id = 9, + Caption = "Кондуктор 2", + Order = 1.1f + }, + new + { + Id = 10, + Caption = "Эксплуатационная колонна 2", + Order = 3.1f + }, + new + { + Id = 11, + Caption = "Транспортный ствол 2", + Order = 5.1f + }, + new + { + Id = 12, + Caption = "Хвостовик 2", + Order = 6.1f + }, + new + { + Id = 13, + Caption = "Пилотный ствол 3", + Order = 4.2f + }, + new + { + Id = 14, + Caption = "Направление 3", + Order = 0.2f + }, + new + { + Id = 15, + Caption = "Кондуктор 3", + Order = 1.2f + }, + new + { + Id = 16, + Caption = "Эксплуатационная колонна 3", + Order = 3.2f + }, + new + { + Id = 17, + Caption = "Транспортный ствол 3", + Order = 5.2f + }, + new + { + Id = 18, + Caption = "Хвостовик 3", + Order = 6.2f + }, + new + { + Id = 19, + Caption = "Пилотный ствол 4", + Order = 4.3f + }, + new + { + Id = 20, + Caption = "Направление 4", + Order = 0.3f + }, + new + { + Id = 21, + Caption = "Кондуктор 4", + Order = 1.3f + }, + new + { + Id = 22, + Caption = "Эксплуатационная колонна 4", + Order = 3.3f + }, + new + { + Id = 23, + Caption = "Транспортный ствол 4", + Order = 5.3f + }, + new + { + Id = 24, + Caption = "Хвостовик 4", + Order = 6.3f + }, + new + { + Id = 25, + Caption = "Пилотный ствол 5", + Order = 4.4f + }, + new + { + Id = 26, + Caption = "Направление 5", + Order = 0.4f + }, + new + { + Id = 27, + Caption = "Кондуктор 5", + Order = 1.4f + }, + new + { + Id = 28, + Caption = "Эксплуатационная колонна 5", + Order = 3.4f + }, + new + { + Id = 29, + Caption = "Транспортный ствол 5", + Order = 5.4f + }, + new + { + Id = 30, + Caption = "Хвостовик 5", + Order = 6.4f + }, + new + { + Id = 31, + Caption = "Техническая колонна", + Order = 2f + }, + new + { + Id = 32, + Caption = "Техническая колонна 2", + Order = 2.1f + }, + new + { + Id = 33, + Caption = "Техническая колонна 3", + Order = 2.2f + }, + new + { + Id = 34, + Caption = "Хвостовик 6", + Order = 6.5f + }, + new + { + Id = 35, + Caption = "Хвостовик 7", + Order = 6.6f + }, + new + { + Id = 36, + Caption = "Хвостовик 8", + Order = 6.7f + }, + new + { + Id = 37, + Caption = "Хвостовик 9", + Order = 6.8f + }, + new + { + Id = 38, + Caption = "Хвостовик 10", + Order = 6.9f + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSections.WellSectionPlan", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + 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("IdSectionType") + .HasColumnType("integer") + .HasColumnName("id_section_type") + .HasComment("Тип секции"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user") + .HasComment("Id пользователя"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("InnerDiameter") + .HasColumnType("double precision") + .HasColumnName("inner_diameter") + .HasComment("Внутренний диаметр"); + + b.Property("LastUpdateDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_last_update") + .HasComment("Дата последнего обновления"); + + b.Property("OuterDiameter") + .HasColumnType("double precision") + .HasColumnName("outer_diameter") + .HasComment("Внешний диаметр"); + + b.HasKey("Id"); + + b.HasIndex("IdSectionType"); + + b.HasIndex("IdWell", "IdSectionType") + .IsUnique(); + + b.ToTable("t_well_section_plan"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellType", 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.HasKey("Id"); + + b.ToTable("t_well_type", t => + { + t.HasComment("конструкция скважины"); + }); + + b.HasData( + new + { + Id = 1, + Caption = "Наклонно-направленная" + }, + new + { + Id = 2, + Caption = "Горизонтальная" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record1", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Blkpos") + .HasColumnType("real") + .HasColumnName("BLKPOS"); + + b.Property("Chkp") + .HasColumnType("real") + .HasColumnName("CHKP"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptbitv") + .HasColumnType("real") + .HasColumnName("DEPTBITV"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptretm") + .HasColumnType("real") + .HasColumnName("DEPTRETM"); + + b.Property("Deptvert") + .HasColumnType("real") + .HasColumnName("DEPTVERT"); + + b.Property("Gasa") + .HasColumnType("real") + .HasColumnName("GASA"); + + b.Property("Hkla") + .HasColumnType("real") + .HasColumnName("HKLA"); + + b.Property("Hklx") + .HasColumnType("real") + .HasColumnName("HKLX"); + + b.Property("Lagstks") + .HasColumnType("smallint") + .HasColumnName("LAGSTKS"); + + b.Property("Mcia") + .HasColumnType("real") + .HasColumnName("MCIA"); + + b.Property("Mcoa") + .HasColumnType("real") + .HasColumnName("MCOA"); + + b.Property("Mdia") + .HasColumnType("real") + .HasColumnName("MDIA"); + + b.Property("Mdoa") + .HasColumnType("real") + .HasColumnName("MDOA"); + + b.Property("Mfia") + .HasColumnType("real") + .HasColumnName("MFIA"); + + b.Property("Mfoa") + .HasColumnType("real") + .HasColumnName("MFOA"); + + b.Property("Mfop") + .HasColumnType("smallint") + .HasColumnName("MFOP"); + + b.Property("Mtia") + .HasColumnType("real") + .HasColumnName("MTIA"); + + b.Property("Mtoa") + .HasColumnType("real") + .HasColumnName("MTOA"); + + b.Property("Ropa") + .HasColumnType("real") + .HasColumnName("ROPA"); + + b.Property("Rpma") + .HasColumnType("smallint") + .HasColumnName("RPMA"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Spm1") + .HasColumnType("smallint") + .HasColumnName("SPM1"); + + b.Property("Spm2") + .HasColumnType("smallint") + .HasColumnName("SPM2"); + + b.Property("Spm3") + .HasColumnType("smallint") + .HasColumnName("SPM3"); + + b.Property("Sppa") + .HasColumnType("real") + .HasColumnName("SPPA"); + + b.Property("Stkc") + .HasColumnType("integer") + .HasColumnName("STKC"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.Property("Torqa") + .HasColumnType("real") + .HasColumnName("TORQA"); + + b.Property("Torqx") + .HasColumnType("real") + .HasColumnName("TORQX"); + + b.Property("Tvolact") + .HasColumnType("real") + .HasColumnName("TVOLACT"); + + b.Property("Tvolcact") + .HasColumnType("real") + .HasColumnName("TVOLCACT"); + + b.Property("Woba") + .HasColumnType("real") + .HasColumnName("WOBA"); + + b.Property("Wobx") + .HasColumnType("real") + .HasColumnName("WOBX"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_1"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record50", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("DeptmeasGdpMc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_GDP_mc"); + + b.Property("DeptmeasMcrstat") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_MCRSTAT"); + + b.Property("DeptmeasRa33Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33_mc"); + + b.Property("DeptmeasRa33f2Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33F2_mc"); + + b.Property("DeptmeasRa33f4Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33F4_mc"); + + b.Property("DeptmeasRp33Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33_mc"); + + b.Property("DeptmeasRp33f2Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33F2_mc"); + + b.Property("DeptmeasRp33f4Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33F4_mc"); + + b.Property("DeptmeasSlvlMc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_SLVL_mc"); + + b.Property("GdpMc") + .HasColumnType("real") + .HasColumnName("GDP_mc"); + + b.Property("Mcrstat") + .HasColumnType("real") + .HasColumnName("MCRSTAT"); + + b.Property("Ra33Mc") + .HasColumnType("real") + .HasColumnName("RA33_mc"); + + b.Property("Ra33f2Mc") + .HasColumnType("real") + .HasColumnName("RA33F2_mc"); + + b.Property("Ra33f4Mc") + .HasColumnType("real") + .HasColumnName("RA33F4_mc"); + + b.Property("Rp33Mc") + .HasColumnType("real") + .HasColumnName("RP33_mc"); + + b.Property("Rp33f2Mc") + .HasColumnType("real") + .HasColumnName("RP33F2_mc"); + + b.Property("Rp33f4Mc") + .HasColumnType("real") + .HasColumnName("RP33F4_mc"); + + b.Property("SlvlMc") + .HasColumnType("real") + .HasColumnName("SLVL_mc"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_50"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record60", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Btot") + .HasColumnType("real") + .HasColumnName("Btot"); + + b.Property("Bx") + .HasColumnType("real") + .HasColumnName("Bx"); + + b.Property("By") + .HasColumnType("real") + .HasColumnName("By"); + + b.Property("Bz") + .HasColumnType("real") + .HasColumnName("Bz"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Gtot") + .HasColumnType("real") + .HasColumnName("Gtot"); + + b.Property("Gx") + .HasColumnType("real") + .HasColumnName("Gx"); + + b.Property("Gy") + .HasColumnType("real") + .HasColumnName("Gy"); + + b.Property("Gz") + .HasColumnType("real") + .HasColumnName("Gz"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_60"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record61", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Att06h") + .HasColumnType("real") + .HasColumnName("ATT06H"); + + b.Property("Att06l") + .HasColumnType("real") + .HasColumnName("ATT06L"); + + b.Property("Att10h") + .HasColumnType("real") + .HasColumnName("ATT10H"); + + b.Property("Att10l") + .HasColumnType("real") + .HasColumnName("ATT10L"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Phl1f1") + .HasColumnType("real") + .HasColumnName("PHL1F1"); + + b.Property("Phl1f2") + .HasColumnType("real") + .HasColumnName("PHL1F2"); + + b.Property("Phl2f1") + .HasColumnType("real") + .HasColumnName("PHL2F1"); + + b.Property("Phl2f2") + .HasColumnType("real") + .HasColumnName("PHL2F2"); + + b.Property("Status") + .HasColumnType("real") + .HasColumnName("Status"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_61"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record7", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptsvym") + .HasColumnType("real") + .HasColumnName("DEPTSVYM"); + + b.Property("Deptsvyv") + .HasColumnType("real") + .HasColumnName("DEPTSVYV"); + + b.Property("Passnum") + .HasColumnType("smallint") + .HasColumnName("PASSNUM"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Svyazc") + .HasColumnType("real") + .HasColumnName("SVYAZC"); + + b.Property("Svyazu") + .HasColumnType("real") + .HasColumnName("SVYAZU"); + + b.Property("Svydls") + .HasColumnType("real") + .HasColumnName("SVYDLS"); + + b.Property("Svyew") + .HasColumnType("real") + .HasColumnName("SVYEW"); + + b.Property("Svygtf") + .HasColumnType("real") + .HasColumnName("SVYGTF"); + + b.Property("Svyinc") + .HasColumnType("real") + .HasColumnName("SVYINC"); + + b.Property("Svymtf") + .HasColumnType("real") + .HasColumnName("SVYMTF"); + + b.Property("Svyns") + .HasColumnType("real") + .HasColumnName("SVYNS"); + + b.Property("Svytype") + .HasColumnType("text") + .HasColumnName("SVYTYPE"); + + b.Property("Svywalk") + .HasColumnType("real") + .HasColumnName("SVYWALK"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_7"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record8", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptbitv") + .HasColumnType("real") + .HasColumnName("DEPTBITV"); + + b.Property("Deptcalm") + .HasColumnType("real") + .HasColumnName("DEPTCALM"); + + b.Property("Deptcalv") + .HasColumnType("real") + .HasColumnName("DEPTCALV"); + + b.Property("Deptfdm") + .HasColumnType("real") + .HasColumnName("DEPTFDM"); + + b.Property("Deptfdv") + .HasColumnType("real") + .HasColumnName("DEPTFDV"); + + b.Property("Deptgr1m") + .HasColumnType("real") + .HasColumnName("DEPTGR1M"); + + b.Property("Deptgr1v") + .HasColumnType("real") + .HasColumnName("DEPTGR1V"); + + b.Property("Deptgr2m") + .HasColumnType("real") + .HasColumnName("DEPTGR2M"); + + b.Property("Deptgr2v") + .HasColumnType("real") + .HasColumnName("DEPTGR2V"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptp1m") + .HasColumnType("real") + .HasColumnName("DEPTP1M"); + + b.Property("Deptp1v") + .HasColumnType("real") + .HasColumnName("DEPTP1V"); + + b.Property("Deptp2m") + .HasColumnType("real") + .HasColumnName("DEPTP2M"); + + b.Property("Deptp2v") + .HasColumnType("real") + .HasColumnName("DEPTP2V"); + + b.Property("Deptrs1m") + .HasColumnType("real") + .HasColumnName("DEPTRS1M"); + + b.Property("Deptrs1v") + .HasColumnType("real") + .HasColumnName("DEPTRS1V"); + + b.Property("Deptrs2m") + .HasColumnType("real") + .HasColumnName("DEPTRS2M"); + + b.Property("Deptrs2v") + .HasColumnType("real") + .HasColumnName("DEPTRS2V"); + + b.Property("Deptvert") + .HasColumnType("real") + .HasColumnName("DEPTVERT"); + + b.Property("Mclp") + .HasColumnType("real") + .HasColumnName("MCLP"); + + b.Property("Mfd") + .HasColumnType("real") + .HasColumnName("MFD"); + + b.Property("Mffp") + .HasColumnType("real") + .HasColumnName("MFFP"); + + b.Property("Mfpp") + .HasColumnType("real") + .HasColumnName("MFPP"); + + b.Property("Mfrann") + .HasColumnType("real") + .HasColumnName("MFRANN"); + + b.Property("Mfrpipe") + .HasColumnType("real") + .HasColumnName("MFRPIPE"); + + b.Property("Mftann") + .HasColumnType("real") + .HasColumnName("MFTANN"); + + b.Property("Mftpipe") + .HasColumnType("real") + .HasColumnName("MFTPIPE"); + + b.Property("Mg1") + .HasColumnType("real") + .HasColumnName("MG1"); + + b.Property("Mg1c") + .HasColumnType("real") + .HasColumnName("MG1C"); + + b.Property("Mg2") + .HasColumnType("real") + .HasColumnName("MG2"); + + b.Property("Mg2c") + .HasColumnType("real") + .HasColumnName("MG2C"); + + b.Property("Mpo1") + .HasColumnType("real") + .HasColumnName("MPO1"); + + b.Property("Mpo2") + .HasColumnType("real") + .HasColumnName("MPO2"); + + b.Property("Mr1") + .HasColumnType("real") + .HasColumnName("MR1"); + + b.Property("Mr1c") + .HasColumnType("real") + .HasColumnName("MR1C"); + + b.Property("Mr2") + .HasColumnType("real") + .HasColumnName("MR2"); + + b.Property("Mr2c") + .HasColumnType("real") + .HasColumnName("MR2C"); + + b.Property("Passnum") + .HasColumnType("smallint") + .HasColumnName("PASSNUM"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Spare6") + .HasColumnType("real") + .HasColumnName("SPARE6"); + + b.Property("Spare7") + .HasColumnType("real") + .HasColumnName("SPARE7"); + + b.Property("Spare8") + .HasColumnType("real") + .HasColumnName("SPARE8"); + + b.Property("Spare9") + .HasColumnType("real") + .HasColumnName("SPARE9"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_8"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Cluster", b => + { + b.HasOne("AsbCloudDb.Model.Deposit", "Deposit") + .WithMany("Clusters") + .HasForeignKey("IdDeposit") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_cluster_t_deposit_id_fk"); + + b.Navigation("Deposit"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Company", b => + { + b.HasOne("AsbCloudDb.Model.CompanyType", "CompanyType") + .WithMany("Companies") + .HasForeignKey("IdCompanyType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("CompanyType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Contact", b => + { + b.HasOne("AsbCloudDb.Model.CompanyType", "CompanyType") + .WithMany("Contacts") + .HasForeignKey("IdCompanyType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("Contacts") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("CompanyType"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DailyReports.DailyReport", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DataSaubStat", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DetectedOperation", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillTest", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillingProgramPart", b => + { + b.HasOne("AsbCloudDb.Model.FileCategory", "FileCategory") + .WithMany() + .HasForeignKey("IdFileCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("DrillingProgramParts") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("FileCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Faq", b => + { + b.HasOne("AsbCloudDb.Model.User", "AuthorAnswer") + .WithMany() + .HasForeignKey("IdAuthorAnswer"); + + b.HasOne("AsbCloudDb.Model.User", "AuthorQuestion") + .WithMany() + .HasForeignKey("IdAuthorQuestion") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("AuthorAnswer"); + + b.Navigation("AuthorQuestion"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileInfo", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany("Files") + .HasForeignKey("IdAuthor"); + + b.HasOne("AsbCloudDb.Model.FileCategory", "FileCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("FileCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileMark", b => + { + b.HasOne("AsbCloudDb.Model.FileInfo", "FileInfo") + .WithMany("FileMarks") + .HasForeignKey("IdFile") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_file_mark_t_file_info_fk"); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany("FileMarks") + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_user_t_file_mark_fk"); + + b.Navigation("FileInfo"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemFloat", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemInt", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemString", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.HelpPage", b => + { + b.HasOne("AsbCloudDb.Model.FileCategory", "FileCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("FileCategory"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.LimitingParameter", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Manuals.Manual", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.FileCategory", "Category") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Manuals.ManualDirectory", "Directory") + .WithMany("Manuals") + .HasForeignKey("IdDirectory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Category"); + + b.Navigation("Directory"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Manuals.ManualDirectory", b => + { + b.HasOne("AsbCloudDb.Model.Manuals.ManualDirectory", "Parent") + .WithMany("Children") + .HasForeignKey("IdParent") + .OnDelete(DeleteBehavior.Cascade); + + b.Navigation("Parent"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Measure", b => + { + b.HasOne("AsbCloudDb.Model.MeasureCategory", "Category") + .WithMany("Measures") + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Category"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Notification", b => + { + b.HasOne("AsbCloudDb.Model.NotificationCategory", "NotificationCategory") + .WithMany("Notifications") + .HasForeignKey("IdNotificationCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("NotificationCategory"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.OperationValue", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdOperationCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAntiCrashRotation", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAntiCrashRotation", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAutoHoldTF", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAutoHoldTF", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDamper", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDamper", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDrillTest", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDrillTest", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanOscillation", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanOscillation", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanShockTest", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanShockTest", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanStaticMeasurementOutput", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanStaticMeasurementOutput", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanLoadCapacity", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanLoadCapacity", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanOscillationAngles", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanOscillationAngles", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanPositioningOffTheBottom", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanPositioningOffTheBottom", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingRotor", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingRotor", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingSlide", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingSlide", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRecordingStaticMeasurement", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRecordingStaticMeasurement", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRotor", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRotor", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSlide", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSlide", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingOffThePump", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict) + .HasConstraintName("FK_t_process_map_plan_operation_switching_off_the_pump_t_user~1"); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingOffThePump", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_t_process_map_plan_operation_switching_off_the_pump_t_well~1"); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingToTheMode", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingToTheMode", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanTFOrientation", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanTFOrientation", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => + { + b.HasOne("AsbCloudDb.Model.Company", "Company") + .WithMany("RelationCompaniesWells") + .HasForeignKey("IdCompany") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_relation_company_well_t_company_id_fk"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("RelationCompaniesWells") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_relation_company_well_t_well_id_fk"); + + b.Navigation("Company"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationContactWell", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany("RelationContactsWells") + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserDrillingProgramPart", b => + { + b.HasOne("AsbCloudDb.Model.DrillingProgramPart", "DrillingProgramPart") + .WithMany("RelatedUsers") + .HasForeignKey("IdDrillingProgramPart") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("DrillingProgramPart"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRolePermission", b => + { + b.HasOne("AsbCloudDb.Model.Permission", "Permission") + .WithMany("RelationUserRolePermissions") + .HasForeignKey("IdPermission") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "UserRole") + .WithMany("RelationUserRolePermissions") + .HasForeignKey("IdUserRole") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Permission"); + + b.Navigation("UserRole"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRoleUserRole", b => + { + b.HasOne("AsbCloudDb.Model.UserRole", "Role") + .WithMany("RelationUserRoleUserRoles") + .HasForeignKey("Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "IncludeRole") + .WithMany() + .HasForeignKey("IdInclude") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("IncludeRole"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserUserRole", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany("RelationUsersUserRoles") + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "UserRole") + .WithMany("RelationUsersUserRoles") + .HasForeignKey("IdUserRole") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + + b.Navigation("UserRole"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ReportProperty", b => + { + b.HasOne("AsbCloudDb.Model.FileInfo", "File") + .WithMany() + .HasForeignKey("IdFile") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("File"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Schedule", b => + { + b.HasOne("AsbCloudDb.Model.Driller", "Driller") + .WithMany("Schedule") + .HasForeignKey("IdDriller") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_schedule_t_driller_id_driller"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Driller"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.SetpointsRequest", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaub", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("DataSaub") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_data_saub_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSpin", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("DataSpin") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_data_spin_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryEvent", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Events") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_event_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryMessage", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Messages") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_messages_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryUser", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Users") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_user_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Trajectory.TrajectoryFact", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Trajectory.TrajectoryPlan", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.HasOne("AsbCloudDb.Model.Company", "Company") + .WithMany("Users") + .HasForeignKey("IdCompany") + .OnDelete(DeleteBehavior.SetNull) + .IsRequired() + .HasConstraintName("t_user_t_company_id_fk"); + + b.Navigation("Company"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserSetting", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", b => + { + b.HasOne("AsbCloudDb.Model.Cluster", "Cluster") + .WithMany("Wells") + .HasForeignKey("IdCluster") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_t_cluster_id_fk"); + + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithOne("Well") + .HasForeignKey("AsbCloudDb.Model.Well", "IdTelemetry") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("t_well_t_telemetry_id_fk"); + + b.HasOne("AsbCloudDb.Model.WellType", "WellType") + .WithMany("Wells") + .HasForeignKey("IdWellType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Cluster"); + + b.Navigation("Telemetry"); + + b.Navigation("WellType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellComposite", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("WellComposites") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_t_well_id_fk"); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany("WellComposites") + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_t_well_section_type_id_fk"); + + b.HasOne("AsbCloudDb.Model.Well", "WellSrc") + .WithMany("WellCompositeSrcs") + .HasForeignKey("IdWellSrc") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_src_t_well_id_fk"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + + b.Navigation("WellSrc"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellFinalDocument", b => + { + b.HasOne("AsbCloudDb.Model.FileCategory", "Category") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Category"); + + b.Navigation("User"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperation", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellOperation", "OperationPlan") + .WithMany() + .HasForeignKey("IdPlan") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("WellOperations") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany("WellOperations") + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("OperationPlan"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperationCategory", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "Parent") + .WithMany() + .HasForeignKey("IdParent"); + + b.Navigation("Parent"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSections.WellSectionPlan", b => + { + b.HasOne("AsbCloudDb.Model.WellSectionType", "SectionType") + .WithMany() + .HasForeignKey("IdSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("SectionType"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record1", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record1", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record50", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record50", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record60", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record60", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record61", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record61", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record7", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record7", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record8", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record8", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Cluster", b => + { + b.Navigation("Wells"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Company", b => + { + b.Navigation("RelationCompaniesWells"); + + b.Navigation("Users"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.CompanyType", b => + { + b.Navigation("Companies"); + + b.Navigation("Contacts"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Deposit", b => + { + b.Navigation("Clusters"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Driller", b => + { + b.Navigation("Schedule"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillingProgramPart", b => + { + b.Navigation("RelatedUsers"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileInfo", b => + { + b.Navigation("FileMarks"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Manuals.ManualDirectory", b => + { + b.Navigation("Children"); + + b.Navigation("Manuals"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.MeasureCategory", b => + { + b.Navigation("Measures"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.NotificationCategory", b => + { + b.Navigation("Notifications"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Permission", b => + { + b.Navigation("RelationUserRolePermissions"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Telemetry", b => + { + b.Navigation("DataSaub"); + + b.Navigation("DataSpin"); + + b.Navigation("Events"); + + b.Navigation("Messages"); + + b.Navigation("Users"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.Navigation("FileMarks"); + + b.Navigation("Files"); + + b.Navigation("RelationContactsWells"); + + b.Navigation("RelationUsersUserRoles"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserRole", b => + { + b.Navigation("RelationUserRolePermissions"); + + b.Navigation("RelationUserRoleUserRoles"); + + b.Navigation("RelationUsersUserRoles"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", b => + { + b.Navigation("Contacts"); + + b.Navigation("DrillingProgramParts"); + + b.Navigation("RelationCompaniesWells"); + + b.Navigation("WellCompositeSrcs"); + + b.Navigation("WellComposites"); + + b.Navigation("WellOperations"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSectionType", b => + { + b.Navigation("WellComposites"); + + b.Navigation("WellOperations"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellType", b => + { + b.Navigation("Wells"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/AsbCloudDb/Migrations/20240701104026_Remove_some_processMapsPlan.cs b/AsbCloudDb/Migrations/20240701104026_Remove_some_processMapsPlan.cs new file mode 100644 index 00000000..510d2703 --- /dev/null +++ b/AsbCloudDb/Migrations/20240701104026_Remove_some_processMapsPlan.cs @@ -0,0 +1,438 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; + +#nullable disable + +namespace AsbCloudDb.Migrations +{ + /// + public partial class Remove_some_processMapsPlan : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "t_process_map_plan_ream"); + + migrationBuilder.DropTable( + name: "t_process_map_plan_rotor_lowering_bit"); + + migrationBuilder.DropTable( + name: "t_process_map_plan_rotor_rpm_acceleration"); + + migrationBuilder.DropTable( + name: "t_process_map_plan_slide_lowering_bit"); + + migrationBuilder.DropTable( + name: "t_process_map_plan_updating_noload_parameters"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "t_process_map_plan_ream", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания"), + pressure = table.Column(type: "double precision", nullable: false, comment: "Давление, атм"), + repeats = table.Column(type: "double precision", nullable: false, comment: "Количество повторений"), + setpoint_drag = table.Column(type: "double precision", nullable: false, comment: "Уставка зятяжки, т"), + setpoint_tight = table.Column(type: "double precision", nullable: false, comment: "Уставка посадки, т"), + speed_downward = table.Column(type: "double precision", nullable: false, comment: "Скорость спуска, м/ч"), + speed_upward = table.Column(type: "double precision", nullable: false, comment: "Скорость подъёма, м/ч"), + spin_downward = table.Column(type: "double precision", nullable: false, comment: "Вращение при движении вниз, об/мин"), + spin_upward = table.Column(type: "double precision", nullable: false, comment: "Вращение при движении вверх, об/мин"), + torque = table.Column(type: "double precision", nullable: false, comment: "Момент, кН*м") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_plan_ream", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_plan_ream_t_user_id_author", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_ream_t_user_id_editor", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_plan_ream_t_well_id_well", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_ream_t_well_section_type_id_wellsection_~", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "РТК проработка скважины"); + + migrationBuilder.CreateTable( + name: "t_process_map_plan_rotor_lowering_bit", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + differential_pressure = table.Column(type: "double precision", nullable: false, comment: "Перепад давления уставка, атм."), + flow_rate_down = table.Column(type: "double precision", nullable: false, comment: "Расход вниз, л/с."), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + note = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false, comment: "Примечание"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания"), + pressure_max = table.Column(type: "double precision", nullable: false, comment: "Максимально допустимое давление, атм."), + rop_down = table.Column(type: "double precision", nullable: false, comment: "Скорость вниз, м/ч."), + rpm_down = table.Column(type: "double precision", nullable: false, comment: "Обороты вниз, об/мин."), + slacking_off = table.Column(type: "double precision", nullable: false, comment: "Посадка, т."), + torque_max = table.Column(type: "double precision", nullable: false, comment: "Максимально допустимый момент, кН*м.") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_plan_rotor_lowering_bit", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_plan_rotor_lowering_bit_t_process_map_plan_ro~", + column: x => x.id_previous, + principalTable: "t_process_map_plan_rotor_lowering_bit", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_plan_rotor_lowering_bit_t_user_id_author", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_rotor_lowering_bit_t_user_id_editor", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_rotor_lowering_bit_t_well_id_well", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_rotor_lowering_bit_t_well_section_type_i~", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "РТК подход к забою в роторе"); + + migrationBuilder.CreateTable( + name: "t_process_map_plan_rotor_rpm_acceleration", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + note = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false, comment: "Примечание"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания"), + rpm = table.Column(type: "double precision", nullable: false, comment: "Обороты на ВСП уставка, об/мин."), + rpm_max = table.Column(type: "double precision", nullable: false, comment: "Обороты на ВСП ограничение, об/мин."), + top_drive_torque = table.Column(type: "double precision", nullable: false, comment: "Момент на ВСП уставка, кН*м."), + top_drive_torque_max = table.Column(type: "double precision", nullable: false, comment: "Момент на ВСП ограничение, кН*м.") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_plan_rotor_rpm_acceleration", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_plan_rotor_rpm_acceleration_t_process_map_pla~", + column: x => x.id_previous, + principalTable: "t_process_map_plan_rotor_rpm_acceleration", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_plan_rotor_rpm_acceleration_t_user_id_author", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_rotor_rpm_acceleration_t_user_id_editor", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_rotor_rpm_acceleration_t_well_id_well", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_rotor_rpm_acceleration_t_well_section_ty~", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "Выход на обороты перед ротором"); + + migrationBuilder.CreateTable( + name: "t_process_map_plan_slide_lowering_bit", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + differential_pressure = table.Column(type: "double precision", nullable: false, comment: "Перепад давления уставка, атм."), + flow_rate_down = table.Column(type: "double precision", nullable: false, comment: "Расход вниз, л/с."), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + note = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false, comment: "Примечание"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания"), + pressure_max = table.Column(type: "double precision", nullable: false, comment: "Максимально допустимое давление, атм."), + rop_down = table.Column(type: "double precision", nullable: false, comment: "Скорость вниз, м/ч.") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_plan_slide_lowering_bit", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_plan_slide_lowering_bit_t_process_map_plan_sl~", + column: x => x.id_previous, + principalTable: "t_process_map_plan_slide_lowering_bit", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_plan_slide_lowering_bit_t_user_id_author", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_slide_lowering_bit_t_user_id_editor", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_slide_lowering_bit_t_well_id_well", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_slide_lowering_bit_t_well_section_type_i~", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "РТК подход к забою в слайде"); + + migrationBuilder.CreateTable( + name: "t_process_map_plan_updating_noload_parameters", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + id_decline_socket_column = table.Column(type: "boolean", nullable: false, comment: "СПУСК ОК Да/Нет"), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + note = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false, comment: "Примечание"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_plan_updating_noload_parameters", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_plan_updating_noload_parameters_t_process_map~", + column: x => x.id_previous, + principalTable: "t_process_map_plan_updating_noload_parameters", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_plan_updating_noload_parameters_t_user_id_aut~", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_updating_noload_parameters_t_user_id_edi~", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_updating_noload_parameters_t_well_id_well", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_updating_noload_parameters_t_well_sectio~", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "Обновление холостого хода"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_ream_id_author", + table: "t_process_map_plan_ream", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_ream_id_editor", + table: "t_process_map_plan_ream", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_ream_id_well", + table: "t_process_map_plan_ream", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_ream_id_wellsection_type", + table: "t_process_map_plan_ream", + column: "id_wellsection_type"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_rotor_lowering_bit_id_author", + table: "t_process_map_plan_rotor_lowering_bit", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_rotor_lowering_bit_id_editor", + table: "t_process_map_plan_rotor_lowering_bit", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_rotor_lowering_bit_id_previous", + table: "t_process_map_plan_rotor_lowering_bit", + column: "id_previous"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_rotor_lowering_bit_id_well", + table: "t_process_map_plan_rotor_lowering_bit", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_rotor_lowering_bit_id_wellsection_type", + table: "t_process_map_plan_rotor_lowering_bit", + column: "id_wellsection_type"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_rotor_rpm_acceleration_id_author", + table: "t_process_map_plan_rotor_rpm_acceleration", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_rotor_rpm_acceleration_id_editor", + table: "t_process_map_plan_rotor_rpm_acceleration", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_rotor_rpm_acceleration_id_previous", + table: "t_process_map_plan_rotor_rpm_acceleration", + column: "id_previous"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_rotor_rpm_acceleration_id_well", + table: "t_process_map_plan_rotor_rpm_acceleration", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_rotor_rpm_acceleration_id_wellsection_ty~", + table: "t_process_map_plan_rotor_rpm_acceleration", + column: "id_wellsection_type"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_slide_lowering_bit_id_author", + table: "t_process_map_plan_slide_lowering_bit", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_slide_lowering_bit_id_editor", + table: "t_process_map_plan_slide_lowering_bit", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_slide_lowering_bit_id_previous", + table: "t_process_map_plan_slide_lowering_bit", + column: "id_previous"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_slide_lowering_bit_id_well", + table: "t_process_map_plan_slide_lowering_bit", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_slide_lowering_bit_id_wellsection_type", + table: "t_process_map_plan_slide_lowering_bit", + column: "id_wellsection_type"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_updating_noload_parameters_id_author", + table: "t_process_map_plan_updating_noload_parameters", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_updating_noload_parameters_id_editor", + table: "t_process_map_plan_updating_noload_parameters", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_updating_noload_parameters_id_previous", + table: "t_process_map_plan_updating_noload_parameters", + column: "id_previous"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_updating_noload_parameters_id_well", + table: "t_process_map_plan_updating_noload_parameters", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_updating_noload_parameters_id_wellsectio~", + table: "t_process_map_plan_updating_noload_parameters", + column: "id_wellsection_type"); + } + } +} diff --git a/AsbCloudDb/Migrations/20240718044823_Update_Tables_ProcessMapOperationsAndFunctions2.Designer.cs b/AsbCloudDb/Migrations/20240718044823_Update_Tables_ProcessMapOperationsAndFunctions2.Designer.cs new file mode 100644 index 00000000..3a00e77c --- /dev/null +++ b/AsbCloudDb/Migrations/20240718044823_Update_Tables_ProcessMapOperationsAndFunctions2.Designer.cs @@ -0,0 +1,12236 @@ +// +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("20240718044823_Update_Tables_ProcessMapOperationsAndFunctions2")] + partial class Update_Tables_ProcessMapOperationsAndFunctions2 + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .UseCollation("Russian_Russia.1251") + .HasAnnotation("ProductVersion", "8.0.4") + .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", t => + { + t.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") + .HasColumnName("is_contact"); + + b.Property("Order") + .HasColumnType("integer") + .HasColumnName("order"); + + b.HasKey("Id"); + + b.ToTable("t_company_type"); + + b.HasData( + new + { + Id = 1, + Caption = "Недропользователь", + IsContact = true, + Order = 3 + }, + new + { + Id = 2, + Caption = "Буровой подрядчик", + IsContact = true, + Order = 2 + }, + new + { + Id = 3, + Caption = "Сервис автоматизации бурения", + IsContact = true, + Order = 0 + }, + new + { + Id = 4, + Caption = "Сервис по ГТИ", + IsContact = true, + Order = 6 + }, + new + { + Id = 5, + Caption = "Растворный сервис", + IsContact = true, + Order = 4 + }, + new + { + Id = 6, + Caption = "Сервис по ННБ", + IsContact = true, + Order = 5 + }, + new + { + Id = 7, + Caption = "Служба супервайзинга", + IsContact = false, + Order = 1 + }, + new + { + Id = 9, + Caption = "Сервис по цементированию", + IsContact = true, + Order = 7 + }, + new + { + Id = 11, + Caption = "Дизельный сервис", + IsContact = false, + Order = 9 + }, + new + { + Id = 12, + Caption = "Сервис по обслуживанию верхних силовых приводов", + IsContact = true, + Order = 8 + }); + }); + + 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") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("email") + .HasComment("email"); + + b.Property("FullName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("full_name") + .HasComment("ФИО"); + + b.Property("IdCompanyType") + .HasMaxLength(255) + .HasColumnType("integer") + .HasColumnName("id_company_type") + .HasComment("вид деятельности"); + + b.Property("IdWell") + .HasMaxLength(255) + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("ключ скважины"); + + b.Property("Phone") + .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.HasIndex("IdWell"); + + b.ToTable("t_contact", t => + { + t.HasComment("Контакты"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DailyReports.DailyReport", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Date") + .HasColumnType("date") + .HasColumnName("date") + .HasComment("Дата формирования отчёта"); + + b.Property("DateLastUpdate") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_last_update") + .HasComment("Дата последнего обновления"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("ID скважины"); + + b.Property("SignBlock") + .HasColumnType("jsonb") + .HasColumnName("sign_block") + .HasComment("Подпись"); + + b.Property("SubsystemBlock") + .HasColumnType("jsonb") + .HasColumnName("subsystem_block") + .HasComment("Наработкой подсистем"); + + b.Property("TimeBalanceBlock") + .HasColumnType("jsonb") + .HasColumnName("time_balance_block") + .HasComment("Баланс времени"); + + b.HasKey("Id"); + + b.HasIndex("IdWell", "Date") + .IsUnique(); + + b.ToTable("t_daily_report", t => + { + t.HasComment("Ежедневные отчёты"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DataSaubStat", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AxialLoad") + .HasColumnType("double precision") + .HasColumnName("axial_load") + .HasComment("Фактическая нагрузка"); + + b.Property("AxialLoadLimitMax") + .HasColumnType("double precision") + .HasColumnName("axial_load_limit_max") + .HasComment("Максимально допустимая нагрузка"); + + b.Property("AxialLoadSp") + .HasColumnType("double precision") + .HasColumnName("axial_load_sp") + .HasComment("Ограничение факт. нагрузки"); + + b.Property("BlockSpeedSp") + .HasColumnType("double precision") + .HasColumnName("block_speed_sp") + .HasComment("Ограничение скорости блока"); + + 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("EnabledSubsystems") + .HasColumnType("integer") + .HasColumnName("enabled_subsystems") + .HasComment("Флаги подсистем"); + + b.Property("Flow") + .HasColumnType("double precision") + .HasColumnName("flow") + .HasComment("Фактический расход"); + + b.Property("HasOscillation") + .HasColumnType("boolean") + .HasColumnName("has_oscillation") + .HasComment("Наличие или отсутствие осцилляции"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category") + .HasComment("Название автоопределённой операции"); + + b.Property("IdFeedRegulator") + .HasColumnType("smallint") + .HasColumnName("id_feed_regulator") + .HasComment("Работа при достижении ограничения"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry") + .HasComment("Ключ телеметрии"); + + b.Property("Pressure") + .HasColumnType("double precision") + .HasColumnName("pressure") + .HasComment("Давление"); + + b.Property("PressureIdle") + .HasColumnType("double precision") + .HasColumnName("pressure_idle") + .HasComment("Давление холостого хода"); + + b.Property("PressureSp") + .HasColumnType("double precision") + .HasColumnName("pressure_sp") + .HasComment("Ограничение фактического давления"); + + b.Property("RotorSpeed") + .HasColumnType("double precision") + .HasColumnName("rotor_speed") + .HasComment("Фактическая скорость оборотов ВСП"); + + b.Property("RotorTorque") + .HasColumnType("double precision") + .HasColumnName("rotor_torque") + .HasComment("Фактический момент"); + + b.Property("RotorTorqueLimitMax") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_limit_max") + .HasComment("Максимально допустимый момент"); + + b.Property("RotorTorqueSp") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_sp") + .HasComment("Ограничение факт. момента"); + + b.Property("Speed") + .HasColumnType("double precision") + .HasColumnName("speed") + .HasComment("Скорость бурения"); + + b.HasKey("Id"); + + b.HasIndex("IdCategory"); + + b.HasIndex("IdTelemetry"); + + b.ToTable("t_data_saub_stat", t => + { + t.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", t => + { + t.HasComment("Месторождение"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DetectedOperation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + 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("EnabledSubsystems") + .HasColumnType("integer") + .HasColumnName("enabled_subsystems") + .HasComment("флаги включенных подсистем"); + + b.Property("ExtraData") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("extra_data") + .HasComment("доп. инфо по операции"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category") + .HasComment("Id категории операции"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .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", t => + { + t.HasComment("автоматически определенные операции по телеметрии"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillTest", b => + { + b.Property("Id") + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry") + .HasComment("Идентификатор телеметрии"); + + b.Property("DepthStart") + .HasColumnType("real") + .HasColumnName("depthStart") + .HasComment("Глубина начала"); + + b.Property("Params") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("t_drill_test_params") + .HasComment("Параметры записи drill test"); + + b.Property("TimeStampStart") + .HasColumnType("timestamp with time zone") + .HasColumnName("timestamp_start") + .HasComment("Время начала"); + + b.HasKey("Id", "IdTelemetry"); + + b.HasIndex("IdTelemetry"); + + b.ToTable("t_drill_test", t => + { + t.HasComment("Drill_test"); + }); + }); + + 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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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 = 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" + }, + new + { + Id = 528, + Description = "Разрешение на удаление контакта", + Name = "WellContact.delete" + }, + new + { + Id = 530, + Description = "Разрешение на редактирование плановой конструкции скважины", + Name = "WellSectionPlan.edit" + }, + new + { + Id = 531, + Description = "Разрешение на удаление плановой конструкции скважины", + Name = "WellSectionPlan.delete" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAntiCrashRotation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("TopDriveRpmMin") + .HasColumnType("double precision") + .HasColumnName("top_drive_rpm_min") + .HasComment("Минимальные обороты ВСП, об/мин"); + + b.Property("TopDriveStartMinFlowRate") + .HasColumnType("double precision") + .HasColumnName("top_drive_start_min_flow_rate") + .HasComment("Минимальный расход для запуска оборотов ВСП, л/сек"); + + b.Property("TopDriveTorqueMax") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque_max") + .HasComment("Максимально допустимый момент на ВСП при противоаварийном вращении, кН*м"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_anti_crash_rotation", t => + { + t.HasComment("Противоаварийное вращение"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAutoHoldTF", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("ZenithAngle") + .HasColumnType("double precision") + .HasColumnName("zenit_angle") + .HasComment("Зенитный угол, градусы"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_auto_hold_tf", t => + { + t.HasComment("Автоудержание TF"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDamper", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("StickSlip") + .HasColumnType("double precision") + .HasColumnName("stick_slip") + .HasComment("StickSlip"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_functions_damper", t => + { + t.HasComment("Демпфер"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDrillTest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("LengthStep") + .HasColumnType("double precision") + .HasColumnName("length_step") + .HasComment("Величина проходки шага, м."); + + b.Property("Note") + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("RpmMin") + .HasColumnType("double precision") + .HasColumnName("rpm_min") + .HasComment("Минимальные обороты на ВСП, об/мин."); + + b.Property("RpmStepsCount") + .HasColumnType("integer") + .HasColumnName("rpm_steps_count") + .HasComment("Количество шагов оборотов на ВСП, об/мин."); + + b.Property("WeightOnBitMin") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_min") + .HasComment("Нагрузка минимальная, т"); + + b.Property("WeightOnBitStepsCount") + .HasColumnType("integer") + .HasColumnName("weight_on_bit_steps_count") + .HasComment("Количество шагов по нагрузке"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_drilltest", t => + { + t.HasComment("DrillTest"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanOscillation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Mode") + .HasColumnType("integer") + .HasColumnName("mode") + .HasComment("Режим Авто/Руч"); + + b.Property("Note") + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("OptimalOscillationAngle") + .HasColumnType("double precision") + .HasColumnName("optimal_oscillation_angle") + .HasComment("Оптимальный угол осцилляции, градусы"); + + b.Property("RpmLeft") + .HasColumnType("double precision") + .HasColumnName("Rpm_left") + .HasComment("Скорость влево, об/мин"); + + b.Property("RpmRight") + .HasColumnType("double precision") + .HasColumnName("Rpm_right") + .HasComment("Скорость вправо, об/мин"); + + b.Property("TorqueMaxLeft") + .HasColumnType("double precision") + .HasColumnName("torque_max_left") + .HasComment("Ограничение момента влево, кН*м"); + + b.Property("TorqueMaxRight") + .HasColumnType("double precision") + .HasColumnName("torque_max_right") + .HasComment("Ограничение момента вправо, кН*м"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_oscillation", t => + { + t.HasComment("Осцилляция"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanShockTest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AxialVibrations") + .HasColumnType("double precision") + .HasColumnName("axial_vibrations") + .HasComment("Осевые вибрации"); + + b.Property("CombinedVibrations") + .HasColumnType("double precision") + .HasColumnName("combined_vibrations") + .HasComment("Комбинированные вибрации"); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("RpmMin") + .HasColumnType("double precision") + .HasColumnName("rpm_min") + .HasComment("Минимальные обороты на ВСП, об/мин."); + + b.Property("StickSlip") + .HasColumnType("double precision") + .HasColumnName("stick_slip") + .HasComment("stickSlip"); + + b.Property("WeightOnBitMin") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_min") + .HasComment("Нагрузка минимальная, т"); + + b.Property("Whirl") + .HasColumnType("double precision") + .HasColumnName("whirl") + .HasComment("Whirl"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_shock_test", t => + { + t.HasComment("ShockTest"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanStaticMeasurementOutput", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("SignalWaitingTime") + .HasColumnType("double precision") + .HasColumnName("signal_waiting_time") + .HasComment("Время ожидания выхода сигнала с ТМС, сек."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_static_measurement_output", t => + { + t.HasComment("Выход статического замера"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanLoadCapacity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressureMin") + .HasColumnType("double precision") + .HasColumnName("differential_pressure_min") + .HasComment("Перепад давления минимальный, атм"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("TimeLoadCapacityMin") + .HasColumnType("double precision") + .HasColumnName("time_load_capacity_min") + .HasComment("Время выработки минимальное, сек"); + + b.Property("WeightOnBitMin") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_min") + .HasComment("Нагрузка минимальная, т"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_load_capacity", t => + { + t.HasComment("РТК выработка нагрузки"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanOscillationAngles", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("Rpm") + .HasColumnType("double precision") + .HasColumnName("rpm") + .HasComment("Обороты на ВСП, об/мин., Уставка"); + + b.Property("RpmMax") + .HasColumnType("double precision") + .HasColumnName("rpm_max") + .HasComment("Обороты на ВСП, об/мин., Ограничение"); + + b.Property("TopDriveTorque") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque") + .HasComment("Момент на ВСП, кН*м., Уставка"); + + b.Property("TopDriveTorqueMax") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque_max") + .HasComment("Момент на ВСП, кН*м., Ограничение"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_operation_oscillation_angels", t => + { + t.HasComment("Определение углов осцилляции"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanPositioningOffTheBottom", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления уставка, атм."); + + b.Property("FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("flow_rate_down") + .HasComment("Расход вниз, л/с."); + + b.Property("FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("flow_rate_up") + .HasComment("Расход вверх, л/с."); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("RopDown") + .HasColumnType("double precision") + .HasColumnName("rop_down") + .HasComment("Скорость вниз, м/ч."); + + b.Property("RopUp") + .HasColumnType("double precision") + .HasColumnName("rop_up") + .HasComment("Скорость вверх, м/ч."); + + b.Property("RpmDown") + .HasColumnType("double precision") + .HasColumnName("rpm_down") + .HasComment("Обороты вниз, об/мин."); + + b.Property("RpmUp") + .HasColumnType("double precision") + .HasColumnName("rpm_up") + .HasComment("Обороты вверх, об/мин."); + + b.Property("SlackingOff") + .HasColumnType("double precision") + .HasColumnName("slacking_off") + .HasComment("Посадка, т."); + + b.Property("StopOffTheBottom") + .HasColumnType("double precision") + .HasColumnName("stop_off_the_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Tight") + .HasColumnType("double precision") + .HasColumnName("tight") + .HasComment("Затяжка, т."); + + b.Property("TorqueMax") + .HasColumnType("double precision") + .HasColumnName("torque_max") + .HasComment("Максимально допустимый момент, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_positioning_off_the_bottom", t => + { + t.HasComment("Позиционирование над забоем"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingRotor", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления уставка, атм."); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("Reaming1FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_flow_rate_down") + .HasComment("Проработка 1, Расход, л/с., Вниз"); + + b.Property("Reaming1FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_flow_rate_up") + .HasComment("Проработка 1, Расход, л/с., Вверх"); + + b.Property("Reaming1Interval") + .HasColumnType("double precision") + .HasColumnName("reaming1_interval") + .HasComment("Проработка 1, Интервал проработки, м."); + + b.Property("Reaming1RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("reaming1_repetitions_count") + .HasComment("Проработка 1. Количество повторений, шт."); + + b.Property("Reaming1RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_rop_down") + .HasComment("Проработка 1, Скорость, м/ч., Вниз"); + + b.Property("Reaming1RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_rop_up") + .HasComment("Проработка 1. Скорость вверх, м/ч."); + + b.Property("Reaming1RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_rpm_down") + .HasComment("Проработка 1, Обороты, об/мин., Вниз"); + + b.Property("Reaming1RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_rpm_up") + .HasComment("Проработка 1, Обороты, об/мин., Вверх"); + + b.Property("Reaming1StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming1_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Reaming2FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_flow_rate_down") + .HasComment("Проработка 2, Расход, л/с., Вниз"); + + b.Property("Reaming2FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_flow_rate_up") + .HasComment("Проработка 2, Расход, л/с., Вверх"); + + b.Property("Reaming2Interval") + .HasColumnType("double precision") + .HasColumnName("reaming2_interval") + .HasComment("Проработка 2, Интервал проработки, м."); + + b.Property("Reaming2RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("reaming2_repetitions_count") + .HasComment("Проработка 2, Количество повторений, шт."); + + b.Property("Reaming2RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_rop_down") + .HasComment("Проработка 2, Скорость, м/ч., Вниз"); + + b.Property("Reaming2RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_rop_up") + .HasComment("Проработка 2, Скорость, м/ч., Вверх"); + + b.Property("Reaming2RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_rpm_down") + .HasComment("Проработка 2, Обороты, об/мин., Вниз"); + + b.Property("Reaming2RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_rpm_up") + .HasComment("Проработка 2, Обороты, об/мин., Вверх"); + + b.Property("Reaming2StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming2_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Reaming3FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_flow_rate_down") + .HasComment("Проработка 3, Расход, л/с., Вниз"); + + b.Property("Reaming3FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_flow_rate_up") + .HasComment("Проработка 3, Расход, л/с., Вверх"); + + b.Property("Reaming3Interval") + .HasColumnType("double precision") + .HasColumnName("reaming3_interval") + .HasComment("Проработка 3, Интервал проработки, м."); + + b.Property("Reaming3RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("reaming3_repetitions_count") + .HasComment("Проработка 3, Количество повторений, шт."); + + b.Property("Reaming3RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_rop_down") + .HasComment("Проработка 3, Скорость, м/ч., Вниз"); + + b.Property("Reaming3RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_rop_up") + .HasComment("Проработка 3, Скорость, м/ч., Вверх"); + + b.Property("Reaming3RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_rpm_down") + .HasComment("Проработка 3, Обороты, об/мин., Вниз"); + + b.Property("Reaming3RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_rpm_up") + .HasComment("Проработка 3, Обороты, об/мин., Вверх"); + + b.Property("Reaming3StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming3_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("SlackingOff") + .HasColumnType("double precision") + .HasColumnName("slacking_off") + .HasComment("Посадка, т."); + + b.Property("Tight") + .HasColumnType("double precision") + .HasColumnName("tight") + .HasComment("Затяжка, т."); + + b.Property("TorqueMax") + .HasColumnType("double precision") + .HasColumnName("torque_max") + .HasComment("Максимально допустимый момент, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_operation_reaming_rotor", t => + { + t.HasComment("РТК проработка ротор"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingSlide", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления уставка, атм."); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("Reaming1FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_flow_rate_down") + .HasComment("Проработка 1, Расход, л/с., Вниз"); + + b.Property("Reaming1FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_flow_rate_up") + .HasComment("Проработка 1, Расход, л/с., Вверх"); + + b.Property("Reaming1Interval") + .HasColumnType("double precision") + .HasColumnName("reaming1_interval") + .HasComment("Проработка 1, Интервал проработки, м."); + + b.Property("Reaming1RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("reaming1_repetitions_count") + .HasComment("Проработка 1. Количество повторений, шт."); + + b.Property("Reaming1RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_rop_down") + .HasComment("Проработка 1. Скорость вниз, м/ч."); + + b.Property("Reaming1RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_rop_up") + .HasComment("Проработка 1. Скорость вверх, м/ч."); + + b.Property("Reaming1RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_rpm_down") + .HasComment("Проработка 1, Обороты, об/мин., Вниз"); + + b.Property("Reaming1RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_rpm_up") + .HasComment("Проработка 1, Обороты, об/мин., Вверх"); + + b.Property("Reaming1StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming1_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Reaming2FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_flow_rate_down") + .HasComment("Проработка 2, Расход, л/с., Вниз"); + + b.Property("Reaming2FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_flow_rate_up") + .HasComment("Проработка 2, Расход, л/с., Вверх"); + + b.Property("Reaming2Interval") + .HasColumnType("double precision") + .HasColumnName("reaming2_interval") + .HasComment("Проработка 2, Интервал проработки, м."); + + b.Property("Reaming2RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("reaming2_repetitions_count") + .HasComment("Проработка 2, Количество повторений, шт."); + + b.Property("Reaming2RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_rop_down") + .HasComment("Проработка 2, Скорость, м/ч., Вниз"); + + b.Property("Reaming2RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_rop_up") + .HasComment("Проработка 2, Скорость, м/ч., Вверх"); + + b.Property("Reaming2RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_rpm_down") + .HasComment("Проработка 2, Обороты, об/мин., Вниз"); + + b.Property("Reaming2RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_rpm_up") + .HasComment("Проработка 2, Обороты, об/мин., Вверх"); + + b.Property("Reaming2StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming2_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Reaming3FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_flow_rate_down") + .HasComment("Проработка 3, Расход, л/с., Вниз"); + + b.Property("Reaming3FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_flow_rate_up") + .HasComment("Проработка 3, Расход, л/с., Вверх"); + + b.Property("Reaming3Interval") + .HasColumnType("double precision") + .HasColumnName("reaming3_interval") + .HasComment("Проработка 3, Интервал проработки, м."); + + b.Property("Reaming3RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("reaming3_repetitions_count") + .HasComment("Проработка 3, Количество повторений, шт."); + + b.Property("Reaming3RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_rop_down") + .HasComment("Проработка 3, Скорость, м/ч., Вниз"); + + b.Property("Reaming3RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_rop_up") + .HasComment("Проработка 3, Скорость, м/ч., Вверх"); + + b.Property("Reaming3RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_rpm_down") + .HasComment("Проработка 3, Обороты, об/мин., Вниз"); + + b.Property("Reaming3RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_rpm_up") + .HasComment("Проработка 3, Обороты, об/мин., Вверх"); + + b.Property("Reaming3StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming3_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("SlackingOff") + .HasColumnType("double precision") + .HasColumnName("slacking_off") + .HasComment("Посадка, т."); + + b.Property("Tight") + .HasColumnType("double precision") + .HasColumnName("tight") + .HasComment("Затяжка, т."); + + b.Property("TorqueMax") + .HasColumnType("double precision") + .HasColumnName("torque_max") + .HasComment("Максимально допустимый момент, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_reaming_slide", t => + { + t.HasComment("РТК проработка слайд"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRecordingStaticMeasurement", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("MeasurementRecordingTime") + .HasColumnType("double precision") + .HasColumnName("measurement_recording_time") + .HasComment("Время записи замера, сек"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_recording_static_measurement", t => + { + t.HasComment("Запись статического замера"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRotor", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления, атм. Уставка"); + + b.Property("DifferentialPressureMax") + .HasColumnType("double precision") + .HasColumnName("differential_pressure_max") + .HasComment("Перепад давления, атм. Ограничение"); + + b.Property("FlowRate") + .HasColumnType("double precision") + .HasColumnName("flow_rate") + .HasComment("Расход л/с. Уставка"); + + b.Property("FlowRateMax") + .HasColumnType("double precision") + .HasColumnName("flow_rate_max") + .HasComment("Расход л/с. Ограничение"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм"); + + b.Property("RopMax") + .HasColumnType("double precision") + .HasColumnName("rop_max") + .HasComment("Максимально допустимая скорость, м/ч"); + + b.Property("Rpm") + .HasColumnType("double precision") + .HasColumnName("rpm") + .HasComment("Обороты на ВСП, об/мин. Уставка"); + + b.Property("RpmMax") + .HasColumnType("double precision") + .HasColumnName("rpm_max") + .HasComment("Обороты на ВСП, об/мин. Ограничение"); + + b.Property("TopDriveTorque") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque") + .HasComment("Момент на ВСП, кН*м. Уставка"); + + b.Property("TopDriveTorqueMax") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque_max") + .HasComment("Момент на ВСП, кН*м. Ограничение"); + + b.Property("WeightOnBit") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit") + .HasComment("Нагрузка, т. Уставка"); + + b.Property("WeightOnBitMax") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_max") + .HasComment("Нагрузка, т. Ограничение"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_rotor", t => + { + t.HasComment("РТК план бурение ротор"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSlide", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Buckling") + .HasColumnType("double precision") + .HasColumnName("buckling") + .HasComment("Складывание инструмента, м."); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления уставка, атм."); + + b.Property("DifferentialPressureMax") + .HasColumnType("double precision") + .HasColumnName("differential_pressure_max") + .HasComment("Перепад давления ограничение, атм."); + + b.Property("FlowRate") + .HasColumnType("double precision") + .HasColumnName("flow_rate") + .HasComment("Расход уставка, л/с."); + + b.Property("FlowRateMax") + .HasColumnType("double precision") + .HasColumnName("flow_rate_max") + .HasComment("Расход ограничение, л/с."); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("RopMax") + .HasColumnType("double precision") + .HasColumnName("rop_max") + .HasComment("Максимально допустимая скорость, м/ч."); + + b.Property("Spring") + .HasColumnType("double precision") + .HasColumnName("spring") + .HasComment("Расчётная пружина, градус"); + + b.Property("WeightOnBit") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit") + .HasComment("Нагрузка уставка, т."); + + b.Property("WeightOnBitMax") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_max") + .HasComment("Нагрузка ограничение, т."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_slide", t => + { + t.HasComment("РТК план бурение слайд"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingOffThePump", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("Duration") + .HasColumnType("double precision") + .HasColumnName("duration") + .HasComment("Продолжительность, сек."); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("ResidualPressureLimit") + .HasColumnType("double precision") + .HasColumnName("residual_pressure_limit") + .HasComment("Лимит остаточного давления, атм."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_operation_switching_off_the_pump", t => + { + t.HasComment("Выключение насоса"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingToTheMode", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("FlowRate") + .HasColumnType("double precision") + .HasColumnName("flow_rate") + .HasComment("Расход, л/с"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_limit") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("RampTime") + .HasColumnType("double precision") + .HasColumnName("ramp_time") + .HasComment("Время выхода буровых насосов на плановый расход, сек."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_switching_to_the_mode", t => + { + t.HasComment("Выход на плановый расход"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanTFOrientation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления, атм."); + + b.Property("FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("flow_rate_down") + .HasComment("Расход вниз, л/с."); + + b.Property("FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("flow_rate_up") + .HasComment("Расход вверх, л/с."); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Interval") + .HasColumnType("double precision") + .HasColumnName("interval") + .HasComment("Интервал расхаживания, м."); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимальное давление, атм."); + + b.Property("RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("repetitions_count") + .HasComment("Количество расхаживаний, шт."); + + b.Property("RopDown") + .HasColumnType("double precision") + .HasColumnName("rop_down") + .HasComment("Скорость вниз, м/ч."); + + b.Property("RopUp") + .HasColumnType("double precision") + .HasColumnName("rop_up") + .HasComment("Скорость вверх, м/ч."); + + b.Property("SlackingOff") + .HasColumnType("double precision") + .HasColumnName("slacking_off") + .HasComment("Посадка, т."); + + b.Property("Spring") + .HasColumnType("double precision") + .HasColumnName("spring") + .HasComment("Пружина, град."); + + b.Property("StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("TFSetpoint") + .HasColumnType("double precision") + .HasColumnName("tf_setpoint") + .HasComment("Задание TF, град."); + + b.Property("Tight") + .HasColumnType("double precision") + .HasColumnName("tight") + .HasComment("Затяжка, т."); + + b.Property("TorqueMax") + .HasColumnType("double precision") + .HasColumnName("torque_max") + .HasComment("Максимально допустимый момент, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_tf_orientation", t => + { + t.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", t => + { + t.HasComment("отношение скважин и компаний"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationContactWell", b => + { + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.HasKey("IdWell", "IdUser"); + + b.HasIndex("IdUser"); + + b.ToTable("t_relation_contact_well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserDrillingProgramPart", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("IdDrillingProgramPart") + .HasColumnType("integer") + .HasColumnName("id_drilling_program_part"); + + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_role") + .HasComment("1 - publisher, 2 - approver"); + + b.HasKey("IdUser", "IdDrillingProgramPart") + .HasName("t_relation_user_drilling_program_part_pk"); + + b.HasIndex("IdDrillingProgramPart"); + + b.ToTable("t_relation_user_drilling_program_part", t => + { + t.HasComment("Отношение пользователей и частей ПБ"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRolePermission", b => + { + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.Property("IdPermission") + .HasColumnType("integer") + .HasColumnName("id_permission"); + + b.HasKey("IdUserRole", "IdPermission"); + + b.HasIndex("IdPermission"); + + b.ToTable("t_relation_user_role_permission", t => + { + t.HasComment("Отношение ролей пользователей и разрешений доступа"); + }); + + b.HasData( + new + { + IdUserRole = 1100, + IdPermission = 102 + }, + new + { + IdUserRole = 1100, + IdPermission = 111 + }, + new + { + IdUserRole = 1101, + IdPermission = 101 + }, + new + { + IdUserRole = 1101, + IdPermission = 100 + }, + new + { + IdUserRole = 1102, + IdPermission = 105 + }, + new + { + IdUserRole = 1102, + IdPermission = 108 + }, + new + { + IdUserRole = 1103, + IdPermission = 104 + }, + new + { + IdUserRole = 1103, + IdPermission = 103 + }, + new + { + IdUserRole = 1104, + IdPermission = 108 + }, + new + { + IdUserRole = 1105, + IdPermission = 107 + }, + new + { + IdUserRole = 1105, + IdPermission = 106 + }, + new + { + IdUserRole = 1106, + IdPermission = 111 + }, + new + { + IdUserRole = 1107, + IdPermission = 110 + }, + new + { + IdUserRole = 1107, + IdPermission = 109 + }, + new + { + IdUserRole = 1108, + IdPermission = 114 + }, + new + { + IdUserRole = 1109, + IdPermission = 113 + }, + new + { + IdUserRole = 1109, + IdPermission = 112 + }, + new + { + IdUserRole = 1110, + IdPermission = 123 + }, + new + { + IdUserRole = 1110, + IdPermission = 114 + }, + new + { + IdUserRole = 1111, + IdPermission = 122 + }, + new + { + IdUserRole = 1111, + IdPermission = 121 + }, + new + { + IdUserRole = 1112, + IdPermission = 117 + }, + new + { + IdUserRole = 1113, + IdPermission = 105 + }, + new + { + IdUserRole = 1113, + IdPermission = 123 + }, + new + { + IdUserRole = 1113, + IdPermission = 120 + }, + new + { + IdUserRole = 1114, + IdPermission = 119 + }, + new + { + IdUserRole = 1114, + IdPermission = 118 + }, + new + { + IdUserRole = 1114, + IdPermission = 200 + }, + new + { + IdUserRole = 1115, + IdPermission = 223 + }, + new + { + IdUserRole = 1116, + IdPermission = 105 + }, + new + { + IdUserRole = 1116, + IdPermission = 102 + }, + new + { + IdUserRole = 1116, + IdPermission = 117 + }, + new + { + IdUserRole = 1116, + IdPermission = 126 + }, + new + { + IdUserRole = 1117, + IdPermission = 125 + }, + new + { + IdUserRole = 1117, + IdPermission = 124 + }, + new + { + IdUserRole = 1200, + IdPermission = 203 + }, + new + { + IdUserRole = 1200, + IdPermission = 230 + }, + new + { + IdUserRole = 1201, + IdPermission = 202 + }, + new + { + IdUserRole = 1201, + IdPermission = 203 + }, + new + { + IdUserRole = 1201, + IdPermission = 220 + }, + new + { + IdUserRole = 1202, + IdPermission = 203 + }, + new + { + IdUserRole = 1202, + IdPermission = 220 + }, + new + { + IdUserRole = 1202, + IdPermission = 236 + }, + new + { + IdUserRole = 1202, + IdPermission = 212 + }, + new + { + IdUserRole = 1203, + IdPermission = 235 + }, + new + { + IdUserRole = 1204, + IdPermission = 202 + }, + new + { + IdUserRole = 1204, + IdPermission = 203 + }, + new + { + IdUserRole = 1205, + IdPermission = 215 + }, + new + { + IdUserRole = 1206, + IdPermission = 203 + }, + new + { + IdUserRole = 1206, + IdPermission = 206 + }, + new + { + IdUserRole = 1207, + IdPermission = 205 + }, + new + { + IdUserRole = 1208, + IdPermission = 218 + }, + new + { + IdUserRole = 1209, + IdPermission = 217 + }, + new + { + IdUserRole = 1210, + IdPermission = 203 + }, + new + { + IdUserRole = 1210, + IdPermission = 230 + }, + new + { + IdUserRole = 1210, + IdPermission = 219 + }, + new + { + IdUserRole = 1211, + IdPermission = 203 + }, + new + { + IdUserRole = 1211, + IdPermission = 220 + }, + new + { + IdUserRole = 1211, + IdPermission = 239 + }, + new + { + IdUserRole = 1212, + IdPermission = 238 + }, + new + { + IdUserRole = 1212, + IdPermission = 237 + }, + new + { + IdUserRole = 1213, + IdPermission = 203 + }, + new + { + IdUserRole = 1213, + IdPermission = 239 + }, + new + { + IdUserRole = 1213, + IdPermission = 212 + }, + new + { + IdUserRole = 1214, + IdPermission = 211 + }, + new + { + IdUserRole = 1214, + IdPermission = 210 + }, + new + { + IdUserRole = 1215, + IdPermission = 203 + }, + new + { + IdUserRole = 1215, + IdPermission = 222 + }, + new + { + IdUserRole = 1216, + IdPermission = 221 + }, + new + { + IdUserRole = 1217, + IdPermission = 226 + }, + new + { + IdUserRole = 1218, + IdPermission = 225 + }, + new + { + IdUserRole = 1218, + IdPermission = 224 + }, + new + { + IdUserRole = 1219, + IdPermission = 203 + }, + new + { + IdUserRole = 1219, + IdPermission = 206 + }, + new + { + IdUserRole = 1219, + IdPermission = 230 + }, + new + { + IdUserRole = 1219, + IdPermission = 232 + }, + new + { + IdUserRole = 1220, + IdPermission = 203 + }, + new + { + IdUserRole = 1220, + IdPermission = 228 + }, + new + { + IdUserRole = 1221, + IdPermission = 202 + }, + new + { + IdUserRole = 1221, + IdPermission = 203 + }, + new + { + IdUserRole = 1221, + IdPermission = 220 + }, + new + { + IdUserRole = 1221, + IdPermission = 234 + }, + new + { + IdUserRole = 1500, + IdPermission = 507 + }, + new + { + IdUserRole = 1500, + IdPermission = 510 + }, + new + { + IdUserRole = 1501, + IdPermission = 214 + }, + new + { + IdUserRole = 1501, + IdPermission = 213 + }, + new + { + IdUserRole = 1502, + IdPermission = 207 + }, + new + { + IdUserRole = 1502, + IdPermission = 208 + }, + new + { + IdUserRole = 2000, + IdPermission = 205 + }, + new + { + IdUserRole = 2000, + IdPermission = 204 + }, + new + { + IdUserRole = 2000, + IdPermission = 245 + }, + new + { + IdUserRole = 2001, + IdPermission = 244 + }, + new + { + IdUserRole = 2001, + IdPermission = 245 + }, + new + { + IdUserRole = 2002, + IdPermission = 244 + }, + new + { + IdUserRole = 2002, + IdPermission = 246 + }, + new + { + IdUserRole = 2002, + IdPermission = 237 + }, + new + { + IdUserRole = 2002, + IdPermission = 238 + }, + new + { + IdUserRole = 2003, + IdPermission = 240 + }, + new + { + IdUserRole = 2003, + IdPermission = 217 + }, + new + { + IdUserRole = 2003, + IdPermission = 216 + }, + new + { + IdUserRole = 2004, + IdPermission = 242 + }, + new + { + IdUserRole = 2004, + IdPermission = 217 + }, + new + { + IdUserRole = 2004, + IdPermission = 216 + }, + new + { + IdUserRole = 2004, + IdPermission = 205 + }, + new + { + IdUserRole = 2004, + IdPermission = 204 + }, + new + { + IdUserRole = 2005, + IdPermission = 247 + }, + new + { + IdUserRole = 2005, + IdPermission = 205 + }, + new + { + IdUserRole = 2005, + IdPermission = 204 + }, + new + { + IdUserRole = 2006, + IdPermission = 243 + }, + new + { + IdUserRole = 2006, + IdPermission = 205 + }, + new + { + IdUserRole = 2006, + IdPermission = 204 + }, + new + { + IdUserRole = 2007, + IdPermission = 241 + }, + new + { + IdUserRole = 2007, + IdPermission = 205 + }, + new + { + IdUserRole = 2007, + IdPermission = 204 + }, + new + { + IdUserRole = 1, + IdPermission = 100 + }, + new + { + IdUserRole = 1, + IdPermission = 101 + }, + new + { + IdUserRole = 1, + IdPermission = 102 + }, + new + { + IdUserRole = 1, + IdPermission = 103 + }, + new + { + IdUserRole = 1, + IdPermission = 104 + }, + new + { + IdUserRole = 1, + IdPermission = 105 + }, + new + { + IdUserRole = 1, + IdPermission = 106 + }, + new + { + IdUserRole = 1, + IdPermission = 107 + }, + new + { + IdUserRole = 1, + IdPermission = 108 + }, + new + { + IdUserRole = 1, + IdPermission = 109 + }, + new + { + IdUserRole = 1, + IdPermission = 110 + }, + new + { + IdUserRole = 1, + IdPermission = 111 + }, + new + { + IdUserRole = 1, + IdPermission = 112 + }, + new + { + IdUserRole = 1, + IdPermission = 113 + }, + new + { + IdUserRole = 1, + IdPermission = 114 + }, + new + { + IdUserRole = 1, + IdPermission = 115 + }, + new + { + IdUserRole = 1, + IdPermission = 116 + }, + new + { + IdUserRole = 1, + IdPermission = 117 + }, + new + { + IdUserRole = 1, + IdPermission = 118 + }, + new + { + IdUserRole = 1, + IdPermission = 119 + }, + new + { + IdUserRole = 1, + IdPermission = 120 + }, + new + { + IdUserRole = 1, + IdPermission = 121 + }, + new + { + IdUserRole = 1, + IdPermission = 122 + }, + new + { + IdUserRole = 1, + IdPermission = 123 + }, + new + { + IdUserRole = 1, + IdPermission = 124 + }, + new + { + IdUserRole = 1, + IdPermission = 125 + }, + new + { + IdUserRole = 1, + IdPermission = 126 + }, + new + { + IdUserRole = 1, + IdPermission = 127 + }, + new + { + IdUserRole = 1, + IdPermission = 128 + }, + new + { + IdUserRole = 1, + IdPermission = 129 + }, + new + { + IdUserRole = 1, + IdPermission = 200 + }, + new + { + IdUserRole = 1, + IdPermission = 201 + }, + new + { + IdUserRole = 1, + IdPermission = 202 + }, + new + { + IdUserRole = 1, + IdPermission = 203 + }, + new + { + IdUserRole = 1, + IdPermission = 204 + }, + new + { + IdUserRole = 1, + IdPermission = 205 + }, + new + { + IdUserRole = 1, + IdPermission = 206 + }, + new + { + IdUserRole = 1, + IdPermission = 207 + }, + new + { + IdUserRole = 1, + IdPermission = 208 + }, + new + { + IdUserRole = 1, + IdPermission = 209 + }, + new + { + IdUserRole = 1, + IdPermission = 210 + }, + new + { + IdUserRole = 1, + IdPermission = 211 + }, + new + { + IdUserRole = 1, + IdPermission = 212 + }, + new + { + IdUserRole = 1, + IdPermission = 213 + }, + new + { + IdUserRole = 1, + IdPermission = 214 + }, + new + { + IdUserRole = 1, + IdPermission = 215 + }, + new + { + IdUserRole = 1, + IdPermission = 216 + }, + new + { + IdUserRole = 1, + IdPermission = 217 + }, + new + { + IdUserRole = 1, + IdPermission = 218 + }, + new + { + IdUserRole = 1, + IdPermission = 219 + }, + new + { + IdUserRole = 1, + IdPermission = 220 + }, + new + { + IdUserRole = 1, + IdPermission = 221 + }, + new + { + IdUserRole = 1, + IdPermission = 222 + }, + new + { + IdUserRole = 1, + IdPermission = 223 + }, + new + { + IdUserRole = 1, + IdPermission = 224 + }, + new + { + IdUserRole = 1, + IdPermission = 225 + }, + new + { + IdUserRole = 1, + IdPermission = 226 + }, + new + { + IdUserRole = 1, + IdPermission = 227 + }, + new + { + IdUserRole = 1, + IdPermission = 228 + }, + new + { + IdUserRole = 1, + IdPermission = 229 + }, + new + { + IdUserRole = 1, + IdPermission = 230 + }, + new + { + IdUserRole = 1, + IdPermission = 231 + }, + new + { + IdUserRole = 1, + IdPermission = 232 + }, + new + { + IdUserRole = 1, + IdPermission = 233 + }, + new + { + IdUserRole = 1, + IdPermission = 234 + }, + new + { + IdUserRole = 1, + IdPermission = 235 + }, + new + { + IdUserRole = 1, + IdPermission = 236 + }, + new + { + IdUserRole = 1, + IdPermission = 237 + }, + new + { + IdUserRole = 1, + IdPermission = 238 + }, + new + { + IdUserRole = 1, + IdPermission = 239 + }, + new + { + IdUserRole = 1, + IdPermission = 240 + }, + new + { + IdUserRole = 1, + IdPermission = 241 + }, + new + { + IdUserRole = 1, + IdPermission = 242 + }, + new + { + IdUserRole = 1, + IdPermission = 243 + }, + new + { + IdUserRole = 1, + IdPermission = 244 + }, + new + { + IdUserRole = 1, + IdPermission = 245 + }, + new + { + IdUserRole = 1, + IdPermission = 246 + }, + new + { + IdUserRole = 1, + IdPermission = 247 + }, + new + { + IdUserRole = 1, + IdPermission = 248 + }, + new + { + IdUserRole = 1, + IdPermission = 249 + }, + new + { + IdUserRole = 1, + IdPermission = 250 + }, + new + { + IdUserRole = 1, + IdPermission = 251 + }, + new + { + IdUserRole = 1, + IdPermission = 252 + }, + new + { + IdUserRole = 1, + IdPermission = 253 + }, + new + { + IdUserRole = 1, + IdPermission = 254 + }, + new + { + IdUserRole = 1, + IdPermission = 255 + }, + new + { + IdUserRole = 1, + IdPermission = 256 + }, + new + { + IdUserRole = 1, + IdPermission = 257 + }, + new + { + IdUserRole = 1, + IdPermission = 258 + }, + new + { + IdUserRole = 1, + IdPermission = 259 + }, + new + { + IdUserRole = 1, + IdPermission = 260 + }, + new + { + IdUserRole = 1, + IdPermission = 261 + }, + new + { + IdUserRole = 1, + IdPermission = 262 + }, + new + { + IdUserRole = 1, + IdPermission = 263 + }, + new + { + IdUserRole = 1, + IdPermission = 264 + }, + new + { + IdUserRole = 1, + IdPermission = 265 + }, + new + { + IdUserRole = 1, + IdPermission = 266 + }, + new + { + IdUserRole = 1, + IdPermission = 267 + }, + new + { + IdUserRole = 1, + IdPermission = 268 + }, + new + { + IdUserRole = 1, + IdPermission = 269 + }, + new + { + IdUserRole = 1, + IdPermission = 380 + }, + new + { + IdUserRole = 1, + IdPermission = 381 + }, + new + { + IdUserRole = 1, + IdPermission = 382 + }, + new + { + IdUserRole = 1, + IdPermission = 383 + }, + new + { + IdUserRole = 1, + IdPermission = 384 + }, + new + { + IdUserRole = 1, + IdPermission = 385 + }, + new + { + IdUserRole = 1, + IdPermission = 386 + }, + new + { + IdUserRole = 1, + IdPermission = 387 + }, + new + { + IdUserRole = 1, + IdPermission = 388 + }, + new + { + IdUserRole = 1, + IdPermission = 389 + }, + new + { + IdUserRole = 1, + IdPermission = 390 + }, + new + { + IdUserRole = 1, + IdPermission = 391 + }, + new + { + IdUserRole = 1, + IdPermission = 400 + }, + new + { + IdUserRole = 1, + IdPermission = 401 + }, + new + { + IdUserRole = 1, + IdPermission = 407 + }, + new + { + IdUserRole = 1, + IdPermission = 408 + }, + new + { + IdUserRole = 1, + IdPermission = 450 + }, + new + { + IdUserRole = 1, + IdPermission = 460 + }, + new + { + IdUserRole = 1, + IdPermission = 461 + }, + new + { + IdUserRole = 1, + IdPermission = 500 + }, + new + { + IdUserRole = 1, + IdPermission = 501 + }, + new + { + IdUserRole = 1, + IdPermission = 502 + }, + new + { + IdUserRole = 1, + IdPermission = 503 + }, + new + { + IdUserRole = 1, + IdPermission = 504 + }, + new + { + IdUserRole = 1, + IdPermission = 505 + }, + new + { + IdUserRole = 1, + IdPermission = 506 + }, + new + { + IdUserRole = 1, + IdPermission = 507 + }, + new + { + IdUserRole = 1, + IdPermission = 510 + }, + new + { + IdUserRole = 1, + IdPermission = 511 + }, + new + { + IdUserRole = 1, + IdPermission = 512 + }, + new + { + IdUserRole = 1, + IdPermission = 516 + }, + new + { + IdUserRole = 1, + IdPermission = 517 + }, + new + { + IdUserRole = 1, + IdPermission = 518 + }, + new + { + IdUserRole = 1, + IdPermission = 519 + }, + new + { + IdUserRole = 1, + IdPermission = 520 + }, + new + { + IdUserRole = 1, + IdPermission = 521 + }, + new + { + IdUserRole = 1, + IdPermission = 522 + }, + new + { + IdUserRole = 1, + IdPermission = 523 + }, + new + { + IdUserRole = 1, + IdPermission = 524 + }, + new + { + IdUserRole = 1, + IdPermission = 525 + }, + new + { + IdUserRole = 1, + IdPermission = 526 + }, + new + { + IdUserRole = 1, + IdPermission = 527 + }, + new + { + IdUserRole = 1, + IdPermission = 528 + }, + new + { + IdUserRole = 1, + IdPermission = 530 + }, + new + { + IdUserRole = 1, + IdPermission = 531 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRoleUserRole", b => + { + b.Property("Id") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.Property("IdInclude") + .HasColumnType("integer") + .HasColumnName("id_include_user_role"); + + b.HasKey("Id", "IdInclude") + .HasName("t_relation_user_role_user_role_pk"); + + b.HasIndex("IdInclude"); + + b.ToTable("t_relation_user_role_user_role", t => + { + t.HasComment("Отношение ролей к ролям"); + }); + + b.HasData( + new + { + Id = 1101, + IdInclude = 1100 + }, + new + { + Id = 1103, + IdInclude = 1102 + }, + new + { + Id = 1105, + IdInclude = 1104 + }, + new + { + Id = 1107, + IdInclude = 1106 + }, + new + { + Id = 1109, + IdInclude = 1108 + }, + new + { + Id = 1111, + IdInclude = 1110 + }, + new + { + Id = 1114, + IdInclude = 1113 + }, + new + { + Id = 1117, + IdInclude = 1116 + }, + new + { + Id = 1203, + IdInclude = 1202 + }, + new + { + Id = 1207, + IdInclude = 1206 + }, + new + { + Id = 1209, + IdInclude = 1208 + }, + new + { + Id = 1212, + IdInclude = 1211 + }, + new + { + Id = 1214, + IdInclude = 1213 + }, + new + { + Id = 1216, + IdInclude = 1215 + }, + new + { + Id = 1218, + IdInclude = 1217 + }, + new + { + Id = 2000, + IdInclude = 1200 + }, + new + { + Id = 2000, + IdInclude = 1201 + }, + new + { + Id = 2000, + IdInclude = 1202 + }, + new + { + Id = 2000, + IdInclude = 1204 + }, + new + { + Id = 2000, + IdInclude = 1205 + }, + new + { + Id = 2000, + IdInclude = 1206 + }, + new + { + Id = 2000, + IdInclude = 1208 + }, + new + { + Id = 2000, + IdInclude = 1210 + }, + new + { + Id = 2000, + IdInclude = 1211 + }, + new + { + Id = 2000, + IdInclude = 1213 + }, + new + { + Id = 2000, + IdInclude = 1215 + }, + new + { + Id = 2000, + IdInclude = 1217 + }, + new + { + Id = 2000, + IdInclude = 1219 + }, + new + { + Id = 2000, + IdInclude = 1220 + }, + new + { + Id = 2000, + IdInclude = 1221 + }, + new + { + Id = 2000, + IdInclude = 1500 + }, + new + { + Id = 2000, + IdInclude = 1501 + }, + new + { + Id = 2000, + IdInclude = 1502 + }, + new + { + Id = 2001, + IdInclude = 1500 + }, + new + { + Id = 2001, + IdInclude = 1501 + }, + new + { + Id = 2001, + IdInclude = 1502 + }, + new + { + Id = 2002, + IdInclude = 1500 + }, + new + { + Id = 2002, + IdInclude = 1501 + }, + new + { + Id = 2002, + IdInclude = 1502 + }, + new + { + Id = 2003, + IdInclude = 1500 + }, + new + { + Id = 2003, + IdInclude = 1501 + }, + new + { + Id = 2003, + IdInclude = 1502 + }, + new + { + Id = 2004, + IdInclude = 1500 + }, + new + { + Id = 2004, + IdInclude = 1501 + }, + new + { + Id = 2004, + IdInclude = 1502 + }, + new + { + Id = 2005, + IdInclude = 1500 + }, + new + { + Id = 2005, + IdInclude = 1501 + }, + new + { + Id = 2005, + IdInclude = 1502 + }, + new + { + Id = 2006, + IdInclude = 1500 + }, + new + { + Id = 2006, + IdInclude = 1501 + }, + new + { + Id = 2006, + IdInclude = 1502 + }, + new + { + Id = 2007, + IdInclude = 1500 + }, + new + { + Id = 2007, + IdInclude = 1501 + }, + new + { + Id = 2007, + IdInclude = 1502 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserUserRole", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.HasKey("IdUser", "IdUserRole"); + + b.HasIndex("IdUserRole"); + + b.ToTable("t_relation_user_user_role", t => + { + t.HasComment("Отношение пользователей и ролей"); + }); + + b.HasData( + new + { + IdUser = 1, + IdUserRole = 1 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ReportProperty", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Begin") + .HasColumnType("timestamp with time zone") + .HasColumnName("begin"); + + b.Property("End") + .HasColumnType("timestamp with time zone") + .HasColumnName("end") + .HasComment("timestamp with time zone"); + + b.Property("Format") + .HasColumnType("integer") + .HasColumnName("format") + .HasComment("Формат отчета"); + + b.Property("IdFile") + .HasColumnType("integer") + .HasColumnName("id_file") + .HasComment("id файла-родителя"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("id скважины"); + + b.Property("Step") + .HasColumnType("integer") + .HasColumnName("step") + .HasComment("размер шага в секундах"); + + b.HasKey("Id"); + + b.HasIndex("IdFile"); + + b.HasIndex("IdWell"); + + b.ToTable("t_report_property", t => + { + t.HasComment("Отчеты с данными по буровым"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Schedule", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("DrillEnd") + .HasColumnType("timestamp with time zone") + .HasColumnName("drill_end") + .HasComment("Конец вахты"); + + b.Property("DrillStart") + .HasColumnType("timestamp with time zone") + .HasColumnName("drill_start") + .HasComment("Начало вахты"); + + b.Property("IdDriller") + .HasColumnType("integer") + .HasColumnName("id_driller") + .HasComment("Идентификатор бурильщика"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Идентификатор скважины"); + + b.Property("ShiftEnd") + .HasColumnType("time without time zone") + .HasColumnName("shift_end") + .HasComment("Конец смены"); + + b.Property("ShiftStart") + .HasColumnType("time without time zone") + .HasColumnName("shift_start") + .HasComment("Начало смены"); + + b.HasKey("Id"); + + b.HasIndex("IdDriller"); + + b.HasIndex("IdWell"); + + b.ToTable("t_schedule", t => + { + t.HasComment("График работы бурильщика"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.SetpointsRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Comment") + .HasColumnType("text") + .HasColumnName("comment") + .HasComment("комментарий для оператора"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Id пользователя, загрузившего файл"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("0: неизвестно, 1:ожидает отправки, 2: отправлено, 3: принято оператором, 4: отклонено оператором, 5: устарело"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("id скважины"); + + b.Property("ObsolescenceSec") + .HasColumnType("integer") + .HasColumnName("obsolescence") + .HasComment("сек. до устаревания"); + + b.Property("Setpoints") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("setpoint_set") + .HasComment("Набор уставок"); + + b.Property("UploadDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdWell"); + + b.ToTable("t_setpoints_rquest", t => + { + t.HasComment("Запросы на изменение уставок панели оператора"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Subsystem", 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"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name"); + + b.HasKey("Id"); + + b.ToTable("t_subsystem", t => + { + t.HasComment("Описание подсистем"); + }); + + b.HasData( + new + { + Id = 1, + Description = "Совместная работа режимов \"Бурение в роторе\" и \"Бурение в слайде\"", + Name = "АПД" + }, + new + { + Id = 11, + Description = "Режим работы \"Бурение в роторе\"", + Name = "АПД ротор" + }, + new + { + Id = 12, + Description = "Режим работы \"Бурение в слайде\"", + Name = "АПД слайд" + }, + new + { + Id = 65536, + Description = "Осцилляция", + Name = "Осцилляция" + }, + new + { + Id = 65537, + Description = "Демпфер", + Name = "Демпфер" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Telemetry", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Info") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("info") + .HasComment("Информация с панели о скважине"); + + b.Property("RemoteUid") + .IsRequired() + .HasColumnType("text") + .HasColumnName("remote_uid") + .HasComment("Идентификатор передающего устройства. Может повторяться в списке, так как комплекты оборудования переезжают от скв. к скв."); + + b.Property("TimeZone") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("timezone") + .HasComment("Смещение часового пояса от UTC"); + + b.HasKey("Id"); + + b.HasIndex(new[] { "RemoteUid" }, "t_telemetry_remote_uid_index"); + + b.ToTable("t_telemetry", t => + { + t.HasComment("таблица привязки телеметрии от комплектов к конкретной скважине."); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaub", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date") + .HasComment("'2021-10-19 18:23:54+05'"); + + b.Property("AxialLoad") + .HasColumnType("real") + .HasColumnName("axial_load") + .HasComment("Осевая нагрузка"); + + b.Property("AxialLoadLimitMax") + .HasColumnType("real") + .HasColumnName("axial_load_limit_max") + .HasComment("Осевая нагрузка. Аварийная макс."); + + b.Property("AxialLoadSp") + .HasColumnType("real") + .HasColumnName("axial_load_sp") + .HasComment("Осевая нагрузка. Задание"); + + b.Property("BitDepth") + .HasColumnType("real") + .HasColumnName("bit_depth") + .HasComment("Положение инструмента"); + + b.Property("BlockPosition") + .HasColumnType("real") + .HasColumnName("block_position") + .HasComment("Высота талевого блока"); + + b.Property("BlockPositionMax") + .HasColumnType("real") + .HasColumnName("block_position_max") + .HasComment("Талевый блок. Макс положение"); + + b.Property("BlockPositionMin") + .HasColumnType("real") + .HasColumnName("block_position_min") + .HasComment("Талевый блок. Мин положение"); + + b.Property("BlockSpeed") + .HasColumnType("real") + .HasColumnName("block_speed") + .HasComment("Скорость талевого блока"); + + b.Property("BlockSpeedSp") + .HasColumnType("real") + .HasColumnName("block_speed_sp") + .HasComment("Скорости талевого блока. Задание"); + + b.Property("BlockSpeedSpDevelop") + .HasColumnType("real") + .HasColumnName("block_speed_sp_develop") + .HasComment("Талевый блок. Задание скорости для проработки"); + + b.Property("BlockSpeedSpRotor") + .HasColumnType("real") + .HasColumnName("block_speed_sp_rotor") + .HasComment("Талевый блок. Задание скорости для роторного бурения"); + + b.Property("BlockSpeedSpSlide") + .HasColumnType("real") + .HasColumnName("block_speed_sp_slide") + .HasComment("Талевый блок. Задание скорости для режима слайда"); + + b.Property("Flow") + .HasColumnType("real") + .HasColumnName("flow") + .HasComment("Расход"); + + b.Property("FlowDeltaLimitMax") + .HasColumnType("real") + .HasColumnName("flow_delta_limit_max") + .HasComment("Расход. Аварийный макс."); + + b.Property("FlowIdle") + .HasColumnType("real") + .HasColumnName("flow_idle") + .HasComment("Расход. Холостой ход"); + + b.Property("HookWeight") + .HasColumnType("real") + .HasColumnName("hook_weight") + .HasComment("Вес на крюке"); + + b.Property("HookWeightIdle") + .HasColumnType("real") + .HasColumnName("hook_weight_idle") + .HasComment("Вес на крюке. Холостой ход"); + + b.Property("HookWeightLimitMax") + .HasColumnType("real") + .HasColumnName("hook_weight_limit_max") + .HasComment("Вес на крюке. Затяжка"); + + b.Property("HookWeightLimitMin") + .HasColumnType("real") + .HasColumnName("hook_weight_limit_min") + .HasComment("Вес на крюке. Посадка"); + + b.Property("IdFeedRegulator") + .HasColumnType("smallint") + .HasColumnName("id_feed_regulator") + .HasComment("Текущий критерий бурения"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user") + .HasComment("Пользователь САУБ"); + + b.Property("Mode") + .HasColumnType("smallint") + .HasColumnName("mode") + .HasComment("Режим САУБ"); + + b.Property("Mse") + .HasColumnType("real") + .HasColumnName("mse") + .HasComment("MSE"); + + b.Property("MseState") + .HasColumnType("smallint") + .HasColumnName("mse_state") + .HasComment("Текущее состояние работы MSE"); + + b.Property("Pressure") + .HasColumnType("real") + .HasColumnName("pressure") + .HasComment("Давление"); + + b.Property("PressureDeltaLimitMax") + .HasColumnType("real") + .HasColumnName("pressure_delta_limit_max") + .HasComment("Давление дифф. Аварийное макс."); + + b.Property("PressureIdle") + .HasColumnType("real") + .HasColumnName("pressure_idle") + .HasComment("Давление. Холостой ход"); + + b.Property("PressureSp") + .HasColumnType("real") + .HasColumnName("pressure_sp") + .HasComment("Давление. Задание"); + + b.Property("PressureSpDevelop") + .HasColumnType("real") + .HasColumnName("pressure_sp_develop") + .HasComment("Давление. Задание для проработки"); + + b.Property("PressureSpRotor") + .HasColumnType("real") + .HasColumnName("pressure_sp_rotor") + .HasComment("Давление. Задание для роторного бурения"); + + b.Property("PressureSpSlide") + .HasColumnType("real") + .HasColumnName("pressure_sp_slide") + .HasComment("Давление. Задание для режима слайда"); + + b.Property("Pump0Flow") + .HasColumnType("real") + .HasColumnName("pump0_flow") + .HasComment("Расход. Буровой насос 1"); + + b.Property("Pump1Flow") + .HasColumnType("real") + .HasColumnName("pump1_flow") + .HasComment("Расход. Буровой насос 2"); + + b.Property("Pump2Flow") + .HasColumnType("real") + .HasColumnName("pump2_flow") + .HasComment("Расход. Буровой насос 3"); + + b.Property("RotorSpeed") + .HasColumnType("real") + .HasColumnName("rotor_speed") + .HasComment("Обороты ротора"); + + b.Property("RotorTorque") + .HasColumnType("real") + .HasColumnName("rotor_torque") + .HasComment("Момент на роторе"); + + b.Property("RotorTorqueIdle") + .HasColumnType("real") + .HasColumnName("rotor_torque_idle") + .HasComment("Момент на роторе. Холостой ход"); + + b.Property("RotorTorqueLimitMax") + .HasColumnType("real") + .HasColumnName("rotor_torque_limit_max") + .HasComment("Момент на роторе. Аварийный макс."); + + b.Property("RotorTorqueSp") + .HasColumnType("real") + .HasColumnName("rotor_torque_sp") + .HasComment("Момент на роторе. Задание"); + + b.Property("WellDepth") + .HasColumnType("real") + .HasColumnName("well_depth") + .HasComment("Глубина забоя"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_data_saub", t => + { + t.HasComment("набор основных данных по SAUB"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaubStat", b => + { + b.Property("Count") + .HasColumnType("bigint") + .HasColumnName("count_items"); + + b.Property("DateMax") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_max"); + + b.Property("DateMin") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_min"); + + b.Property("DepthMax") + .HasColumnType("real") + .HasColumnName("depth_max"); + + b.Property("DepthMin") + .HasColumnType("real") + .HasColumnName("depth_min"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.ToTable((string)null); + + b.ToView("mw_telemetry_datas_saub_stat", (string)null); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSpin", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date") + .HasComment("'2021-10-19 18:23:54+05'"); + + b.Property("Mode") + .HasColumnType("smallint") + .HasColumnName("mode") + .HasComment("Выбранный режим управления"); + + b.Property("PositionRight") + .HasColumnType("real") + .HasColumnName("position_right") + .HasComment("Крайний правый угол осцилляции"); + + b.Property("PositionZero") + .HasColumnType("real") + .HasColumnName("position_zero") + .HasComment("Нулевая позиция осцилляции"); + + b.Property("RevolsLeftLimit") + .HasColumnType("real") + .HasColumnName("revols_left_limit") + .HasComment("Ограничение числа оборотов влево"); + + b.Property("RevolsLeftTotal") + .HasColumnType("real") + .HasColumnName("revols_left_total") + .HasComment("Суммарное количество оборотов влево"); + + b.Property("RevolsRightLimit") + .HasColumnType("real") + .HasColumnName("revols_right_limit") + .HasComment("Ограничение числа оборотов вправо"); + + b.Property("RevolsRightTotal") + .HasColumnType("real") + .HasColumnName("revols_right_total") + .HasComment("Суммарное количество оборотов вправо"); + + b.Property("SpeedLeftSp") + .HasColumnType("real") + .HasColumnName("speed_left_sp") + .HasComment("Заданная скорость вращения влево"); + + b.Property("SpeedRightSp") + .HasColumnType("real") + .HasColumnName("speed_right_sp") + .HasComment("Заданная скорость вращения вправо"); + + b.Property("State") + .HasColumnType("smallint") + .HasColumnName("state") + .HasComment("Переменная этапа"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_data_spin", t => + { + t.HasComment("набор основных данных по SpinMaster"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryEvent", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdEvent") + .HasColumnType("integer") + .HasColumnName("id_event"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category"); + + b.Property("MessageTemplate") + .IsRequired() + .HasColumnType("text") + .HasColumnName("message_template"); + + b.HasKey("IdTelemetry", "IdEvent"); + + b.ToTable("t_telemetry_event", t => + { + t.HasComment("Справочник событий. События формируют сообщения. Разделено по версиям посылок от телеметрии."); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Arg0") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg0") + .HasComment("Аргумент №0 для вставки в шаблон сообщения"); + + b.Property("Arg1") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg1"); + + b.Property("Arg2") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg2"); + + b.Property("Arg3") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg3"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("IdEvent") + .HasColumnType("integer") + .HasColumnName("id_event"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdTelemetryUser") + .HasColumnType("integer") + .HasColumnName("id_telemetry_user") + .HasComment("Пользователь панели отправляющей телеметрию. не пользователь облака."); + + b.Property("WellDepth") + .HasColumnType("double precision") + .HasColumnName("well_depth"); + + b.HasKey("Id"); + + b.HasIndex("IdTelemetry"); + + b.ToTable("t_telemetry_message", t => + { + t.HasComment("Сообщения на буровых"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryUser", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("Level") + .HasColumnType("integer") + .HasColumnName("level"); + + b.Property("Name") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name"); + + b.Property("Patronymic") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("patronymic"); + + b.Property("Surname") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("surname"); + + b.HasKey("IdTelemetry", "IdUser"); + + b.ToTable("t_telemetry_user", t => + { + t.HasComment("Пользователи панели САУБ. Для сообщений."); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryWirelineRunOut", b => + { + b.Property("IdTelemetry") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id_telemetry") + .HasComment("Идентификатор телеметрии"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("IdTelemetry")); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_time") + .HasComment("Отметка времени"); + + b.Property("Hauling") + .HasColumnType("real") + .HasColumnName("hauling") + .HasComment("Наработка талевого каната с момента перетяжки каната, т*км"); + + b.Property("HaulingWarnSp") + .HasColumnType("real") + .HasColumnName("hauling_warn_sp") + .HasComment("Наработка талевого каната до сигнализации о необходимости перетяжки, т*км"); + + b.Property("Replace") + .HasColumnType("real") + .HasColumnName("replace") + .HasComment("Наработка талевого каната с момента замены каната, т*км"); + + b.Property("ReplaceWarnSp") + .HasColumnType("real") + .HasColumnName("replace_warn_sp") + .HasComment("Наработка талевого каната до сигнализации о необходимости замены, т*км"); + + b.HasKey("IdTelemetry"); + + b.ToTable("t_telemetry_wireline_run_out", t => + { + t.HasComment("Наработка талевого каната"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Trajectory.TrajectoryFact", 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("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_trajectory_fact", t => + { + t.HasComment("Загрузка фактической траектории"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Trajectory.TrajectoryPlan", 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_trajectory_plan", t => + { + t.HasComment("Загрузка плановой траектории"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Email") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("email") + .HasComment("должность"); + + b.Property("IdCompany") + .HasColumnType("integer") + .HasColumnName("id_company"); + + b.Property("IdState") + .HasColumnType("smallint") + .HasColumnName("state") + .HasComment("состояние:\n0 - не активен, \n1 - активен, \n2 - заблокирован"); + + b.Property("Login") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("login"); + + b.Property("Name") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name") + .HasComment("имя"); + + b.Property("PasswordHash") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("password_hash") + .HasComment("соленый хэш пароля.\nпервые 5 символов - соль"); + + b.Property("Patronymic") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("patronymic") + .HasComment("отчество"); + + b.Property("Phone") + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .HasColumnName("phone") + .HasComment("номер телефона"); + + b.Property("Position") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("position") + .HasComment("email"); + + b.Property("Surname") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("surname") + .HasComment("фамилия"); + + b.HasKey("Id"); + + b.HasIndex("IdCompany"); + + b.HasIndex("Login") + .IsUnique(); + + b.ToTable("t_user", t => + { + t.HasComment("Пользователи облака"); + }); + + b.HasData( + new + { + Id = 1, + Email = "", + IdCompany = 1, + IdState = (short)1, + Login = "dev", + Name = "Разработчик", + PasswordHash = "Vlcj|4fa529103dde7ff72cfe76185f344d4aa87931f8e1b2044e8a7739947c3d18923464eaad93843e4f809c5e126d013072" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserRole", 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("IdType") + .HasColumnType("integer") + .HasColumnName("id_type") + .HasComment("0-роль из стандартной матрицы, \n1-специальная роль для какого-либо пользователя"); + + b.HasKey("Id"); + + b.ToTable("t_user_role", t => + { + t.HasComment("Роли пользователей в системе"); + }); + + b.HasData( + new + { + Id = 1, + Caption = "root", + IdType = 1 + }, + new + { + Id = 1100, + Caption = "admin_cluster.view", + IdType = 1 + }, + new + { + Id = 1101, + Caption = "admin_cluster.edit", + IdType = 1 + }, + new + { + Id = 1102, + Caption = "admin_company.view", + IdType = 1 + }, + new + { + Id = 1103, + Caption = "admin_company.edit", + IdType = 1 + }, + new + { + Id = 1104, + Caption = "admin_company_type.view", + IdType = 1 + }, + new + { + Id = 1105, + Caption = "admin_company_type.edit", + IdType = 1 + }, + new + { + Id = 1106, + Caption = "admin_deposit.view", + IdType = 1 + }, + new + { + Id = 1107, + Caption = "admin_deposit.edit", + IdType = 1 + }, + new + { + Id = 1108, + Caption = "admin_permission.view", + IdType = 1 + }, + new + { + Id = 1109, + Caption = "admin_permission.edit", + IdType = 1 + }, + new + { + Id = 1110, + Caption = "admin_role.view", + IdType = 1 + }, + new + { + Id = 1111, + Caption = "admin_role.edit", + IdType = 1 + }, + new + { + Id = 1112, + Caption = "admin_telemetry.view", + IdType = 1 + }, + new + { + Id = 1113, + Caption = "admin_user.view", + IdType = 1 + }, + new + { + Id = 1114, + Caption = "admin_user.edit", + IdType = 1 + }, + new + { + Id = 1115, + Caption = "admin_visit_log.view", + IdType = 1 + }, + new + { + Id = 1116, + Caption = "admin_well.view", + IdType = 1 + }, + new + { + Id = 1117, + Caption = "admin_well.edit", + IdType = 1 + }, + new + { + Id = 1200, + Caption = "archive.view", + IdType = 1 + }, + new + { + Id = 1201, + Caption = "cluster.view", + IdType = 1 + }, + new + { + Id = 1202, + Caption = "composite.view", + IdType = 1 + }, + new + { + Id = 1203, + Caption = "composite.edit", + IdType = 1 + }, + new + { + Id = 1204, + Caption = "deposit.view", + IdType = 1 + }, + new + { + Id = 1205, + Caption = "document.view", + IdType = 1 + }, + new + { + Id = 1206, + Caption = "drillProcessFlow.view", + IdType = 1 + }, + new + { + Id = 1207, + Caption = "drillProcessFlow.edit", + IdType = 1 + }, + new + { + Id = 1208, + Caption = "measure.view", + IdType = 1 + }, + new + { + Id = 1209, + Caption = "measure.edit", + IdType = 1 + }, + new + { + Id = 1210, + Caption = "message.view", + IdType = 1 + }, + new + { + Id = 1211, + Caption = "operations.view", + IdType = 1 + }, + new + { + Id = 1212, + Caption = "operations.edit", + IdType = 1 + }, + new + { + Id = 1213, + Caption = "params.view", + IdType = 1 + }, + new + { + Id = 1214, + Caption = "params.edit", + IdType = 1 + }, + new + { + Id = 1215, + Caption = "report.view", + IdType = 1 + }, + new + { + Id = 1216, + Caption = "report.edit", + IdType = 1 + }, + new + { + Id = 1217, + Caption = "setpoints.view", + IdType = 1 + }, + new + { + Id = 1218, + Caption = "setpoints.edit", + IdType = 1 + }, + new + { + Id = 1219, + Caption = "telemetry.view", + IdType = 1 + }, + new + { + Id = 1220, + Caption = "telemetryAnalysis.view", + IdType = 1 + }, + new + { + Id = 1221, + Caption = "well.view", + IdType = 1 + }, + new + { + Id = 1500, + Caption = "Просмотр всего", + IdType = 1 + }, + new + { + Id = 1501, + Caption = "file.edit", + IdType = 1 + }, + new + { + Id = 1502, + Caption = "drillingProgram.edit", + IdType = 1 + }, + new + { + Id = 2000, + Caption = "Заказчик", + IdType = 0 + }, + new + { + Id = 2001, + Caption = "Супервайзер", + IdType = 0 + }, + new + { + Id = 2002, + Caption = "Буровой подрядчик", + IdType = 0 + }, + new + { + Id = 2003, + Caption = "Растворщик", + IdType = 0 + }, + new + { + Id = 2004, + Caption = "Телеметрист", + IdType = 0 + }, + new + { + Id = 2005, + Caption = "Долотный сервис", + IdType = 0 + }, + new + { + Id = 2006, + Caption = "ГТИ", + IdType = 0 + }, + new + { + Id = 2007, + Caption = "Цементирование", + IdType = 0 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserSetting", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("Key") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("key") + .HasComment("Ключ настроек пользователя"); + + b.Property("Value") + .HasColumnType("jsonb") + .HasColumnName("setting_value") + .HasComment("Значение настроек пользователя"); + + b.HasKey("IdUser", "Key"); + + b.ToTable("t_user_settings", t => + { + t.HasComment("настройки интерфейса пользователя"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.RecordBase", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("Actcod") + .HasColumnType("smallint") + .HasColumnName("ACTCOD"); + + b.Property("Date") + .HasColumnType("integer") + .HasColumnName("DATE"); + + b.Property("Recid") + .HasColumnType("smallint") + .HasColumnName("RECID"); + + b.Property("Seqid") + .HasColumnType("integer") + .HasColumnName("SEQID"); + + b.Property("Stknum") + .HasColumnType("smallint") + .HasColumnName("STKNUM"); + + b.Property("Time") + .HasColumnType("integer") + .HasColumnName("TIME"); + + b.Property("Wellid") + .HasColumnType("text") + .HasColumnName("WELLID"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_wits_base"); + + b.UseTptMappingStrategy(); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", 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("IdCluster") + .HasColumnType("integer") + .HasColumnName("id_cluster"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("state") + .HasComment("0 - неизвестно, 1 - в работе, 2 - завершена"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdWellType") + .HasColumnType("integer") + .HasColumnName("id_well_type"); + + 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("IdCluster"); + + b.HasIndex("IdTelemetry") + .IsUnique(); + + b.HasIndex("IdWellType"); + + b.ToTable("t_well", t => + { + t.HasComment("скважины"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellComposite", b => + { + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины получателя"); + + b.Property("IdWellSrc") + .HasColumnType("integer") + .HasColumnName("id_well_src") + .HasComment("Id скважины композита"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_well_section_type") + .HasComment("Id тип секции композита"); + + b.HasKey("IdWell", "IdWellSrc", "IdWellSectionType"); + + b.HasIndex("IdWellSectionType"); + + b.HasIndex("IdWellSrc"); + + b.ToTable("t_well_composite", t => + { + t.HasComment("Композитная скважина"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellFinalDocument", b => + { + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category"); + + b.HasKey("IdWell", "IdUser", "IdCategory") + .HasName("t_well_final_documents_pk"); + + b.HasIndex("IdCategory"); + + b.HasIndex("IdUser"); + + b.ToTable("t_well_final_documents", t => + { + t.HasComment("Дело скважины"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CategoryInfo") + .HasColumnType("text") + .HasColumnName("category_info") + .HasComment("Доп. информация к выбраной категории"); + + b.Property("Comment") + .HasColumnType("text") + .HasColumnName("comment") + .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("DurationHours") + .HasColumnType("double precision") + .HasColumnName("duration_hours") + .HasComment("Продолжительность, часы"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category") + .HasComment("Id категории операции"); + + b.Property("IdPlan") + .HasColumnType("integer") + .HasColumnName("id_plan") + .HasComment("Id плановой операции"); + + b.Property("IdType") + .HasColumnType("integer") + .HasColumnName("id_type") + .HasComment("0 = План или 1 = Факт"); + + b.Property("IdUser") + .HasColumnType("integer"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_well_section_type") + .HasComment("Id тип секции скважины"); + + b.Property("LastUpdateDate") + .HasColumnType("timestamp with time zone"); + + b.HasKey("Id"); + + b.HasIndex("DateStart"); + + b.HasIndex("DepthEnd"); + + b.HasIndex("IdCategory"); + + b.HasIndex("IdPlan"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_well_operation", t => + { + t.HasComment("Данные по операциям на скважине"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperationCategory", 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("IsHidden") + .HasColumnType("boolean"); + + b.Property("KeyValueName") + .HasMaxLength(32) + .HasColumnType("character varying(32)") + .HasColumnName("key_value_name") + .HasComment("Название ключевого показателя операции"); + + b.Property("KeyValueUnits") + .HasMaxLength(16) + .HasColumnType("character varying(16)") + .HasColumnName("key_value_units") + .HasComment("Единицы измерения ключевого показателя операции"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name") + .HasComment("Название категории операции"); + + b.HasKey("Id"); + + b.HasIndex("IdParent"); + + b.ToTable("t_well_operation_category", t => + { + t.HasComment("Справочник операций на скважине"); + }); + + b.HasData( + new + { + Id = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "м/ч", + Name = "БУРЕНИЕ" + }, + new + { + Id = 3001, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО" + }, + new + { + Id = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "КРЕПЛЕНИЕ" + }, + new + { + Id = 3003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ГФР" + }, + new + { + Id = 3004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Вспомогательные операции" + }, + new + { + Id = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Непроизводительное время (НПВ)" + }, + new + { + Id = 3006, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Заключительные работы" + }, + new + { + Id = 4000, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "КНБК" + }, + new + { + Id = 4001, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "м/ч", + Name = "Механическое. бурение" + }, + new + { + Id = 4002, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Статический замер" + }, + new + { + Id = 4003, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Нормализация диаметра скважины" + }, + new + { + Id = 4004, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Наращивание" + }, + new + { + Id = 4005, + IdParent = 3001, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО" + }, + new + { + Id = 4006, + IdParent = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск обсадной колонны" + }, + new + { + Id = 4018, + IdParent = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Крепление" + }, + new + { + Id = 4007, + IdParent = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Цементирование" + }, + new + { + Id = 4008, + IdParent = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Вспомогательные работы при креплении" + }, + new + { + Id = 4009, + IdParent = 3003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка/разборка приборов ГИС" + }, + new + { + Id = 4010, + IdParent = 3003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО" + }, + new + { + Id = 4011, + IdParent = 3003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ГИС" + }, + new + { + Id = 4012, + IdParent = 3004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка, ОБР" + }, + new + { + Id = 4013, + IdParent = 3004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Вспомогательные работы" + }, + new + { + Id = 4014, + IdParent = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ремонт оборудования" + }, + new + { + Id = 4015, + IdParent = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Аварийные работы" + }, + new + { + Id = 4016, + IdParent = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Осложнение" + }, + new + { + Id = 4017, + IdParent = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Незаложенные в ГГД операции" + }, + new + { + Id = 4019, + IdParent = 3006, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Заключительные операции" + }, + new + { + Id = 5000, + IdParent = 4000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Разборка КНБК" + }, + new + { + Id = 5001, + IdParent = 4000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка КНБК" + }, + new + { + Id = 5002, + IdParent = 4001, + IsHidden = true, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", + Name = "Бурение слайдом" + }, + new + { + Id = 5003, + IdParent = 4001, + IsHidden = true, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", + Name = "Бурение ротором" + }, + new + { + Id = 5004, + IdParent = 4002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Замер ЗТС (запись MWD)" + }, + new + { + Id = 5005, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка перед наращиванием" + }, + new + { + Id = 5006, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Проработка во время бурения" + }, + new + { + Id = 5007, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Проработка" + }, + new + { + Id = 5008, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонировка во время бурения" + }, + new + { + Id = 5009, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонировка перед наращиванием" + }, + new + { + Id = 5010, + IdParent = 4004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Наращивание" + }, + new + { + Id = 5011, + IdParent = 4004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Удержание в клиньях" + }, + new + { + Id = 5012, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем инструмента" + }, + new + { + Id = 5013, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем КНБК" + }, + new + { + Id = 5014, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск инструмента" + }, + new + { + Id = 5015, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск КНБК" + }, + new + { + Id = 5016, + IdParent = 4006, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка при спуске ОК" + }, + new + { + Id = 5017, + IdParent = 4006, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск ОК" + }, + new + { + Id = 5018, + IdParent = 4007, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ОЗЦ" + }, + new + { + Id = 5019, + IdParent = 4007, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Цементирование" + }, + new + { + Id = 5020, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Опрессовка БИ" + }, + new + { + Id = 5021, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Опрессовка ОК" + }, + new + { + Id = 5022, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПЗР при спуске ОК" + }, + new + { + Id = 5023, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПЗР при цементировании" + }, + new + { + Id = 5024, + IdParent = 4009, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Разборка комплекса приборов ГИС" + }, + new + { + Id = 5025, + IdParent = 4009, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка комплекса приборов ГИС" + }, + new + { + Id = 5026, + IdParent = 4010, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем приборов ГИС (на трубах)" + }, + new + { + Id = 5027, + IdParent = 4010, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск приборов ГИС (на трубах)" + }, + new + { + Id = 5028, + IdParent = 4011, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Комплекс ГИС на жестком кабеле" + }, + new + { + Id = 5029, + IdParent = 4011, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Комплекс ГИС на кабеле" + }, + new + { + Id = 5030, + IdParent = 4011, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Комплекс ГИС на трубах" + }, + new + { + Id = 5031, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Закачка/прокачка пачки" + }, + new + { + Id = 5032, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Обработка БР" + }, + new + { + Id = 5033, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ориентирование ТС при бурении" + }, + new + { + Id = 5034, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Перезапись гаммы-каротажа" + }, + new + { + Id = 5035, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Приготовление БР" + }, + new + { + Id = 5036, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка" + }, + new + { + Id = 5037, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Разбуривание тех.оснастки" + }, + new + { + Id = 5038, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск инструмента с проработкой" + }, + new + { + Id = 5039, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ВМР" + }, + new + { + Id = 5040, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Демонтаж ПВО" + }, + new + { + Id = 5041, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Долив затруба при подъёме" + }, + new + { + Id = 5042, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Монтаж ПВО" + }, + new + { + Id = 5043, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Наработка жёлоба" + }, + new + { + Id = 5044, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Обвязка устья с циркуляционной системой" + }, + new + { + Id = 5045, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Оборудование устья" + }, + new + { + Id = 5046, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Опрессовка ПВО" + }, + new + { + Id = 5047, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Перемонтаж ПВО " + }, + new + { + Id = 5048, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Перетяжка талевого каната" + }, + new + { + Id = 5049, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПЗР при сборке КНБК" + }, + new + { + Id = 5050, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Полная замена талевого каната" + }, + new + { + Id = 5051, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПР перед забуркой направления" + }, + new + { + Id = 5052, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Продувка манифольда" + }, + new + { + Id = 5053, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Срезка" + }, + new + { + Id = 5054, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Тайм-дриллинг" + }, + new + { + Id = 5055, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Тех.отстой" + }, + new + { + Id = 5056, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Учебная тревога \"Выброс\"" + }, + new + { + Id = 5057, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Чистка ЦСГО/емкостного блока" + }, + new + { + Id = 5058, + IdParent = 4014, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ремонт бурового оборудования" + }, + new + { + Id = 5059, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ловильные работы" + }, + new + { + Id = 5060, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ожидание" + }, + new + { + Id = 5061, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Определение места прихвата и ЛМ" + }, + new + { + Id = 5062, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Работа яссом" + }, + new + { + Id = 5063, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Расхаживание" + }, + new + { + Id = 5064, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО - колокол" + }, + new + { + Id = 5065, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО - метчик" + }, + new + { + Id = 5066, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО - овершот" + }, + new + { + Id = 5067, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО - труболовка" + }, + new + { + Id = 5068, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Торпедирование (встряхивание)" + }, + new + { + Id = 5069, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Торпедирование (отстрел)" + }, + new + { + Id = 5070, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Установка ванн" + }, + new + { + Id = 5071, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Фрезеровка" + }, + new + { + Id = 5072, + IdParent = 4016, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Контролируемое ГНВП" + }, + new + { + Id = 5073, + IdParent = 4016, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Поглощение" + }, + new + { + Id = 5074, + IdParent = 4016, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сальникообразование" + }, + new + { + Id = 5075, + IdParent = 4016, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Утяжеление БР" + }, + new + { + Id = 5076, + IdParent = 4017, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "НПВ / прочее" + }, + new + { + Id = 5077, + IdParent = 4017, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Обработка раствора (несоответствие параметров)" + }, + new + { + Id = 5078, + IdParent = 4017, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "подъем ОК" + }, + new + { + Id = 5079, + IdParent = 4017, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ревизия КНБК/инструмента/ЗТС" + }, + new + { + Id = 5082, + IdParent = 4000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка устройства ориентирования КО" + }, + new + { + Id = 5083, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Проработка принудительная" + }, + new + { + Id = 5084, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонировка подъем БИ, продувка" + }, + new + { + Id = 5085, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск бурильного инструмента со сборкой с мостков" + }, + new + { + Id = 5086, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем БИ с выбросом на мостки" + }, + new + { + Id = 5087, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск БИ со сборкой с мостков" + }, + new + { + Id = 5088, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка и спуск ТБТ" + }, + new + { + Id = 5089, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск КО на транспортной колонне" + }, + new + { + Id = 5090, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Отворот допускной трубы" + }, + new + { + Id = 5091, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Активация подвески, опрессовка" + }, + new + { + Id = 5092, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Монтаж, опрессовка ФА" + }, + new + { + Id = 5093, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка хвостовика 114мм (согласно схеме)" + }, + new + { + Id = 5094, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПЗР к спуску УЭЦН" + }, + new + { + Id = 5095, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Активация подвески (потайной колонны, хвостовика)" + }, + new + { + Id = 5096, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонирование перед спуском" + }, + new + { + Id = 5097, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка - перевод скважины на новый раствор" + }, + new + { + Id = 5098, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка БИ с мостков на подсвечник" + }, + new + { + Id = 5099, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подготовка ствола скважины. Перезапись ГК в интервале установки КО." + }, + new + { + Id = 5100, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Смена рабочего переводника ВСП" + }, + new + { + Id = 5101, + IdParent = 4014, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ремонт" + }, + new + { + Id = 5102, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск пакера" + }, + new + { + Id = 5103, + IdParent = 4011, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Запись гамма-каратожа" + }, + new + { + Id = 5104, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонирование спуск БИ" + }, + new + { + Id = 5105, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка клин-отклонителя" + }, + new + { + Id = 5106, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ориентирование и посадка клина-отклонителя" + }, + new + { + Id = 5107, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Протяжка подъемного патрубка подвески" + }, + new + { + Id = 5108, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем клина-отклонителя" + }, + new + { + Id = 5109, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Стыковка стингера с хвостовиком основного ствола" + }, + new + { + Id = 5110, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ориентирование и установка стыковочного узла хвостовика" + }, + new + { + Id = 5111, + IdParent = 4001, + IsHidden = false, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", + Name = "Бурение с отбором керна" + }, + new + { + Id = 5112, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Работа пакером в обсадной колонне" + }, + new + { + Id = 5113, + IdParent = 4001, + IsHidden = false, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", + Name = "Бурение" + }, + new + { + Id = 5114, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ТО оборудования" + }, + new + { + Id = 5115, + IdParent = 4019, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск НКТ" + }, + new + { + Id = 5116, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Вырезка окна" + }, + new + { + Id = 5117, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Расширение ствола" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSectionType", 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("Order") + .HasColumnType("real") + .HasColumnName("order") + .HasComment("Порядок"); + + b.HasKey("Id"); + + b.ToTable("t_well_section_type", t => + { + t.HasComment("конструкция секции скважины"); + }); + + b.HasData( + new + { + Id = 1, + Caption = "Пилотный ствол", + Order = 4f + }, + new + { + Id = 2, + Caption = "Направление", + Order = 0f + }, + new + { + Id = 3, + Caption = "Кондуктор", + Order = 1f + }, + new + { + Id = 4, + Caption = "Эксплуатационная колонна", + Order = 3f + }, + new + { + Id = 5, + Caption = "Транспортный ствол", + Order = 5f + }, + new + { + Id = 6, + Caption = "Хвостовик", + Order = 6f + }, + new + { + Id = 7, + Caption = "Пилотный ствол 2", + Order = 4.1f + }, + new + { + Id = 8, + Caption = "Направление 2", + Order = 0.1f + }, + new + { + Id = 9, + Caption = "Кондуктор 2", + Order = 1.1f + }, + new + { + Id = 10, + Caption = "Эксплуатационная колонна 2", + Order = 3.1f + }, + new + { + Id = 11, + Caption = "Транспортный ствол 2", + Order = 5.1f + }, + new + { + Id = 12, + Caption = "Хвостовик 2", + Order = 6.1f + }, + new + { + Id = 13, + Caption = "Пилотный ствол 3", + Order = 4.2f + }, + new + { + Id = 14, + Caption = "Направление 3", + Order = 0.2f + }, + new + { + Id = 15, + Caption = "Кондуктор 3", + Order = 1.2f + }, + new + { + Id = 16, + Caption = "Эксплуатационная колонна 3", + Order = 3.2f + }, + new + { + Id = 17, + Caption = "Транспортный ствол 3", + Order = 5.2f + }, + new + { + Id = 18, + Caption = "Хвостовик 3", + Order = 6.2f + }, + new + { + Id = 19, + Caption = "Пилотный ствол 4", + Order = 4.3f + }, + new + { + Id = 20, + Caption = "Направление 4", + Order = 0.3f + }, + new + { + Id = 21, + Caption = "Кондуктор 4", + Order = 1.3f + }, + new + { + Id = 22, + Caption = "Эксплуатационная колонна 4", + Order = 3.3f + }, + new + { + Id = 23, + Caption = "Транспортный ствол 4", + Order = 5.3f + }, + new + { + Id = 24, + Caption = "Хвостовик 4", + Order = 6.3f + }, + new + { + Id = 25, + Caption = "Пилотный ствол 5", + Order = 4.4f + }, + new + { + Id = 26, + Caption = "Направление 5", + Order = 0.4f + }, + new + { + Id = 27, + Caption = "Кондуктор 5", + Order = 1.4f + }, + new + { + Id = 28, + Caption = "Эксплуатационная колонна 5", + Order = 3.4f + }, + new + { + Id = 29, + Caption = "Транспортный ствол 5", + Order = 5.4f + }, + new + { + Id = 30, + Caption = "Хвостовик 5", + Order = 6.4f + }, + new + { + Id = 31, + Caption = "Техническая колонна", + Order = 2f + }, + new + { + Id = 32, + Caption = "Техническая колонна 2", + Order = 2.1f + }, + new + { + Id = 33, + Caption = "Техническая колонна 3", + Order = 2.2f + }, + new + { + Id = 34, + Caption = "Хвостовик 6", + Order = 6.5f + }, + new + { + Id = 35, + Caption = "Хвостовик 7", + Order = 6.6f + }, + new + { + Id = 36, + Caption = "Хвостовик 8", + Order = 6.7f + }, + new + { + Id = 37, + Caption = "Хвостовик 9", + Order = 6.8f + }, + new + { + Id = 38, + Caption = "Хвостовик 10", + Order = 6.9f + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSections.WellSectionPlan", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + 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("IdSectionType") + .HasColumnType("integer") + .HasColumnName("id_section_type") + .HasComment("Тип секции"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user") + .HasComment("Id пользователя"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("InnerDiameter") + .HasColumnType("double precision") + .HasColumnName("inner_diameter") + .HasComment("Внутренний диаметр"); + + b.Property("LastUpdateDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_last_update") + .HasComment("Дата последнего обновления"); + + b.Property("OuterDiameter") + .HasColumnType("double precision") + .HasColumnName("outer_diameter") + .HasComment("Внешний диаметр"); + + b.HasKey("Id"); + + b.HasIndex("IdSectionType"); + + b.HasIndex("IdWell", "IdSectionType") + .IsUnique(); + + b.ToTable("t_well_section_plan"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellType", 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.HasKey("Id"); + + b.ToTable("t_well_type", t => + { + t.HasComment("конструкция скважины"); + }); + + b.HasData( + new + { + Id = 1, + Caption = "Наклонно-направленная" + }, + new + { + Id = 2, + Caption = "Горизонтальная" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record1", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Blkpos") + .HasColumnType("real") + .HasColumnName("BLKPOS"); + + b.Property("Chkp") + .HasColumnType("real") + .HasColumnName("CHKP"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptbitv") + .HasColumnType("real") + .HasColumnName("DEPTBITV"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptretm") + .HasColumnType("real") + .HasColumnName("DEPTRETM"); + + b.Property("Deptvert") + .HasColumnType("real") + .HasColumnName("DEPTVERT"); + + b.Property("Gasa") + .HasColumnType("real") + .HasColumnName("GASA"); + + b.Property("Hkla") + .HasColumnType("real") + .HasColumnName("HKLA"); + + b.Property("Hklx") + .HasColumnType("real") + .HasColumnName("HKLX"); + + b.Property("Lagstks") + .HasColumnType("smallint") + .HasColumnName("LAGSTKS"); + + b.Property("Mcia") + .HasColumnType("real") + .HasColumnName("MCIA"); + + b.Property("Mcoa") + .HasColumnType("real") + .HasColumnName("MCOA"); + + b.Property("Mdia") + .HasColumnType("real") + .HasColumnName("MDIA"); + + b.Property("Mdoa") + .HasColumnType("real") + .HasColumnName("MDOA"); + + b.Property("Mfia") + .HasColumnType("real") + .HasColumnName("MFIA"); + + b.Property("Mfoa") + .HasColumnType("real") + .HasColumnName("MFOA"); + + b.Property("Mfop") + .HasColumnType("smallint") + .HasColumnName("MFOP"); + + b.Property("Mtia") + .HasColumnType("real") + .HasColumnName("MTIA"); + + b.Property("Mtoa") + .HasColumnType("real") + .HasColumnName("MTOA"); + + b.Property("Ropa") + .HasColumnType("real") + .HasColumnName("ROPA"); + + b.Property("Rpma") + .HasColumnType("smallint") + .HasColumnName("RPMA"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Spm1") + .HasColumnType("smallint") + .HasColumnName("SPM1"); + + b.Property("Spm2") + .HasColumnType("smallint") + .HasColumnName("SPM2"); + + b.Property("Spm3") + .HasColumnType("smallint") + .HasColumnName("SPM3"); + + b.Property("Sppa") + .HasColumnType("real") + .HasColumnName("SPPA"); + + b.Property("Stkc") + .HasColumnType("integer") + .HasColumnName("STKC"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.Property("Torqa") + .HasColumnType("real") + .HasColumnName("TORQA"); + + b.Property("Torqx") + .HasColumnType("real") + .HasColumnName("TORQX"); + + b.Property("Tvolact") + .HasColumnType("real") + .HasColumnName("TVOLACT"); + + b.Property("Tvolcact") + .HasColumnType("real") + .HasColumnName("TVOLCACT"); + + b.Property("Woba") + .HasColumnType("real") + .HasColumnName("WOBA"); + + b.Property("Wobx") + .HasColumnType("real") + .HasColumnName("WOBX"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_1"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record50", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("DeptmeasGdpMc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_GDP_mc"); + + b.Property("DeptmeasMcrstat") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_MCRSTAT"); + + b.Property("DeptmeasRa33Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33_mc"); + + b.Property("DeptmeasRa33f2Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33F2_mc"); + + b.Property("DeptmeasRa33f4Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33F4_mc"); + + b.Property("DeptmeasRp33Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33_mc"); + + b.Property("DeptmeasRp33f2Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33F2_mc"); + + b.Property("DeptmeasRp33f4Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33F4_mc"); + + b.Property("DeptmeasSlvlMc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_SLVL_mc"); + + b.Property("GdpMc") + .HasColumnType("real") + .HasColumnName("GDP_mc"); + + b.Property("Mcrstat") + .HasColumnType("real") + .HasColumnName("MCRSTAT"); + + b.Property("Ra33Mc") + .HasColumnType("real") + .HasColumnName("RA33_mc"); + + b.Property("Ra33f2Mc") + .HasColumnType("real") + .HasColumnName("RA33F2_mc"); + + b.Property("Ra33f4Mc") + .HasColumnType("real") + .HasColumnName("RA33F4_mc"); + + b.Property("Rp33Mc") + .HasColumnType("real") + .HasColumnName("RP33_mc"); + + b.Property("Rp33f2Mc") + .HasColumnType("real") + .HasColumnName("RP33F2_mc"); + + b.Property("Rp33f4Mc") + .HasColumnType("real") + .HasColumnName("RP33F4_mc"); + + b.Property("SlvlMc") + .HasColumnType("real") + .HasColumnName("SLVL_mc"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_50"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record60", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Btot") + .HasColumnType("real") + .HasColumnName("Btot"); + + b.Property("Bx") + .HasColumnType("real") + .HasColumnName("Bx"); + + b.Property("By") + .HasColumnType("real") + .HasColumnName("By"); + + b.Property("Bz") + .HasColumnType("real") + .HasColumnName("Bz"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Gtot") + .HasColumnType("real") + .HasColumnName("Gtot"); + + b.Property("Gx") + .HasColumnType("real") + .HasColumnName("Gx"); + + b.Property("Gy") + .HasColumnType("real") + .HasColumnName("Gy"); + + b.Property("Gz") + .HasColumnType("real") + .HasColumnName("Gz"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_60"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record61", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Att06h") + .HasColumnType("real") + .HasColumnName("ATT06H"); + + b.Property("Att06l") + .HasColumnType("real") + .HasColumnName("ATT06L"); + + b.Property("Att10h") + .HasColumnType("real") + .HasColumnName("ATT10H"); + + b.Property("Att10l") + .HasColumnType("real") + .HasColumnName("ATT10L"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Phl1f1") + .HasColumnType("real") + .HasColumnName("PHL1F1"); + + b.Property("Phl1f2") + .HasColumnType("real") + .HasColumnName("PHL1F2"); + + b.Property("Phl2f1") + .HasColumnType("real") + .HasColumnName("PHL2F1"); + + b.Property("Phl2f2") + .HasColumnType("real") + .HasColumnName("PHL2F2"); + + b.Property("Status") + .HasColumnType("real") + .HasColumnName("Status"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_61"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record7", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptsvym") + .HasColumnType("real") + .HasColumnName("DEPTSVYM"); + + b.Property("Deptsvyv") + .HasColumnType("real") + .HasColumnName("DEPTSVYV"); + + b.Property("Passnum") + .HasColumnType("smallint") + .HasColumnName("PASSNUM"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Svyazc") + .HasColumnType("real") + .HasColumnName("SVYAZC"); + + b.Property("Svyazu") + .HasColumnType("real") + .HasColumnName("SVYAZU"); + + b.Property("Svydls") + .HasColumnType("real") + .HasColumnName("SVYDLS"); + + b.Property("Svyew") + .HasColumnType("real") + .HasColumnName("SVYEW"); + + b.Property("Svygtf") + .HasColumnType("real") + .HasColumnName("SVYGTF"); + + b.Property("Svyinc") + .HasColumnType("real") + .HasColumnName("SVYINC"); + + b.Property("Svymtf") + .HasColumnType("real") + .HasColumnName("SVYMTF"); + + b.Property("Svyns") + .HasColumnType("real") + .HasColumnName("SVYNS"); + + b.Property("Svytype") + .HasColumnType("text") + .HasColumnName("SVYTYPE"); + + b.Property("Svywalk") + .HasColumnType("real") + .HasColumnName("SVYWALK"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_7"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record8", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptbitv") + .HasColumnType("real") + .HasColumnName("DEPTBITV"); + + b.Property("Deptcalm") + .HasColumnType("real") + .HasColumnName("DEPTCALM"); + + b.Property("Deptcalv") + .HasColumnType("real") + .HasColumnName("DEPTCALV"); + + b.Property("Deptfdm") + .HasColumnType("real") + .HasColumnName("DEPTFDM"); + + b.Property("Deptfdv") + .HasColumnType("real") + .HasColumnName("DEPTFDV"); + + b.Property("Deptgr1m") + .HasColumnType("real") + .HasColumnName("DEPTGR1M"); + + b.Property("Deptgr1v") + .HasColumnType("real") + .HasColumnName("DEPTGR1V"); + + b.Property("Deptgr2m") + .HasColumnType("real") + .HasColumnName("DEPTGR2M"); + + b.Property("Deptgr2v") + .HasColumnType("real") + .HasColumnName("DEPTGR2V"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptp1m") + .HasColumnType("real") + .HasColumnName("DEPTP1M"); + + b.Property("Deptp1v") + .HasColumnType("real") + .HasColumnName("DEPTP1V"); + + b.Property("Deptp2m") + .HasColumnType("real") + .HasColumnName("DEPTP2M"); + + b.Property("Deptp2v") + .HasColumnType("real") + .HasColumnName("DEPTP2V"); + + b.Property("Deptrs1m") + .HasColumnType("real") + .HasColumnName("DEPTRS1M"); + + b.Property("Deptrs1v") + .HasColumnType("real") + .HasColumnName("DEPTRS1V"); + + b.Property("Deptrs2m") + .HasColumnType("real") + .HasColumnName("DEPTRS2M"); + + b.Property("Deptrs2v") + .HasColumnType("real") + .HasColumnName("DEPTRS2V"); + + b.Property("Deptvert") + .HasColumnType("real") + .HasColumnName("DEPTVERT"); + + b.Property("Mclp") + .HasColumnType("real") + .HasColumnName("MCLP"); + + b.Property("Mfd") + .HasColumnType("real") + .HasColumnName("MFD"); + + b.Property("Mffp") + .HasColumnType("real") + .HasColumnName("MFFP"); + + b.Property("Mfpp") + .HasColumnType("real") + .HasColumnName("MFPP"); + + b.Property("Mfrann") + .HasColumnType("real") + .HasColumnName("MFRANN"); + + b.Property("Mfrpipe") + .HasColumnType("real") + .HasColumnName("MFRPIPE"); + + b.Property("Mftann") + .HasColumnType("real") + .HasColumnName("MFTANN"); + + b.Property("Mftpipe") + .HasColumnType("real") + .HasColumnName("MFTPIPE"); + + b.Property("Mg1") + .HasColumnType("real") + .HasColumnName("MG1"); + + b.Property("Mg1c") + .HasColumnType("real") + .HasColumnName("MG1C"); + + b.Property("Mg2") + .HasColumnType("real") + .HasColumnName("MG2"); + + b.Property("Mg2c") + .HasColumnType("real") + .HasColumnName("MG2C"); + + b.Property("Mpo1") + .HasColumnType("real") + .HasColumnName("MPO1"); + + b.Property("Mpo2") + .HasColumnType("real") + .HasColumnName("MPO2"); + + b.Property("Mr1") + .HasColumnType("real") + .HasColumnName("MR1"); + + b.Property("Mr1c") + .HasColumnType("real") + .HasColumnName("MR1C"); + + b.Property("Mr2") + .HasColumnType("real") + .HasColumnName("MR2"); + + b.Property("Mr2c") + .HasColumnType("real") + .HasColumnName("MR2C"); + + b.Property("Passnum") + .HasColumnType("smallint") + .HasColumnName("PASSNUM"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Spare6") + .HasColumnType("real") + .HasColumnName("SPARE6"); + + b.Property("Spare7") + .HasColumnType("real") + .HasColumnName("SPARE7"); + + b.Property("Spare8") + .HasColumnType("real") + .HasColumnName("SPARE8"); + + b.Property("Spare9") + .HasColumnType("real") + .HasColumnName("SPARE9"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_8"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Cluster", b => + { + b.HasOne("AsbCloudDb.Model.Deposit", "Deposit") + .WithMany("Clusters") + .HasForeignKey("IdDeposit") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_cluster_t_deposit_id_fk"); + + b.Navigation("Deposit"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Company", b => + { + b.HasOne("AsbCloudDb.Model.CompanyType", "CompanyType") + .WithMany("Companies") + .HasForeignKey("IdCompanyType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("CompanyType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Contact", b => + { + b.HasOne("AsbCloudDb.Model.CompanyType", "CompanyType") + .WithMany("Contacts") + .HasForeignKey("IdCompanyType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("Contacts") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("CompanyType"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DailyReports.DailyReport", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DataSaubStat", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DetectedOperation", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillTest", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillingProgramPart", b => + { + b.HasOne("AsbCloudDb.Model.FileCategory", "FileCategory") + .WithMany() + .HasForeignKey("IdFileCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("DrillingProgramParts") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("FileCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Faq", b => + { + b.HasOne("AsbCloudDb.Model.User", "AuthorAnswer") + .WithMany() + .HasForeignKey("IdAuthorAnswer"); + + b.HasOne("AsbCloudDb.Model.User", "AuthorQuestion") + .WithMany() + .HasForeignKey("IdAuthorQuestion") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("AuthorAnswer"); + + b.Navigation("AuthorQuestion"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileInfo", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany("Files") + .HasForeignKey("IdAuthor"); + + b.HasOne("AsbCloudDb.Model.FileCategory", "FileCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("FileCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileMark", b => + { + b.HasOne("AsbCloudDb.Model.FileInfo", "FileInfo") + .WithMany("FileMarks") + .HasForeignKey("IdFile") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_file_mark_t_file_info_fk"); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany("FileMarks") + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_user_t_file_mark_fk"); + + b.Navigation("FileInfo"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemFloat", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemInt", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemString", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.HelpPage", b => + { + b.HasOne("AsbCloudDb.Model.FileCategory", "FileCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("FileCategory"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.LimitingParameter", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Manuals.Manual", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.FileCategory", "Category") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Manuals.ManualDirectory", "Directory") + .WithMany("Manuals") + .HasForeignKey("IdDirectory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Category"); + + b.Navigation("Directory"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Manuals.ManualDirectory", b => + { + b.HasOne("AsbCloudDb.Model.Manuals.ManualDirectory", "Parent") + .WithMany("Children") + .HasForeignKey("IdParent") + .OnDelete(DeleteBehavior.Cascade); + + b.Navigation("Parent"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Measure", b => + { + b.HasOne("AsbCloudDb.Model.MeasureCategory", "Category") + .WithMany("Measures") + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Category"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Notification", b => + { + b.HasOne("AsbCloudDb.Model.NotificationCategory", "NotificationCategory") + .WithMany("Notifications") + .HasForeignKey("IdNotificationCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("NotificationCategory"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.OperationValue", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdOperationCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAntiCrashRotation", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAntiCrashRotation", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAutoHoldTF", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAutoHoldTF", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDamper", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDamper", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDrillTest", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDrillTest", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanOscillation", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanOscillation", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanShockTest", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanShockTest", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanStaticMeasurementOutput", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanStaticMeasurementOutput", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanLoadCapacity", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanLoadCapacity", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanOscillationAngles", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanOscillationAngles", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanPositioningOffTheBottom", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanPositioningOffTheBottom", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingRotor", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingRotor", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingSlide", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingSlide", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRecordingStaticMeasurement", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRecordingStaticMeasurement", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRotor", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRotor", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSlide", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSlide", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingOffThePump", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict) + .HasConstraintName("FK_t_process_map_plan_operation_switching_off_the_pump_t_user~1"); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingOffThePump", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_t_process_map_plan_operation_switching_off_the_pump_t_well~1"); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingToTheMode", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingToTheMode", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanTFOrientation", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanTFOrientation", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => + { + b.HasOne("AsbCloudDb.Model.Company", "Company") + .WithMany("RelationCompaniesWells") + .HasForeignKey("IdCompany") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_relation_company_well_t_company_id_fk"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("RelationCompaniesWells") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_relation_company_well_t_well_id_fk"); + + b.Navigation("Company"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationContactWell", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany("RelationContactsWells") + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserDrillingProgramPart", b => + { + b.HasOne("AsbCloudDb.Model.DrillingProgramPart", "DrillingProgramPart") + .WithMany("RelatedUsers") + .HasForeignKey("IdDrillingProgramPart") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("DrillingProgramPart"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRolePermission", b => + { + b.HasOne("AsbCloudDb.Model.Permission", "Permission") + .WithMany("RelationUserRolePermissions") + .HasForeignKey("IdPermission") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "UserRole") + .WithMany("RelationUserRolePermissions") + .HasForeignKey("IdUserRole") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Permission"); + + b.Navigation("UserRole"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRoleUserRole", b => + { + b.HasOne("AsbCloudDb.Model.UserRole", "Role") + .WithMany("RelationUserRoleUserRoles") + .HasForeignKey("Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "IncludeRole") + .WithMany() + .HasForeignKey("IdInclude") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("IncludeRole"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserUserRole", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany("RelationUsersUserRoles") + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "UserRole") + .WithMany("RelationUsersUserRoles") + .HasForeignKey("IdUserRole") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + + b.Navigation("UserRole"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ReportProperty", b => + { + b.HasOne("AsbCloudDb.Model.FileInfo", "File") + .WithMany() + .HasForeignKey("IdFile") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("File"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Schedule", b => + { + b.HasOne("AsbCloudDb.Model.Driller", "Driller") + .WithMany("Schedule") + .HasForeignKey("IdDriller") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_schedule_t_driller_id_driller"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Driller"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.SetpointsRequest", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaub", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("DataSaub") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_data_saub_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSpin", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("DataSpin") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_data_spin_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryEvent", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Events") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_event_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryMessage", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Messages") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_messages_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryUser", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Users") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_user_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Trajectory.TrajectoryFact", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Trajectory.TrajectoryPlan", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.HasOne("AsbCloudDb.Model.Company", "Company") + .WithMany("Users") + .HasForeignKey("IdCompany") + .OnDelete(DeleteBehavior.SetNull) + .IsRequired() + .HasConstraintName("t_user_t_company_id_fk"); + + b.Navigation("Company"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserSetting", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", b => + { + b.HasOne("AsbCloudDb.Model.Cluster", "Cluster") + .WithMany("Wells") + .HasForeignKey("IdCluster") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_t_cluster_id_fk"); + + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithOne("Well") + .HasForeignKey("AsbCloudDb.Model.Well", "IdTelemetry") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("t_well_t_telemetry_id_fk"); + + b.HasOne("AsbCloudDb.Model.WellType", "WellType") + .WithMany("Wells") + .HasForeignKey("IdWellType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Cluster"); + + b.Navigation("Telemetry"); + + b.Navigation("WellType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellComposite", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("WellComposites") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_t_well_id_fk"); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany("WellComposites") + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_t_well_section_type_id_fk"); + + b.HasOne("AsbCloudDb.Model.Well", "WellSrc") + .WithMany("WellCompositeSrcs") + .HasForeignKey("IdWellSrc") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_src_t_well_id_fk"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + + b.Navigation("WellSrc"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellFinalDocument", b => + { + b.HasOne("AsbCloudDb.Model.FileCategory", "Category") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Category"); + + b.Navigation("User"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperation", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellOperation", "OperationPlan") + .WithMany() + .HasForeignKey("IdPlan") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("WellOperations") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany("WellOperations") + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("OperationPlan"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperationCategory", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "Parent") + .WithMany() + .HasForeignKey("IdParent"); + + b.Navigation("Parent"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSections.WellSectionPlan", b => + { + b.HasOne("AsbCloudDb.Model.WellSectionType", "SectionType") + .WithMany() + .HasForeignKey("IdSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("SectionType"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record1", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record1", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record50", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record50", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record60", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record60", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record61", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record61", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record7", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record7", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record8", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record8", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Cluster", b => + { + b.Navigation("Wells"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Company", b => + { + b.Navigation("RelationCompaniesWells"); + + b.Navigation("Users"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.CompanyType", b => + { + b.Navigation("Companies"); + + b.Navigation("Contacts"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Deposit", b => + { + b.Navigation("Clusters"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Driller", b => + { + b.Navigation("Schedule"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillingProgramPart", b => + { + b.Navigation("RelatedUsers"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileInfo", b => + { + b.Navigation("FileMarks"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Manuals.ManualDirectory", b => + { + b.Navigation("Children"); + + b.Navigation("Manuals"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.MeasureCategory", b => + { + b.Navigation("Measures"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.NotificationCategory", b => + { + b.Navigation("Notifications"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Permission", b => + { + b.Navigation("RelationUserRolePermissions"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Telemetry", b => + { + b.Navigation("DataSaub"); + + b.Navigation("DataSpin"); + + b.Navigation("Events"); + + b.Navigation("Messages"); + + b.Navigation("Users"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.Navigation("FileMarks"); + + b.Navigation("Files"); + + b.Navigation("RelationContactsWells"); + + b.Navigation("RelationUsersUserRoles"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserRole", b => + { + b.Navigation("RelationUserRolePermissions"); + + b.Navigation("RelationUserRoleUserRoles"); + + b.Navigation("RelationUsersUserRoles"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", b => + { + b.Navigation("Contacts"); + + b.Navigation("DrillingProgramParts"); + + b.Navigation("RelationCompaniesWells"); + + b.Navigation("WellCompositeSrcs"); + + b.Navigation("WellComposites"); + + b.Navigation("WellOperations"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSectionType", b => + { + b.Navigation("WellComposites"); + + b.Navigation("WellOperations"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellType", b => + { + b.Navigation("Wells"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/AsbCloudDb/Migrations/20240718044823_Update_Tables_ProcessMapOperationsAndFunctions2.cs b/AsbCloudDb/Migrations/20240718044823_Update_Tables_ProcessMapOperationsAndFunctions2.cs new file mode 100644 index 00000000..ca6299ad --- /dev/null +++ b/AsbCloudDb/Migrations/20240718044823_Update_Tables_ProcessMapOperationsAndFunctions2.cs @@ -0,0 +1,1012 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace AsbCloudDb.Migrations +{ + /// + public partial class Update_Tables_ProcessMapOperationsAndFunctions2 : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AlterColumn( + name: "note", + table: "t_process_map_shock_test", + type: "character varying(1024)", + maxLength: 1024, + nullable: true, + comment: "Примечание", + oldClrType: typeof(string), + oldType: "character varying(1024)", + oldMaxLength: 1024, + oldComment: "Примечание"); + + migrationBuilder.AlterColumn( + name: "reaming3_stop_point_off_bottom", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: true, + comment: "Остановка над забоем, м.", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Остановка над забоем, м."); + + migrationBuilder.AlterColumn( + name: "reaming3_rpm_up", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: true, + comment: "Проработка 3, Обороты, об/мин., Вверх", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 3, Обороты, об/мин., Вверх"); + + migrationBuilder.AlterColumn( + name: "reaming3_rpm_down", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: true, + comment: "Проработка 3, Обороты, об/мин., Вниз", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 3, Обороты, об/мин., Вниз"); + + migrationBuilder.AlterColumn( + name: "reaming3_rop_up", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: true, + comment: "Проработка 3, Скорость, м/ч., Вверх", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 3, Скорость, м/ч., Вверх"); + + migrationBuilder.AlterColumn( + name: "reaming3_rop_down", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: true, + comment: "Проработка 3, Скорость, м/ч., Вниз", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 3, Скорость, м/ч., Вниз"); + + migrationBuilder.AlterColumn( + name: "reaming3_repetitions_count", + table: "t_process_map_plan_reaming_slide", + type: "integer", + nullable: true, + comment: "Проработка 3, Количество повторений, шт.", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 3, Количество повторений, шт."); + + migrationBuilder.AlterColumn( + name: "reaming3_interval", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: true, + comment: "Проработка 3, Интервал проработки, м.", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 3, Интервал проработки, м."); + + migrationBuilder.AlterColumn( + name: "reaming3_flow_rate_up", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: true, + comment: "Проработка 3, Расход, л/с., Вверх", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 3, Расход, л/с., Вверх"); + + migrationBuilder.AlterColumn( + name: "reaming3_flow_rate_down", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: true, + comment: "Проработка 3, Расход, л/с., Вниз", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 3, Расход, л/с., Вниз"); + + migrationBuilder.AlterColumn( + name: "reaming2_stop_point_off_bottom", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: true, + comment: "Остановка над забоем, м.", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Остановка над забоем, м."); + + migrationBuilder.AlterColumn( + name: "reaming2_rpm_up", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: true, + comment: "Проработка 2, Обороты, об/мин., Вверх", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 2, Обороты, об/мин., Вверх"); + + migrationBuilder.AlterColumn( + name: "reaming2_rpm_down", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: true, + comment: "Проработка 2, Обороты, об/мин., Вниз", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 2, Обороты, об/мин., Вниз"); + + migrationBuilder.AlterColumn( + name: "reaming2_rop_up", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: true, + comment: "Проработка 2, Скорость, м/ч., Вверх", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 2, Скорость, м/ч., Вверх"); + + migrationBuilder.AlterColumn( + name: "reaming2_rop_down", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: true, + comment: "Проработка 2, Скорость, м/ч., Вниз", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 2, Скорость, м/ч., Вниз"); + + migrationBuilder.AlterColumn( + name: "reaming2_repetitions_count", + table: "t_process_map_plan_reaming_slide", + type: "integer", + nullable: true, + comment: "Проработка 2, Количество повторений, шт.", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 2, Количество повторений, шт."); + + migrationBuilder.AlterColumn( + name: "reaming2_interval", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: true, + comment: "Проработка 2, Интервал проработки, м.", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 2, Интервал проработки, м."); + + migrationBuilder.AlterColumn( + name: "reaming2_flow_rate_up", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: true, + comment: "Проработка 2, Расход, л/с., Вверх", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 2, Расход, л/с., Вверх"); + + migrationBuilder.AlterColumn( + name: "reaming2_flow_rate_down", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: true, + comment: "Проработка 2, Расход, л/с., Вниз", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 2, Расход, л/с., Вниз"); + + migrationBuilder.AlterColumn( + name: "reaming1_repetitions_count", + table: "t_process_map_plan_reaming_slide", + type: "integer", + nullable: false, + comment: "Проработка 1. Количество повторений, шт.", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 1. Количество повторений, шт."); + + migrationBuilder.AlterColumn( + name: "note", + table: "t_process_map_plan_reaming_slide", + type: "character varying(1024)", + maxLength: 1024, + nullable: true, + comment: "Примечание", + oldClrType: typeof(string), + oldType: "character varying(1024)", + oldMaxLength: 1024, + oldComment: "Примечание"); + + migrationBuilder.AlterColumn( + name: "note", + table: "t_process_map_plan_oscillation", + type: "character varying(1024)", + maxLength: 1024, + nullable: true, + comment: "Примечание", + oldClrType: typeof(string), + oldType: "character varying(1024)", + oldMaxLength: 1024, + oldComment: "Примечание"); + + migrationBuilder.AlterColumn( + name: "reaming3_stop_point_off_bottom", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: true, + comment: "Остановка над забоем, м.", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Остановка над забоем, м."); + + migrationBuilder.AlterColumn( + name: "reaming3_rpm_up", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: true, + comment: "Проработка 3, Обороты, об/мин., Вверх", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 3, Обороты, об/мин., Вверх"); + + migrationBuilder.AlterColumn( + name: "reaming3_rpm_down", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: true, + comment: "Проработка 3, Обороты, об/мин., Вниз", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 3, Обороты, об/мин., Вниз"); + + migrationBuilder.AlterColumn( + name: "reaming3_rop_up", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: true, + comment: "Проработка 3, Скорость, м/ч., Вверх", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 3, Скорость, м/ч., Вверх"); + + migrationBuilder.AlterColumn( + name: "reaming3_rop_down", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: true, + comment: "Проработка 3, Скорость, м/ч., Вниз", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 3, Скорость, м/ч., Вниз"); + + migrationBuilder.AlterColumn( + name: "reaming3_repetitions_count", + table: "t_process_map_plan_operation_reaming_rotor", + type: "integer", + nullable: true, + comment: "Проработка 3, Количество повторений, шт.", + oldClrType: typeof(int), + oldType: "integer", + oldComment: "Проработка 3, Количество повторений, шт."); + + migrationBuilder.AlterColumn( + name: "reaming3_interval", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: true, + comment: "Проработка 3, Интервал проработки, м.", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 3, Интервал проработки, м."); + + migrationBuilder.AlterColumn( + name: "reaming3_flow_rate_up", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: true, + comment: "Проработка 3, Расход, л/с., Вверх", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 3, Расход, л/с., Вверх"); + + migrationBuilder.AlterColumn( + name: "reaming3_flow_rate_down", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: true, + comment: "Проработка 3, Расход, л/с., Вниз", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 3, Расход, л/с., Вниз"); + + migrationBuilder.AlterColumn( + name: "reaming2_stop_point_off_bottom", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: true, + comment: "Остановка над забоем, м.", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Остановка над забоем, м."); + + migrationBuilder.AlterColumn( + name: "reaming2_rpm_up", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: true, + comment: "Проработка 2, Обороты, об/мин., Вверх", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 2, Обороты, об/мин., Вверх"); + + migrationBuilder.AlterColumn( + name: "reaming2_rpm_down", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: true, + comment: "Проработка 2, Обороты, об/мин., Вниз", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 2, Обороты, об/мин., Вниз"); + + migrationBuilder.AlterColumn( + name: "reaming2_rop_up", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: true, + comment: "Проработка 2, Скорость, м/ч., Вверх", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 2, Скорость, м/ч., Вверх"); + + migrationBuilder.AlterColumn( + name: "reaming2_rop_down", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: true, + comment: "Проработка 2, Скорость, м/ч., Вниз", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 2, Скорость, м/ч., Вниз"); + + migrationBuilder.AlterColumn( + name: "reaming2_repetitions_count", + table: "t_process_map_plan_operation_reaming_rotor", + type: "integer", + nullable: true, + comment: "Проработка 2, Количество повторений, шт.", + oldClrType: typeof(int), + oldType: "integer", + oldComment: "Проработка 2, Количество повторений, шт."); + + migrationBuilder.AlterColumn( + name: "reaming2_interval", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: true, + comment: "Проработка 2, Интервал проработки, м.", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 2, Интервал проработки, м."); + + migrationBuilder.AlterColumn( + name: "reaming2_flow_rate_up", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: true, + comment: "Проработка 2, Расход, л/с., Вверх", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 2, Расход, л/с., Вверх"); + + migrationBuilder.AlterColumn( + name: "reaming2_flow_rate_down", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: true, + comment: "Проработка 2, Расход, л/с., Вниз", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 2, Расход, л/с., Вниз"); + + migrationBuilder.AlterColumn( + name: "note", + table: "t_process_map_plan_operation_reaming_rotor", + type: "character varying(1024)", + maxLength: 1024, + nullable: true, + comment: "Примечание", + oldClrType: typeof(string), + oldType: "character varying(1024)", + oldMaxLength: 1024, + oldComment: "Примечание"); + + migrationBuilder.AlterColumn( + name: "note", + table: "t_process_map_plan_functions_damper", + type: "character varying(1024)", + maxLength: 1024, + nullable: true, + comment: "Примечание", + oldClrType: typeof(string), + oldType: "character varying(1024)", + oldMaxLength: 1024, + oldComment: "Примечание"); + + migrationBuilder.AlterColumn( + name: "note", + table: "t_process_map_plan_drilltest", + type: "character varying(1024)", + maxLength: 1024, + nullable: true, + comment: "Примечание", + oldClrType: typeof(string), + oldType: "character varying(1024)", + oldMaxLength: 1024, + oldComment: "Примечание"); + + migrationBuilder.AlterColumn( + name: "note", + table: "t_process_map_plan_auto_hold_tf", + type: "character varying(1024)", + maxLength: 1024, + nullable: true, + comment: "Примечание", + oldClrType: typeof(string), + oldType: "character varying(1024)", + oldMaxLength: 1024, + oldComment: "Примечание"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.AlterColumn( + name: "note", + table: "t_process_map_shock_test", + type: "character varying(1024)", + maxLength: 1024, + nullable: false, + defaultValue: "", + comment: "Примечание", + oldClrType: typeof(string), + oldType: "character varying(1024)", + oldMaxLength: 1024, + oldNullable: true, + oldComment: "Примечание"); + + migrationBuilder.AlterColumn( + name: "reaming3_stop_point_off_bottom", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Остановка над забоем, м.", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Остановка над забоем, м."); + + migrationBuilder.AlterColumn( + name: "reaming3_rpm_up", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 3, Обороты, об/мин., Вверх", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 3, Обороты, об/мин., Вверх"); + + migrationBuilder.AlterColumn( + name: "reaming3_rpm_down", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 3, Обороты, об/мин., Вниз", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 3, Обороты, об/мин., Вниз"); + + migrationBuilder.AlterColumn( + name: "reaming3_rop_up", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 3, Скорость, м/ч., Вверх", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 3, Скорость, м/ч., Вверх"); + + migrationBuilder.AlterColumn( + name: "reaming3_rop_down", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 3, Скорость, м/ч., Вниз", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 3, Скорость, м/ч., Вниз"); + + migrationBuilder.AlterColumn( + name: "reaming3_repetitions_count", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 3, Количество повторений, шт.", + oldClrType: typeof(int), + oldType: "integer", + oldNullable: true, + oldComment: "Проработка 3, Количество повторений, шт."); + + migrationBuilder.AlterColumn( + name: "reaming3_interval", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 3, Интервал проработки, м.", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 3, Интервал проработки, м."); + + migrationBuilder.AlterColumn( + name: "reaming3_flow_rate_up", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 3, Расход, л/с., Вверх", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 3, Расход, л/с., Вверх"); + + migrationBuilder.AlterColumn( + name: "reaming3_flow_rate_down", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 3, Расход, л/с., Вниз", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 3, Расход, л/с., Вниз"); + + migrationBuilder.AlterColumn( + name: "reaming2_stop_point_off_bottom", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Остановка над забоем, м.", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Остановка над забоем, м."); + + migrationBuilder.AlterColumn( + name: "reaming2_rpm_up", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 2, Обороты, об/мин., Вверх", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 2, Обороты, об/мин., Вверх"); + + migrationBuilder.AlterColumn( + name: "reaming2_rpm_down", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 2, Обороты, об/мин., Вниз", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 2, Обороты, об/мин., Вниз"); + + migrationBuilder.AlterColumn( + name: "reaming2_rop_up", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 2, Скорость, м/ч., Вверх", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 2, Скорость, м/ч., Вверх"); + + migrationBuilder.AlterColumn( + name: "reaming2_rop_down", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 2, Скорость, м/ч., Вниз", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 2, Скорость, м/ч., Вниз"); + + migrationBuilder.AlterColumn( + name: "reaming2_repetitions_count", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 2, Количество повторений, шт.", + oldClrType: typeof(int), + oldType: "integer", + oldNullable: true, + oldComment: "Проработка 2, Количество повторений, шт."); + + migrationBuilder.AlterColumn( + name: "reaming2_interval", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 2, Интервал проработки, м.", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 2, Интервал проработки, м."); + + migrationBuilder.AlterColumn( + name: "reaming2_flow_rate_up", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 2, Расход, л/с., Вверх", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 2, Расход, л/с., Вверх"); + + migrationBuilder.AlterColumn( + name: "reaming2_flow_rate_down", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 2, Расход, л/с., Вниз", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 2, Расход, л/с., Вниз"); + + migrationBuilder.AlterColumn( + name: "reaming1_repetitions_count", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: false, + comment: "Проработка 1. Количество повторений, шт.", + oldClrType: typeof(int), + oldType: "integer", + oldComment: "Проработка 1. Количество повторений, шт."); + + migrationBuilder.AlterColumn( + name: "note", + table: "t_process_map_plan_reaming_slide", + type: "character varying(1024)", + maxLength: 1024, + nullable: false, + defaultValue: "", + comment: "Примечание", + oldClrType: typeof(string), + oldType: "character varying(1024)", + oldMaxLength: 1024, + oldNullable: true, + oldComment: "Примечание"); + + migrationBuilder.AlterColumn( + name: "note", + table: "t_process_map_plan_oscillation", + type: "character varying(1024)", + maxLength: 1024, + nullable: false, + defaultValue: "", + comment: "Примечание", + oldClrType: typeof(string), + oldType: "character varying(1024)", + oldMaxLength: 1024, + oldNullable: true, + oldComment: "Примечание"); + + migrationBuilder.AlterColumn( + name: "reaming3_stop_point_off_bottom", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Остановка над забоем, м.", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Остановка над забоем, м."); + + migrationBuilder.AlterColumn( + name: "reaming3_rpm_up", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 3, Обороты, об/мин., Вверх", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 3, Обороты, об/мин., Вверх"); + + migrationBuilder.AlterColumn( + name: "reaming3_rpm_down", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 3, Обороты, об/мин., Вниз", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 3, Обороты, об/мин., Вниз"); + + migrationBuilder.AlterColumn( + name: "reaming3_rop_up", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 3, Скорость, м/ч., Вверх", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 3, Скорость, м/ч., Вверх"); + + migrationBuilder.AlterColumn( + name: "reaming3_rop_down", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 3, Скорость, м/ч., Вниз", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 3, Скорость, м/ч., Вниз"); + + migrationBuilder.AlterColumn( + name: "reaming3_repetitions_count", + table: "t_process_map_plan_operation_reaming_rotor", + type: "integer", + nullable: false, + defaultValue: 0, + comment: "Проработка 3, Количество повторений, шт.", + oldClrType: typeof(int), + oldType: "integer", + oldNullable: true, + oldComment: "Проработка 3, Количество повторений, шт."); + + migrationBuilder.AlterColumn( + name: "reaming3_interval", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 3, Интервал проработки, м.", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 3, Интервал проработки, м."); + + migrationBuilder.AlterColumn( + name: "reaming3_flow_rate_up", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 3, Расход, л/с., Вверх", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 3, Расход, л/с., Вверх"); + + migrationBuilder.AlterColumn( + name: "reaming3_flow_rate_down", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 3, Расход, л/с., Вниз", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 3, Расход, л/с., Вниз"); + + migrationBuilder.AlterColumn( + name: "reaming2_stop_point_off_bottom", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Остановка над забоем, м.", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Остановка над забоем, м."); + + migrationBuilder.AlterColumn( + name: "reaming2_rpm_up", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 2, Обороты, об/мин., Вверх", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 2, Обороты, об/мин., Вверх"); + + migrationBuilder.AlterColumn( + name: "reaming2_rpm_down", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 2, Обороты, об/мин., Вниз", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 2, Обороты, об/мин., Вниз"); + + migrationBuilder.AlterColumn( + name: "reaming2_rop_up", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 2, Скорость, м/ч., Вверх", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 2, Скорость, м/ч., Вверх"); + + migrationBuilder.AlterColumn( + name: "reaming2_rop_down", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 2, Скорость, м/ч., Вниз", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 2, Скорость, м/ч., Вниз"); + + migrationBuilder.AlterColumn( + name: "reaming2_repetitions_count", + table: "t_process_map_plan_operation_reaming_rotor", + type: "integer", + nullable: false, + defaultValue: 0, + comment: "Проработка 2, Количество повторений, шт.", + oldClrType: typeof(int), + oldType: "integer", + oldNullable: true, + oldComment: "Проработка 2, Количество повторений, шт."); + + migrationBuilder.AlterColumn( + name: "reaming2_interval", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 2, Интервал проработки, м.", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 2, Интервал проработки, м."); + + migrationBuilder.AlterColumn( + name: "reaming2_flow_rate_up", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 2, Расход, л/с., Вверх", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 2, Расход, л/с., Вверх"); + + migrationBuilder.AlterColumn( + name: "reaming2_flow_rate_down", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 2, Расход, л/с., Вниз", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 2, Расход, л/с., Вниз"); + + migrationBuilder.AlterColumn( + name: "note", + table: "t_process_map_plan_operation_reaming_rotor", + type: "character varying(1024)", + maxLength: 1024, + nullable: false, + defaultValue: "", + comment: "Примечание", + oldClrType: typeof(string), + oldType: "character varying(1024)", + oldMaxLength: 1024, + oldNullable: true, + oldComment: "Примечание"); + + migrationBuilder.AlterColumn( + name: "note", + table: "t_process_map_plan_functions_damper", + type: "character varying(1024)", + maxLength: 1024, + nullable: false, + defaultValue: "", + comment: "Примечание", + oldClrType: typeof(string), + oldType: "character varying(1024)", + oldMaxLength: 1024, + oldNullable: true, + oldComment: "Примечание"); + + migrationBuilder.AlterColumn( + name: "note", + table: "t_process_map_plan_drilltest", + type: "character varying(1024)", + maxLength: 1024, + nullable: false, + defaultValue: "", + comment: "Примечание", + oldClrType: typeof(string), + oldType: "character varying(1024)", + oldMaxLength: 1024, + oldNullable: true, + oldComment: "Примечание"); + + migrationBuilder.AlterColumn( + name: "note", + table: "t_process_map_plan_auto_hold_tf", + type: "character varying(1024)", + maxLength: 1024, + nullable: false, + defaultValue: "", + comment: "Примечание", + oldClrType: typeof(string), + oldType: "character varying(1024)", + oldMaxLength: 1024, + oldNullable: true, + oldComment: "Примечание"); + } + } +} diff --git a/AsbCloudDb/Migrations/20240723055049_NotNullable_Fields_ProcessMapPlanReamingRotorAndSlide.Designer.cs b/AsbCloudDb/Migrations/20240723055049_NotNullable_Fields_ProcessMapPlanReamingRotorAndSlide.Designer.cs new file mode 100644 index 00000000..8676d5a2 --- /dev/null +++ b/AsbCloudDb/Migrations/20240723055049_NotNullable_Fields_ProcessMapPlanReamingRotorAndSlide.Designer.cs @@ -0,0 +1,12236 @@ +// +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("20240723055049_NotNullable_Fields_ProcessMapPlanReamingRotorAndSlide")] + partial class NotNullable_Fields_ProcessMapPlanReamingRotorAndSlide + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .UseCollation("Russian_Russia.1251") + .HasAnnotation("ProductVersion", "8.0.4") + .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", t => + { + t.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") + .HasColumnName("is_contact"); + + b.Property("Order") + .HasColumnType("integer") + .HasColumnName("order"); + + b.HasKey("Id"); + + b.ToTable("t_company_type"); + + b.HasData( + new + { + Id = 1, + Caption = "Недропользователь", + IsContact = true, + Order = 3 + }, + new + { + Id = 2, + Caption = "Буровой подрядчик", + IsContact = true, + Order = 2 + }, + new + { + Id = 3, + Caption = "Сервис автоматизации бурения", + IsContact = true, + Order = 0 + }, + new + { + Id = 4, + Caption = "Сервис по ГТИ", + IsContact = true, + Order = 6 + }, + new + { + Id = 5, + Caption = "Растворный сервис", + IsContact = true, + Order = 4 + }, + new + { + Id = 6, + Caption = "Сервис по ННБ", + IsContact = true, + Order = 5 + }, + new + { + Id = 7, + Caption = "Служба супервайзинга", + IsContact = false, + Order = 1 + }, + new + { + Id = 9, + Caption = "Сервис по цементированию", + IsContact = true, + Order = 7 + }, + new + { + Id = 11, + Caption = "Дизельный сервис", + IsContact = false, + Order = 9 + }, + new + { + Id = 12, + Caption = "Сервис по обслуживанию верхних силовых приводов", + IsContact = true, + Order = 8 + }); + }); + + 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") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("email") + .HasComment("email"); + + b.Property("FullName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("full_name") + .HasComment("ФИО"); + + b.Property("IdCompanyType") + .HasMaxLength(255) + .HasColumnType("integer") + .HasColumnName("id_company_type") + .HasComment("вид деятельности"); + + b.Property("IdWell") + .HasMaxLength(255) + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("ключ скважины"); + + b.Property("Phone") + .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.HasIndex("IdWell"); + + b.ToTable("t_contact", t => + { + t.HasComment("Контакты"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DailyReports.DailyReport", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Date") + .HasColumnType("date") + .HasColumnName("date") + .HasComment("Дата формирования отчёта"); + + b.Property("DateLastUpdate") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_last_update") + .HasComment("Дата последнего обновления"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("ID скважины"); + + b.Property("SignBlock") + .HasColumnType("jsonb") + .HasColumnName("sign_block") + .HasComment("Подпись"); + + b.Property("SubsystemBlock") + .HasColumnType("jsonb") + .HasColumnName("subsystem_block") + .HasComment("Наработкой подсистем"); + + b.Property("TimeBalanceBlock") + .HasColumnType("jsonb") + .HasColumnName("time_balance_block") + .HasComment("Баланс времени"); + + b.HasKey("Id"); + + b.HasIndex("IdWell", "Date") + .IsUnique(); + + b.ToTable("t_daily_report", t => + { + t.HasComment("Ежедневные отчёты"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DataSaubStat", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AxialLoad") + .HasColumnType("double precision") + .HasColumnName("axial_load") + .HasComment("Фактическая нагрузка"); + + b.Property("AxialLoadLimitMax") + .HasColumnType("double precision") + .HasColumnName("axial_load_limit_max") + .HasComment("Максимально допустимая нагрузка"); + + b.Property("AxialLoadSp") + .HasColumnType("double precision") + .HasColumnName("axial_load_sp") + .HasComment("Ограничение факт. нагрузки"); + + b.Property("BlockSpeedSp") + .HasColumnType("double precision") + .HasColumnName("block_speed_sp") + .HasComment("Ограничение скорости блока"); + + 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("EnabledSubsystems") + .HasColumnType("integer") + .HasColumnName("enabled_subsystems") + .HasComment("Флаги подсистем"); + + b.Property("Flow") + .HasColumnType("double precision") + .HasColumnName("flow") + .HasComment("Фактический расход"); + + b.Property("HasOscillation") + .HasColumnType("boolean") + .HasColumnName("has_oscillation") + .HasComment("Наличие или отсутствие осцилляции"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category") + .HasComment("Название автоопределённой операции"); + + b.Property("IdFeedRegulator") + .HasColumnType("smallint") + .HasColumnName("id_feed_regulator") + .HasComment("Работа при достижении ограничения"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry") + .HasComment("Ключ телеметрии"); + + b.Property("Pressure") + .HasColumnType("double precision") + .HasColumnName("pressure") + .HasComment("Давление"); + + b.Property("PressureIdle") + .HasColumnType("double precision") + .HasColumnName("pressure_idle") + .HasComment("Давление холостого хода"); + + b.Property("PressureSp") + .HasColumnType("double precision") + .HasColumnName("pressure_sp") + .HasComment("Ограничение фактического давления"); + + b.Property("RotorSpeed") + .HasColumnType("double precision") + .HasColumnName("rotor_speed") + .HasComment("Фактическая скорость оборотов ВСП"); + + b.Property("RotorTorque") + .HasColumnType("double precision") + .HasColumnName("rotor_torque") + .HasComment("Фактический момент"); + + b.Property("RotorTorqueLimitMax") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_limit_max") + .HasComment("Максимально допустимый момент"); + + b.Property("RotorTorqueSp") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_sp") + .HasComment("Ограничение факт. момента"); + + b.Property("Speed") + .HasColumnType("double precision") + .HasColumnName("speed") + .HasComment("Скорость бурения"); + + b.HasKey("Id"); + + b.HasIndex("IdCategory"); + + b.HasIndex("IdTelemetry"); + + b.ToTable("t_data_saub_stat", t => + { + t.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", t => + { + t.HasComment("Месторождение"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DetectedOperation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + 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("EnabledSubsystems") + .HasColumnType("integer") + .HasColumnName("enabled_subsystems") + .HasComment("флаги включенных подсистем"); + + b.Property("ExtraData") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("extra_data") + .HasComment("доп. инфо по операции"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category") + .HasComment("Id категории операции"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .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", t => + { + t.HasComment("автоматически определенные операции по телеметрии"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillTest", b => + { + b.Property("Id") + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry") + .HasComment("Идентификатор телеметрии"); + + b.Property("DepthStart") + .HasColumnType("real") + .HasColumnName("depthStart") + .HasComment("Глубина начала"); + + b.Property("Params") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("t_drill_test_params") + .HasComment("Параметры записи drill test"); + + b.Property("TimeStampStart") + .HasColumnType("timestamp with time zone") + .HasColumnName("timestamp_start") + .HasComment("Время начала"); + + b.HasKey("Id", "IdTelemetry"); + + b.HasIndex("IdTelemetry"); + + b.ToTable("t_drill_test", t => + { + t.HasComment("Drill_test"); + }); + }); + + 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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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 = 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" + }, + new + { + Id = 528, + Description = "Разрешение на удаление контакта", + Name = "WellContact.delete" + }, + new + { + Id = 530, + Description = "Разрешение на редактирование плановой конструкции скважины", + Name = "WellSectionPlan.edit" + }, + new + { + Id = 531, + Description = "Разрешение на удаление плановой конструкции скважины", + Name = "WellSectionPlan.delete" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAntiCrashRotation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("TopDriveRpmMin") + .HasColumnType("double precision") + .HasColumnName("top_drive_rpm_min") + .HasComment("Минимальные обороты ВСП, об/мин"); + + b.Property("TopDriveStartMinFlowRate") + .HasColumnType("double precision") + .HasColumnName("top_drive_start_min_flow_rate") + .HasComment("Минимальный расход для запуска оборотов ВСП, л/сек"); + + b.Property("TopDriveTorqueMax") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque_max") + .HasComment("Максимально допустимый момент на ВСП при противоаварийном вращении, кН*м"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_anti_crash_rotation", t => + { + t.HasComment("Противоаварийное вращение"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAutoHoldTF", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("ZenithAngle") + .HasColumnType("double precision") + .HasColumnName("zenit_angle") + .HasComment("Зенитный угол, градусы"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_auto_hold_tf", t => + { + t.HasComment("Автоудержание TF"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDamper", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("StickSlip") + .HasColumnType("double precision") + .HasColumnName("stick_slip") + .HasComment("StickSlip"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_functions_damper", t => + { + t.HasComment("Демпфер"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDrillTest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("LengthStep") + .HasColumnType("double precision") + .HasColumnName("length_step") + .HasComment("Величина проходки шага, м."); + + b.Property("Note") + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("RpmMin") + .HasColumnType("double precision") + .HasColumnName("rpm_min") + .HasComment("Минимальные обороты на ВСП, об/мин."); + + b.Property("RpmStepsCount") + .HasColumnType("integer") + .HasColumnName("rpm_steps_count") + .HasComment("Количество шагов оборотов на ВСП, об/мин."); + + b.Property("WeightOnBitMin") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_min") + .HasComment("Нагрузка минимальная, т"); + + b.Property("WeightOnBitStepsCount") + .HasColumnType("integer") + .HasColumnName("weight_on_bit_steps_count") + .HasComment("Количество шагов по нагрузке"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_drilltest", t => + { + t.HasComment("DrillTest"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanOscillation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Mode") + .HasColumnType("integer") + .HasColumnName("mode") + .HasComment("Режим Авто/Руч"); + + b.Property("Note") + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("OptimalOscillationAngle") + .HasColumnType("double precision") + .HasColumnName("optimal_oscillation_angle") + .HasComment("Оптимальный угол осцилляции, градусы"); + + b.Property("RpmLeft") + .HasColumnType("double precision") + .HasColumnName("Rpm_left") + .HasComment("Скорость влево, об/мин"); + + b.Property("RpmRight") + .HasColumnType("double precision") + .HasColumnName("Rpm_right") + .HasComment("Скорость вправо, об/мин"); + + b.Property("TorqueMaxLeft") + .HasColumnType("double precision") + .HasColumnName("torque_max_left") + .HasComment("Ограничение момента влево, кН*м"); + + b.Property("TorqueMaxRight") + .HasColumnType("double precision") + .HasColumnName("torque_max_right") + .HasComment("Ограничение момента вправо, кН*м"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_oscillation", t => + { + t.HasComment("Осцилляция"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanShockTest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AxialVibrations") + .HasColumnType("double precision") + .HasColumnName("axial_vibrations") + .HasComment("Осевые вибрации"); + + b.Property("CombinedVibrations") + .HasColumnType("double precision") + .HasColumnName("combined_vibrations") + .HasComment("Комбинированные вибрации"); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("RpmMin") + .HasColumnType("double precision") + .HasColumnName("rpm_min") + .HasComment("Минимальные обороты на ВСП, об/мин."); + + b.Property("StickSlip") + .HasColumnType("double precision") + .HasColumnName("stick_slip") + .HasComment("stickSlip"); + + b.Property("WeightOnBitMin") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_min") + .HasComment("Нагрузка минимальная, т"); + + b.Property("Whirl") + .HasColumnType("double precision") + .HasColumnName("whirl") + .HasComment("Whirl"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_shock_test", t => + { + t.HasComment("ShockTest"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanStaticMeasurementOutput", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("SignalWaitingTime") + .HasColumnType("double precision") + .HasColumnName("signal_waiting_time") + .HasComment("Время ожидания выхода сигнала с ТМС, сек."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_static_measurement_output", t => + { + t.HasComment("Выход статического замера"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanLoadCapacity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressureMin") + .HasColumnType("double precision") + .HasColumnName("differential_pressure_min") + .HasComment("Перепад давления минимальный, атм"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("TimeLoadCapacityMin") + .HasColumnType("double precision") + .HasColumnName("time_load_capacity_min") + .HasComment("Время выработки минимальное, сек"); + + b.Property("WeightOnBitMin") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_min") + .HasComment("Нагрузка минимальная, т"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_load_capacity", t => + { + t.HasComment("РТК выработка нагрузки"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanOscillationAngles", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("Rpm") + .HasColumnType("double precision") + .HasColumnName("rpm") + .HasComment("Обороты на ВСП, об/мин., Уставка"); + + b.Property("RpmMax") + .HasColumnType("double precision") + .HasColumnName("rpm_max") + .HasComment("Обороты на ВСП, об/мин., Ограничение"); + + b.Property("TopDriveTorque") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque") + .HasComment("Момент на ВСП, кН*м., Уставка"); + + b.Property("TopDriveTorqueMax") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque_max") + .HasComment("Момент на ВСП, кН*м., Ограничение"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_operation_oscillation_angels", t => + { + t.HasComment("Определение углов осцилляции"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanPositioningOffTheBottom", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления уставка, атм."); + + b.Property("FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("flow_rate_down") + .HasComment("Расход вниз, л/с."); + + b.Property("FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("flow_rate_up") + .HasComment("Расход вверх, л/с."); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("RopDown") + .HasColumnType("double precision") + .HasColumnName("rop_down") + .HasComment("Скорость вниз, м/ч."); + + b.Property("RopUp") + .HasColumnType("double precision") + .HasColumnName("rop_up") + .HasComment("Скорость вверх, м/ч."); + + b.Property("RpmDown") + .HasColumnType("double precision") + .HasColumnName("rpm_down") + .HasComment("Обороты вниз, об/мин."); + + b.Property("RpmUp") + .HasColumnType("double precision") + .HasColumnName("rpm_up") + .HasComment("Обороты вверх, об/мин."); + + b.Property("SlackingOff") + .HasColumnType("double precision") + .HasColumnName("slacking_off") + .HasComment("Посадка, т."); + + b.Property("StopOffTheBottom") + .HasColumnType("double precision") + .HasColumnName("stop_off_the_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Tight") + .HasColumnType("double precision") + .HasColumnName("tight") + .HasComment("Затяжка, т."); + + b.Property("TorqueMax") + .HasColumnType("double precision") + .HasColumnName("torque_max") + .HasComment("Максимально допустимый момент, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_positioning_off_the_bottom", t => + { + t.HasComment("Позиционирование над забоем"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingRotor", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления уставка, атм."); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("Reaming1FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_flow_rate_down") + .HasComment("Проработка 1, Расход, л/с., Вниз"); + + b.Property("Reaming1FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_flow_rate_up") + .HasComment("Проработка 1, Расход, л/с., Вверх"); + + b.Property("Reaming1Interval") + .HasColumnType("double precision") + .HasColumnName("reaming1_interval") + .HasComment("Проработка 1, Интервал проработки, м."); + + b.Property("Reaming1RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("reaming1_repetitions_count") + .HasComment("Проработка 1. Количество повторений, шт."); + + b.Property("Reaming1RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_rop_down") + .HasComment("Проработка 1, Скорость, м/ч., Вниз"); + + b.Property("Reaming1RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_rop_up") + .HasComment("Проработка 1. Скорость вверх, м/ч."); + + b.Property("Reaming1RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_rpm_down") + .HasComment("Проработка 1, Обороты, об/мин., Вниз"); + + b.Property("Reaming1RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_rpm_up") + .HasComment("Проработка 1, Обороты, об/мин., Вверх"); + + b.Property("Reaming1StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming1_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Reaming2FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_flow_rate_down") + .HasComment("Проработка 2, Расход, л/с., Вниз"); + + b.Property("Reaming2FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_flow_rate_up") + .HasComment("Проработка 2, Расход, л/с., Вверх"); + + b.Property("Reaming2Interval") + .HasColumnType("double precision") + .HasColumnName("reaming2_interval") + .HasComment("Проработка 2, Интервал проработки, м."); + + b.Property("Reaming2RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("reaming2_repetitions_count") + .HasComment("Проработка 2, Количество повторений, шт."); + + b.Property("Reaming2RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_rop_down") + .HasComment("Проработка 2, Скорость, м/ч., Вниз"); + + b.Property("Reaming2RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_rop_up") + .HasComment("Проработка 2, Скорость, м/ч., Вверх"); + + b.Property("Reaming2RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_rpm_down") + .HasComment("Проработка 2, Обороты, об/мин., Вниз"); + + b.Property("Reaming2RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_rpm_up") + .HasComment("Проработка 2, Обороты, об/мин., Вверх"); + + b.Property("Reaming2StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming2_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Reaming3FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_flow_rate_down") + .HasComment("Проработка 3, Расход, л/с., Вниз"); + + b.Property("Reaming3FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_flow_rate_up") + .HasComment("Проработка 3, Расход, л/с., Вверх"); + + b.Property("Reaming3Interval") + .HasColumnType("double precision") + .HasColumnName("reaming3_interval") + .HasComment("Проработка 3, Интервал проработки, м."); + + b.Property("Reaming3RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("reaming3_repetitions_count") + .HasComment("Проработка 3, Количество повторений, шт."); + + b.Property("Reaming3RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_rop_down") + .HasComment("Проработка 3, Скорость, м/ч., Вниз"); + + b.Property("Reaming3RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_rop_up") + .HasComment("Проработка 3, Скорость, м/ч., Вверх"); + + b.Property("Reaming3RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_rpm_down") + .HasComment("Проработка 3, Обороты, об/мин., Вниз"); + + b.Property("Reaming3RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_rpm_up") + .HasComment("Проработка 3, Обороты, об/мин., Вверх"); + + b.Property("Reaming3StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming3_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("SlackingOff") + .HasColumnType("double precision") + .HasColumnName("slacking_off") + .HasComment("Посадка, т."); + + b.Property("Tight") + .HasColumnType("double precision") + .HasColumnName("tight") + .HasComment("Затяжка, т."); + + b.Property("TorqueMax") + .HasColumnType("double precision") + .HasColumnName("torque_max") + .HasComment("Максимально допустимый момент, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_operation_reaming_rotor", t => + { + t.HasComment("РТК проработка ротор"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingSlide", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления уставка, атм."); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("Reaming1FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_flow_rate_down") + .HasComment("Проработка 1, Расход, л/с., Вниз"); + + b.Property("Reaming1FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_flow_rate_up") + .HasComment("Проработка 1, Расход, л/с., Вверх"); + + b.Property("Reaming1Interval") + .HasColumnType("double precision") + .HasColumnName("reaming1_interval") + .HasComment("Проработка 1, Интервал проработки, м."); + + b.Property("Reaming1RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("reaming1_repetitions_count") + .HasComment("Проработка 1. Количество повторений, шт."); + + b.Property("Reaming1RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_rop_down") + .HasComment("Проработка 1. Скорость вниз, м/ч."); + + b.Property("Reaming1RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_rop_up") + .HasComment("Проработка 1. Скорость вверх, м/ч."); + + b.Property("Reaming1RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_rpm_down") + .HasComment("Проработка 1, Обороты, об/мин., Вниз"); + + b.Property("Reaming1RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_rpm_up") + .HasComment("Проработка 1, Обороты, об/мин., Вверх"); + + b.Property("Reaming1StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming1_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Reaming2FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_flow_rate_down") + .HasComment("Проработка 2, Расход, л/с., Вниз"); + + b.Property("Reaming2FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_flow_rate_up") + .HasComment("Проработка 2, Расход, л/с., Вверх"); + + b.Property("Reaming2Interval") + .HasColumnType("double precision") + .HasColumnName("reaming2_interval") + .HasComment("Проработка 2, Интервал проработки, м."); + + b.Property("Reaming2RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("reaming2_repetitions_count") + .HasComment("Проработка 2, Количество повторений, шт."); + + b.Property("Reaming2RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_rop_down") + .HasComment("Проработка 2, Скорость, м/ч., Вниз"); + + b.Property("Reaming2RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_rop_up") + .HasComment("Проработка 2, Скорость, м/ч., Вверх"); + + b.Property("Reaming2RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_rpm_down") + .HasComment("Проработка 2, Обороты, об/мин., Вниз"); + + b.Property("Reaming2RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_rpm_up") + .HasComment("Проработка 2, Обороты, об/мин., Вверх"); + + b.Property("Reaming2StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming2_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Reaming3FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_flow_rate_down") + .HasComment("Проработка 3, Расход, л/с., Вниз"); + + b.Property("Reaming3FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_flow_rate_up") + .HasComment("Проработка 3, Расход, л/с., Вверх"); + + b.Property("Reaming3Interval") + .HasColumnType("double precision") + .HasColumnName("reaming3_interval") + .HasComment("Проработка 3, Интервал проработки, м."); + + b.Property("Reaming3RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("reaming3_repetitions_count") + .HasComment("Проработка 3, Количество повторений, шт."); + + b.Property("Reaming3RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_rop_down") + .HasComment("Проработка 3, Скорость, м/ч., Вниз"); + + b.Property("Reaming3RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_rop_up") + .HasComment("Проработка 3, Скорость, м/ч., Вверх"); + + b.Property("Reaming3RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_rpm_down") + .HasComment("Проработка 3, Обороты, об/мин., Вниз"); + + b.Property("Reaming3RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_rpm_up") + .HasComment("Проработка 3, Обороты, об/мин., Вверх"); + + b.Property("Reaming3StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming3_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("SlackingOff") + .HasColumnType("double precision") + .HasColumnName("slacking_off") + .HasComment("Посадка, т."); + + b.Property("Tight") + .HasColumnType("double precision") + .HasColumnName("tight") + .HasComment("Затяжка, т."); + + b.Property("TorqueMax") + .HasColumnType("double precision") + .HasColumnName("torque_max") + .HasComment("Максимально допустимый момент, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_reaming_slide", t => + { + t.HasComment("РТК проработка слайд"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRecordingStaticMeasurement", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("MeasurementRecordingTime") + .HasColumnType("double precision") + .HasColumnName("measurement_recording_time") + .HasComment("Время записи замера, сек"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_recording_static_measurement", t => + { + t.HasComment("Запись статического замера"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRotor", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления, атм. Уставка"); + + b.Property("DifferentialPressureMax") + .HasColumnType("double precision") + .HasColumnName("differential_pressure_max") + .HasComment("Перепад давления, атм. Ограничение"); + + b.Property("FlowRate") + .HasColumnType("double precision") + .HasColumnName("flow_rate") + .HasComment("Расход л/с. Уставка"); + + b.Property("FlowRateMax") + .HasColumnType("double precision") + .HasColumnName("flow_rate_max") + .HasComment("Расход л/с. Ограничение"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм"); + + b.Property("RopMax") + .HasColumnType("double precision") + .HasColumnName("rop_max") + .HasComment("Максимально допустимая скорость, м/ч"); + + b.Property("Rpm") + .HasColumnType("double precision") + .HasColumnName("rpm") + .HasComment("Обороты на ВСП, об/мин. Уставка"); + + b.Property("RpmMax") + .HasColumnType("double precision") + .HasColumnName("rpm_max") + .HasComment("Обороты на ВСП, об/мин. Ограничение"); + + b.Property("TopDriveTorque") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque") + .HasComment("Момент на ВСП, кН*м. Уставка"); + + b.Property("TopDriveTorqueMax") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque_max") + .HasComment("Момент на ВСП, кН*м. Ограничение"); + + b.Property("WeightOnBit") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit") + .HasComment("Нагрузка, т. Уставка"); + + b.Property("WeightOnBitMax") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_max") + .HasComment("Нагрузка, т. Ограничение"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_rotor", t => + { + t.HasComment("РТК план бурение ротор"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSlide", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Buckling") + .HasColumnType("double precision") + .HasColumnName("buckling") + .HasComment("Складывание инструмента, м."); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления уставка, атм."); + + b.Property("DifferentialPressureMax") + .HasColumnType("double precision") + .HasColumnName("differential_pressure_max") + .HasComment("Перепад давления ограничение, атм."); + + b.Property("FlowRate") + .HasColumnType("double precision") + .HasColumnName("flow_rate") + .HasComment("Расход уставка, л/с."); + + b.Property("FlowRateMax") + .HasColumnType("double precision") + .HasColumnName("flow_rate_max") + .HasComment("Расход ограничение, л/с."); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("RopMax") + .HasColumnType("double precision") + .HasColumnName("rop_max") + .HasComment("Максимально допустимая скорость, м/ч."); + + b.Property("Spring") + .HasColumnType("double precision") + .HasColumnName("spring") + .HasComment("Расчётная пружина, градус"); + + b.Property("WeightOnBit") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit") + .HasComment("Нагрузка уставка, т."); + + b.Property("WeightOnBitMax") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_max") + .HasComment("Нагрузка ограничение, т."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_slide", t => + { + t.HasComment("РТК план бурение слайд"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingOffThePump", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("Duration") + .HasColumnType("double precision") + .HasColumnName("duration") + .HasComment("Продолжительность, сек."); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("ResidualPressureLimit") + .HasColumnType("double precision") + .HasColumnName("residual_pressure_limit") + .HasComment("Лимит остаточного давления, атм."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_operation_switching_off_the_pump", t => + { + t.HasComment("Выключение насоса"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingToTheMode", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("FlowRate") + .HasColumnType("double precision") + .HasColumnName("flow_rate") + .HasComment("Расход, л/с"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_limit") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("RampTime") + .HasColumnType("double precision") + .HasColumnName("ramp_time") + .HasComment("Время выхода буровых насосов на плановый расход, сек."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_switching_to_the_mode", t => + { + t.HasComment("Выход на плановый расход"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanTFOrientation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления, атм."); + + b.Property("FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("flow_rate_down") + .HasComment("Расход вниз, л/с."); + + b.Property("FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("flow_rate_up") + .HasComment("Расход вверх, л/с."); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Interval") + .HasColumnType("double precision") + .HasColumnName("interval") + .HasComment("Интервал расхаживания, м."); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимальное давление, атм."); + + b.Property("RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("repetitions_count") + .HasComment("Количество расхаживаний, шт."); + + b.Property("RopDown") + .HasColumnType("double precision") + .HasColumnName("rop_down") + .HasComment("Скорость вниз, м/ч."); + + b.Property("RopUp") + .HasColumnType("double precision") + .HasColumnName("rop_up") + .HasComment("Скорость вверх, м/ч."); + + b.Property("SlackingOff") + .HasColumnType("double precision") + .HasColumnName("slacking_off") + .HasComment("Посадка, т."); + + b.Property("Spring") + .HasColumnType("double precision") + .HasColumnName("spring") + .HasComment("Пружина, град."); + + b.Property("StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("TFSetpoint") + .HasColumnType("double precision") + .HasColumnName("tf_setpoint") + .HasComment("Задание TF, град."); + + b.Property("Tight") + .HasColumnType("double precision") + .HasColumnName("tight") + .HasComment("Затяжка, т."); + + b.Property("TorqueMax") + .HasColumnType("double precision") + .HasColumnName("torque_max") + .HasComment("Максимально допустимый момент, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_tf_orientation", t => + { + t.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", t => + { + t.HasComment("отношение скважин и компаний"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationContactWell", b => + { + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.HasKey("IdWell", "IdUser"); + + b.HasIndex("IdUser"); + + b.ToTable("t_relation_contact_well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserDrillingProgramPart", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("IdDrillingProgramPart") + .HasColumnType("integer") + .HasColumnName("id_drilling_program_part"); + + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_role") + .HasComment("1 - publisher, 2 - approver"); + + b.HasKey("IdUser", "IdDrillingProgramPart") + .HasName("t_relation_user_drilling_program_part_pk"); + + b.HasIndex("IdDrillingProgramPart"); + + b.ToTable("t_relation_user_drilling_program_part", t => + { + t.HasComment("Отношение пользователей и частей ПБ"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRolePermission", b => + { + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.Property("IdPermission") + .HasColumnType("integer") + .HasColumnName("id_permission"); + + b.HasKey("IdUserRole", "IdPermission"); + + b.HasIndex("IdPermission"); + + b.ToTable("t_relation_user_role_permission", t => + { + t.HasComment("Отношение ролей пользователей и разрешений доступа"); + }); + + b.HasData( + new + { + IdUserRole = 1100, + IdPermission = 102 + }, + new + { + IdUserRole = 1100, + IdPermission = 111 + }, + new + { + IdUserRole = 1101, + IdPermission = 101 + }, + new + { + IdUserRole = 1101, + IdPermission = 100 + }, + new + { + IdUserRole = 1102, + IdPermission = 105 + }, + new + { + IdUserRole = 1102, + IdPermission = 108 + }, + new + { + IdUserRole = 1103, + IdPermission = 104 + }, + new + { + IdUserRole = 1103, + IdPermission = 103 + }, + new + { + IdUserRole = 1104, + IdPermission = 108 + }, + new + { + IdUserRole = 1105, + IdPermission = 107 + }, + new + { + IdUserRole = 1105, + IdPermission = 106 + }, + new + { + IdUserRole = 1106, + IdPermission = 111 + }, + new + { + IdUserRole = 1107, + IdPermission = 110 + }, + new + { + IdUserRole = 1107, + IdPermission = 109 + }, + new + { + IdUserRole = 1108, + IdPermission = 114 + }, + new + { + IdUserRole = 1109, + IdPermission = 113 + }, + new + { + IdUserRole = 1109, + IdPermission = 112 + }, + new + { + IdUserRole = 1110, + IdPermission = 123 + }, + new + { + IdUserRole = 1110, + IdPermission = 114 + }, + new + { + IdUserRole = 1111, + IdPermission = 122 + }, + new + { + IdUserRole = 1111, + IdPermission = 121 + }, + new + { + IdUserRole = 1112, + IdPermission = 117 + }, + new + { + IdUserRole = 1113, + IdPermission = 105 + }, + new + { + IdUserRole = 1113, + IdPermission = 123 + }, + new + { + IdUserRole = 1113, + IdPermission = 120 + }, + new + { + IdUserRole = 1114, + IdPermission = 119 + }, + new + { + IdUserRole = 1114, + IdPermission = 118 + }, + new + { + IdUserRole = 1114, + IdPermission = 200 + }, + new + { + IdUserRole = 1115, + IdPermission = 223 + }, + new + { + IdUserRole = 1116, + IdPermission = 105 + }, + new + { + IdUserRole = 1116, + IdPermission = 102 + }, + new + { + IdUserRole = 1116, + IdPermission = 117 + }, + new + { + IdUserRole = 1116, + IdPermission = 126 + }, + new + { + IdUserRole = 1117, + IdPermission = 125 + }, + new + { + IdUserRole = 1117, + IdPermission = 124 + }, + new + { + IdUserRole = 1200, + IdPermission = 203 + }, + new + { + IdUserRole = 1200, + IdPermission = 230 + }, + new + { + IdUserRole = 1201, + IdPermission = 202 + }, + new + { + IdUserRole = 1201, + IdPermission = 203 + }, + new + { + IdUserRole = 1201, + IdPermission = 220 + }, + new + { + IdUserRole = 1202, + IdPermission = 203 + }, + new + { + IdUserRole = 1202, + IdPermission = 220 + }, + new + { + IdUserRole = 1202, + IdPermission = 236 + }, + new + { + IdUserRole = 1202, + IdPermission = 212 + }, + new + { + IdUserRole = 1203, + IdPermission = 235 + }, + new + { + IdUserRole = 1204, + IdPermission = 202 + }, + new + { + IdUserRole = 1204, + IdPermission = 203 + }, + new + { + IdUserRole = 1205, + IdPermission = 215 + }, + new + { + IdUserRole = 1206, + IdPermission = 203 + }, + new + { + IdUserRole = 1206, + IdPermission = 206 + }, + new + { + IdUserRole = 1207, + IdPermission = 205 + }, + new + { + IdUserRole = 1208, + IdPermission = 218 + }, + new + { + IdUserRole = 1209, + IdPermission = 217 + }, + new + { + IdUserRole = 1210, + IdPermission = 203 + }, + new + { + IdUserRole = 1210, + IdPermission = 230 + }, + new + { + IdUserRole = 1210, + IdPermission = 219 + }, + new + { + IdUserRole = 1211, + IdPermission = 203 + }, + new + { + IdUserRole = 1211, + IdPermission = 220 + }, + new + { + IdUserRole = 1211, + IdPermission = 239 + }, + new + { + IdUserRole = 1212, + IdPermission = 238 + }, + new + { + IdUserRole = 1212, + IdPermission = 237 + }, + new + { + IdUserRole = 1213, + IdPermission = 203 + }, + new + { + IdUserRole = 1213, + IdPermission = 239 + }, + new + { + IdUserRole = 1213, + IdPermission = 212 + }, + new + { + IdUserRole = 1214, + IdPermission = 211 + }, + new + { + IdUserRole = 1214, + IdPermission = 210 + }, + new + { + IdUserRole = 1215, + IdPermission = 203 + }, + new + { + IdUserRole = 1215, + IdPermission = 222 + }, + new + { + IdUserRole = 1216, + IdPermission = 221 + }, + new + { + IdUserRole = 1217, + IdPermission = 226 + }, + new + { + IdUserRole = 1218, + IdPermission = 225 + }, + new + { + IdUserRole = 1218, + IdPermission = 224 + }, + new + { + IdUserRole = 1219, + IdPermission = 203 + }, + new + { + IdUserRole = 1219, + IdPermission = 206 + }, + new + { + IdUserRole = 1219, + IdPermission = 230 + }, + new + { + IdUserRole = 1219, + IdPermission = 232 + }, + new + { + IdUserRole = 1220, + IdPermission = 203 + }, + new + { + IdUserRole = 1220, + IdPermission = 228 + }, + new + { + IdUserRole = 1221, + IdPermission = 202 + }, + new + { + IdUserRole = 1221, + IdPermission = 203 + }, + new + { + IdUserRole = 1221, + IdPermission = 220 + }, + new + { + IdUserRole = 1221, + IdPermission = 234 + }, + new + { + IdUserRole = 1500, + IdPermission = 507 + }, + new + { + IdUserRole = 1500, + IdPermission = 510 + }, + new + { + IdUserRole = 1501, + IdPermission = 214 + }, + new + { + IdUserRole = 1501, + IdPermission = 213 + }, + new + { + IdUserRole = 1502, + IdPermission = 207 + }, + new + { + IdUserRole = 1502, + IdPermission = 208 + }, + new + { + IdUserRole = 2000, + IdPermission = 205 + }, + new + { + IdUserRole = 2000, + IdPermission = 204 + }, + new + { + IdUserRole = 2000, + IdPermission = 245 + }, + new + { + IdUserRole = 2001, + IdPermission = 244 + }, + new + { + IdUserRole = 2001, + IdPermission = 245 + }, + new + { + IdUserRole = 2002, + IdPermission = 244 + }, + new + { + IdUserRole = 2002, + IdPermission = 246 + }, + new + { + IdUserRole = 2002, + IdPermission = 237 + }, + new + { + IdUserRole = 2002, + IdPermission = 238 + }, + new + { + IdUserRole = 2003, + IdPermission = 240 + }, + new + { + IdUserRole = 2003, + IdPermission = 217 + }, + new + { + IdUserRole = 2003, + IdPermission = 216 + }, + new + { + IdUserRole = 2004, + IdPermission = 242 + }, + new + { + IdUserRole = 2004, + IdPermission = 217 + }, + new + { + IdUserRole = 2004, + IdPermission = 216 + }, + new + { + IdUserRole = 2004, + IdPermission = 205 + }, + new + { + IdUserRole = 2004, + IdPermission = 204 + }, + new + { + IdUserRole = 2005, + IdPermission = 247 + }, + new + { + IdUserRole = 2005, + IdPermission = 205 + }, + new + { + IdUserRole = 2005, + IdPermission = 204 + }, + new + { + IdUserRole = 2006, + IdPermission = 243 + }, + new + { + IdUserRole = 2006, + IdPermission = 205 + }, + new + { + IdUserRole = 2006, + IdPermission = 204 + }, + new + { + IdUserRole = 2007, + IdPermission = 241 + }, + new + { + IdUserRole = 2007, + IdPermission = 205 + }, + new + { + IdUserRole = 2007, + IdPermission = 204 + }, + new + { + IdUserRole = 1, + IdPermission = 100 + }, + new + { + IdUserRole = 1, + IdPermission = 101 + }, + new + { + IdUserRole = 1, + IdPermission = 102 + }, + new + { + IdUserRole = 1, + IdPermission = 103 + }, + new + { + IdUserRole = 1, + IdPermission = 104 + }, + new + { + IdUserRole = 1, + IdPermission = 105 + }, + new + { + IdUserRole = 1, + IdPermission = 106 + }, + new + { + IdUserRole = 1, + IdPermission = 107 + }, + new + { + IdUserRole = 1, + IdPermission = 108 + }, + new + { + IdUserRole = 1, + IdPermission = 109 + }, + new + { + IdUserRole = 1, + IdPermission = 110 + }, + new + { + IdUserRole = 1, + IdPermission = 111 + }, + new + { + IdUserRole = 1, + IdPermission = 112 + }, + new + { + IdUserRole = 1, + IdPermission = 113 + }, + new + { + IdUserRole = 1, + IdPermission = 114 + }, + new + { + IdUserRole = 1, + IdPermission = 115 + }, + new + { + IdUserRole = 1, + IdPermission = 116 + }, + new + { + IdUserRole = 1, + IdPermission = 117 + }, + new + { + IdUserRole = 1, + IdPermission = 118 + }, + new + { + IdUserRole = 1, + IdPermission = 119 + }, + new + { + IdUserRole = 1, + IdPermission = 120 + }, + new + { + IdUserRole = 1, + IdPermission = 121 + }, + new + { + IdUserRole = 1, + IdPermission = 122 + }, + new + { + IdUserRole = 1, + IdPermission = 123 + }, + new + { + IdUserRole = 1, + IdPermission = 124 + }, + new + { + IdUserRole = 1, + IdPermission = 125 + }, + new + { + IdUserRole = 1, + IdPermission = 126 + }, + new + { + IdUserRole = 1, + IdPermission = 127 + }, + new + { + IdUserRole = 1, + IdPermission = 128 + }, + new + { + IdUserRole = 1, + IdPermission = 129 + }, + new + { + IdUserRole = 1, + IdPermission = 200 + }, + new + { + IdUserRole = 1, + IdPermission = 201 + }, + new + { + IdUserRole = 1, + IdPermission = 202 + }, + new + { + IdUserRole = 1, + IdPermission = 203 + }, + new + { + IdUserRole = 1, + IdPermission = 204 + }, + new + { + IdUserRole = 1, + IdPermission = 205 + }, + new + { + IdUserRole = 1, + IdPermission = 206 + }, + new + { + IdUserRole = 1, + IdPermission = 207 + }, + new + { + IdUserRole = 1, + IdPermission = 208 + }, + new + { + IdUserRole = 1, + IdPermission = 209 + }, + new + { + IdUserRole = 1, + IdPermission = 210 + }, + new + { + IdUserRole = 1, + IdPermission = 211 + }, + new + { + IdUserRole = 1, + IdPermission = 212 + }, + new + { + IdUserRole = 1, + IdPermission = 213 + }, + new + { + IdUserRole = 1, + IdPermission = 214 + }, + new + { + IdUserRole = 1, + IdPermission = 215 + }, + new + { + IdUserRole = 1, + IdPermission = 216 + }, + new + { + IdUserRole = 1, + IdPermission = 217 + }, + new + { + IdUserRole = 1, + IdPermission = 218 + }, + new + { + IdUserRole = 1, + IdPermission = 219 + }, + new + { + IdUserRole = 1, + IdPermission = 220 + }, + new + { + IdUserRole = 1, + IdPermission = 221 + }, + new + { + IdUserRole = 1, + IdPermission = 222 + }, + new + { + IdUserRole = 1, + IdPermission = 223 + }, + new + { + IdUserRole = 1, + IdPermission = 224 + }, + new + { + IdUserRole = 1, + IdPermission = 225 + }, + new + { + IdUserRole = 1, + IdPermission = 226 + }, + new + { + IdUserRole = 1, + IdPermission = 227 + }, + new + { + IdUserRole = 1, + IdPermission = 228 + }, + new + { + IdUserRole = 1, + IdPermission = 229 + }, + new + { + IdUserRole = 1, + IdPermission = 230 + }, + new + { + IdUserRole = 1, + IdPermission = 231 + }, + new + { + IdUserRole = 1, + IdPermission = 232 + }, + new + { + IdUserRole = 1, + IdPermission = 233 + }, + new + { + IdUserRole = 1, + IdPermission = 234 + }, + new + { + IdUserRole = 1, + IdPermission = 235 + }, + new + { + IdUserRole = 1, + IdPermission = 236 + }, + new + { + IdUserRole = 1, + IdPermission = 237 + }, + new + { + IdUserRole = 1, + IdPermission = 238 + }, + new + { + IdUserRole = 1, + IdPermission = 239 + }, + new + { + IdUserRole = 1, + IdPermission = 240 + }, + new + { + IdUserRole = 1, + IdPermission = 241 + }, + new + { + IdUserRole = 1, + IdPermission = 242 + }, + new + { + IdUserRole = 1, + IdPermission = 243 + }, + new + { + IdUserRole = 1, + IdPermission = 244 + }, + new + { + IdUserRole = 1, + IdPermission = 245 + }, + new + { + IdUserRole = 1, + IdPermission = 246 + }, + new + { + IdUserRole = 1, + IdPermission = 247 + }, + new + { + IdUserRole = 1, + IdPermission = 248 + }, + new + { + IdUserRole = 1, + IdPermission = 249 + }, + new + { + IdUserRole = 1, + IdPermission = 250 + }, + new + { + IdUserRole = 1, + IdPermission = 251 + }, + new + { + IdUserRole = 1, + IdPermission = 252 + }, + new + { + IdUserRole = 1, + IdPermission = 253 + }, + new + { + IdUserRole = 1, + IdPermission = 254 + }, + new + { + IdUserRole = 1, + IdPermission = 255 + }, + new + { + IdUserRole = 1, + IdPermission = 256 + }, + new + { + IdUserRole = 1, + IdPermission = 257 + }, + new + { + IdUserRole = 1, + IdPermission = 258 + }, + new + { + IdUserRole = 1, + IdPermission = 259 + }, + new + { + IdUserRole = 1, + IdPermission = 260 + }, + new + { + IdUserRole = 1, + IdPermission = 261 + }, + new + { + IdUserRole = 1, + IdPermission = 262 + }, + new + { + IdUserRole = 1, + IdPermission = 263 + }, + new + { + IdUserRole = 1, + IdPermission = 264 + }, + new + { + IdUserRole = 1, + IdPermission = 265 + }, + new + { + IdUserRole = 1, + IdPermission = 266 + }, + new + { + IdUserRole = 1, + IdPermission = 267 + }, + new + { + IdUserRole = 1, + IdPermission = 268 + }, + new + { + IdUserRole = 1, + IdPermission = 269 + }, + new + { + IdUserRole = 1, + IdPermission = 380 + }, + new + { + IdUserRole = 1, + IdPermission = 381 + }, + new + { + IdUserRole = 1, + IdPermission = 382 + }, + new + { + IdUserRole = 1, + IdPermission = 383 + }, + new + { + IdUserRole = 1, + IdPermission = 384 + }, + new + { + IdUserRole = 1, + IdPermission = 385 + }, + new + { + IdUserRole = 1, + IdPermission = 386 + }, + new + { + IdUserRole = 1, + IdPermission = 387 + }, + new + { + IdUserRole = 1, + IdPermission = 388 + }, + new + { + IdUserRole = 1, + IdPermission = 389 + }, + new + { + IdUserRole = 1, + IdPermission = 390 + }, + new + { + IdUserRole = 1, + IdPermission = 391 + }, + new + { + IdUserRole = 1, + IdPermission = 400 + }, + new + { + IdUserRole = 1, + IdPermission = 401 + }, + new + { + IdUserRole = 1, + IdPermission = 407 + }, + new + { + IdUserRole = 1, + IdPermission = 408 + }, + new + { + IdUserRole = 1, + IdPermission = 450 + }, + new + { + IdUserRole = 1, + IdPermission = 460 + }, + new + { + IdUserRole = 1, + IdPermission = 461 + }, + new + { + IdUserRole = 1, + IdPermission = 500 + }, + new + { + IdUserRole = 1, + IdPermission = 501 + }, + new + { + IdUserRole = 1, + IdPermission = 502 + }, + new + { + IdUserRole = 1, + IdPermission = 503 + }, + new + { + IdUserRole = 1, + IdPermission = 504 + }, + new + { + IdUserRole = 1, + IdPermission = 505 + }, + new + { + IdUserRole = 1, + IdPermission = 506 + }, + new + { + IdUserRole = 1, + IdPermission = 507 + }, + new + { + IdUserRole = 1, + IdPermission = 510 + }, + new + { + IdUserRole = 1, + IdPermission = 511 + }, + new + { + IdUserRole = 1, + IdPermission = 512 + }, + new + { + IdUserRole = 1, + IdPermission = 516 + }, + new + { + IdUserRole = 1, + IdPermission = 517 + }, + new + { + IdUserRole = 1, + IdPermission = 518 + }, + new + { + IdUserRole = 1, + IdPermission = 519 + }, + new + { + IdUserRole = 1, + IdPermission = 520 + }, + new + { + IdUserRole = 1, + IdPermission = 521 + }, + new + { + IdUserRole = 1, + IdPermission = 522 + }, + new + { + IdUserRole = 1, + IdPermission = 523 + }, + new + { + IdUserRole = 1, + IdPermission = 524 + }, + new + { + IdUserRole = 1, + IdPermission = 525 + }, + new + { + IdUserRole = 1, + IdPermission = 526 + }, + new + { + IdUserRole = 1, + IdPermission = 527 + }, + new + { + IdUserRole = 1, + IdPermission = 528 + }, + new + { + IdUserRole = 1, + IdPermission = 530 + }, + new + { + IdUserRole = 1, + IdPermission = 531 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRoleUserRole", b => + { + b.Property("Id") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.Property("IdInclude") + .HasColumnType("integer") + .HasColumnName("id_include_user_role"); + + b.HasKey("Id", "IdInclude") + .HasName("t_relation_user_role_user_role_pk"); + + b.HasIndex("IdInclude"); + + b.ToTable("t_relation_user_role_user_role", t => + { + t.HasComment("Отношение ролей к ролям"); + }); + + b.HasData( + new + { + Id = 1101, + IdInclude = 1100 + }, + new + { + Id = 1103, + IdInclude = 1102 + }, + new + { + Id = 1105, + IdInclude = 1104 + }, + new + { + Id = 1107, + IdInclude = 1106 + }, + new + { + Id = 1109, + IdInclude = 1108 + }, + new + { + Id = 1111, + IdInclude = 1110 + }, + new + { + Id = 1114, + IdInclude = 1113 + }, + new + { + Id = 1117, + IdInclude = 1116 + }, + new + { + Id = 1203, + IdInclude = 1202 + }, + new + { + Id = 1207, + IdInclude = 1206 + }, + new + { + Id = 1209, + IdInclude = 1208 + }, + new + { + Id = 1212, + IdInclude = 1211 + }, + new + { + Id = 1214, + IdInclude = 1213 + }, + new + { + Id = 1216, + IdInclude = 1215 + }, + new + { + Id = 1218, + IdInclude = 1217 + }, + new + { + Id = 2000, + IdInclude = 1200 + }, + new + { + Id = 2000, + IdInclude = 1201 + }, + new + { + Id = 2000, + IdInclude = 1202 + }, + new + { + Id = 2000, + IdInclude = 1204 + }, + new + { + Id = 2000, + IdInclude = 1205 + }, + new + { + Id = 2000, + IdInclude = 1206 + }, + new + { + Id = 2000, + IdInclude = 1208 + }, + new + { + Id = 2000, + IdInclude = 1210 + }, + new + { + Id = 2000, + IdInclude = 1211 + }, + new + { + Id = 2000, + IdInclude = 1213 + }, + new + { + Id = 2000, + IdInclude = 1215 + }, + new + { + Id = 2000, + IdInclude = 1217 + }, + new + { + Id = 2000, + IdInclude = 1219 + }, + new + { + Id = 2000, + IdInclude = 1220 + }, + new + { + Id = 2000, + IdInclude = 1221 + }, + new + { + Id = 2000, + IdInclude = 1500 + }, + new + { + Id = 2000, + IdInclude = 1501 + }, + new + { + Id = 2000, + IdInclude = 1502 + }, + new + { + Id = 2001, + IdInclude = 1500 + }, + new + { + Id = 2001, + IdInclude = 1501 + }, + new + { + Id = 2001, + IdInclude = 1502 + }, + new + { + Id = 2002, + IdInclude = 1500 + }, + new + { + Id = 2002, + IdInclude = 1501 + }, + new + { + Id = 2002, + IdInclude = 1502 + }, + new + { + Id = 2003, + IdInclude = 1500 + }, + new + { + Id = 2003, + IdInclude = 1501 + }, + new + { + Id = 2003, + IdInclude = 1502 + }, + new + { + Id = 2004, + IdInclude = 1500 + }, + new + { + Id = 2004, + IdInclude = 1501 + }, + new + { + Id = 2004, + IdInclude = 1502 + }, + new + { + Id = 2005, + IdInclude = 1500 + }, + new + { + Id = 2005, + IdInclude = 1501 + }, + new + { + Id = 2005, + IdInclude = 1502 + }, + new + { + Id = 2006, + IdInclude = 1500 + }, + new + { + Id = 2006, + IdInclude = 1501 + }, + new + { + Id = 2006, + IdInclude = 1502 + }, + new + { + Id = 2007, + IdInclude = 1500 + }, + new + { + Id = 2007, + IdInclude = 1501 + }, + new + { + Id = 2007, + IdInclude = 1502 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserUserRole", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.HasKey("IdUser", "IdUserRole"); + + b.HasIndex("IdUserRole"); + + b.ToTable("t_relation_user_user_role", t => + { + t.HasComment("Отношение пользователей и ролей"); + }); + + b.HasData( + new + { + IdUser = 1, + IdUserRole = 1 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ReportProperty", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Begin") + .HasColumnType("timestamp with time zone") + .HasColumnName("begin"); + + b.Property("End") + .HasColumnType("timestamp with time zone") + .HasColumnName("end") + .HasComment("timestamp with time zone"); + + b.Property("Format") + .HasColumnType("integer") + .HasColumnName("format") + .HasComment("Формат отчета"); + + b.Property("IdFile") + .HasColumnType("integer") + .HasColumnName("id_file") + .HasComment("id файла-родителя"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("id скважины"); + + b.Property("Step") + .HasColumnType("integer") + .HasColumnName("step") + .HasComment("размер шага в секундах"); + + b.HasKey("Id"); + + b.HasIndex("IdFile"); + + b.HasIndex("IdWell"); + + b.ToTable("t_report_property", t => + { + t.HasComment("Отчеты с данными по буровым"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Schedule", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("DrillEnd") + .HasColumnType("timestamp with time zone") + .HasColumnName("drill_end") + .HasComment("Конец вахты"); + + b.Property("DrillStart") + .HasColumnType("timestamp with time zone") + .HasColumnName("drill_start") + .HasComment("Начало вахты"); + + b.Property("IdDriller") + .HasColumnType("integer") + .HasColumnName("id_driller") + .HasComment("Идентификатор бурильщика"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Идентификатор скважины"); + + b.Property("ShiftEnd") + .HasColumnType("time without time zone") + .HasColumnName("shift_end") + .HasComment("Конец смены"); + + b.Property("ShiftStart") + .HasColumnType("time without time zone") + .HasColumnName("shift_start") + .HasComment("Начало смены"); + + b.HasKey("Id"); + + b.HasIndex("IdDriller"); + + b.HasIndex("IdWell"); + + b.ToTable("t_schedule", t => + { + t.HasComment("График работы бурильщика"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.SetpointsRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Comment") + .HasColumnType("text") + .HasColumnName("comment") + .HasComment("комментарий для оператора"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Id пользователя, загрузившего файл"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("0: неизвестно, 1:ожидает отправки, 2: отправлено, 3: принято оператором, 4: отклонено оператором, 5: устарело"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("id скважины"); + + b.Property("ObsolescenceSec") + .HasColumnType("integer") + .HasColumnName("obsolescence") + .HasComment("сек. до устаревания"); + + b.Property("Setpoints") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("setpoint_set") + .HasComment("Набор уставок"); + + b.Property("UploadDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdWell"); + + b.ToTable("t_setpoints_rquest", t => + { + t.HasComment("Запросы на изменение уставок панели оператора"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Subsystem", 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"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name"); + + b.HasKey("Id"); + + b.ToTable("t_subsystem", t => + { + t.HasComment("Описание подсистем"); + }); + + b.HasData( + new + { + Id = 1, + Description = "Совместная работа режимов \"Бурение в роторе\" и \"Бурение в слайде\"", + Name = "АПД" + }, + new + { + Id = 11, + Description = "Режим работы \"Бурение в роторе\"", + Name = "АПД ротор" + }, + new + { + Id = 12, + Description = "Режим работы \"Бурение в слайде\"", + Name = "АПД слайд" + }, + new + { + Id = 65536, + Description = "Осцилляция", + Name = "Осцилляция" + }, + new + { + Id = 65537, + Description = "Демпфер", + Name = "Демпфер" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Telemetry", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Info") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("info") + .HasComment("Информация с панели о скважине"); + + b.Property("RemoteUid") + .IsRequired() + .HasColumnType("text") + .HasColumnName("remote_uid") + .HasComment("Идентификатор передающего устройства. Может повторяться в списке, так как комплекты оборудования переезжают от скв. к скв."); + + b.Property("TimeZone") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("timezone") + .HasComment("Смещение часового пояса от UTC"); + + b.HasKey("Id"); + + b.HasIndex(new[] { "RemoteUid" }, "t_telemetry_remote_uid_index"); + + b.ToTable("t_telemetry", t => + { + t.HasComment("таблица привязки телеметрии от комплектов к конкретной скважине."); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaub", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date") + .HasComment("'2021-10-19 18:23:54+05'"); + + b.Property("AxialLoad") + .HasColumnType("real") + .HasColumnName("axial_load") + .HasComment("Осевая нагрузка"); + + b.Property("AxialLoadLimitMax") + .HasColumnType("real") + .HasColumnName("axial_load_limit_max") + .HasComment("Осевая нагрузка. Аварийная макс."); + + b.Property("AxialLoadSp") + .HasColumnType("real") + .HasColumnName("axial_load_sp") + .HasComment("Осевая нагрузка. Задание"); + + b.Property("BitDepth") + .HasColumnType("real") + .HasColumnName("bit_depth") + .HasComment("Положение инструмента"); + + b.Property("BlockPosition") + .HasColumnType("real") + .HasColumnName("block_position") + .HasComment("Высота талевого блока"); + + b.Property("BlockPositionMax") + .HasColumnType("real") + .HasColumnName("block_position_max") + .HasComment("Талевый блок. Макс положение"); + + b.Property("BlockPositionMin") + .HasColumnType("real") + .HasColumnName("block_position_min") + .HasComment("Талевый блок. Мин положение"); + + b.Property("BlockSpeed") + .HasColumnType("real") + .HasColumnName("block_speed") + .HasComment("Скорость талевого блока"); + + b.Property("BlockSpeedSp") + .HasColumnType("real") + .HasColumnName("block_speed_sp") + .HasComment("Скорости талевого блока. Задание"); + + b.Property("BlockSpeedSpDevelop") + .HasColumnType("real") + .HasColumnName("block_speed_sp_develop") + .HasComment("Талевый блок. Задание скорости для проработки"); + + b.Property("BlockSpeedSpRotor") + .HasColumnType("real") + .HasColumnName("block_speed_sp_rotor") + .HasComment("Талевый блок. Задание скорости для роторного бурения"); + + b.Property("BlockSpeedSpSlide") + .HasColumnType("real") + .HasColumnName("block_speed_sp_slide") + .HasComment("Талевый блок. Задание скорости для режима слайда"); + + b.Property("Flow") + .HasColumnType("real") + .HasColumnName("flow") + .HasComment("Расход"); + + b.Property("FlowDeltaLimitMax") + .HasColumnType("real") + .HasColumnName("flow_delta_limit_max") + .HasComment("Расход. Аварийный макс."); + + b.Property("FlowIdle") + .HasColumnType("real") + .HasColumnName("flow_idle") + .HasComment("Расход. Холостой ход"); + + b.Property("HookWeight") + .HasColumnType("real") + .HasColumnName("hook_weight") + .HasComment("Вес на крюке"); + + b.Property("HookWeightIdle") + .HasColumnType("real") + .HasColumnName("hook_weight_idle") + .HasComment("Вес на крюке. Холостой ход"); + + b.Property("HookWeightLimitMax") + .HasColumnType("real") + .HasColumnName("hook_weight_limit_max") + .HasComment("Вес на крюке. Затяжка"); + + b.Property("HookWeightLimitMin") + .HasColumnType("real") + .HasColumnName("hook_weight_limit_min") + .HasComment("Вес на крюке. Посадка"); + + b.Property("IdFeedRegulator") + .HasColumnType("smallint") + .HasColumnName("id_feed_regulator") + .HasComment("Текущий критерий бурения"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user") + .HasComment("Пользователь САУБ"); + + b.Property("Mode") + .HasColumnType("smallint") + .HasColumnName("mode") + .HasComment("Режим САУБ"); + + b.Property("Mse") + .HasColumnType("real") + .HasColumnName("mse") + .HasComment("MSE"); + + b.Property("MseState") + .HasColumnType("smallint") + .HasColumnName("mse_state") + .HasComment("Текущее состояние работы MSE"); + + b.Property("Pressure") + .HasColumnType("real") + .HasColumnName("pressure") + .HasComment("Давление"); + + b.Property("PressureDeltaLimitMax") + .HasColumnType("real") + .HasColumnName("pressure_delta_limit_max") + .HasComment("Давление дифф. Аварийное макс."); + + b.Property("PressureIdle") + .HasColumnType("real") + .HasColumnName("pressure_idle") + .HasComment("Давление. Холостой ход"); + + b.Property("PressureSp") + .HasColumnType("real") + .HasColumnName("pressure_sp") + .HasComment("Давление. Задание"); + + b.Property("PressureSpDevelop") + .HasColumnType("real") + .HasColumnName("pressure_sp_develop") + .HasComment("Давление. Задание для проработки"); + + b.Property("PressureSpRotor") + .HasColumnType("real") + .HasColumnName("pressure_sp_rotor") + .HasComment("Давление. Задание для роторного бурения"); + + b.Property("PressureSpSlide") + .HasColumnType("real") + .HasColumnName("pressure_sp_slide") + .HasComment("Давление. Задание для режима слайда"); + + b.Property("Pump0Flow") + .HasColumnType("real") + .HasColumnName("pump0_flow") + .HasComment("Расход. Буровой насос 1"); + + b.Property("Pump1Flow") + .HasColumnType("real") + .HasColumnName("pump1_flow") + .HasComment("Расход. Буровой насос 2"); + + b.Property("Pump2Flow") + .HasColumnType("real") + .HasColumnName("pump2_flow") + .HasComment("Расход. Буровой насос 3"); + + b.Property("RotorSpeed") + .HasColumnType("real") + .HasColumnName("rotor_speed") + .HasComment("Обороты ротора"); + + b.Property("RotorTorque") + .HasColumnType("real") + .HasColumnName("rotor_torque") + .HasComment("Момент на роторе"); + + b.Property("RotorTorqueIdle") + .HasColumnType("real") + .HasColumnName("rotor_torque_idle") + .HasComment("Момент на роторе. Холостой ход"); + + b.Property("RotorTorqueLimitMax") + .HasColumnType("real") + .HasColumnName("rotor_torque_limit_max") + .HasComment("Момент на роторе. Аварийный макс."); + + b.Property("RotorTorqueSp") + .HasColumnType("real") + .HasColumnName("rotor_torque_sp") + .HasComment("Момент на роторе. Задание"); + + b.Property("WellDepth") + .HasColumnType("real") + .HasColumnName("well_depth") + .HasComment("Глубина забоя"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_data_saub", t => + { + t.HasComment("набор основных данных по SAUB"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaubStat", b => + { + b.Property("Count") + .HasColumnType("bigint") + .HasColumnName("count_items"); + + b.Property("DateMax") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_max"); + + b.Property("DateMin") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_min"); + + b.Property("DepthMax") + .HasColumnType("real") + .HasColumnName("depth_max"); + + b.Property("DepthMin") + .HasColumnType("real") + .HasColumnName("depth_min"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.ToTable((string)null); + + b.ToView("mw_telemetry_datas_saub_stat", (string)null); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSpin", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date") + .HasComment("'2021-10-19 18:23:54+05'"); + + b.Property("Mode") + .HasColumnType("smallint") + .HasColumnName("mode") + .HasComment("Выбранный режим управления"); + + b.Property("PositionRight") + .HasColumnType("real") + .HasColumnName("position_right") + .HasComment("Крайний правый угол осцилляции"); + + b.Property("PositionZero") + .HasColumnType("real") + .HasColumnName("position_zero") + .HasComment("Нулевая позиция осцилляции"); + + b.Property("RevolsLeftLimit") + .HasColumnType("real") + .HasColumnName("revols_left_limit") + .HasComment("Ограничение числа оборотов влево"); + + b.Property("RevolsLeftTotal") + .HasColumnType("real") + .HasColumnName("revols_left_total") + .HasComment("Суммарное количество оборотов влево"); + + b.Property("RevolsRightLimit") + .HasColumnType("real") + .HasColumnName("revols_right_limit") + .HasComment("Ограничение числа оборотов вправо"); + + b.Property("RevolsRightTotal") + .HasColumnType("real") + .HasColumnName("revols_right_total") + .HasComment("Суммарное количество оборотов вправо"); + + b.Property("SpeedLeftSp") + .HasColumnType("real") + .HasColumnName("speed_left_sp") + .HasComment("Заданная скорость вращения влево"); + + b.Property("SpeedRightSp") + .HasColumnType("real") + .HasColumnName("speed_right_sp") + .HasComment("Заданная скорость вращения вправо"); + + b.Property("State") + .HasColumnType("smallint") + .HasColumnName("state") + .HasComment("Переменная этапа"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_data_spin", t => + { + t.HasComment("набор основных данных по SpinMaster"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryEvent", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdEvent") + .HasColumnType("integer") + .HasColumnName("id_event"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category"); + + b.Property("MessageTemplate") + .IsRequired() + .HasColumnType("text") + .HasColumnName("message_template"); + + b.HasKey("IdTelemetry", "IdEvent"); + + b.ToTable("t_telemetry_event", t => + { + t.HasComment("Справочник событий. События формируют сообщения. Разделено по версиям посылок от телеметрии."); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Arg0") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg0") + .HasComment("Аргумент №0 для вставки в шаблон сообщения"); + + b.Property("Arg1") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg1"); + + b.Property("Arg2") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg2"); + + b.Property("Arg3") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg3"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("IdEvent") + .HasColumnType("integer") + .HasColumnName("id_event"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdTelemetryUser") + .HasColumnType("integer") + .HasColumnName("id_telemetry_user") + .HasComment("Пользователь панели отправляющей телеметрию. не пользователь облака."); + + b.Property("WellDepth") + .HasColumnType("double precision") + .HasColumnName("well_depth"); + + b.HasKey("Id"); + + b.HasIndex("IdTelemetry"); + + b.ToTable("t_telemetry_message", t => + { + t.HasComment("Сообщения на буровых"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryUser", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("Level") + .HasColumnType("integer") + .HasColumnName("level"); + + b.Property("Name") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name"); + + b.Property("Patronymic") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("patronymic"); + + b.Property("Surname") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("surname"); + + b.HasKey("IdTelemetry", "IdUser"); + + b.ToTable("t_telemetry_user", t => + { + t.HasComment("Пользователи панели САУБ. Для сообщений."); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryWirelineRunOut", b => + { + b.Property("IdTelemetry") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id_telemetry") + .HasComment("Идентификатор телеметрии"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("IdTelemetry")); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_time") + .HasComment("Отметка времени"); + + b.Property("Hauling") + .HasColumnType("real") + .HasColumnName("hauling") + .HasComment("Наработка талевого каната с момента перетяжки каната, т*км"); + + b.Property("HaulingWarnSp") + .HasColumnType("real") + .HasColumnName("hauling_warn_sp") + .HasComment("Наработка талевого каната до сигнализации о необходимости перетяжки, т*км"); + + b.Property("Replace") + .HasColumnType("real") + .HasColumnName("replace") + .HasComment("Наработка талевого каната с момента замены каната, т*км"); + + b.Property("ReplaceWarnSp") + .HasColumnType("real") + .HasColumnName("replace_warn_sp") + .HasComment("Наработка талевого каната до сигнализации о необходимости замены, т*км"); + + b.HasKey("IdTelemetry"); + + b.ToTable("t_telemetry_wireline_run_out", t => + { + t.HasComment("Наработка талевого каната"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Trajectory.TrajectoryFact", 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("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_trajectory_fact", t => + { + t.HasComment("Загрузка фактической траектории"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Trajectory.TrajectoryPlan", 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_trajectory_plan", t => + { + t.HasComment("Загрузка плановой траектории"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Email") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("email") + .HasComment("должность"); + + b.Property("IdCompany") + .HasColumnType("integer") + .HasColumnName("id_company"); + + b.Property("IdState") + .HasColumnType("smallint") + .HasColumnName("state") + .HasComment("состояние:\n0 - не активен, \n1 - активен, \n2 - заблокирован"); + + b.Property("Login") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("login"); + + b.Property("Name") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name") + .HasComment("имя"); + + b.Property("PasswordHash") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("password_hash") + .HasComment("соленый хэш пароля.\nпервые 5 символов - соль"); + + b.Property("Patronymic") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("patronymic") + .HasComment("отчество"); + + b.Property("Phone") + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .HasColumnName("phone") + .HasComment("номер телефона"); + + b.Property("Position") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("position") + .HasComment("email"); + + b.Property("Surname") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("surname") + .HasComment("фамилия"); + + b.HasKey("Id"); + + b.HasIndex("IdCompany"); + + b.HasIndex("Login") + .IsUnique(); + + b.ToTable("t_user", t => + { + t.HasComment("Пользователи облака"); + }); + + b.HasData( + new + { + Id = 1, + Email = "", + IdCompany = 1, + IdState = (short)1, + Login = "dev", + Name = "Разработчик", + PasswordHash = "Vlcj|4fa529103dde7ff72cfe76185f344d4aa87931f8e1b2044e8a7739947c3d18923464eaad93843e4f809c5e126d013072" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserRole", 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("IdType") + .HasColumnType("integer") + .HasColumnName("id_type") + .HasComment("0-роль из стандартной матрицы, \n1-специальная роль для какого-либо пользователя"); + + b.HasKey("Id"); + + b.ToTable("t_user_role", t => + { + t.HasComment("Роли пользователей в системе"); + }); + + b.HasData( + new + { + Id = 1, + Caption = "root", + IdType = 1 + }, + new + { + Id = 1100, + Caption = "admin_cluster.view", + IdType = 1 + }, + new + { + Id = 1101, + Caption = "admin_cluster.edit", + IdType = 1 + }, + new + { + Id = 1102, + Caption = "admin_company.view", + IdType = 1 + }, + new + { + Id = 1103, + Caption = "admin_company.edit", + IdType = 1 + }, + new + { + Id = 1104, + Caption = "admin_company_type.view", + IdType = 1 + }, + new + { + Id = 1105, + Caption = "admin_company_type.edit", + IdType = 1 + }, + new + { + Id = 1106, + Caption = "admin_deposit.view", + IdType = 1 + }, + new + { + Id = 1107, + Caption = "admin_deposit.edit", + IdType = 1 + }, + new + { + Id = 1108, + Caption = "admin_permission.view", + IdType = 1 + }, + new + { + Id = 1109, + Caption = "admin_permission.edit", + IdType = 1 + }, + new + { + Id = 1110, + Caption = "admin_role.view", + IdType = 1 + }, + new + { + Id = 1111, + Caption = "admin_role.edit", + IdType = 1 + }, + new + { + Id = 1112, + Caption = "admin_telemetry.view", + IdType = 1 + }, + new + { + Id = 1113, + Caption = "admin_user.view", + IdType = 1 + }, + new + { + Id = 1114, + Caption = "admin_user.edit", + IdType = 1 + }, + new + { + Id = 1115, + Caption = "admin_visit_log.view", + IdType = 1 + }, + new + { + Id = 1116, + Caption = "admin_well.view", + IdType = 1 + }, + new + { + Id = 1117, + Caption = "admin_well.edit", + IdType = 1 + }, + new + { + Id = 1200, + Caption = "archive.view", + IdType = 1 + }, + new + { + Id = 1201, + Caption = "cluster.view", + IdType = 1 + }, + new + { + Id = 1202, + Caption = "composite.view", + IdType = 1 + }, + new + { + Id = 1203, + Caption = "composite.edit", + IdType = 1 + }, + new + { + Id = 1204, + Caption = "deposit.view", + IdType = 1 + }, + new + { + Id = 1205, + Caption = "document.view", + IdType = 1 + }, + new + { + Id = 1206, + Caption = "drillProcessFlow.view", + IdType = 1 + }, + new + { + Id = 1207, + Caption = "drillProcessFlow.edit", + IdType = 1 + }, + new + { + Id = 1208, + Caption = "measure.view", + IdType = 1 + }, + new + { + Id = 1209, + Caption = "measure.edit", + IdType = 1 + }, + new + { + Id = 1210, + Caption = "message.view", + IdType = 1 + }, + new + { + Id = 1211, + Caption = "operations.view", + IdType = 1 + }, + new + { + Id = 1212, + Caption = "operations.edit", + IdType = 1 + }, + new + { + Id = 1213, + Caption = "params.view", + IdType = 1 + }, + new + { + Id = 1214, + Caption = "params.edit", + IdType = 1 + }, + new + { + Id = 1215, + Caption = "report.view", + IdType = 1 + }, + new + { + Id = 1216, + Caption = "report.edit", + IdType = 1 + }, + new + { + Id = 1217, + Caption = "setpoints.view", + IdType = 1 + }, + new + { + Id = 1218, + Caption = "setpoints.edit", + IdType = 1 + }, + new + { + Id = 1219, + Caption = "telemetry.view", + IdType = 1 + }, + new + { + Id = 1220, + Caption = "telemetryAnalysis.view", + IdType = 1 + }, + new + { + Id = 1221, + Caption = "well.view", + IdType = 1 + }, + new + { + Id = 1500, + Caption = "Просмотр всего", + IdType = 1 + }, + new + { + Id = 1501, + Caption = "file.edit", + IdType = 1 + }, + new + { + Id = 1502, + Caption = "drillingProgram.edit", + IdType = 1 + }, + new + { + Id = 2000, + Caption = "Заказчик", + IdType = 0 + }, + new + { + Id = 2001, + Caption = "Супервайзер", + IdType = 0 + }, + new + { + Id = 2002, + Caption = "Буровой подрядчик", + IdType = 0 + }, + new + { + Id = 2003, + Caption = "Растворщик", + IdType = 0 + }, + new + { + Id = 2004, + Caption = "Телеметрист", + IdType = 0 + }, + new + { + Id = 2005, + Caption = "Долотный сервис", + IdType = 0 + }, + new + { + Id = 2006, + Caption = "ГТИ", + IdType = 0 + }, + new + { + Id = 2007, + Caption = "Цементирование", + IdType = 0 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserSetting", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("Key") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("key") + .HasComment("Ключ настроек пользователя"); + + b.Property("Value") + .HasColumnType("jsonb") + .HasColumnName("setting_value") + .HasComment("Значение настроек пользователя"); + + b.HasKey("IdUser", "Key"); + + b.ToTable("t_user_settings", t => + { + t.HasComment("настройки интерфейса пользователя"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.RecordBase", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("Actcod") + .HasColumnType("smallint") + .HasColumnName("ACTCOD"); + + b.Property("Date") + .HasColumnType("integer") + .HasColumnName("DATE"); + + b.Property("Recid") + .HasColumnType("smallint") + .HasColumnName("RECID"); + + b.Property("Seqid") + .HasColumnType("integer") + .HasColumnName("SEQID"); + + b.Property("Stknum") + .HasColumnType("smallint") + .HasColumnName("STKNUM"); + + b.Property("Time") + .HasColumnType("integer") + .HasColumnName("TIME"); + + b.Property("Wellid") + .HasColumnType("text") + .HasColumnName("WELLID"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_wits_base"); + + b.UseTptMappingStrategy(); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", 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("IdCluster") + .HasColumnType("integer") + .HasColumnName("id_cluster"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("state") + .HasComment("0 - неизвестно, 1 - в работе, 2 - завершена"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdWellType") + .HasColumnType("integer") + .HasColumnName("id_well_type"); + + 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("IdCluster"); + + b.HasIndex("IdTelemetry") + .IsUnique(); + + b.HasIndex("IdWellType"); + + b.ToTable("t_well", t => + { + t.HasComment("скважины"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellComposite", b => + { + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины получателя"); + + b.Property("IdWellSrc") + .HasColumnType("integer") + .HasColumnName("id_well_src") + .HasComment("Id скважины композита"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_well_section_type") + .HasComment("Id тип секции композита"); + + b.HasKey("IdWell", "IdWellSrc", "IdWellSectionType"); + + b.HasIndex("IdWellSectionType"); + + b.HasIndex("IdWellSrc"); + + b.ToTable("t_well_composite", t => + { + t.HasComment("Композитная скважина"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellFinalDocument", b => + { + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category"); + + b.HasKey("IdWell", "IdUser", "IdCategory") + .HasName("t_well_final_documents_pk"); + + b.HasIndex("IdCategory"); + + b.HasIndex("IdUser"); + + b.ToTable("t_well_final_documents", t => + { + t.HasComment("Дело скважины"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CategoryInfo") + .HasColumnType("text") + .HasColumnName("category_info") + .HasComment("Доп. информация к выбраной категории"); + + b.Property("Comment") + .HasColumnType("text") + .HasColumnName("comment") + .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("DurationHours") + .HasColumnType("double precision") + .HasColumnName("duration_hours") + .HasComment("Продолжительность, часы"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category") + .HasComment("Id категории операции"); + + b.Property("IdPlan") + .HasColumnType("integer") + .HasColumnName("id_plan") + .HasComment("Id плановой операции"); + + b.Property("IdType") + .HasColumnType("integer") + .HasColumnName("id_type") + .HasComment("0 = План или 1 = Факт"); + + b.Property("IdUser") + .HasColumnType("integer"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_well_section_type") + .HasComment("Id тип секции скважины"); + + b.Property("LastUpdateDate") + .HasColumnType("timestamp with time zone"); + + b.HasKey("Id"); + + b.HasIndex("DateStart"); + + b.HasIndex("DepthEnd"); + + b.HasIndex("IdCategory"); + + b.HasIndex("IdPlan"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_well_operation", t => + { + t.HasComment("Данные по операциям на скважине"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperationCategory", 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("IsHidden") + .HasColumnType("boolean"); + + b.Property("KeyValueName") + .HasMaxLength(32) + .HasColumnType("character varying(32)") + .HasColumnName("key_value_name") + .HasComment("Название ключевого показателя операции"); + + b.Property("KeyValueUnits") + .HasMaxLength(16) + .HasColumnType("character varying(16)") + .HasColumnName("key_value_units") + .HasComment("Единицы измерения ключевого показателя операции"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name") + .HasComment("Название категории операции"); + + b.HasKey("Id"); + + b.HasIndex("IdParent"); + + b.ToTable("t_well_operation_category", t => + { + t.HasComment("Справочник операций на скважине"); + }); + + b.HasData( + new + { + Id = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "м/ч", + Name = "БУРЕНИЕ" + }, + new + { + Id = 3001, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО" + }, + new + { + Id = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "КРЕПЛЕНИЕ" + }, + new + { + Id = 3003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ГФР" + }, + new + { + Id = 3004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Вспомогательные операции" + }, + new + { + Id = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Непроизводительное время (НПВ)" + }, + new + { + Id = 3006, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Заключительные работы" + }, + new + { + Id = 4000, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "КНБК" + }, + new + { + Id = 4001, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "м/ч", + Name = "Механическое. бурение" + }, + new + { + Id = 4002, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Статический замер" + }, + new + { + Id = 4003, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Нормализация диаметра скважины" + }, + new + { + Id = 4004, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Наращивание" + }, + new + { + Id = 4005, + IdParent = 3001, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО" + }, + new + { + Id = 4006, + IdParent = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск обсадной колонны" + }, + new + { + Id = 4018, + IdParent = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Крепление" + }, + new + { + Id = 4007, + IdParent = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Цементирование" + }, + new + { + Id = 4008, + IdParent = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Вспомогательные работы при креплении" + }, + new + { + Id = 4009, + IdParent = 3003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка/разборка приборов ГИС" + }, + new + { + Id = 4010, + IdParent = 3003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО" + }, + new + { + Id = 4011, + IdParent = 3003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ГИС" + }, + new + { + Id = 4012, + IdParent = 3004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка, ОБР" + }, + new + { + Id = 4013, + IdParent = 3004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Вспомогательные работы" + }, + new + { + Id = 4014, + IdParent = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ремонт оборудования" + }, + new + { + Id = 4015, + IdParent = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Аварийные работы" + }, + new + { + Id = 4016, + IdParent = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Осложнение" + }, + new + { + Id = 4017, + IdParent = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Незаложенные в ГГД операции" + }, + new + { + Id = 4019, + IdParent = 3006, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Заключительные операции" + }, + new + { + Id = 5000, + IdParent = 4000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Разборка КНБК" + }, + new + { + Id = 5001, + IdParent = 4000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка КНБК" + }, + new + { + Id = 5002, + IdParent = 4001, + IsHidden = true, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", + Name = "Бурение слайдом" + }, + new + { + Id = 5003, + IdParent = 4001, + IsHidden = true, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", + Name = "Бурение ротором" + }, + new + { + Id = 5004, + IdParent = 4002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Замер ЗТС (запись MWD)" + }, + new + { + Id = 5005, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка перед наращиванием" + }, + new + { + Id = 5006, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Проработка во время бурения" + }, + new + { + Id = 5007, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Проработка" + }, + new + { + Id = 5008, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонировка во время бурения" + }, + new + { + Id = 5009, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонировка перед наращиванием" + }, + new + { + Id = 5010, + IdParent = 4004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Наращивание" + }, + new + { + Id = 5011, + IdParent = 4004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Удержание в клиньях" + }, + new + { + Id = 5012, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем инструмента" + }, + new + { + Id = 5013, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем КНБК" + }, + new + { + Id = 5014, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск инструмента" + }, + new + { + Id = 5015, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск КНБК" + }, + new + { + Id = 5016, + IdParent = 4006, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка при спуске ОК" + }, + new + { + Id = 5017, + IdParent = 4006, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск ОК" + }, + new + { + Id = 5018, + IdParent = 4007, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ОЗЦ" + }, + new + { + Id = 5019, + IdParent = 4007, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Цементирование" + }, + new + { + Id = 5020, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Опрессовка БИ" + }, + new + { + Id = 5021, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Опрессовка ОК" + }, + new + { + Id = 5022, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПЗР при спуске ОК" + }, + new + { + Id = 5023, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПЗР при цементировании" + }, + new + { + Id = 5024, + IdParent = 4009, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Разборка комплекса приборов ГИС" + }, + new + { + Id = 5025, + IdParent = 4009, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка комплекса приборов ГИС" + }, + new + { + Id = 5026, + IdParent = 4010, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем приборов ГИС (на трубах)" + }, + new + { + Id = 5027, + IdParent = 4010, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск приборов ГИС (на трубах)" + }, + new + { + Id = 5028, + IdParent = 4011, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Комплекс ГИС на жестком кабеле" + }, + new + { + Id = 5029, + IdParent = 4011, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Комплекс ГИС на кабеле" + }, + new + { + Id = 5030, + IdParent = 4011, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Комплекс ГИС на трубах" + }, + new + { + Id = 5031, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Закачка/прокачка пачки" + }, + new + { + Id = 5032, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Обработка БР" + }, + new + { + Id = 5033, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ориентирование ТС при бурении" + }, + new + { + Id = 5034, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Перезапись гаммы-каротажа" + }, + new + { + Id = 5035, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Приготовление БР" + }, + new + { + Id = 5036, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка" + }, + new + { + Id = 5037, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Разбуривание тех.оснастки" + }, + new + { + Id = 5038, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск инструмента с проработкой" + }, + new + { + Id = 5039, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ВМР" + }, + new + { + Id = 5040, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Демонтаж ПВО" + }, + new + { + Id = 5041, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Долив затруба при подъёме" + }, + new + { + Id = 5042, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Монтаж ПВО" + }, + new + { + Id = 5043, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Наработка жёлоба" + }, + new + { + Id = 5044, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Обвязка устья с циркуляционной системой" + }, + new + { + Id = 5045, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Оборудование устья" + }, + new + { + Id = 5046, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Опрессовка ПВО" + }, + new + { + Id = 5047, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Перемонтаж ПВО " + }, + new + { + Id = 5048, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Перетяжка талевого каната" + }, + new + { + Id = 5049, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПЗР при сборке КНБК" + }, + new + { + Id = 5050, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Полная замена талевого каната" + }, + new + { + Id = 5051, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПР перед забуркой направления" + }, + new + { + Id = 5052, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Продувка манифольда" + }, + new + { + Id = 5053, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Срезка" + }, + new + { + Id = 5054, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Тайм-дриллинг" + }, + new + { + Id = 5055, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Тех.отстой" + }, + new + { + Id = 5056, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Учебная тревога \"Выброс\"" + }, + new + { + Id = 5057, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Чистка ЦСГО/емкостного блока" + }, + new + { + Id = 5058, + IdParent = 4014, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ремонт бурового оборудования" + }, + new + { + Id = 5059, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ловильные работы" + }, + new + { + Id = 5060, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ожидание" + }, + new + { + Id = 5061, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Определение места прихвата и ЛМ" + }, + new + { + Id = 5062, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Работа яссом" + }, + new + { + Id = 5063, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Расхаживание" + }, + new + { + Id = 5064, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО - колокол" + }, + new + { + Id = 5065, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО - метчик" + }, + new + { + Id = 5066, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО - овершот" + }, + new + { + Id = 5067, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО - труболовка" + }, + new + { + Id = 5068, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Торпедирование (встряхивание)" + }, + new + { + Id = 5069, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Торпедирование (отстрел)" + }, + new + { + Id = 5070, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Установка ванн" + }, + new + { + Id = 5071, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Фрезеровка" + }, + new + { + Id = 5072, + IdParent = 4016, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Контролируемое ГНВП" + }, + new + { + Id = 5073, + IdParent = 4016, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Поглощение" + }, + new + { + Id = 5074, + IdParent = 4016, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сальникообразование" + }, + new + { + Id = 5075, + IdParent = 4016, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Утяжеление БР" + }, + new + { + Id = 5076, + IdParent = 4017, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "НПВ / прочее" + }, + new + { + Id = 5077, + IdParent = 4017, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Обработка раствора (несоответствие параметров)" + }, + new + { + Id = 5078, + IdParent = 4017, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "подъем ОК" + }, + new + { + Id = 5079, + IdParent = 4017, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ревизия КНБК/инструмента/ЗТС" + }, + new + { + Id = 5082, + IdParent = 4000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка устройства ориентирования КО" + }, + new + { + Id = 5083, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Проработка принудительная" + }, + new + { + Id = 5084, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонировка подъем БИ, продувка" + }, + new + { + Id = 5085, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск бурильного инструмента со сборкой с мостков" + }, + new + { + Id = 5086, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем БИ с выбросом на мостки" + }, + new + { + Id = 5087, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск БИ со сборкой с мостков" + }, + new + { + Id = 5088, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка и спуск ТБТ" + }, + new + { + Id = 5089, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск КО на транспортной колонне" + }, + new + { + Id = 5090, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Отворот допускной трубы" + }, + new + { + Id = 5091, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Активация подвески, опрессовка" + }, + new + { + Id = 5092, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Монтаж, опрессовка ФА" + }, + new + { + Id = 5093, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка хвостовика 114мм (согласно схеме)" + }, + new + { + Id = 5094, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПЗР к спуску УЭЦН" + }, + new + { + Id = 5095, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Активация подвески (потайной колонны, хвостовика)" + }, + new + { + Id = 5096, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонирование перед спуском" + }, + new + { + Id = 5097, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка - перевод скважины на новый раствор" + }, + new + { + Id = 5098, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка БИ с мостков на подсвечник" + }, + new + { + Id = 5099, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подготовка ствола скважины. Перезапись ГК в интервале установки КО." + }, + new + { + Id = 5100, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Смена рабочего переводника ВСП" + }, + new + { + Id = 5101, + IdParent = 4014, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ремонт" + }, + new + { + Id = 5102, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск пакера" + }, + new + { + Id = 5103, + IdParent = 4011, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Запись гамма-каратожа" + }, + new + { + Id = 5104, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонирование спуск БИ" + }, + new + { + Id = 5105, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка клин-отклонителя" + }, + new + { + Id = 5106, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ориентирование и посадка клина-отклонителя" + }, + new + { + Id = 5107, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Протяжка подъемного патрубка подвески" + }, + new + { + Id = 5108, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем клина-отклонителя" + }, + new + { + Id = 5109, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Стыковка стингера с хвостовиком основного ствола" + }, + new + { + Id = 5110, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ориентирование и установка стыковочного узла хвостовика" + }, + new + { + Id = 5111, + IdParent = 4001, + IsHidden = false, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", + Name = "Бурение с отбором керна" + }, + new + { + Id = 5112, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Работа пакером в обсадной колонне" + }, + new + { + Id = 5113, + IdParent = 4001, + IsHidden = false, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", + Name = "Бурение" + }, + new + { + Id = 5114, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ТО оборудования" + }, + new + { + Id = 5115, + IdParent = 4019, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск НКТ" + }, + new + { + Id = 5116, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Вырезка окна" + }, + new + { + Id = 5117, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Расширение ствола" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSectionType", 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("Order") + .HasColumnType("real") + .HasColumnName("order") + .HasComment("Порядок"); + + b.HasKey("Id"); + + b.ToTable("t_well_section_type", t => + { + t.HasComment("конструкция секции скважины"); + }); + + b.HasData( + new + { + Id = 1, + Caption = "Пилотный ствол", + Order = 4f + }, + new + { + Id = 2, + Caption = "Направление", + Order = 0f + }, + new + { + Id = 3, + Caption = "Кондуктор", + Order = 1f + }, + new + { + Id = 4, + Caption = "Эксплуатационная колонна", + Order = 3f + }, + new + { + Id = 5, + Caption = "Транспортный ствол", + Order = 5f + }, + new + { + Id = 6, + Caption = "Хвостовик", + Order = 6f + }, + new + { + Id = 7, + Caption = "Пилотный ствол 2", + Order = 4.1f + }, + new + { + Id = 8, + Caption = "Направление 2", + Order = 0.1f + }, + new + { + Id = 9, + Caption = "Кондуктор 2", + Order = 1.1f + }, + new + { + Id = 10, + Caption = "Эксплуатационная колонна 2", + Order = 3.1f + }, + new + { + Id = 11, + Caption = "Транспортный ствол 2", + Order = 5.1f + }, + new + { + Id = 12, + Caption = "Хвостовик 2", + Order = 6.1f + }, + new + { + Id = 13, + Caption = "Пилотный ствол 3", + Order = 4.2f + }, + new + { + Id = 14, + Caption = "Направление 3", + Order = 0.2f + }, + new + { + Id = 15, + Caption = "Кондуктор 3", + Order = 1.2f + }, + new + { + Id = 16, + Caption = "Эксплуатационная колонна 3", + Order = 3.2f + }, + new + { + Id = 17, + Caption = "Транспортный ствол 3", + Order = 5.2f + }, + new + { + Id = 18, + Caption = "Хвостовик 3", + Order = 6.2f + }, + new + { + Id = 19, + Caption = "Пилотный ствол 4", + Order = 4.3f + }, + new + { + Id = 20, + Caption = "Направление 4", + Order = 0.3f + }, + new + { + Id = 21, + Caption = "Кондуктор 4", + Order = 1.3f + }, + new + { + Id = 22, + Caption = "Эксплуатационная колонна 4", + Order = 3.3f + }, + new + { + Id = 23, + Caption = "Транспортный ствол 4", + Order = 5.3f + }, + new + { + Id = 24, + Caption = "Хвостовик 4", + Order = 6.3f + }, + new + { + Id = 25, + Caption = "Пилотный ствол 5", + Order = 4.4f + }, + new + { + Id = 26, + Caption = "Направление 5", + Order = 0.4f + }, + new + { + Id = 27, + Caption = "Кондуктор 5", + Order = 1.4f + }, + new + { + Id = 28, + Caption = "Эксплуатационная колонна 5", + Order = 3.4f + }, + new + { + Id = 29, + Caption = "Транспортный ствол 5", + Order = 5.4f + }, + new + { + Id = 30, + Caption = "Хвостовик 5", + Order = 6.4f + }, + new + { + Id = 31, + Caption = "Техническая колонна", + Order = 2f + }, + new + { + Id = 32, + Caption = "Техническая колонна 2", + Order = 2.1f + }, + new + { + Id = 33, + Caption = "Техническая колонна 3", + Order = 2.2f + }, + new + { + Id = 34, + Caption = "Хвостовик 6", + Order = 6.5f + }, + new + { + Id = 35, + Caption = "Хвостовик 7", + Order = 6.6f + }, + new + { + Id = 36, + Caption = "Хвостовик 8", + Order = 6.7f + }, + new + { + Id = 37, + Caption = "Хвостовик 9", + Order = 6.8f + }, + new + { + Id = 38, + Caption = "Хвостовик 10", + Order = 6.9f + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSections.WellSectionPlan", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + 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("IdSectionType") + .HasColumnType("integer") + .HasColumnName("id_section_type") + .HasComment("Тип секции"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user") + .HasComment("Id пользователя"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("InnerDiameter") + .HasColumnType("double precision") + .HasColumnName("inner_diameter") + .HasComment("Внутренний диаметр"); + + b.Property("LastUpdateDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_last_update") + .HasComment("Дата последнего обновления"); + + b.Property("OuterDiameter") + .HasColumnType("double precision") + .HasColumnName("outer_diameter") + .HasComment("Внешний диаметр"); + + b.HasKey("Id"); + + b.HasIndex("IdSectionType"); + + b.HasIndex("IdWell", "IdSectionType") + .IsUnique(); + + b.ToTable("t_well_section_plan"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellType", 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.HasKey("Id"); + + b.ToTable("t_well_type", t => + { + t.HasComment("конструкция скважины"); + }); + + b.HasData( + new + { + Id = 1, + Caption = "Наклонно-направленная" + }, + new + { + Id = 2, + Caption = "Горизонтальная" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record1", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Blkpos") + .HasColumnType("real") + .HasColumnName("BLKPOS"); + + b.Property("Chkp") + .HasColumnType("real") + .HasColumnName("CHKP"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptbitv") + .HasColumnType("real") + .HasColumnName("DEPTBITV"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptretm") + .HasColumnType("real") + .HasColumnName("DEPTRETM"); + + b.Property("Deptvert") + .HasColumnType("real") + .HasColumnName("DEPTVERT"); + + b.Property("Gasa") + .HasColumnType("real") + .HasColumnName("GASA"); + + b.Property("Hkla") + .HasColumnType("real") + .HasColumnName("HKLA"); + + b.Property("Hklx") + .HasColumnType("real") + .HasColumnName("HKLX"); + + b.Property("Lagstks") + .HasColumnType("smallint") + .HasColumnName("LAGSTKS"); + + b.Property("Mcia") + .HasColumnType("real") + .HasColumnName("MCIA"); + + b.Property("Mcoa") + .HasColumnType("real") + .HasColumnName("MCOA"); + + b.Property("Mdia") + .HasColumnType("real") + .HasColumnName("MDIA"); + + b.Property("Mdoa") + .HasColumnType("real") + .HasColumnName("MDOA"); + + b.Property("Mfia") + .HasColumnType("real") + .HasColumnName("MFIA"); + + b.Property("Mfoa") + .HasColumnType("real") + .HasColumnName("MFOA"); + + b.Property("Mfop") + .HasColumnType("smallint") + .HasColumnName("MFOP"); + + b.Property("Mtia") + .HasColumnType("real") + .HasColumnName("MTIA"); + + b.Property("Mtoa") + .HasColumnType("real") + .HasColumnName("MTOA"); + + b.Property("Ropa") + .HasColumnType("real") + .HasColumnName("ROPA"); + + b.Property("Rpma") + .HasColumnType("smallint") + .HasColumnName("RPMA"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Spm1") + .HasColumnType("smallint") + .HasColumnName("SPM1"); + + b.Property("Spm2") + .HasColumnType("smallint") + .HasColumnName("SPM2"); + + b.Property("Spm3") + .HasColumnType("smallint") + .HasColumnName("SPM3"); + + b.Property("Sppa") + .HasColumnType("real") + .HasColumnName("SPPA"); + + b.Property("Stkc") + .HasColumnType("integer") + .HasColumnName("STKC"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.Property("Torqa") + .HasColumnType("real") + .HasColumnName("TORQA"); + + b.Property("Torqx") + .HasColumnType("real") + .HasColumnName("TORQX"); + + b.Property("Tvolact") + .HasColumnType("real") + .HasColumnName("TVOLACT"); + + b.Property("Tvolcact") + .HasColumnType("real") + .HasColumnName("TVOLCACT"); + + b.Property("Woba") + .HasColumnType("real") + .HasColumnName("WOBA"); + + b.Property("Wobx") + .HasColumnType("real") + .HasColumnName("WOBX"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_1"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record50", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("DeptmeasGdpMc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_GDP_mc"); + + b.Property("DeptmeasMcrstat") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_MCRSTAT"); + + b.Property("DeptmeasRa33Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33_mc"); + + b.Property("DeptmeasRa33f2Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33F2_mc"); + + b.Property("DeptmeasRa33f4Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33F4_mc"); + + b.Property("DeptmeasRp33Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33_mc"); + + b.Property("DeptmeasRp33f2Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33F2_mc"); + + b.Property("DeptmeasRp33f4Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33F4_mc"); + + b.Property("DeptmeasSlvlMc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_SLVL_mc"); + + b.Property("GdpMc") + .HasColumnType("real") + .HasColumnName("GDP_mc"); + + b.Property("Mcrstat") + .HasColumnType("real") + .HasColumnName("MCRSTAT"); + + b.Property("Ra33Mc") + .HasColumnType("real") + .HasColumnName("RA33_mc"); + + b.Property("Ra33f2Mc") + .HasColumnType("real") + .HasColumnName("RA33F2_mc"); + + b.Property("Ra33f4Mc") + .HasColumnType("real") + .HasColumnName("RA33F4_mc"); + + b.Property("Rp33Mc") + .HasColumnType("real") + .HasColumnName("RP33_mc"); + + b.Property("Rp33f2Mc") + .HasColumnType("real") + .HasColumnName("RP33F2_mc"); + + b.Property("Rp33f4Mc") + .HasColumnType("real") + .HasColumnName("RP33F4_mc"); + + b.Property("SlvlMc") + .HasColumnType("real") + .HasColumnName("SLVL_mc"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_50"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record60", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Btot") + .HasColumnType("real") + .HasColumnName("Btot"); + + b.Property("Bx") + .HasColumnType("real") + .HasColumnName("Bx"); + + b.Property("By") + .HasColumnType("real") + .HasColumnName("By"); + + b.Property("Bz") + .HasColumnType("real") + .HasColumnName("Bz"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Gtot") + .HasColumnType("real") + .HasColumnName("Gtot"); + + b.Property("Gx") + .HasColumnType("real") + .HasColumnName("Gx"); + + b.Property("Gy") + .HasColumnType("real") + .HasColumnName("Gy"); + + b.Property("Gz") + .HasColumnType("real") + .HasColumnName("Gz"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_60"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record61", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Att06h") + .HasColumnType("real") + .HasColumnName("ATT06H"); + + b.Property("Att06l") + .HasColumnType("real") + .HasColumnName("ATT06L"); + + b.Property("Att10h") + .HasColumnType("real") + .HasColumnName("ATT10H"); + + b.Property("Att10l") + .HasColumnType("real") + .HasColumnName("ATT10L"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Phl1f1") + .HasColumnType("real") + .HasColumnName("PHL1F1"); + + b.Property("Phl1f2") + .HasColumnType("real") + .HasColumnName("PHL1F2"); + + b.Property("Phl2f1") + .HasColumnType("real") + .HasColumnName("PHL2F1"); + + b.Property("Phl2f2") + .HasColumnType("real") + .HasColumnName("PHL2F2"); + + b.Property("Status") + .HasColumnType("real") + .HasColumnName("Status"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_61"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record7", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptsvym") + .HasColumnType("real") + .HasColumnName("DEPTSVYM"); + + b.Property("Deptsvyv") + .HasColumnType("real") + .HasColumnName("DEPTSVYV"); + + b.Property("Passnum") + .HasColumnType("smallint") + .HasColumnName("PASSNUM"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Svyazc") + .HasColumnType("real") + .HasColumnName("SVYAZC"); + + b.Property("Svyazu") + .HasColumnType("real") + .HasColumnName("SVYAZU"); + + b.Property("Svydls") + .HasColumnType("real") + .HasColumnName("SVYDLS"); + + b.Property("Svyew") + .HasColumnType("real") + .HasColumnName("SVYEW"); + + b.Property("Svygtf") + .HasColumnType("real") + .HasColumnName("SVYGTF"); + + b.Property("Svyinc") + .HasColumnType("real") + .HasColumnName("SVYINC"); + + b.Property("Svymtf") + .HasColumnType("real") + .HasColumnName("SVYMTF"); + + b.Property("Svyns") + .HasColumnType("real") + .HasColumnName("SVYNS"); + + b.Property("Svytype") + .HasColumnType("text") + .HasColumnName("SVYTYPE"); + + b.Property("Svywalk") + .HasColumnType("real") + .HasColumnName("SVYWALK"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_7"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record8", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptbitv") + .HasColumnType("real") + .HasColumnName("DEPTBITV"); + + b.Property("Deptcalm") + .HasColumnType("real") + .HasColumnName("DEPTCALM"); + + b.Property("Deptcalv") + .HasColumnType("real") + .HasColumnName("DEPTCALV"); + + b.Property("Deptfdm") + .HasColumnType("real") + .HasColumnName("DEPTFDM"); + + b.Property("Deptfdv") + .HasColumnType("real") + .HasColumnName("DEPTFDV"); + + b.Property("Deptgr1m") + .HasColumnType("real") + .HasColumnName("DEPTGR1M"); + + b.Property("Deptgr1v") + .HasColumnType("real") + .HasColumnName("DEPTGR1V"); + + b.Property("Deptgr2m") + .HasColumnType("real") + .HasColumnName("DEPTGR2M"); + + b.Property("Deptgr2v") + .HasColumnType("real") + .HasColumnName("DEPTGR2V"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptp1m") + .HasColumnType("real") + .HasColumnName("DEPTP1M"); + + b.Property("Deptp1v") + .HasColumnType("real") + .HasColumnName("DEPTP1V"); + + b.Property("Deptp2m") + .HasColumnType("real") + .HasColumnName("DEPTP2M"); + + b.Property("Deptp2v") + .HasColumnType("real") + .HasColumnName("DEPTP2V"); + + b.Property("Deptrs1m") + .HasColumnType("real") + .HasColumnName("DEPTRS1M"); + + b.Property("Deptrs1v") + .HasColumnType("real") + .HasColumnName("DEPTRS1V"); + + b.Property("Deptrs2m") + .HasColumnType("real") + .HasColumnName("DEPTRS2M"); + + b.Property("Deptrs2v") + .HasColumnType("real") + .HasColumnName("DEPTRS2V"); + + b.Property("Deptvert") + .HasColumnType("real") + .HasColumnName("DEPTVERT"); + + b.Property("Mclp") + .HasColumnType("real") + .HasColumnName("MCLP"); + + b.Property("Mfd") + .HasColumnType("real") + .HasColumnName("MFD"); + + b.Property("Mffp") + .HasColumnType("real") + .HasColumnName("MFFP"); + + b.Property("Mfpp") + .HasColumnType("real") + .HasColumnName("MFPP"); + + b.Property("Mfrann") + .HasColumnType("real") + .HasColumnName("MFRANN"); + + b.Property("Mfrpipe") + .HasColumnType("real") + .HasColumnName("MFRPIPE"); + + b.Property("Mftann") + .HasColumnType("real") + .HasColumnName("MFTANN"); + + b.Property("Mftpipe") + .HasColumnType("real") + .HasColumnName("MFTPIPE"); + + b.Property("Mg1") + .HasColumnType("real") + .HasColumnName("MG1"); + + b.Property("Mg1c") + .HasColumnType("real") + .HasColumnName("MG1C"); + + b.Property("Mg2") + .HasColumnType("real") + .HasColumnName("MG2"); + + b.Property("Mg2c") + .HasColumnType("real") + .HasColumnName("MG2C"); + + b.Property("Mpo1") + .HasColumnType("real") + .HasColumnName("MPO1"); + + b.Property("Mpo2") + .HasColumnType("real") + .HasColumnName("MPO2"); + + b.Property("Mr1") + .HasColumnType("real") + .HasColumnName("MR1"); + + b.Property("Mr1c") + .HasColumnType("real") + .HasColumnName("MR1C"); + + b.Property("Mr2") + .HasColumnType("real") + .HasColumnName("MR2"); + + b.Property("Mr2c") + .HasColumnType("real") + .HasColumnName("MR2C"); + + b.Property("Passnum") + .HasColumnType("smallint") + .HasColumnName("PASSNUM"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Spare6") + .HasColumnType("real") + .HasColumnName("SPARE6"); + + b.Property("Spare7") + .HasColumnType("real") + .HasColumnName("SPARE7"); + + b.Property("Spare8") + .HasColumnType("real") + .HasColumnName("SPARE8"); + + b.Property("Spare9") + .HasColumnType("real") + .HasColumnName("SPARE9"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_8"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Cluster", b => + { + b.HasOne("AsbCloudDb.Model.Deposit", "Deposit") + .WithMany("Clusters") + .HasForeignKey("IdDeposit") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_cluster_t_deposit_id_fk"); + + b.Navigation("Deposit"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Company", b => + { + b.HasOne("AsbCloudDb.Model.CompanyType", "CompanyType") + .WithMany("Companies") + .HasForeignKey("IdCompanyType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("CompanyType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Contact", b => + { + b.HasOne("AsbCloudDb.Model.CompanyType", "CompanyType") + .WithMany("Contacts") + .HasForeignKey("IdCompanyType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("Contacts") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("CompanyType"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DailyReports.DailyReport", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DataSaubStat", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DetectedOperation", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillTest", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillingProgramPart", b => + { + b.HasOne("AsbCloudDb.Model.FileCategory", "FileCategory") + .WithMany() + .HasForeignKey("IdFileCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("DrillingProgramParts") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("FileCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Faq", b => + { + b.HasOne("AsbCloudDb.Model.User", "AuthorAnswer") + .WithMany() + .HasForeignKey("IdAuthorAnswer"); + + b.HasOne("AsbCloudDb.Model.User", "AuthorQuestion") + .WithMany() + .HasForeignKey("IdAuthorQuestion") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("AuthorAnswer"); + + b.Navigation("AuthorQuestion"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileInfo", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany("Files") + .HasForeignKey("IdAuthor"); + + b.HasOne("AsbCloudDb.Model.FileCategory", "FileCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("FileCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileMark", b => + { + b.HasOne("AsbCloudDb.Model.FileInfo", "FileInfo") + .WithMany("FileMarks") + .HasForeignKey("IdFile") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_file_mark_t_file_info_fk"); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany("FileMarks") + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_user_t_file_mark_fk"); + + b.Navigation("FileInfo"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemFloat", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemInt", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemString", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.HelpPage", b => + { + b.HasOne("AsbCloudDb.Model.FileCategory", "FileCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("FileCategory"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.LimitingParameter", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Manuals.Manual", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.FileCategory", "Category") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Manuals.ManualDirectory", "Directory") + .WithMany("Manuals") + .HasForeignKey("IdDirectory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Category"); + + b.Navigation("Directory"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Manuals.ManualDirectory", b => + { + b.HasOne("AsbCloudDb.Model.Manuals.ManualDirectory", "Parent") + .WithMany("Children") + .HasForeignKey("IdParent") + .OnDelete(DeleteBehavior.Cascade); + + b.Navigation("Parent"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Measure", b => + { + b.HasOne("AsbCloudDb.Model.MeasureCategory", "Category") + .WithMany("Measures") + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Category"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Notification", b => + { + b.HasOne("AsbCloudDb.Model.NotificationCategory", "NotificationCategory") + .WithMany("Notifications") + .HasForeignKey("IdNotificationCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("NotificationCategory"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.OperationValue", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdOperationCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAntiCrashRotation", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAntiCrashRotation", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAutoHoldTF", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAutoHoldTF", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDamper", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDamper", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDrillTest", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDrillTest", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanOscillation", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanOscillation", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanShockTest", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanShockTest", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanStaticMeasurementOutput", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanStaticMeasurementOutput", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanLoadCapacity", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanLoadCapacity", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanOscillationAngles", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanOscillationAngles", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanPositioningOffTheBottom", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanPositioningOffTheBottom", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingRotor", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingRotor", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingSlide", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingSlide", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRecordingStaticMeasurement", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRecordingStaticMeasurement", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRotor", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRotor", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSlide", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSlide", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingOffThePump", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict) + .HasConstraintName("FK_t_process_map_plan_operation_switching_off_the_pump_t_user~1"); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingOffThePump", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_t_process_map_plan_operation_switching_off_the_pump_t_well~1"); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingToTheMode", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingToTheMode", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanTFOrientation", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanTFOrientation", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => + { + b.HasOne("AsbCloudDb.Model.Company", "Company") + .WithMany("RelationCompaniesWells") + .HasForeignKey("IdCompany") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_relation_company_well_t_company_id_fk"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("RelationCompaniesWells") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_relation_company_well_t_well_id_fk"); + + b.Navigation("Company"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationContactWell", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany("RelationContactsWells") + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserDrillingProgramPart", b => + { + b.HasOne("AsbCloudDb.Model.DrillingProgramPart", "DrillingProgramPart") + .WithMany("RelatedUsers") + .HasForeignKey("IdDrillingProgramPart") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("DrillingProgramPart"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRolePermission", b => + { + b.HasOne("AsbCloudDb.Model.Permission", "Permission") + .WithMany("RelationUserRolePermissions") + .HasForeignKey("IdPermission") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "UserRole") + .WithMany("RelationUserRolePermissions") + .HasForeignKey("IdUserRole") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Permission"); + + b.Navigation("UserRole"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRoleUserRole", b => + { + b.HasOne("AsbCloudDb.Model.UserRole", "Role") + .WithMany("RelationUserRoleUserRoles") + .HasForeignKey("Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "IncludeRole") + .WithMany() + .HasForeignKey("IdInclude") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("IncludeRole"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserUserRole", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany("RelationUsersUserRoles") + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "UserRole") + .WithMany("RelationUsersUserRoles") + .HasForeignKey("IdUserRole") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + + b.Navigation("UserRole"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ReportProperty", b => + { + b.HasOne("AsbCloudDb.Model.FileInfo", "File") + .WithMany() + .HasForeignKey("IdFile") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("File"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Schedule", b => + { + b.HasOne("AsbCloudDb.Model.Driller", "Driller") + .WithMany("Schedule") + .HasForeignKey("IdDriller") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_schedule_t_driller_id_driller"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Driller"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.SetpointsRequest", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaub", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("DataSaub") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_data_saub_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSpin", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("DataSpin") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_data_spin_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryEvent", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Events") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_event_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryMessage", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Messages") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_messages_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryUser", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Users") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_user_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Trajectory.TrajectoryFact", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Trajectory.TrajectoryPlan", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.HasOne("AsbCloudDb.Model.Company", "Company") + .WithMany("Users") + .HasForeignKey("IdCompany") + .OnDelete(DeleteBehavior.SetNull) + .IsRequired() + .HasConstraintName("t_user_t_company_id_fk"); + + b.Navigation("Company"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserSetting", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", b => + { + b.HasOne("AsbCloudDb.Model.Cluster", "Cluster") + .WithMany("Wells") + .HasForeignKey("IdCluster") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_t_cluster_id_fk"); + + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithOne("Well") + .HasForeignKey("AsbCloudDb.Model.Well", "IdTelemetry") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("t_well_t_telemetry_id_fk"); + + b.HasOne("AsbCloudDb.Model.WellType", "WellType") + .WithMany("Wells") + .HasForeignKey("IdWellType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Cluster"); + + b.Navigation("Telemetry"); + + b.Navigation("WellType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellComposite", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("WellComposites") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_t_well_id_fk"); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany("WellComposites") + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_t_well_section_type_id_fk"); + + b.HasOne("AsbCloudDb.Model.Well", "WellSrc") + .WithMany("WellCompositeSrcs") + .HasForeignKey("IdWellSrc") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_src_t_well_id_fk"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + + b.Navigation("WellSrc"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellFinalDocument", b => + { + b.HasOne("AsbCloudDb.Model.FileCategory", "Category") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Category"); + + b.Navigation("User"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperation", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellOperation", "OperationPlan") + .WithMany() + .HasForeignKey("IdPlan") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("WellOperations") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany("WellOperations") + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("OperationPlan"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperationCategory", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "Parent") + .WithMany() + .HasForeignKey("IdParent"); + + b.Navigation("Parent"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSections.WellSectionPlan", b => + { + b.HasOne("AsbCloudDb.Model.WellSectionType", "SectionType") + .WithMany() + .HasForeignKey("IdSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("SectionType"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record1", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record1", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record50", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record50", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record60", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record60", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record61", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record61", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record7", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record7", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record8", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record8", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Cluster", b => + { + b.Navigation("Wells"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Company", b => + { + b.Navigation("RelationCompaniesWells"); + + b.Navigation("Users"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.CompanyType", b => + { + b.Navigation("Companies"); + + b.Navigation("Contacts"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Deposit", b => + { + b.Navigation("Clusters"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Driller", b => + { + b.Navigation("Schedule"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillingProgramPart", b => + { + b.Navigation("RelatedUsers"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileInfo", b => + { + b.Navigation("FileMarks"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Manuals.ManualDirectory", b => + { + b.Navigation("Children"); + + b.Navigation("Manuals"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.MeasureCategory", b => + { + b.Navigation("Measures"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.NotificationCategory", b => + { + b.Navigation("Notifications"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Permission", b => + { + b.Navigation("RelationUserRolePermissions"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Telemetry", b => + { + b.Navigation("DataSaub"); + + b.Navigation("DataSpin"); + + b.Navigation("Events"); + + b.Navigation("Messages"); + + b.Navigation("Users"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.Navigation("FileMarks"); + + b.Navigation("Files"); + + b.Navigation("RelationContactsWells"); + + b.Navigation("RelationUsersUserRoles"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserRole", b => + { + b.Navigation("RelationUserRolePermissions"); + + b.Navigation("RelationUserRoleUserRoles"); + + b.Navigation("RelationUsersUserRoles"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", b => + { + b.Navigation("Contacts"); + + b.Navigation("DrillingProgramParts"); + + b.Navigation("RelationCompaniesWells"); + + b.Navigation("WellCompositeSrcs"); + + b.Navigation("WellComposites"); + + b.Navigation("WellOperations"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSectionType", b => + { + b.Navigation("WellComposites"); + + b.Navigation("WellOperations"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellType", b => + { + b.Navigation("Wells"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/AsbCloudDb/Migrations/20240723055049_NotNullable_Fields_ProcessMapPlanReamingRotorAndSlide.cs b/AsbCloudDb/Migrations/20240723055049_NotNullable_Fields_ProcessMapPlanReamingRotorAndSlide.cs new file mode 100644 index 00000000..34931f1a --- /dev/null +++ b/AsbCloudDb/Migrations/20240723055049_NotNullable_Fields_ProcessMapPlanReamingRotorAndSlide.cs @@ -0,0 +1,810 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace AsbCloudDb.Migrations +{ + /// + public partial class NotNullable_Fields_ProcessMapPlanReamingRotorAndSlide : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AlterColumn( + name: "reaming3_stop_point_off_bottom", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Остановка над забоем, м.", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Остановка над забоем, м."); + + migrationBuilder.AlterColumn( + name: "reaming3_rpm_up", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 3, Обороты, об/мин., Вверх", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 3, Обороты, об/мин., Вверх"); + + migrationBuilder.AlterColumn( + name: "reaming3_rpm_down", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 3, Обороты, об/мин., Вниз", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 3, Обороты, об/мин., Вниз"); + + migrationBuilder.AlterColumn( + name: "reaming3_rop_up", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 3, Скорость, м/ч., Вверх", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 3, Скорость, м/ч., Вверх"); + + migrationBuilder.AlterColumn( + name: "reaming3_rop_down", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 3, Скорость, м/ч., Вниз", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 3, Скорость, м/ч., Вниз"); + + migrationBuilder.AlterColumn( + name: "reaming3_repetitions_count", + table: "t_process_map_plan_reaming_slide", + type: "integer", + nullable: false, + defaultValue: 0, + comment: "Проработка 3, Количество повторений, шт.", + oldClrType: typeof(int), + oldType: "integer", + oldNullable: true, + oldComment: "Проработка 3, Количество повторений, шт."); + + migrationBuilder.AlterColumn( + name: "reaming3_interval", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 3, Интервал проработки, м.", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 3, Интервал проработки, м."); + + migrationBuilder.AlterColumn( + name: "reaming3_flow_rate_up", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 3, Расход, л/с., Вверх", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 3, Расход, л/с., Вверх"); + + migrationBuilder.AlterColumn( + name: "reaming3_flow_rate_down", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 3, Расход, л/с., Вниз", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 3, Расход, л/с., Вниз"); + + migrationBuilder.AlterColumn( + name: "reaming2_stop_point_off_bottom", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Остановка над забоем, м.", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Остановка над забоем, м."); + + migrationBuilder.AlterColumn( + name: "reaming2_rpm_up", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 2, Обороты, об/мин., Вверх", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 2, Обороты, об/мин., Вверх"); + + migrationBuilder.AlterColumn( + name: "reaming2_rpm_down", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 2, Обороты, об/мин., Вниз", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 2, Обороты, об/мин., Вниз"); + + migrationBuilder.AlterColumn( + name: "reaming2_rop_up", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 2, Скорость, м/ч., Вверх", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 2, Скорость, м/ч., Вверх"); + + migrationBuilder.AlterColumn( + name: "reaming2_rop_down", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 2, Скорость, м/ч., Вниз", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 2, Скорость, м/ч., Вниз"); + + migrationBuilder.AlterColumn( + name: "reaming2_repetitions_count", + table: "t_process_map_plan_reaming_slide", + type: "integer", + nullable: false, + defaultValue: 0, + comment: "Проработка 2, Количество повторений, шт.", + oldClrType: typeof(int), + oldType: "integer", + oldNullable: true, + oldComment: "Проработка 2, Количество повторений, шт."); + + migrationBuilder.AlterColumn( + name: "reaming2_interval", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 2, Интервал проработки, м.", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 2, Интервал проработки, м."); + + migrationBuilder.AlterColumn( + name: "reaming2_flow_rate_up", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 2, Расход, л/с., Вверх", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 2, Расход, л/с., Вверх"); + + migrationBuilder.AlterColumn( + name: "reaming2_flow_rate_down", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 2, Расход, л/с., Вниз", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 2, Расход, л/с., Вниз"); + + migrationBuilder.AlterColumn( + name: "reaming3_stop_point_off_bottom", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Остановка над забоем, м.", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Остановка над забоем, м."); + + migrationBuilder.AlterColumn( + name: "reaming3_rpm_up", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 3, Обороты, об/мин., Вверх", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 3, Обороты, об/мин., Вверх"); + + migrationBuilder.AlterColumn( + name: "reaming3_rpm_down", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 3, Обороты, об/мин., Вниз", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 3, Обороты, об/мин., Вниз"); + + migrationBuilder.AlterColumn( + name: "reaming3_rop_up", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 3, Скорость, м/ч., Вверх", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 3, Скорость, м/ч., Вверх"); + + migrationBuilder.AlterColumn( + name: "reaming3_rop_down", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 3, Скорость, м/ч., Вниз", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 3, Скорость, м/ч., Вниз"); + + migrationBuilder.AlterColumn( + name: "reaming3_repetitions_count", + table: "t_process_map_plan_operation_reaming_rotor", + type: "integer", + nullable: false, + defaultValue: 0, + comment: "Проработка 3, Количество повторений, шт.", + oldClrType: typeof(int), + oldType: "integer", + oldNullable: true, + oldComment: "Проработка 3, Количество повторений, шт."); + + migrationBuilder.AlterColumn( + name: "reaming3_interval", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 3, Интервал проработки, м.", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 3, Интервал проработки, м."); + + migrationBuilder.AlterColumn( + name: "reaming3_flow_rate_up", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 3, Расход, л/с., Вверх", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 3, Расход, л/с., Вверх"); + + migrationBuilder.AlterColumn( + name: "reaming3_flow_rate_down", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 3, Расход, л/с., Вниз", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 3, Расход, л/с., Вниз"); + + migrationBuilder.AlterColumn( + name: "reaming2_stop_point_off_bottom", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Остановка над забоем, м.", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Остановка над забоем, м."); + + migrationBuilder.AlterColumn( + name: "reaming2_rpm_up", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 2, Обороты, об/мин., Вверх", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 2, Обороты, об/мин., Вверх"); + + migrationBuilder.AlterColumn( + name: "reaming2_rpm_down", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 2, Обороты, об/мин., Вниз", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 2, Обороты, об/мин., Вниз"); + + migrationBuilder.AlterColumn( + name: "reaming2_rop_up", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 2, Скорость, м/ч., Вверх", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 2, Скорость, м/ч., Вверх"); + + migrationBuilder.AlterColumn( + name: "reaming2_rop_down", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 2, Скорость, м/ч., Вниз", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 2, Скорость, м/ч., Вниз"); + + migrationBuilder.AlterColumn( + name: "reaming2_repetitions_count", + table: "t_process_map_plan_operation_reaming_rotor", + type: "integer", + nullable: false, + defaultValue: 0, + comment: "Проработка 2, Количество повторений, шт.", + oldClrType: typeof(int), + oldType: "integer", + oldNullable: true, + oldComment: "Проработка 2, Количество повторений, шт."); + + migrationBuilder.AlterColumn( + name: "reaming2_interval", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 2, Интервал проработки, м.", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 2, Интервал проработки, м."); + + migrationBuilder.AlterColumn( + name: "reaming2_flow_rate_up", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 2, Расход, л/с., Вверх", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 2, Расход, л/с., Вверх"); + + migrationBuilder.AlterColumn( + name: "reaming2_flow_rate_down", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Проработка 2, Расход, л/с., Вниз", + oldClrType: typeof(double), + oldType: "double precision", + oldNullable: true, + oldComment: "Проработка 2, Расход, л/с., Вниз"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.AlterColumn( + name: "reaming3_stop_point_off_bottom", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: true, + comment: "Остановка над забоем, м.", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Остановка над забоем, м."); + + migrationBuilder.AlterColumn( + name: "reaming3_rpm_up", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: true, + comment: "Проработка 3, Обороты, об/мин., Вверх", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 3, Обороты, об/мин., Вверх"); + + migrationBuilder.AlterColumn( + name: "reaming3_rpm_down", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: true, + comment: "Проработка 3, Обороты, об/мин., Вниз", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 3, Обороты, об/мин., Вниз"); + + migrationBuilder.AlterColumn( + name: "reaming3_rop_up", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: true, + comment: "Проработка 3, Скорость, м/ч., Вверх", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 3, Скорость, м/ч., Вверх"); + + migrationBuilder.AlterColumn( + name: "reaming3_rop_down", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: true, + comment: "Проработка 3, Скорость, м/ч., Вниз", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 3, Скорость, м/ч., Вниз"); + + migrationBuilder.AlterColumn( + name: "reaming3_repetitions_count", + table: "t_process_map_plan_reaming_slide", + type: "integer", + nullable: true, + comment: "Проработка 3, Количество повторений, шт.", + oldClrType: typeof(int), + oldType: "integer", + oldComment: "Проработка 3, Количество повторений, шт."); + + migrationBuilder.AlterColumn( + name: "reaming3_interval", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: true, + comment: "Проработка 3, Интервал проработки, м.", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 3, Интервал проработки, м."); + + migrationBuilder.AlterColumn( + name: "reaming3_flow_rate_up", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: true, + comment: "Проработка 3, Расход, л/с., Вверх", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 3, Расход, л/с., Вверх"); + + migrationBuilder.AlterColumn( + name: "reaming3_flow_rate_down", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: true, + comment: "Проработка 3, Расход, л/с., Вниз", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 3, Расход, л/с., Вниз"); + + migrationBuilder.AlterColumn( + name: "reaming2_stop_point_off_bottom", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: true, + comment: "Остановка над забоем, м.", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Остановка над забоем, м."); + + migrationBuilder.AlterColumn( + name: "reaming2_rpm_up", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: true, + comment: "Проработка 2, Обороты, об/мин., Вверх", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 2, Обороты, об/мин., Вверх"); + + migrationBuilder.AlterColumn( + name: "reaming2_rpm_down", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: true, + comment: "Проработка 2, Обороты, об/мин., Вниз", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 2, Обороты, об/мин., Вниз"); + + migrationBuilder.AlterColumn( + name: "reaming2_rop_up", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: true, + comment: "Проработка 2, Скорость, м/ч., Вверх", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 2, Скорость, м/ч., Вверх"); + + migrationBuilder.AlterColumn( + name: "reaming2_rop_down", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: true, + comment: "Проработка 2, Скорость, м/ч., Вниз", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 2, Скорость, м/ч., Вниз"); + + migrationBuilder.AlterColumn( + name: "reaming2_repetitions_count", + table: "t_process_map_plan_reaming_slide", + type: "integer", + nullable: true, + comment: "Проработка 2, Количество повторений, шт.", + oldClrType: typeof(int), + oldType: "integer", + oldComment: "Проработка 2, Количество повторений, шт."); + + migrationBuilder.AlterColumn( + name: "reaming2_interval", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: true, + comment: "Проработка 2, Интервал проработки, м.", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 2, Интервал проработки, м."); + + migrationBuilder.AlterColumn( + name: "reaming2_flow_rate_up", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: true, + comment: "Проработка 2, Расход, л/с., Вверх", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 2, Расход, л/с., Вверх"); + + migrationBuilder.AlterColumn( + name: "reaming2_flow_rate_down", + table: "t_process_map_plan_reaming_slide", + type: "double precision", + nullable: true, + comment: "Проработка 2, Расход, л/с., Вниз", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 2, Расход, л/с., Вниз"); + + migrationBuilder.AlterColumn( + name: "reaming3_stop_point_off_bottom", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: true, + comment: "Остановка над забоем, м.", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Остановка над забоем, м."); + + migrationBuilder.AlterColumn( + name: "reaming3_rpm_up", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: true, + comment: "Проработка 3, Обороты, об/мин., Вверх", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 3, Обороты, об/мин., Вверх"); + + migrationBuilder.AlterColumn( + name: "reaming3_rpm_down", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: true, + comment: "Проработка 3, Обороты, об/мин., Вниз", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 3, Обороты, об/мин., Вниз"); + + migrationBuilder.AlterColumn( + name: "reaming3_rop_up", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: true, + comment: "Проработка 3, Скорость, м/ч., Вверх", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 3, Скорость, м/ч., Вверх"); + + migrationBuilder.AlterColumn( + name: "reaming3_rop_down", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: true, + comment: "Проработка 3, Скорость, м/ч., Вниз", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 3, Скорость, м/ч., Вниз"); + + migrationBuilder.AlterColumn( + name: "reaming3_repetitions_count", + table: "t_process_map_plan_operation_reaming_rotor", + type: "integer", + nullable: true, + comment: "Проработка 3, Количество повторений, шт.", + oldClrType: typeof(int), + oldType: "integer", + oldComment: "Проработка 3, Количество повторений, шт."); + + migrationBuilder.AlterColumn( + name: "reaming3_interval", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: true, + comment: "Проработка 3, Интервал проработки, м.", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 3, Интервал проработки, м."); + + migrationBuilder.AlterColumn( + name: "reaming3_flow_rate_up", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: true, + comment: "Проработка 3, Расход, л/с., Вверх", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 3, Расход, л/с., Вверх"); + + migrationBuilder.AlterColumn( + name: "reaming3_flow_rate_down", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: true, + comment: "Проработка 3, Расход, л/с., Вниз", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 3, Расход, л/с., Вниз"); + + migrationBuilder.AlterColumn( + name: "reaming2_stop_point_off_bottom", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: true, + comment: "Остановка над забоем, м.", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Остановка над забоем, м."); + + migrationBuilder.AlterColumn( + name: "reaming2_rpm_up", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: true, + comment: "Проработка 2, Обороты, об/мин., Вверх", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 2, Обороты, об/мин., Вверх"); + + migrationBuilder.AlterColumn( + name: "reaming2_rpm_down", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: true, + comment: "Проработка 2, Обороты, об/мин., Вниз", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 2, Обороты, об/мин., Вниз"); + + migrationBuilder.AlterColumn( + name: "reaming2_rop_up", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: true, + comment: "Проработка 2, Скорость, м/ч., Вверх", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 2, Скорость, м/ч., Вверх"); + + migrationBuilder.AlterColumn( + name: "reaming2_rop_down", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: true, + comment: "Проработка 2, Скорость, м/ч., Вниз", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 2, Скорость, м/ч., Вниз"); + + migrationBuilder.AlterColumn( + name: "reaming2_repetitions_count", + table: "t_process_map_plan_operation_reaming_rotor", + type: "integer", + nullable: true, + comment: "Проработка 2, Количество повторений, шт.", + oldClrType: typeof(int), + oldType: "integer", + oldComment: "Проработка 2, Количество повторений, шт."); + + migrationBuilder.AlterColumn( + name: "reaming2_interval", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: true, + comment: "Проработка 2, Интервал проработки, м.", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 2, Интервал проработки, м."); + + migrationBuilder.AlterColumn( + name: "reaming2_flow_rate_up", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: true, + comment: "Проработка 2, Расход, л/с., Вверх", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 2, Расход, л/с., Вверх"); + + migrationBuilder.AlterColumn( + name: "reaming2_flow_rate_down", + table: "t_process_map_plan_operation_reaming_rotor", + type: "double precision", + nullable: true, + comment: "Проработка 2, Расход, л/с., Вниз", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Проработка 2, Расход, л/с., Вниз"); + } + } +} diff --git a/AsbCloudDb/Migrations/20240724070443_Update_WellSectionType_Order.Designer.cs b/AsbCloudDb/Migrations/20240724070443_Update_WellSectionType_Order.Designer.cs new file mode 100644 index 00000000..1fc88d03 --- /dev/null +++ b/AsbCloudDb/Migrations/20240724070443_Update_WellSectionType_Order.Designer.cs @@ -0,0 +1,12236 @@ +// +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("20240724070443_Update_WellSectionType_Order")] + partial class Update_WellSectionType_Order + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .UseCollation("Russian_Russia.1251") + .HasAnnotation("ProductVersion", "8.0.4") + .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", t => + { + t.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") + .HasColumnName("is_contact"); + + b.Property("Order") + .HasColumnType("integer") + .HasColumnName("order"); + + b.HasKey("Id"); + + b.ToTable("t_company_type"); + + b.HasData( + new + { + Id = 1, + Caption = "Недропользователь", + IsContact = true, + Order = 3 + }, + new + { + Id = 2, + Caption = "Буровой подрядчик", + IsContact = true, + Order = 2 + }, + new + { + Id = 3, + Caption = "Сервис автоматизации бурения", + IsContact = true, + Order = 0 + }, + new + { + Id = 4, + Caption = "Сервис по ГТИ", + IsContact = true, + Order = 6 + }, + new + { + Id = 5, + Caption = "Растворный сервис", + IsContact = true, + Order = 4 + }, + new + { + Id = 6, + Caption = "Сервис по ННБ", + IsContact = true, + Order = 5 + }, + new + { + Id = 7, + Caption = "Служба супервайзинга", + IsContact = false, + Order = 1 + }, + new + { + Id = 9, + Caption = "Сервис по цементированию", + IsContact = true, + Order = 7 + }, + new + { + Id = 11, + Caption = "Дизельный сервис", + IsContact = false, + Order = 9 + }, + new + { + Id = 12, + Caption = "Сервис по обслуживанию верхних силовых приводов", + IsContact = true, + Order = 8 + }); + }); + + 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") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("email") + .HasComment("email"); + + b.Property("FullName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("full_name") + .HasComment("ФИО"); + + b.Property("IdCompanyType") + .HasMaxLength(255) + .HasColumnType("integer") + .HasColumnName("id_company_type") + .HasComment("вид деятельности"); + + b.Property("IdWell") + .HasMaxLength(255) + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("ключ скважины"); + + b.Property("Phone") + .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.HasIndex("IdWell"); + + b.ToTable("t_contact", t => + { + t.HasComment("Контакты"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DailyReports.DailyReport", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Date") + .HasColumnType("date") + .HasColumnName("date") + .HasComment("Дата формирования отчёта"); + + b.Property("DateLastUpdate") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_last_update") + .HasComment("Дата последнего обновления"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("ID скважины"); + + b.Property("SignBlock") + .HasColumnType("jsonb") + .HasColumnName("sign_block") + .HasComment("Подпись"); + + b.Property("SubsystemBlock") + .HasColumnType("jsonb") + .HasColumnName("subsystem_block") + .HasComment("Наработкой подсистем"); + + b.Property("TimeBalanceBlock") + .HasColumnType("jsonb") + .HasColumnName("time_balance_block") + .HasComment("Баланс времени"); + + b.HasKey("Id"); + + b.HasIndex("IdWell", "Date") + .IsUnique(); + + b.ToTable("t_daily_report", t => + { + t.HasComment("Ежедневные отчёты"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DataSaubStat", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AxialLoad") + .HasColumnType("double precision") + .HasColumnName("axial_load") + .HasComment("Фактическая нагрузка"); + + b.Property("AxialLoadLimitMax") + .HasColumnType("double precision") + .HasColumnName("axial_load_limit_max") + .HasComment("Максимально допустимая нагрузка"); + + b.Property("AxialLoadSp") + .HasColumnType("double precision") + .HasColumnName("axial_load_sp") + .HasComment("Ограничение факт. нагрузки"); + + b.Property("BlockSpeedSp") + .HasColumnType("double precision") + .HasColumnName("block_speed_sp") + .HasComment("Ограничение скорости блока"); + + 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("EnabledSubsystems") + .HasColumnType("integer") + .HasColumnName("enabled_subsystems") + .HasComment("Флаги подсистем"); + + b.Property("Flow") + .HasColumnType("double precision") + .HasColumnName("flow") + .HasComment("Фактический расход"); + + b.Property("HasOscillation") + .HasColumnType("boolean") + .HasColumnName("has_oscillation") + .HasComment("Наличие или отсутствие осцилляции"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category") + .HasComment("Название автоопределённой операции"); + + b.Property("IdFeedRegulator") + .HasColumnType("smallint") + .HasColumnName("id_feed_regulator") + .HasComment("Работа при достижении ограничения"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry") + .HasComment("Ключ телеметрии"); + + b.Property("Pressure") + .HasColumnType("double precision") + .HasColumnName("pressure") + .HasComment("Давление"); + + b.Property("PressureIdle") + .HasColumnType("double precision") + .HasColumnName("pressure_idle") + .HasComment("Давление холостого хода"); + + b.Property("PressureSp") + .HasColumnType("double precision") + .HasColumnName("pressure_sp") + .HasComment("Ограничение фактического давления"); + + b.Property("RotorSpeed") + .HasColumnType("double precision") + .HasColumnName("rotor_speed") + .HasComment("Фактическая скорость оборотов ВСП"); + + b.Property("RotorTorque") + .HasColumnType("double precision") + .HasColumnName("rotor_torque") + .HasComment("Фактический момент"); + + b.Property("RotorTorqueLimitMax") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_limit_max") + .HasComment("Максимально допустимый момент"); + + b.Property("RotorTorqueSp") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_sp") + .HasComment("Ограничение факт. момента"); + + b.Property("Speed") + .HasColumnType("double precision") + .HasColumnName("speed") + .HasComment("Скорость бурения"); + + b.HasKey("Id"); + + b.HasIndex("IdCategory"); + + b.HasIndex("IdTelemetry"); + + b.ToTable("t_data_saub_stat", t => + { + t.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", t => + { + t.HasComment("Месторождение"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DetectedOperation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + 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("EnabledSubsystems") + .HasColumnType("integer") + .HasColumnName("enabled_subsystems") + .HasComment("флаги включенных подсистем"); + + b.Property("ExtraData") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("extra_data") + .HasComment("доп. инфо по операции"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category") + .HasComment("Id категории операции"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .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", t => + { + t.HasComment("автоматически определенные операции по телеметрии"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillTest", b => + { + b.Property("Id") + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry") + .HasComment("Идентификатор телеметрии"); + + b.Property("DepthStart") + .HasColumnType("real") + .HasColumnName("depthStart") + .HasComment("Глубина начала"); + + b.Property("Params") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("t_drill_test_params") + .HasComment("Параметры записи drill test"); + + b.Property("TimeStampStart") + .HasColumnType("timestamp with time zone") + .HasColumnName("timestamp_start") + .HasComment("Время начала"); + + b.HasKey("Id", "IdTelemetry"); + + b.HasIndex("IdTelemetry"); + + b.ToTable("t_drill_test", t => + { + t.HasComment("Drill_test"); + }); + }); + + 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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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 = 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" + }, + new + { + Id = 528, + Description = "Разрешение на удаление контакта", + Name = "WellContact.delete" + }, + new + { + Id = 530, + Description = "Разрешение на редактирование плановой конструкции скважины", + Name = "WellSectionPlan.edit" + }, + new + { + Id = 531, + Description = "Разрешение на удаление плановой конструкции скважины", + Name = "WellSectionPlan.delete" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAntiCrashRotation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("TopDriveRpmMin") + .HasColumnType("double precision") + .HasColumnName("top_drive_rpm_min") + .HasComment("Минимальные обороты ВСП, об/мин"); + + b.Property("TopDriveStartMinFlowRate") + .HasColumnType("double precision") + .HasColumnName("top_drive_start_min_flow_rate") + .HasComment("Минимальный расход для запуска оборотов ВСП, л/сек"); + + b.Property("TopDriveTorqueMax") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque_max") + .HasComment("Максимально допустимый момент на ВСП при противоаварийном вращении, кН*м"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_anti_crash_rotation", t => + { + t.HasComment("Противоаварийное вращение"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAutoHoldTF", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("ZenithAngle") + .HasColumnType("double precision") + .HasColumnName("zenit_angle") + .HasComment("Зенитный угол, градусы"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_auto_hold_tf", t => + { + t.HasComment("Автоудержание TF"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDamper", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("StickSlip") + .HasColumnType("double precision") + .HasColumnName("stick_slip") + .HasComment("StickSlip"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_functions_damper", t => + { + t.HasComment("Демпфер"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDrillTest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("LengthStep") + .HasColumnType("double precision") + .HasColumnName("length_step") + .HasComment("Величина проходки шага, м."); + + b.Property("Note") + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("RpmMin") + .HasColumnType("double precision") + .HasColumnName("rpm_min") + .HasComment("Минимальные обороты на ВСП, об/мин."); + + b.Property("RpmStepsCount") + .HasColumnType("integer") + .HasColumnName("rpm_steps_count") + .HasComment("Количество шагов оборотов на ВСП, об/мин."); + + b.Property("WeightOnBitMin") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_min") + .HasComment("Нагрузка минимальная, т"); + + b.Property("WeightOnBitStepsCount") + .HasColumnType("integer") + .HasColumnName("weight_on_bit_steps_count") + .HasComment("Количество шагов по нагрузке"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_drilltest", t => + { + t.HasComment("DrillTest"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanOscillation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Mode") + .HasColumnType("integer") + .HasColumnName("mode") + .HasComment("Режим Авто/Руч"); + + b.Property("Note") + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("OptimalOscillationAngle") + .HasColumnType("double precision") + .HasColumnName("optimal_oscillation_angle") + .HasComment("Оптимальный угол осцилляции, градусы"); + + b.Property("RpmLeft") + .HasColumnType("double precision") + .HasColumnName("Rpm_left") + .HasComment("Скорость влево, об/мин"); + + b.Property("RpmRight") + .HasColumnType("double precision") + .HasColumnName("Rpm_right") + .HasComment("Скорость вправо, об/мин"); + + b.Property("TorqueMaxLeft") + .HasColumnType("double precision") + .HasColumnName("torque_max_left") + .HasComment("Ограничение момента влево, кН*м"); + + b.Property("TorqueMaxRight") + .HasColumnType("double precision") + .HasColumnName("torque_max_right") + .HasComment("Ограничение момента вправо, кН*м"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_oscillation", t => + { + t.HasComment("Осцилляция"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanShockTest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AxialVibrations") + .HasColumnType("double precision") + .HasColumnName("axial_vibrations") + .HasComment("Осевые вибрации"); + + b.Property("CombinedVibrations") + .HasColumnType("double precision") + .HasColumnName("combined_vibrations") + .HasComment("Комбинированные вибрации"); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("RpmMin") + .HasColumnType("double precision") + .HasColumnName("rpm_min") + .HasComment("Минимальные обороты на ВСП, об/мин."); + + b.Property("StickSlip") + .HasColumnType("double precision") + .HasColumnName("stick_slip") + .HasComment("stickSlip"); + + b.Property("WeightOnBitMin") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_min") + .HasComment("Нагрузка минимальная, т"); + + b.Property("Whirl") + .HasColumnType("double precision") + .HasColumnName("whirl") + .HasComment("Whirl"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_shock_test", t => + { + t.HasComment("ShockTest"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanStaticMeasurementOutput", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("SignalWaitingTime") + .HasColumnType("double precision") + .HasColumnName("signal_waiting_time") + .HasComment("Время ожидания выхода сигнала с ТМС, сек."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_static_measurement_output", t => + { + t.HasComment("Выход статического замера"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanLoadCapacity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressureMin") + .HasColumnType("double precision") + .HasColumnName("differential_pressure_min") + .HasComment("Перепад давления минимальный, атм"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("TimeLoadCapacityMin") + .HasColumnType("double precision") + .HasColumnName("time_load_capacity_min") + .HasComment("Время выработки минимальное, сек"); + + b.Property("WeightOnBitMin") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_min") + .HasComment("Нагрузка минимальная, т"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_load_capacity", t => + { + t.HasComment("РТК выработка нагрузки"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanOscillationAngles", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("Rpm") + .HasColumnType("double precision") + .HasColumnName("rpm") + .HasComment("Обороты на ВСП, об/мин., Уставка"); + + b.Property("RpmMax") + .HasColumnType("double precision") + .HasColumnName("rpm_max") + .HasComment("Обороты на ВСП, об/мин., Ограничение"); + + b.Property("TopDriveTorque") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque") + .HasComment("Момент на ВСП, кН*м., Уставка"); + + b.Property("TopDriveTorqueMax") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque_max") + .HasComment("Момент на ВСП, кН*м., Ограничение"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_operation_oscillation_angels", t => + { + t.HasComment("Определение углов осцилляции"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanPositioningOffTheBottom", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления уставка, атм."); + + b.Property("FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("flow_rate_down") + .HasComment("Расход вниз, л/с."); + + b.Property("FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("flow_rate_up") + .HasComment("Расход вверх, л/с."); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("RopDown") + .HasColumnType("double precision") + .HasColumnName("rop_down") + .HasComment("Скорость вниз, м/ч."); + + b.Property("RopUp") + .HasColumnType("double precision") + .HasColumnName("rop_up") + .HasComment("Скорость вверх, м/ч."); + + b.Property("RpmDown") + .HasColumnType("double precision") + .HasColumnName("rpm_down") + .HasComment("Обороты вниз, об/мин."); + + b.Property("RpmUp") + .HasColumnType("double precision") + .HasColumnName("rpm_up") + .HasComment("Обороты вверх, об/мин."); + + b.Property("SlackingOff") + .HasColumnType("double precision") + .HasColumnName("slacking_off") + .HasComment("Посадка, т."); + + b.Property("StopOffTheBottom") + .HasColumnType("double precision") + .HasColumnName("stop_off_the_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Tight") + .HasColumnType("double precision") + .HasColumnName("tight") + .HasComment("Затяжка, т."); + + b.Property("TorqueMax") + .HasColumnType("double precision") + .HasColumnName("torque_max") + .HasComment("Максимально допустимый момент, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_positioning_off_the_bottom", t => + { + t.HasComment("Позиционирование над забоем"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingRotor", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления уставка, атм."); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("Reaming1FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_flow_rate_down") + .HasComment("Проработка 1, Расход, л/с., Вниз"); + + b.Property("Reaming1FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_flow_rate_up") + .HasComment("Проработка 1, Расход, л/с., Вверх"); + + b.Property("Reaming1Interval") + .HasColumnType("double precision") + .HasColumnName("reaming1_interval") + .HasComment("Проработка 1, Интервал проработки, м."); + + b.Property("Reaming1RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("reaming1_repetitions_count") + .HasComment("Проработка 1. Количество повторений, шт."); + + b.Property("Reaming1RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_rop_down") + .HasComment("Проработка 1, Скорость, м/ч., Вниз"); + + b.Property("Reaming1RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_rop_up") + .HasComment("Проработка 1. Скорость вверх, м/ч."); + + b.Property("Reaming1RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_rpm_down") + .HasComment("Проработка 1, Обороты, об/мин., Вниз"); + + b.Property("Reaming1RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_rpm_up") + .HasComment("Проработка 1, Обороты, об/мин., Вверх"); + + b.Property("Reaming1StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming1_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Reaming2FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_flow_rate_down") + .HasComment("Проработка 2, Расход, л/с., Вниз"); + + b.Property("Reaming2FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_flow_rate_up") + .HasComment("Проработка 2, Расход, л/с., Вверх"); + + b.Property("Reaming2Interval") + .HasColumnType("double precision") + .HasColumnName("reaming2_interval") + .HasComment("Проработка 2, Интервал проработки, м."); + + b.Property("Reaming2RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("reaming2_repetitions_count") + .HasComment("Проработка 2, Количество повторений, шт."); + + b.Property("Reaming2RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_rop_down") + .HasComment("Проработка 2, Скорость, м/ч., Вниз"); + + b.Property("Reaming2RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_rop_up") + .HasComment("Проработка 2, Скорость, м/ч., Вверх"); + + b.Property("Reaming2RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_rpm_down") + .HasComment("Проработка 2, Обороты, об/мин., Вниз"); + + b.Property("Reaming2RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_rpm_up") + .HasComment("Проработка 2, Обороты, об/мин., Вверх"); + + b.Property("Reaming2StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming2_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Reaming3FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_flow_rate_down") + .HasComment("Проработка 3, Расход, л/с., Вниз"); + + b.Property("Reaming3FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_flow_rate_up") + .HasComment("Проработка 3, Расход, л/с., Вверх"); + + b.Property("Reaming3Interval") + .HasColumnType("double precision") + .HasColumnName("reaming3_interval") + .HasComment("Проработка 3, Интервал проработки, м."); + + b.Property("Reaming3RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("reaming3_repetitions_count") + .HasComment("Проработка 3, Количество повторений, шт."); + + b.Property("Reaming3RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_rop_down") + .HasComment("Проработка 3, Скорость, м/ч., Вниз"); + + b.Property("Reaming3RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_rop_up") + .HasComment("Проработка 3, Скорость, м/ч., Вверх"); + + b.Property("Reaming3RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_rpm_down") + .HasComment("Проработка 3, Обороты, об/мин., Вниз"); + + b.Property("Reaming3RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_rpm_up") + .HasComment("Проработка 3, Обороты, об/мин., Вверх"); + + b.Property("Reaming3StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming3_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("SlackingOff") + .HasColumnType("double precision") + .HasColumnName("slacking_off") + .HasComment("Посадка, т."); + + b.Property("Tight") + .HasColumnType("double precision") + .HasColumnName("tight") + .HasComment("Затяжка, т."); + + b.Property("TorqueMax") + .HasColumnType("double precision") + .HasColumnName("torque_max") + .HasComment("Максимально допустимый момент, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_operation_reaming_rotor", t => + { + t.HasComment("РТК проработка ротор"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingSlide", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления уставка, атм."); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("Reaming1FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_flow_rate_down") + .HasComment("Проработка 1, Расход, л/с., Вниз"); + + b.Property("Reaming1FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_flow_rate_up") + .HasComment("Проработка 1, Расход, л/с., Вверх"); + + b.Property("Reaming1Interval") + .HasColumnType("double precision") + .HasColumnName("reaming1_interval") + .HasComment("Проработка 1, Интервал проработки, м."); + + b.Property("Reaming1RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("reaming1_repetitions_count") + .HasComment("Проработка 1. Количество повторений, шт."); + + b.Property("Reaming1RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_rop_down") + .HasComment("Проработка 1. Скорость вниз, м/ч."); + + b.Property("Reaming1RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_rop_up") + .HasComment("Проработка 1. Скорость вверх, м/ч."); + + b.Property("Reaming1RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_rpm_down") + .HasComment("Проработка 1, Обороты, об/мин., Вниз"); + + b.Property("Reaming1RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_rpm_up") + .HasComment("Проработка 1, Обороты, об/мин., Вверх"); + + b.Property("Reaming1StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming1_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Reaming2FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_flow_rate_down") + .HasComment("Проработка 2, Расход, л/с., Вниз"); + + b.Property("Reaming2FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_flow_rate_up") + .HasComment("Проработка 2, Расход, л/с., Вверх"); + + b.Property("Reaming2Interval") + .HasColumnType("double precision") + .HasColumnName("reaming2_interval") + .HasComment("Проработка 2, Интервал проработки, м."); + + b.Property("Reaming2RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("reaming2_repetitions_count") + .HasComment("Проработка 2, Количество повторений, шт."); + + b.Property("Reaming2RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_rop_down") + .HasComment("Проработка 2, Скорость, м/ч., Вниз"); + + b.Property("Reaming2RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_rop_up") + .HasComment("Проработка 2, Скорость, м/ч., Вверх"); + + b.Property("Reaming2RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_rpm_down") + .HasComment("Проработка 2, Обороты, об/мин., Вниз"); + + b.Property("Reaming2RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_rpm_up") + .HasComment("Проработка 2, Обороты, об/мин., Вверх"); + + b.Property("Reaming2StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming2_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Reaming3FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_flow_rate_down") + .HasComment("Проработка 3, Расход, л/с., Вниз"); + + b.Property("Reaming3FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_flow_rate_up") + .HasComment("Проработка 3, Расход, л/с., Вверх"); + + b.Property("Reaming3Interval") + .HasColumnType("double precision") + .HasColumnName("reaming3_interval") + .HasComment("Проработка 3, Интервал проработки, м."); + + b.Property("Reaming3RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("reaming3_repetitions_count") + .HasComment("Проработка 3, Количество повторений, шт."); + + b.Property("Reaming3RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_rop_down") + .HasComment("Проработка 3, Скорость, м/ч., Вниз"); + + b.Property("Reaming3RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_rop_up") + .HasComment("Проработка 3, Скорость, м/ч., Вверх"); + + b.Property("Reaming3RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_rpm_down") + .HasComment("Проработка 3, Обороты, об/мин., Вниз"); + + b.Property("Reaming3RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_rpm_up") + .HasComment("Проработка 3, Обороты, об/мин., Вверх"); + + b.Property("Reaming3StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming3_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("SlackingOff") + .HasColumnType("double precision") + .HasColumnName("slacking_off") + .HasComment("Посадка, т."); + + b.Property("Tight") + .HasColumnType("double precision") + .HasColumnName("tight") + .HasComment("Затяжка, т."); + + b.Property("TorqueMax") + .HasColumnType("double precision") + .HasColumnName("torque_max") + .HasComment("Максимально допустимый момент, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_reaming_slide", t => + { + t.HasComment("РТК проработка слайд"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRecordingStaticMeasurement", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("MeasurementRecordingTime") + .HasColumnType("double precision") + .HasColumnName("measurement_recording_time") + .HasComment("Время записи замера, сек"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_recording_static_measurement", t => + { + t.HasComment("Запись статического замера"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRotor", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления, атм. Уставка"); + + b.Property("DifferentialPressureMax") + .HasColumnType("double precision") + .HasColumnName("differential_pressure_max") + .HasComment("Перепад давления, атм. Ограничение"); + + b.Property("FlowRate") + .HasColumnType("double precision") + .HasColumnName("flow_rate") + .HasComment("Расход л/с. Уставка"); + + b.Property("FlowRateMax") + .HasColumnType("double precision") + .HasColumnName("flow_rate_max") + .HasComment("Расход л/с. Ограничение"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм"); + + b.Property("RopMax") + .HasColumnType("double precision") + .HasColumnName("rop_max") + .HasComment("Максимально допустимая скорость, м/ч"); + + b.Property("Rpm") + .HasColumnType("double precision") + .HasColumnName("rpm") + .HasComment("Обороты на ВСП, об/мин. Уставка"); + + b.Property("RpmMax") + .HasColumnType("double precision") + .HasColumnName("rpm_max") + .HasComment("Обороты на ВСП, об/мин. Ограничение"); + + b.Property("TopDriveTorque") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque") + .HasComment("Момент на ВСП, кН*м. Уставка"); + + b.Property("TopDriveTorqueMax") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque_max") + .HasComment("Момент на ВСП, кН*м. Ограничение"); + + b.Property("WeightOnBit") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit") + .HasComment("Нагрузка, т. Уставка"); + + b.Property("WeightOnBitMax") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_max") + .HasComment("Нагрузка, т. Ограничение"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_rotor", t => + { + t.HasComment("РТК план бурение ротор"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSlide", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Buckling") + .HasColumnType("double precision") + .HasColumnName("buckling") + .HasComment("Складывание инструмента, м."); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления уставка, атм."); + + b.Property("DifferentialPressureMax") + .HasColumnType("double precision") + .HasColumnName("differential_pressure_max") + .HasComment("Перепад давления ограничение, атм."); + + b.Property("FlowRate") + .HasColumnType("double precision") + .HasColumnName("flow_rate") + .HasComment("Расход уставка, л/с."); + + b.Property("FlowRateMax") + .HasColumnType("double precision") + .HasColumnName("flow_rate_max") + .HasComment("Расход ограничение, л/с."); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("RopMax") + .HasColumnType("double precision") + .HasColumnName("rop_max") + .HasComment("Максимально допустимая скорость, м/ч."); + + b.Property("Spring") + .HasColumnType("double precision") + .HasColumnName("spring") + .HasComment("Расчётная пружина, градус"); + + b.Property("WeightOnBit") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit") + .HasComment("Нагрузка уставка, т."); + + b.Property("WeightOnBitMax") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_max") + .HasComment("Нагрузка ограничение, т."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_slide", t => + { + t.HasComment("РТК план бурение слайд"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingOffThePump", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("Duration") + .HasColumnType("double precision") + .HasColumnName("duration") + .HasComment("Продолжительность, сек."); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("ResidualPressureLimit") + .HasColumnType("double precision") + .HasColumnName("residual_pressure_limit") + .HasComment("Лимит остаточного давления, атм."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_operation_switching_off_the_pump", t => + { + t.HasComment("Выключение насоса"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingToTheMode", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("FlowRate") + .HasColumnType("double precision") + .HasColumnName("flow_rate") + .HasComment("Расход, л/с"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_limit") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("RampTime") + .HasColumnType("double precision") + .HasColumnName("ramp_time") + .HasComment("Время выхода буровых насосов на плановый расход, сек."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_switching_to_the_mode", t => + { + t.HasComment("Выход на плановый расход"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanTFOrientation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления, атм."); + + b.Property("FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("flow_rate_down") + .HasComment("Расход вниз, л/с."); + + b.Property("FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("flow_rate_up") + .HasComment("Расход вверх, л/с."); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Interval") + .HasColumnType("double precision") + .HasColumnName("interval") + .HasComment("Интервал расхаживания, м."); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимальное давление, атм."); + + b.Property("RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("repetitions_count") + .HasComment("Количество расхаживаний, шт."); + + b.Property("RopDown") + .HasColumnType("double precision") + .HasColumnName("rop_down") + .HasComment("Скорость вниз, м/ч."); + + b.Property("RopUp") + .HasColumnType("double precision") + .HasColumnName("rop_up") + .HasComment("Скорость вверх, м/ч."); + + b.Property("SlackingOff") + .HasColumnType("double precision") + .HasColumnName("slacking_off") + .HasComment("Посадка, т."); + + b.Property("Spring") + .HasColumnType("double precision") + .HasColumnName("spring") + .HasComment("Пружина, град."); + + b.Property("StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("TFSetpoint") + .HasColumnType("double precision") + .HasColumnName("tf_setpoint") + .HasComment("Задание TF, град."); + + b.Property("Tight") + .HasColumnType("double precision") + .HasColumnName("tight") + .HasComment("Затяжка, т."); + + b.Property("TorqueMax") + .HasColumnType("double precision") + .HasColumnName("torque_max") + .HasComment("Максимально допустимый момент, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_tf_orientation", t => + { + t.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", t => + { + t.HasComment("отношение скважин и компаний"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationContactWell", b => + { + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.HasKey("IdWell", "IdUser"); + + b.HasIndex("IdUser"); + + b.ToTable("t_relation_contact_well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserDrillingProgramPart", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("IdDrillingProgramPart") + .HasColumnType("integer") + .HasColumnName("id_drilling_program_part"); + + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_role") + .HasComment("1 - publisher, 2 - approver"); + + b.HasKey("IdUser", "IdDrillingProgramPart") + .HasName("t_relation_user_drilling_program_part_pk"); + + b.HasIndex("IdDrillingProgramPart"); + + b.ToTable("t_relation_user_drilling_program_part", t => + { + t.HasComment("Отношение пользователей и частей ПБ"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRolePermission", b => + { + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.Property("IdPermission") + .HasColumnType("integer") + .HasColumnName("id_permission"); + + b.HasKey("IdUserRole", "IdPermission"); + + b.HasIndex("IdPermission"); + + b.ToTable("t_relation_user_role_permission", t => + { + t.HasComment("Отношение ролей пользователей и разрешений доступа"); + }); + + b.HasData( + new + { + IdUserRole = 1100, + IdPermission = 102 + }, + new + { + IdUserRole = 1100, + IdPermission = 111 + }, + new + { + IdUserRole = 1101, + IdPermission = 101 + }, + new + { + IdUserRole = 1101, + IdPermission = 100 + }, + new + { + IdUserRole = 1102, + IdPermission = 105 + }, + new + { + IdUserRole = 1102, + IdPermission = 108 + }, + new + { + IdUserRole = 1103, + IdPermission = 104 + }, + new + { + IdUserRole = 1103, + IdPermission = 103 + }, + new + { + IdUserRole = 1104, + IdPermission = 108 + }, + new + { + IdUserRole = 1105, + IdPermission = 107 + }, + new + { + IdUserRole = 1105, + IdPermission = 106 + }, + new + { + IdUserRole = 1106, + IdPermission = 111 + }, + new + { + IdUserRole = 1107, + IdPermission = 110 + }, + new + { + IdUserRole = 1107, + IdPermission = 109 + }, + new + { + IdUserRole = 1108, + IdPermission = 114 + }, + new + { + IdUserRole = 1109, + IdPermission = 113 + }, + new + { + IdUserRole = 1109, + IdPermission = 112 + }, + new + { + IdUserRole = 1110, + IdPermission = 123 + }, + new + { + IdUserRole = 1110, + IdPermission = 114 + }, + new + { + IdUserRole = 1111, + IdPermission = 122 + }, + new + { + IdUserRole = 1111, + IdPermission = 121 + }, + new + { + IdUserRole = 1112, + IdPermission = 117 + }, + new + { + IdUserRole = 1113, + IdPermission = 105 + }, + new + { + IdUserRole = 1113, + IdPermission = 123 + }, + new + { + IdUserRole = 1113, + IdPermission = 120 + }, + new + { + IdUserRole = 1114, + IdPermission = 119 + }, + new + { + IdUserRole = 1114, + IdPermission = 118 + }, + new + { + IdUserRole = 1114, + IdPermission = 200 + }, + new + { + IdUserRole = 1115, + IdPermission = 223 + }, + new + { + IdUserRole = 1116, + IdPermission = 105 + }, + new + { + IdUserRole = 1116, + IdPermission = 102 + }, + new + { + IdUserRole = 1116, + IdPermission = 117 + }, + new + { + IdUserRole = 1116, + IdPermission = 126 + }, + new + { + IdUserRole = 1117, + IdPermission = 125 + }, + new + { + IdUserRole = 1117, + IdPermission = 124 + }, + new + { + IdUserRole = 1200, + IdPermission = 203 + }, + new + { + IdUserRole = 1200, + IdPermission = 230 + }, + new + { + IdUserRole = 1201, + IdPermission = 202 + }, + new + { + IdUserRole = 1201, + IdPermission = 203 + }, + new + { + IdUserRole = 1201, + IdPermission = 220 + }, + new + { + IdUserRole = 1202, + IdPermission = 203 + }, + new + { + IdUserRole = 1202, + IdPermission = 220 + }, + new + { + IdUserRole = 1202, + IdPermission = 236 + }, + new + { + IdUserRole = 1202, + IdPermission = 212 + }, + new + { + IdUserRole = 1203, + IdPermission = 235 + }, + new + { + IdUserRole = 1204, + IdPermission = 202 + }, + new + { + IdUserRole = 1204, + IdPermission = 203 + }, + new + { + IdUserRole = 1205, + IdPermission = 215 + }, + new + { + IdUserRole = 1206, + IdPermission = 203 + }, + new + { + IdUserRole = 1206, + IdPermission = 206 + }, + new + { + IdUserRole = 1207, + IdPermission = 205 + }, + new + { + IdUserRole = 1208, + IdPermission = 218 + }, + new + { + IdUserRole = 1209, + IdPermission = 217 + }, + new + { + IdUserRole = 1210, + IdPermission = 203 + }, + new + { + IdUserRole = 1210, + IdPermission = 230 + }, + new + { + IdUserRole = 1210, + IdPermission = 219 + }, + new + { + IdUserRole = 1211, + IdPermission = 203 + }, + new + { + IdUserRole = 1211, + IdPermission = 220 + }, + new + { + IdUserRole = 1211, + IdPermission = 239 + }, + new + { + IdUserRole = 1212, + IdPermission = 238 + }, + new + { + IdUserRole = 1212, + IdPermission = 237 + }, + new + { + IdUserRole = 1213, + IdPermission = 203 + }, + new + { + IdUserRole = 1213, + IdPermission = 239 + }, + new + { + IdUserRole = 1213, + IdPermission = 212 + }, + new + { + IdUserRole = 1214, + IdPermission = 211 + }, + new + { + IdUserRole = 1214, + IdPermission = 210 + }, + new + { + IdUserRole = 1215, + IdPermission = 203 + }, + new + { + IdUserRole = 1215, + IdPermission = 222 + }, + new + { + IdUserRole = 1216, + IdPermission = 221 + }, + new + { + IdUserRole = 1217, + IdPermission = 226 + }, + new + { + IdUserRole = 1218, + IdPermission = 225 + }, + new + { + IdUserRole = 1218, + IdPermission = 224 + }, + new + { + IdUserRole = 1219, + IdPermission = 203 + }, + new + { + IdUserRole = 1219, + IdPermission = 206 + }, + new + { + IdUserRole = 1219, + IdPermission = 230 + }, + new + { + IdUserRole = 1219, + IdPermission = 232 + }, + new + { + IdUserRole = 1220, + IdPermission = 203 + }, + new + { + IdUserRole = 1220, + IdPermission = 228 + }, + new + { + IdUserRole = 1221, + IdPermission = 202 + }, + new + { + IdUserRole = 1221, + IdPermission = 203 + }, + new + { + IdUserRole = 1221, + IdPermission = 220 + }, + new + { + IdUserRole = 1221, + IdPermission = 234 + }, + new + { + IdUserRole = 1500, + IdPermission = 507 + }, + new + { + IdUserRole = 1500, + IdPermission = 510 + }, + new + { + IdUserRole = 1501, + IdPermission = 214 + }, + new + { + IdUserRole = 1501, + IdPermission = 213 + }, + new + { + IdUserRole = 1502, + IdPermission = 207 + }, + new + { + IdUserRole = 1502, + IdPermission = 208 + }, + new + { + IdUserRole = 2000, + IdPermission = 205 + }, + new + { + IdUserRole = 2000, + IdPermission = 204 + }, + new + { + IdUserRole = 2000, + IdPermission = 245 + }, + new + { + IdUserRole = 2001, + IdPermission = 244 + }, + new + { + IdUserRole = 2001, + IdPermission = 245 + }, + new + { + IdUserRole = 2002, + IdPermission = 244 + }, + new + { + IdUserRole = 2002, + IdPermission = 246 + }, + new + { + IdUserRole = 2002, + IdPermission = 237 + }, + new + { + IdUserRole = 2002, + IdPermission = 238 + }, + new + { + IdUserRole = 2003, + IdPermission = 240 + }, + new + { + IdUserRole = 2003, + IdPermission = 217 + }, + new + { + IdUserRole = 2003, + IdPermission = 216 + }, + new + { + IdUserRole = 2004, + IdPermission = 242 + }, + new + { + IdUserRole = 2004, + IdPermission = 217 + }, + new + { + IdUserRole = 2004, + IdPermission = 216 + }, + new + { + IdUserRole = 2004, + IdPermission = 205 + }, + new + { + IdUserRole = 2004, + IdPermission = 204 + }, + new + { + IdUserRole = 2005, + IdPermission = 247 + }, + new + { + IdUserRole = 2005, + IdPermission = 205 + }, + new + { + IdUserRole = 2005, + IdPermission = 204 + }, + new + { + IdUserRole = 2006, + IdPermission = 243 + }, + new + { + IdUserRole = 2006, + IdPermission = 205 + }, + new + { + IdUserRole = 2006, + IdPermission = 204 + }, + new + { + IdUserRole = 2007, + IdPermission = 241 + }, + new + { + IdUserRole = 2007, + IdPermission = 205 + }, + new + { + IdUserRole = 2007, + IdPermission = 204 + }, + new + { + IdUserRole = 1, + IdPermission = 100 + }, + new + { + IdUserRole = 1, + IdPermission = 101 + }, + new + { + IdUserRole = 1, + IdPermission = 102 + }, + new + { + IdUserRole = 1, + IdPermission = 103 + }, + new + { + IdUserRole = 1, + IdPermission = 104 + }, + new + { + IdUserRole = 1, + IdPermission = 105 + }, + new + { + IdUserRole = 1, + IdPermission = 106 + }, + new + { + IdUserRole = 1, + IdPermission = 107 + }, + new + { + IdUserRole = 1, + IdPermission = 108 + }, + new + { + IdUserRole = 1, + IdPermission = 109 + }, + new + { + IdUserRole = 1, + IdPermission = 110 + }, + new + { + IdUserRole = 1, + IdPermission = 111 + }, + new + { + IdUserRole = 1, + IdPermission = 112 + }, + new + { + IdUserRole = 1, + IdPermission = 113 + }, + new + { + IdUserRole = 1, + IdPermission = 114 + }, + new + { + IdUserRole = 1, + IdPermission = 115 + }, + new + { + IdUserRole = 1, + IdPermission = 116 + }, + new + { + IdUserRole = 1, + IdPermission = 117 + }, + new + { + IdUserRole = 1, + IdPermission = 118 + }, + new + { + IdUserRole = 1, + IdPermission = 119 + }, + new + { + IdUserRole = 1, + IdPermission = 120 + }, + new + { + IdUserRole = 1, + IdPermission = 121 + }, + new + { + IdUserRole = 1, + IdPermission = 122 + }, + new + { + IdUserRole = 1, + IdPermission = 123 + }, + new + { + IdUserRole = 1, + IdPermission = 124 + }, + new + { + IdUserRole = 1, + IdPermission = 125 + }, + new + { + IdUserRole = 1, + IdPermission = 126 + }, + new + { + IdUserRole = 1, + IdPermission = 127 + }, + new + { + IdUserRole = 1, + IdPermission = 128 + }, + new + { + IdUserRole = 1, + IdPermission = 129 + }, + new + { + IdUserRole = 1, + IdPermission = 200 + }, + new + { + IdUserRole = 1, + IdPermission = 201 + }, + new + { + IdUserRole = 1, + IdPermission = 202 + }, + new + { + IdUserRole = 1, + IdPermission = 203 + }, + new + { + IdUserRole = 1, + IdPermission = 204 + }, + new + { + IdUserRole = 1, + IdPermission = 205 + }, + new + { + IdUserRole = 1, + IdPermission = 206 + }, + new + { + IdUserRole = 1, + IdPermission = 207 + }, + new + { + IdUserRole = 1, + IdPermission = 208 + }, + new + { + IdUserRole = 1, + IdPermission = 209 + }, + new + { + IdUserRole = 1, + IdPermission = 210 + }, + new + { + IdUserRole = 1, + IdPermission = 211 + }, + new + { + IdUserRole = 1, + IdPermission = 212 + }, + new + { + IdUserRole = 1, + IdPermission = 213 + }, + new + { + IdUserRole = 1, + IdPermission = 214 + }, + new + { + IdUserRole = 1, + IdPermission = 215 + }, + new + { + IdUserRole = 1, + IdPermission = 216 + }, + new + { + IdUserRole = 1, + IdPermission = 217 + }, + new + { + IdUserRole = 1, + IdPermission = 218 + }, + new + { + IdUserRole = 1, + IdPermission = 219 + }, + new + { + IdUserRole = 1, + IdPermission = 220 + }, + new + { + IdUserRole = 1, + IdPermission = 221 + }, + new + { + IdUserRole = 1, + IdPermission = 222 + }, + new + { + IdUserRole = 1, + IdPermission = 223 + }, + new + { + IdUserRole = 1, + IdPermission = 224 + }, + new + { + IdUserRole = 1, + IdPermission = 225 + }, + new + { + IdUserRole = 1, + IdPermission = 226 + }, + new + { + IdUserRole = 1, + IdPermission = 227 + }, + new + { + IdUserRole = 1, + IdPermission = 228 + }, + new + { + IdUserRole = 1, + IdPermission = 229 + }, + new + { + IdUserRole = 1, + IdPermission = 230 + }, + new + { + IdUserRole = 1, + IdPermission = 231 + }, + new + { + IdUserRole = 1, + IdPermission = 232 + }, + new + { + IdUserRole = 1, + IdPermission = 233 + }, + new + { + IdUserRole = 1, + IdPermission = 234 + }, + new + { + IdUserRole = 1, + IdPermission = 235 + }, + new + { + IdUserRole = 1, + IdPermission = 236 + }, + new + { + IdUserRole = 1, + IdPermission = 237 + }, + new + { + IdUserRole = 1, + IdPermission = 238 + }, + new + { + IdUserRole = 1, + IdPermission = 239 + }, + new + { + IdUserRole = 1, + IdPermission = 240 + }, + new + { + IdUserRole = 1, + IdPermission = 241 + }, + new + { + IdUserRole = 1, + IdPermission = 242 + }, + new + { + IdUserRole = 1, + IdPermission = 243 + }, + new + { + IdUserRole = 1, + IdPermission = 244 + }, + new + { + IdUserRole = 1, + IdPermission = 245 + }, + new + { + IdUserRole = 1, + IdPermission = 246 + }, + new + { + IdUserRole = 1, + IdPermission = 247 + }, + new + { + IdUserRole = 1, + IdPermission = 248 + }, + new + { + IdUserRole = 1, + IdPermission = 249 + }, + new + { + IdUserRole = 1, + IdPermission = 250 + }, + new + { + IdUserRole = 1, + IdPermission = 251 + }, + new + { + IdUserRole = 1, + IdPermission = 252 + }, + new + { + IdUserRole = 1, + IdPermission = 253 + }, + new + { + IdUserRole = 1, + IdPermission = 254 + }, + new + { + IdUserRole = 1, + IdPermission = 255 + }, + new + { + IdUserRole = 1, + IdPermission = 256 + }, + new + { + IdUserRole = 1, + IdPermission = 257 + }, + new + { + IdUserRole = 1, + IdPermission = 258 + }, + new + { + IdUserRole = 1, + IdPermission = 259 + }, + new + { + IdUserRole = 1, + IdPermission = 260 + }, + new + { + IdUserRole = 1, + IdPermission = 261 + }, + new + { + IdUserRole = 1, + IdPermission = 262 + }, + new + { + IdUserRole = 1, + IdPermission = 263 + }, + new + { + IdUserRole = 1, + IdPermission = 264 + }, + new + { + IdUserRole = 1, + IdPermission = 265 + }, + new + { + IdUserRole = 1, + IdPermission = 266 + }, + new + { + IdUserRole = 1, + IdPermission = 267 + }, + new + { + IdUserRole = 1, + IdPermission = 268 + }, + new + { + IdUserRole = 1, + IdPermission = 269 + }, + new + { + IdUserRole = 1, + IdPermission = 380 + }, + new + { + IdUserRole = 1, + IdPermission = 381 + }, + new + { + IdUserRole = 1, + IdPermission = 382 + }, + new + { + IdUserRole = 1, + IdPermission = 383 + }, + new + { + IdUserRole = 1, + IdPermission = 384 + }, + new + { + IdUserRole = 1, + IdPermission = 385 + }, + new + { + IdUserRole = 1, + IdPermission = 386 + }, + new + { + IdUserRole = 1, + IdPermission = 387 + }, + new + { + IdUserRole = 1, + IdPermission = 388 + }, + new + { + IdUserRole = 1, + IdPermission = 389 + }, + new + { + IdUserRole = 1, + IdPermission = 390 + }, + new + { + IdUserRole = 1, + IdPermission = 391 + }, + new + { + IdUserRole = 1, + IdPermission = 400 + }, + new + { + IdUserRole = 1, + IdPermission = 401 + }, + new + { + IdUserRole = 1, + IdPermission = 407 + }, + new + { + IdUserRole = 1, + IdPermission = 408 + }, + new + { + IdUserRole = 1, + IdPermission = 450 + }, + new + { + IdUserRole = 1, + IdPermission = 460 + }, + new + { + IdUserRole = 1, + IdPermission = 461 + }, + new + { + IdUserRole = 1, + IdPermission = 500 + }, + new + { + IdUserRole = 1, + IdPermission = 501 + }, + new + { + IdUserRole = 1, + IdPermission = 502 + }, + new + { + IdUserRole = 1, + IdPermission = 503 + }, + new + { + IdUserRole = 1, + IdPermission = 504 + }, + new + { + IdUserRole = 1, + IdPermission = 505 + }, + new + { + IdUserRole = 1, + IdPermission = 506 + }, + new + { + IdUserRole = 1, + IdPermission = 507 + }, + new + { + IdUserRole = 1, + IdPermission = 510 + }, + new + { + IdUserRole = 1, + IdPermission = 511 + }, + new + { + IdUserRole = 1, + IdPermission = 512 + }, + new + { + IdUserRole = 1, + IdPermission = 516 + }, + new + { + IdUserRole = 1, + IdPermission = 517 + }, + new + { + IdUserRole = 1, + IdPermission = 518 + }, + new + { + IdUserRole = 1, + IdPermission = 519 + }, + new + { + IdUserRole = 1, + IdPermission = 520 + }, + new + { + IdUserRole = 1, + IdPermission = 521 + }, + new + { + IdUserRole = 1, + IdPermission = 522 + }, + new + { + IdUserRole = 1, + IdPermission = 523 + }, + new + { + IdUserRole = 1, + IdPermission = 524 + }, + new + { + IdUserRole = 1, + IdPermission = 525 + }, + new + { + IdUserRole = 1, + IdPermission = 526 + }, + new + { + IdUserRole = 1, + IdPermission = 527 + }, + new + { + IdUserRole = 1, + IdPermission = 528 + }, + new + { + IdUserRole = 1, + IdPermission = 530 + }, + new + { + IdUserRole = 1, + IdPermission = 531 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRoleUserRole", b => + { + b.Property("Id") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.Property("IdInclude") + .HasColumnType("integer") + .HasColumnName("id_include_user_role"); + + b.HasKey("Id", "IdInclude") + .HasName("t_relation_user_role_user_role_pk"); + + b.HasIndex("IdInclude"); + + b.ToTable("t_relation_user_role_user_role", t => + { + t.HasComment("Отношение ролей к ролям"); + }); + + b.HasData( + new + { + Id = 1101, + IdInclude = 1100 + }, + new + { + Id = 1103, + IdInclude = 1102 + }, + new + { + Id = 1105, + IdInclude = 1104 + }, + new + { + Id = 1107, + IdInclude = 1106 + }, + new + { + Id = 1109, + IdInclude = 1108 + }, + new + { + Id = 1111, + IdInclude = 1110 + }, + new + { + Id = 1114, + IdInclude = 1113 + }, + new + { + Id = 1117, + IdInclude = 1116 + }, + new + { + Id = 1203, + IdInclude = 1202 + }, + new + { + Id = 1207, + IdInclude = 1206 + }, + new + { + Id = 1209, + IdInclude = 1208 + }, + new + { + Id = 1212, + IdInclude = 1211 + }, + new + { + Id = 1214, + IdInclude = 1213 + }, + new + { + Id = 1216, + IdInclude = 1215 + }, + new + { + Id = 1218, + IdInclude = 1217 + }, + new + { + Id = 2000, + IdInclude = 1200 + }, + new + { + Id = 2000, + IdInclude = 1201 + }, + new + { + Id = 2000, + IdInclude = 1202 + }, + new + { + Id = 2000, + IdInclude = 1204 + }, + new + { + Id = 2000, + IdInclude = 1205 + }, + new + { + Id = 2000, + IdInclude = 1206 + }, + new + { + Id = 2000, + IdInclude = 1208 + }, + new + { + Id = 2000, + IdInclude = 1210 + }, + new + { + Id = 2000, + IdInclude = 1211 + }, + new + { + Id = 2000, + IdInclude = 1213 + }, + new + { + Id = 2000, + IdInclude = 1215 + }, + new + { + Id = 2000, + IdInclude = 1217 + }, + new + { + Id = 2000, + IdInclude = 1219 + }, + new + { + Id = 2000, + IdInclude = 1220 + }, + new + { + Id = 2000, + IdInclude = 1221 + }, + new + { + Id = 2000, + IdInclude = 1500 + }, + new + { + Id = 2000, + IdInclude = 1501 + }, + new + { + Id = 2000, + IdInclude = 1502 + }, + new + { + Id = 2001, + IdInclude = 1500 + }, + new + { + Id = 2001, + IdInclude = 1501 + }, + new + { + Id = 2001, + IdInclude = 1502 + }, + new + { + Id = 2002, + IdInclude = 1500 + }, + new + { + Id = 2002, + IdInclude = 1501 + }, + new + { + Id = 2002, + IdInclude = 1502 + }, + new + { + Id = 2003, + IdInclude = 1500 + }, + new + { + Id = 2003, + IdInclude = 1501 + }, + new + { + Id = 2003, + IdInclude = 1502 + }, + new + { + Id = 2004, + IdInclude = 1500 + }, + new + { + Id = 2004, + IdInclude = 1501 + }, + new + { + Id = 2004, + IdInclude = 1502 + }, + new + { + Id = 2005, + IdInclude = 1500 + }, + new + { + Id = 2005, + IdInclude = 1501 + }, + new + { + Id = 2005, + IdInclude = 1502 + }, + new + { + Id = 2006, + IdInclude = 1500 + }, + new + { + Id = 2006, + IdInclude = 1501 + }, + new + { + Id = 2006, + IdInclude = 1502 + }, + new + { + Id = 2007, + IdInclude = 1500 + }, + new + { + Id = 2007, + IdInclude = 1501 + }, + new + { + Id = 2007, + IdInclude = 1502 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserUserRole", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.HasKey("IdUser", "IdUserRole"); + + b.HasIndex("IdUserRole"); + + b.ToTable("t_relation_user_user_role", t => + { + t.HasComment("Отношение пользователей и ролей"); + }); + + b.HasData( + new + { + IdUser = 1, + IdUserRole = 1 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ReportProperty", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Begin") + .HasColumnType("timestamp with time zone") + .HasColumnName("begin"); + + b.Property("End") + .HasColumnType("timestamp with time zone") + .HasColumnName("end") + .HasComment("timestamp with time zone"); + + b.Property("Format") + .HasColumnType("integer") + .HasColumnName("format") + .HasComment("Формат отчета"); + + b.Property("IdFile") + .HasColumnType("integer") + .HasColumnName("id_file") + .HasComment("id файла-родителя"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("id скважины"); + + b.Property("Step") + .HasColumnType("integer") + .HasColumnName("step") + .HasComment("размер шага в секундах"); + + b.HasKey("Id"); + + b.HasIndex("IdFile"); + + b.HasIndex("IdWell"); + + b.ToTable("t_report_property", t => + { + t.HasComment("Отчеты с данными по буровым"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Schedule", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("DrillEnd") + .HasColumnType("timestamp with time zone") + .HasColumnName("drill_end") + .HasComment("Конец вахты"); + + b.Property("DrillStart") + .HasColumnType("timestamp with time zone") + .HasColumnName("drill_start") + .HasComment("Начало вахты"); + + b.Property("IdDriller") + .HasColumnType("integer") + .HasColumnName("id_driller") + .HasComment("Идентификатор бурильщика"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Идентификатор скважины"); + + b.Property("ShiftEnd") + .HasColumnType("time without time zone") + .HasColumnName("shift_end") + .HasComment("Конец смены"); + + b.Property("ShiftStart") + .HasColumnType("time without time zone") + .HasColumnName("shift_start") + .HasComment("Начало смены"); + + b.HasKey("Id"); + + b.HasIndex("IdDriller"); + + b.HasIndex("IdWell"); + + b.ToTable("t_schedule", t => + { + t.HasComment("График работы бурильщика"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.SetpointsRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Comment") + .HasColumnType("text") + .HasColumnName("comment") + .HasComment("комментарий для оператора"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Id пользователя, загрузившего файл"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("0: неизвестно, 1:ожидает отправки, 2: отправлено, 3: принято оператором, 4: отклонено оператором, 5: устарело"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("id скважины"); + + b.Property("ObsolescenceSec") + .HasColumnType("integer") + .HasColumnName("obsolescence") + .HasComment("сек. до устаревания"); + + b.Property("Setpoints") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("setpoint_set") + .HasComment("Набор уставок"); + + b.Property("UploadDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdWell"); + + b.ToTable("t_setpoints_rquest", t => + { + t.HasComment("Запросы на изменение уставок панели оператора"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Subsystem", 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"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name"); + + b.HasKey("Id"); + + b.ToTable("t_subsystem", t => + { + t.HasComment("Описание подсистем"); + }); + + b.HasData( + new + { + Id = 1, + Description = "Совместная работа режимов \"Бурение в роторе\" и \"Бурение в слайде\"", + Name = "АПД" + }, + new + { + Id = 11, + Description = "Режим работы \"Бурение в роторе\"", + Name = "АПД ротор" + }, + new + { + Id = 12, + Description = "Режим работы \"Бурение в слайде\"", + Name = "АПД слайд" + }, + new + { + Id = 65536, + Description = "Осцилляция", + Name = "Осцилляция" + }, + new + { + Id = 65537, + Description = "Демпфер", + Name = "Демпфер" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Telemetry", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Info") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("info") + .HasComment("Информация с панели о скважине"); + + b.Property("RemoteUid") + .IsRequired() + .HasColumnType("text") + .HasColumnName("remote_uid") + .HasComment("Идентификатор передающего устройства. Может повторяться в списке, так как комплекты оборудования переезжают от скв. к скв."); + + b.Property("TimeZone") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("timezone") + .HasComment("Смещение часового пояса от UTC"); + + b.HasKey("Id"); + + b.HasIndex(new[] { "RemoteUid" }, "t_telemetry_remote_uid_index"); + + b.ToTable("t_telemetry", t => + { + t.HasComment("таблица привязки телеметрии от комплектов к конкретной скважине."); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaub", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date") + .HasComment("'2021-10-19 18:23:54+05'"); + + b.Property("AxialLoad") + .HasColumnType("real") + .HasColumnName("axial_load") + .HasComment("Осевая нагрузка"); + + b.Property("AxialLoadLimitMax") + .HasColumnType("real") + .HasColumnName("axial_load_limit_max") + .HasComment("Осевая нагрузка. Аварийная макс."); + + b.Property("AxialLoadSp") + .HasColumnType("real") + .HasColumnName("axial_load_sp") + .HasComment("Осевая нагрузка. Задание"); + + b.Property("BitDepth") + .HasColumnType("real") + .HasColumnName("bit_depth") + .HasComment("Положение инструмента"); + + b.Property("BlockPosition") + .HasColumnType("real") + .HasColumnName("block_position") + .HasComment("Высота талевого блока"); + + b.Property("BlockPositionMax") + .HasColumnType("real") + .HasColumnName("block_position_max") + .HasComment("Талевый блок. Макс положение"); + + b.Property("BlockPositionMin") + .HasColumnType("real") + .HasColumnName("block_position_min") + .HasComment("Талевый блок. Мин положение"); + + b.Property("BlockSpeed") + .HasColumnType("real") + .HasColumnName("block_speed") + .HasComment("Скорость талевого блока"); + + b.Property("BlockSpeedSp") + .HasColumnType("real") + .HasColumnName("block_speed_sp") + .HasComment("Скорости талевого блока. Задание"); + + b.Property("BlockSpeedSpDevelop") + .HasColumnType("real") + .HasColumnName("block_speed_sp_develop") + .HasComment("Талевый блок. Задание скорости для проработки"); + + b.Property("BlockSpeedSpRotor") + .HasColumnType("real") + .HasColumnName("block_speed_sp_rotor") + .HasComment("Талевый блок. Задание скорости для роторного бурения"); + + b.Property("BlockSpeedSpSlide") + .HasColumnType("real") + .HasColumnName("block_speed_sp_slide") + .HasComment("Талевый блок. Задание скорости для режима слайда"); + + b.Property("Flow") + .HasColumnType("real") + .HasColumnName("flow") + .HasComment("Расход"); + + b.Property("FlowDeltaLimitMax") + .HasColumnType("real") + .HasColumnName("flow_delta_limit_max") + .HasComment("Расход. Аварийный макс."); + + b.Property("FlowIdle") + .HasColumnType("real") + .HasColumnName("flow_idle") + .HasComment("Расход. Холостой ход"); + + b.Property("HookWeight") + .HasColumnType("real") + .HasColumnName("hook_weight") + .HasComment("Вес на крюке"); + + b.Property("HookWeightIdle") + .HasColumnType("real") + .HasColumnName("hook_weight_idle") + .HasComment("Вес на крюке. Холостой ход"); + + b.Property("HookWeightLimitMax") + .HasColumnType("real") + .HasColumnName("hook_weight_limit_max") + .HasComment("Вес на крюке. Затяжка"); + + b.Property("HookWeightLimitMin") + .HasColumnType("real") + .HasColumnName("hook_weight_limit_min") + .HasComment("Вес на крюке. Посадка"); + + b.Property("IdFeedRegulator") + .HasColumnType("smallint") + .HasColumnName("id_feed_regulator") + .HasComment("Текущий критерий бурения"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user") + .HasComment("Пользователь САУБ"); + + b.Property("Mode") + .HasColumnType("smallint") + .HasColumnName("mode") + .HasComment("Режим САУБ"); + + b.Property("Mse") + .HasColumnType("real") + .HasColumnName("mse") + .HasComment("MSE"); + + b.Property("MseState") + .HasColumnType("smallint") + .HasColumnName("mse_state") + .HasComment("Текущее состояние работы MSE"); + + b.Property("Pressure") + .HasColumnType("real") + .HasColumnName("pressure") + .HasComment("Давление"); + + b.Property("PressureDeltaLimitMax") + .HasColumnType("real") + .HasColumnName("pressure_delta_limit_max") + .HasComment("Давление дифф. Аварийное макс."); + + b.Property("PressureIdle") + .HasColumnType("real") + .HasColumnName("pressure_idle") + .HasComment("Давление. Холостой ход"); + + b.Property("PressureSp") + .HasColumnType("real") + .HasColumnName("pressure_sp") + .HasComment("Давление. Задание"); + + b.Property("PressureSpDevelop") + .HasColumnType("real") + .HasColumnName("pressure_sp_develop") + .HasComment("Давление. Задание для проработки"); + + b.Property("PressureSpRotor") + .HasColumnType("real") + .HasColumnName("pressure_sp_rotor") + .HasComment("Давление. Задание для роторного бурения"); + + b.Property("PressureSpSlide") + .HasColumnType("real") + .HasColumnName("pressure_sp_slide") + .HasComment("Давление. Задание для режима слайда"); + + b.Property("Pump0Flow") + .HasColumnType("real") + .HasColumnName("pump0_flow") + .HasComment("Расход. Буровой насос 1"); + + b.Property("Pump1Flow") + .HasColumnType("real") + .HasColumnName("pump1_flow") + .HasComment("Расход. Буровой насос 2"); + + b.Property("Pump2Flow") + .HasColumnType("real") + .HasColumnName("pump2_flow") + .HasComment("Расход. Буровой насос 3"); + + b.Property("RotorSpeed") + .HasColumnType("real") + .HasColumnName("rotor_speed") + .HasComment("Обороты ротора"); + + b.Property("RotorTorque") + .HasColumnType("real") + .HasColumnName("rotor_torque") + .HasComment("Момент на роторе"); + + b.Property("RotorTorqueIdle") + .HasColumnType("real") + .HasColumnName("rotor_torque_idle") + .HasComment("Момент на роторе. Холостой ход"); + + b.Property("RotorTorqueLimitMax") + .HasColumnType("real") + .HasColumnName("rotor_torque_limit_max") + .HasComment("Момент на роторе. Аварийный макс."); + + b.Property("RotorTorqueSp") + .HasColumnType("real") + .HasColumnName("rotor_torque_sp") + .HasComment("Момент на роторе. Задание"); + + b.Property("WellDepth") + .HasColumnType("real") + .HasColumnName("well_depth") + .HasComment("Глубина забоя"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_data_saub", t => + { + t.HasComment("набор основных данных по SAUB"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaubStat", b => + { + b.Property("Count") + .HasColumnType("bigint") + .HasColumnName("count_items"); + + b.Property("DateMax") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_max"); + + b.Property("DateMin") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_min"); + + b.Property("DepthMax") + .HasColumnType("real") + .HasColumnName("depth_max"); + + b.Property("DepthMin") + .HasColumnType("real") + .HasColumnName("depth_min"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.ToTable((string)null); + + b.ToView("mw_telemetry_datas_saub_stat", (string)null); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSpin", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date") + .HasComment("'2021-10-19 18:23:54+05'"); + + b.Property("Mode") + .HasColumnType("smallint") + .HasColumnName("mode") + .HasComment("Выбранный режим управления"); + + b.Property("PositionRight") + .HasColumnType("real") + .HasColumnName("position_right") + .HasComment("Крайний правый угол осцилляции"); + + b.Property("PositionZero") + .HasColumnType("real") + .HasColumnName("position_zero") + .HasComment("Нулевая позиция осцилляции"); + + b.Property("RevolsLeftLimit") + .HasColumnType("real") + .HasColumnName("revols_left_limit") + .HasComment("Ограничение числа оборотов влево"); + + b.Property("RevolsLeftTotal") + .HasColumnType("real") + .HasColumnName("revols_left_total") + .HasComment("Суммарное количество оборотов влево"); + + b.Property("RevolsRightLimit") + .HasColumnType("real") + .HasColumnName("revols_right_limit") + .HasComment("Ограничение числа оборотов вправо"); + + b.Property("RevolsRightTotal") + .HasColumnType("real") + .HasColumnName("revols_right_total") + .HasComment("Суммарное количество оборотов вправо"); + + b.Property("SpeedLeftSp") + .HasColumnType("real") + .HasColumnName("speed_left_sp") + .HasComment("Заданная скорость вращения влево"); + + b.Property("SpeedRightSp") + .HasColumnType("real") + .HasColumnName("speed_right_sp") + .HasComment("Заданная скорость вращения вправо"); + + b.Property("State") + .HasColumnType("smallint") + .HasColumnName("state") + .HasComment("Переменная этапа"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_data_spin", t => + { + t.HasComment("набор основных данных по SpinMaster"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryEvent", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdEvent") + .HasColumnType("integer") + .HasColumnName("id_event"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category"); + + b.Property("MessageTemplate") + .IsRequired() + .HasColumnType("text") + .HasColumnName("message_template"); + + b.HasKey("IdTelemetry", "IdEvent"); + + b.ToTable("t_telemetry_event", t => + { + t.HasComment("Справочник событий. События формируют сообщения. Разделено по версиям посылок от телеметрии."); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Arg0") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg0") + .HasComment("Аргумент №0 для вставки в шаблон сообщения"); + + b.Property("Arg1") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg1"); + + b.Property("Arg2") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg2"); + + b.Property("Arg3") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg3"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("IdEvent") + .HasColumnType("integer") + .HasColumnName("id_event"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdTelemetryUser") + .HasColumnType("integer") + .HasColumnName("id_telemetry_user") + .HasComment("Пользователь панели отправляющей телеметрию. не пользователь облака."); + + b.Property("WellDepth") + .HasColumnType("double precision") + .HasColumnName("well_depth"); + + b.HasKey("Id"); + + b.HasIndex("IdTelemetry"); + + b.ToTable("t_telemetry_message", t => + { + t.HasComment("Сообщения на буровых"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryUser", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("Level") + .HasColumnType("integer") + .HasColumnName("level"); + + b.Property("Name") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name"); + + b.Property("Patronymic") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("patronymic"); + + b.Property("Surname") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("surname"); + + b.HasKey("IdTelemetry", "IdUser"); + + b.ToTable("t_telemetry_user", t => + { + t.HasComment("Пользователи панели САУБ. Для сообщений."); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryWirelineRunOut", b => + { + b.Property("IdTelemetry") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id_telemetry") + .HasComment("Идентификатор телеметрии"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("IdTelemetry")); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_time") + .HasComment("Отметка времени"); + + b.Property("Hauling") + .HasColumnType("real") + .HasColumnName("hauling") + .HasComment("Наработка талевого каната с момента перетяжки каната, т*км"); + + b.Property("HaulingWarnSp") + .HasColumnType("real") + .HasColumnName("hauling_warn_sp") + .HasComment("Наработка талевого каната до сигнализации о необходимости перетяжки, т*км"); + + b.Property("Replace") + .HasColumnType("real") + .HasColumnName("replace") + .HasComment("Наработка талевого каната с момента замены каната, т*км"); + + b.Property("ReplaceWarnSp") + .HasColumnType("real") + .HasColumnName("replace_warn_sp") + .HasComment("Наработка талевого каната до сигнализации о необходимости замены, т*км"); + + b.HasKey("IdTelemetry"); + + b.ToTable("t_telemetry_wireline_run_out", t => + { + t.HasComment("Наработка талевого каната"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Trajectory.TrajectoryFact", 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("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_trajectory_fact", t => + { + t.HasComment("Загрузка фактической траектории"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Trajectory.TrajectoryPlan", 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_trajectory_plan", t => + { + t.HasComment("Загрузка плановой траектории"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Email") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("email") + .HasComment("должность"); + + b.Property("IdCompany") + .HasColumnType("integer") + .HasColumnName("id_company"); + + b.Property("IdState") + .HasColumnType("smallint") + .HasColumnName("state") + .HasComment("состояние:\n0 - не активен, \n1 - активен, \n2 - заблокирован"); + + b.Property("Login") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("login"); + + b.Property("Name") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name") + .HasComment("имя"); + + b.Property("PasswordHash") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("password_hash") + .HasComment("соленый хэш пароля.\nпервые 5 символов - соль"); + + b.Property("Patronymic") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("patronymic") + .HasComment("отчество"); + + b.Property("Phone") + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .HasColumnName("phone") + .HasComment("номер телефона"); + + b.Property("Position") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("position") + .HasComment("email"); + + b.Property("Surname") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("surname") + .HasComment("фамилия"); + + b.HasKey("Id"); + + b.HasIndex("IdCompany"); + + b.HasIndex("Login") + .IsUnique(); + + b.ToTable("t_user", t => + { + t.HasComment("Пользователи облака"); + }); + + b.HasData( + new + { + Id = 1, + Email = "", + IdCompany = 1, + IdState = (short)1, + Login = "dev", + Name = "Разработчик", + PasswordHash = "Vlcj|4fa529103dde7ff72cfe76185f344d4aa87931f8e1b2044e8a7739947c3d18923464eaad93843e4f809c5e126d013072" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserRole", 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("IdType") + .HasColumnType("integer") + .HasColumnName("id_type") + .HasComment("0-роль из стандартной матрицы, \n1-специальная роль для какого-либо пользователя"); + + b.HasKey("Id"); + + b.ToTable("t_user_role", t => + { + t.HasComment("Роли пользователей в системе"); + }); + + b.HasData( + new + { + Id = 1, + Caption = "root", + IdType = 1 + }, + new + { + Id = 1100, + Caption = "admin_cluster.view", + IdType = 1 + }, + new + { + Id = 1101, + Caption = "admin_cluster.edit", + IdType = 1 + }, + new + { + Id = 1102, + Caption = "admin_company.view", + IdType = 1 + }, + new + { + Id = 1103, + Caption = "admin_company.edit", + IdType = 1 + }, + new + { + Id = 1104, + Caption = "admin_company_type.view", + IdType = 1 + }, + new + { + Id = 1105, + Caption = "admin_company_type.edit", + IdType = 1 + }, + new + { + Id = 1106, + Caption = "admin_deposit.view", + IdType = 1 + }, + new + { + Id = 1107, + Caption = "admin_deposit.edit", + IdType = 1 + }, + new + { + Id = 1108, + Caption = "admin_permission.view", + IdType = 1 + }, + new + { + Id = 1109, + Caption = "admin_permission.edit", + IdType = 1 + }, + new + { + Id = 1110, + Caption = "admin_role.view", + IdType = 1 + }, + new + { + Id = 1111, + Caption = "admin_role.edit", + IdType = 1 + }, + new + { + Id = 1112, + Caption = "admin_telemetry.view", + IdType = 1 + }, + new + { + Id = 1113, + Caption = "admin_user.view", + IdType = 1 + }, + new + { + Id = 1114, + Caption = "admin_user.edit", + IdType = 1 + }, + new + { + Id = 1115, + Caption = "admin_visit_log.view", + IdType = 1 + }, + new + { + Id = 1116, + Caption = "admin_well.view", + IdType = 1 + }, + new + { + Id = 1117, + Caption = "admin_well.edit", + IdType = 1 + }, + new + { + Id = 1200, + Caption = "archive.view", + IdType = 1 + }, + new + { + Id = 1201, + Caption = "cluster.view", + IdType = 1 + }, + new + { + Id = 1202, + Caption = "composite.view", + IdType = 1 + }, + new + { + Id = 1203, + Caption = "composite.edit", + IdType = 1 + }, + new + { + Id = 1204, + Caption = "deposit.view", + IdType = 1 + }, + new + { + Id = 1205, + Caption = "document.view", + IdType = 1 + }, + new + { + Id = 1206, + Caption = "drillProcessFlow.view", + IdType = 1 + }, + new + { + Id = 1207, + Caption = "drillProcessFlow.edit", + IdType = 1 + }, + new + { + Id = 1208, + Caption = "measure.view", + IdType = 1 + }, + new + { + Id = 1209, + Caption = "measure.edit", + IdType = 1 + }, + new + { + Id = 1210, + Caption = "message.view", + IdType = 1 + }, + new + { + Id = 1211, + Caption = "operations.view", + IdType = 1 + }, + new + { + Id = 1212, + Caption = "operations.edit", + IdType = 1 + }, + new + { + Id = 1213, + Caption = "params.view", + IdType = 1 + }, + new + { + Id = 1214, + Caption = "params.edit", + IdType = 1 + }, + new + { + Id = 1215, + Caption = "report.view", + IdType = 1 + }, + new + { + Id = 1216, + Caption = "report.edit", + IdType = 1 + }, + new + { + Id = 1217, + Caption = "setpoints.view", + IdType = 1 + }, + new + { + Id = 1218, + Caption = "setpoints.edit", + IdType = 1 + }, + new + { + Id = 1219, + Caption = "telemetry.view", + IdType = 1 + }, + new + { + Id = 1220, + Caption = "telemetryAnalysis.view", + IdType = 1 + }, + new + { + Id = 1221, + Caption = "well.view", + IdType = 1 + }, + new + { + Id = 1500, + Caption = "Просмотр всего", + IdType = 1 + }, + new + { + Id = 1501, + Caption = "file.edit", + IdType = 1 + }, + new + { + Id = 1502, + Caption = "drillingProgram.edit", + IdType = 1 + }, + new + { + Id = 2000, + Caption = "Заказчик", + IdType = 0 + }, + new + { + Id = 2001, + Caption = "Супервайзер", + IdType = 0 + }, + new + { + Id = 2002, + Caption = "Буровой подрядчик", + IdType = 0 + }, + new + { + Id = 2003, + Caption = "Растворщик", + IdType = 0 + }, + new + { + Id = 2004, + Caption = "Телеметрист", + IdType = 0 + }, + new + { + Id = 2005, + Caption = "Долотный сервис", + IdType = 0 + }, + new + { + Id = 2006, + Caption = "ГТИ", + IdType = 0 + }, + new + { + Id = 2007, + Caption = "Цементирование", + IdType = 0 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserSetting", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("Key") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("key") + .HasComment("Ключ настроек пользователя"); + + b.Property("Value") + .HasColumnType("jsonb") + .HasColumnName("setting_value") + .HasComment("Значение настроек пользователя"); + + b.HasKey("IdUser", "Key"); + + b.ToTable("t_user_settings", t => + { + t.HasComment("настройки интерфейса пользователя"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.RecordBase", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("Actcod") + .HasColumnType("smallint") + .HasColumnName("ACTCOD"); + + b.Property("Date") + .HasColumnType("integer") + .HasColumnName("DATE"); + + b.Property("Recid") + .HasColumnType("smallint") + .HasColumnName("RECID"); + + b.Property("Seqid") + .HasColumnType("integer") + .HasColumnName("SEQID"); + + b.Property("Stknum") + .HasColumnType("smallint") + .HasColumnName("STKNUM"); + + b.Property("Time") + .HasColumnType("integer") + .HasColumnName("TIME"); + + b.Property("Wellid") + .HasColumnType("text") + .HasColumnName("WELLID"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_wits_base"); + + b.UseTptMappingStrategy(); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", 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("IdCluster") + .HasColumnType("integer") + .HasColumnName("id_cluster"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("state") + .HasComment("0 - неизвестно, 1 - в работе, 2 - завершена"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdWellType") + .HasColumnType("integer") + .HasColumnName("id_well_type"); + + 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("IdCluster"); + + b.HasIndex("IdTelemetry") + .IsUnique(); + + b.HasIndex("IdWellType"); + + b.ToTable("t_well", t => + { + t.HasComment("скважины"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellComposite", b => + { + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины получателя"); + + b.Property("IdWellSrc") + .HasColumnType("integer") + .HasColumnName("id_well_src") + .HasComment("Id скважины композита"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_well_section_type") + .HasComment("Id тип секции композита"); + + b.HasKey("IdWell", "IdWellSrc", "IdWellSectionType"); + + b.HasIndex("IdWellSectionType"); + + b.HasIndex("IdWellSrc"); + + b.ToTable("t_well_composite", t => + { + t.HasComment("Композитная скважина"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellFinalDocument", b => + { + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category"); + + b.HasKey("IdWell", "IdUser", "IdCategory") + .HasName("t_well_final_documents_pk"); + + b.HasIndex("IdCategory"); + + b.HasIndex("IdUser"); + + b.ToTable("t_well_final_documents", t => + { + t.HasComment("Дело скважины"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CategoryInfo") + .HasColumnType("text") + .HasColumnName("category_info") + .HasComment("Доп. информация к выбраной категории"); + + b.Property("Comment") + .HasColumnType("text") + .HasColumnName("comment") + .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("DurationHours") + .HasColumnType("double precision") + .HasColumnName("duration_hours") + .HasComment("Продолжительность, часы"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category") + .HasComment("Id категории операции"); + + b.Property("IdPlan") + .HasColumnType("integer") + .HasColumnName("id_plan") + .HasComment("Id плановой операции"); + + b.Property("IdType") + .HasColumnType("integer") + .HasColumnName("id_type") + .HasComment("0 = План или 1 = Факт"); + + b.Property("IdUser") + .HasColumnType("integer"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_well_section_type") + .HasComment("Id тип секции скважины"); + + b.Property("LastUpdateDate") + .HasColumnType("timestamp with time zone"); + + b.HasKey("Id"); + + b.HasIndex("DateStart"); + + b.HasIndex("DepthEnd"); + + b.HasIndex("IdCategory"); + + b.HasIndex("IdPlan"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_well_operation", t => + { + t.HasComment("Данные по операциям на скважине"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperationCategory", 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("IsHidden") + .HasColumnType("boolean"); + + b.Property("KeyValueName") + .HasMaxLength(32) + .HasColumnType("character varying(32)") + .HasColumnName("key_value_name") + .HasComment("Название ключевого показателя операции"); + + b.Property("KeyValueUnits") + .HasMaxLength(16) + .HasColumnType("character varying(16)") + .HasColumnName("key_value_units") + .HasComment("Единицы измерения ключевого показателя операции"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name") + .HasComment("Название категории операции"); + + b.HasKey("Id"); + + b.HasIndex("IdParent"); + + b.ToTable("t_well_operation_category", t => + { + t.HasComment("Справочник операций на скважине"); + }); + + b.HasData( + new + { + Id = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "м/ч", + Name = "БУРЕНИЕ" + }, + new + { + Id = 3001, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО" + }, + new + { + Id = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "КРЕПЛЕНИЕ" + }, + new + { + Id = 3003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ГФР" + }, + new + { + Id = 3004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Вспомогательные операции" + }, + new + { + Id = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Непроизводительное время (НПВ)" + }, + new + { + Id = 3006, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Заключительные работы" + }, + new + { + Id = 4000, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "КНБК" + }, + new + { + Id = 4001, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "м/ч", + Name = "Механическое. бурение" + }, + new + { + Id = 4002, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Статический замер" + }, + new + { + Id = 4003, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Нормализация диаметра скважины" + }, + new + { + Id = 4004, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Наращивание" + }, + new + { + Id = 4005, + IdParent = 3001, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО" + }, + new + { + Id = 4006, + IdParent = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск обсадной колонны" + }, + new + { + Id = 4018, + IdParent = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Крепление" + }, + new + { + Id = 4007, + IdParent = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Цементирование" + }, + new + { + Id = 4008, + IdParent = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Вспомогательные работы при креплении" + }, + new + { + Id = 4009, + IdParent = 3003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка/разборка приборов ГИС" + }, + new + { + Id = 4010, + IdParent = 3003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО" + }, + new + { + Id = 4011, + IdParent = 3003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ГИС" + }, + new + { + Id = 4012, + IdParent = 3004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка, ОБР" + }, + new + { + Id = 4013, + IdParent = 3004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Вспомогательные работы" + }, + new + { + Id = 4014, + IdParent = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ремонт оборудования" + }, + new + { + Id = 4015, + IdParent = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Аварийные работы" + }, + new + { + Id = 4016, + IdParent = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Осложнение" + }, + new + { + Id = 4017, + IdParent = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Незаложенные в ГГД операции" + }, + new + { + Id = 4019, + IdParent = 3006, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Заключительные операции" + }, + new + { + Id = 5000, + IdParent = 4000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Разборка КНБК" + }, + new + { + Id = 5001, + IdParent = 4000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка КНБК" + }, + new + { + Id = 5002, + IdParent = 4001, + IsHidden = true, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", + Name = "Бурение слайдом" + }, + new + { + Id = 5003, + IdParent = 4001, + IsHidden = true, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", + Name = "Бурение ротором" + }, + new + { + Id = 5004, + IdParent = 4002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Замер ЗТС (запись MWD)" + }, + new + { + Id = 5005, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка перед наращиванием" + }, + new + { + Id = 5006, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Проработка во время бурения" + }, + new + { + Id = 5007, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Проработка" + }, + new + { + Id = 5008, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонировка во время бурения" + }, + new + { + Id = 5009, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонировка перед наращиванием" + }, + new + { + Id = 5010, + IdParent = 4004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Наращивание" + }, + new + { + Id = 5011, + IdParent = 4004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Удержание в клиньях" + }, + new + { + Id = 5012, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем инструмента" + }, + new + { + Id = 5013, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем КНБК" + }, + new + { + Id = 5014, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск инструмента" + }, + new + { + Id = 5015, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск КНБК" + }, + new + { + Id = 5016, + IdParent = 4006, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка при спуске ОК" + }, + new + { + Id = 5017, + IdParent = 4006, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск ОК" + }, + new + { + Id = 5018, + IdParent = 4007, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ОЗЦ" + }, + new + { + Id = 5019, + IdParent = 4007, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Цементирование" + }, + new + { + Id = 5020, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Опрессовка БИ" + }, + new + { + Id = 5021, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Опрессовка ОК" + }, + new + { + Id = 5022, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПЗР при спуске ОК" + }, + new + { + Id = 5023, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПЗР при цементировании" + }, + new + { + Id = 5024, + IdParent = 4009, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Разборка комплекса приборов ГИС" + }, + new + { + Id = 5025, + IdParent = 4009, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка комплекса приборов ГИС" + }, + new + { + Id = 5026, + IdParent = 4010, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем приборов ГИС (на трубах)" + }, + new + { + Id = 5027, + IdParent = 4010, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск приборов ГИС (на трубах)" + }, + new + { + Id = 5028, + IdParent = 4011, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Комплекс ГИС на жестком кабеле" + }, + new + { + Id = 5029, + IdParent = 4011, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Комплекс ГИС на кабеле" + }, + new + { + Id = 5030, + IdParent = 4011, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Комплекс ГИС на трубах" + }, + new + { + Id = 5031, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Закачка/прокачка пачки" + }, + new + { + Id = 5032, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Обработка БР" + }, + new + { + Id = 5033, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ориентирование ТС при бурении" + }, + new + { + Id = 5034, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Перезапись гаммы-каротажа" + }, + new + { + Id = 5035, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Приготовление БР" + }, + new + { + Id = 5036, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка" + }, + new + { + Id = 5037, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Разбуривание тех.оснастки" + }, + new + { + Id = 5038, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск инструмента с проработкой" + }, + new + { + Id = 5039, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ВМР" + }, + new + { + Id = 5040, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Демонтаж ПВО" + }, + new + { + Id = 5041, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Долив затруба при подъёме" + }, + new + { + Id = 5042, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Монтаж ПВО" + }, + new + { + Id = 5043, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Наработка жёлоба" + }, + new + { + Id = 5044, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Обвязка устья с циркуляционной системой" + }, + new + { + Id = 5045, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Оборудование устья" + }, + new + { + Id = 5046, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Опрессовка ПВО" + }, + new + { + Id = 5047, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Перемонтаж ПВО " + }, + new + { + Id = 5048, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Перетяжка талевого каната" + }, + new + { + Id = 5049, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПЗР при сборке КНБК" + }, + new + { + Id = 5050, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Полная замена талевого каната" + }, + new + { + Id = 5051, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПР перед забуркой направления" + }, + new + { + Id = 5052, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Продувка манифольда" + }, + new + { + Id = 5053, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Срезка" + }, + new + { + Id = 5054, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Тайм-дриллинг" + }, + new + { + Id = 5055, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Тех.отстой" + }, + new + { + Id = 5056, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Учебная тревога \"Выброс\"" + }, + new + { + Id = 5057, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Чистка ЦСГО/емкостного блока" + }, + new + { + Id = 5058, + IdParent = 4014, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ремонт бурового оборудования" + }, + new + { + Id = 5059, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ловильные работы" + }, + new + { + Id = 5060, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ожидание" + }, + new + { + Id = 5061, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Определение места прихвата и ЛМ" + }, + new + { + Id = 5062, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Работа яссом" + }, + new + { + Id = 5063, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Расхаживание" + }, + new + { + Id = 5064, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО - колокол" + }, + new + { + Id = 5065, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО - метчик" + }, + new + { + Id = 5066, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО - овершот" + }, + new + { + Id = 5067, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО - труболовка" + }, + new + { + Id = 5068, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Торпедирование (встряхивание)" + }, + new + { + Id = 5069, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Торпедирование (отстрел)" + }, + new + { + Id = 5070, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Установка ванн" + }, + new + { + Id = 5071, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Фрезеровка" + }, + new + { + Id = 5072, + IdParent = 4016, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Контролируемое ГНВП" + }, + new + { + Id = 5073, + IdParent = 4016, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Поглощение" + }, + new + { + Id = 5074, + IdParent = 4016, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сальникообразование" + }, + new + { + Id = 5075, + IdParent = 4016, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Утяжеление БР" + }, + new + { + Id = 5076, + IdParent = 4017, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "НПВ / прочее" + }, + new + { + Id = 5077, + IdParent = 4017, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Обработка раствора (несоответствие параметров)" + }, + new + { + Id = 5078, + IdParent = 4017, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "подъем ОК" + }, + new + { + Id = 5079, + IdParent = 4017, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ревизия КНБК/инструмента/ЗТС" + }, + new + { + Id = 5082, + IdParent = 4000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка устройства ориентирования КО" + }, + new + { + Id = 5083, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Проработка принудительная" + }, + new + { + Id = 5084, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонировка подъем БИ, продувка" + }, + new + { + Id = 5085, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск бурильного инструмента со сборкой с мостков" + }, + new + { + Id = 5086, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем БИ с выбросом на мостки" + }, + new + { + Id = 5087, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск БИ со сборкой с мостков" + }, + new + { + Id = 5088, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка и спуск ТБТ" + }, + new + { + Id = 5089, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск КО на транспортной колонне" + }, + new + { + Id = 5090, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Отворот допускной трубы" + }, + new + { + Id = 5091, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Активация подвески, опрессовка" + }, + new + { + Id = 5092, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Монтаж, опрессовка ФА" + }, + new + { + Id = 5093, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка хвостовика 114мм (согласно схеме)" + }, + new + { + Id = 5094, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПЗР к спуску УЭЦН" + }, + new + { + Id = 5095, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Активация подвески (потайной колонны, хвостовика)" + }, + new + { + Id = 5096, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонирование перед спуском" + }, + new + { + Id = 5097, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка - перевод скважины на новый раствор" + }, + new + { + Id = 5098, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка БИ с мостков на подсвечник" + }, + new + { + Id = 5099, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подготовка ствола скважины. Перезапись ГК в интервале установки КО." + }, + new + { + Id = 5100, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Смена рабочего переводника ВСП" + }, + new + { + Id = 5101, + IdParent = 4014, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ремонт" + }, + new + { + Id = 5102, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск пакера" + }, + new + { + Id = 5103, + IdParent = 4011, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Запись гамма-каратожа" + }, + new + { + Id = 5104, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонирование спуск БИ" + }, + new + { + Id = 5105, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка клин-отклонителя" + }, + new + { + Id = 5106, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ориентирование и посадка клина-отклонителя" + }, + new + { + Id = 5107, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Протяжка подъемного патрубка подвески" + }, + new + { + Id = 5108, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем клина-отклонителя" + }, + new + { + Id = 5109, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Стыковка стингера с хвостовиком основного ствола" + }, + new + { + Id = 5110, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ориентирование и установка стыковочного узла хвостовика" + }, + new + { + Id = 5111, + IdParent = 4001, + IsHidden = false, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", + Name = "Бурение с отбором керна" + }, + new + { + Id = 5112, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Работа пакером в обсадной колонне" + }, + new + { + Id = 5113, + IdParent = 4001, + IsHidden = false, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", + Name = "Бурение" + }, + new + { + Id = 5114, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ТО оборудования" + }, + new + { + Id = 5115, + IdParent = 4019, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск НКТ" + }, + new + { + Id = 5116, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Вырезка окна" + }, + new + { + Id = 5117, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Расширение ствола" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSectionType", 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("Order") + .HasColumnType("real") + .HasColumnName("order") + .HasComment("Порядок"); + + b.HasKey("Id"); + + b.ToTable("t_well_section_type", t => + { + t.HasComment("конструкция секции скважины"); + }); + + b.HasData( + new + { + Id = 1, + Caption = "Пилотный ствол", + Order = 5f + }, + new + { + Id = 2, + Caption = "Направление", + Order = 0f + }, + new + { + Id = 3, + Caption = "Кондуктор", + Order = 1f + }, + new + { + Id = 4, + Caption = "Эксплуатационная колонна", + Order = 3f + }, + new + { + Id = 5, + Caption = "Транспортный ствол", + Order = 4f + }, + new + { + Id = 6, + Caption = "Хвостовик", + Order = 6f + }, + new + { + Id = 7, + Caption = "Пилотный ствол 2", + Order = 5.1f + }, + new + { + Id = 8, + Caption = "Направление 2", + Order = 0.1f + }, + new + { + Id = 9, + Caption = "Кондуктор 2", + Order = 1.1f + }, + new + { + Id = 10, + Caption = "Эксплуатационная колонна 2", + Order = 3.1f + }, + new + { + Id = 11, + Caption = "Транспортный ствол 2", + Order = 4.1f + }, + new + { + Id = 12, + Caption = "Хвостовик 2", + Order = 6.1f + }, + new + { + Id = 13, + Caption = "Пилотный ствол 3", + Order = 5.2f + }, + new + { + Id = 14, + Caption = "Направление 3", + Order = 0.2f + }, + new + { + Id = 15, + Caption = "Кондуктор 3", + Order = 1.2f + }, + new + { + Id = 16, + Caption = "Эксплуатационная колонна 3", + Order = 3.2f + }, + new + { + Id = 17, + Caption = "Транспортный ствол 3", + Order = 4.2f + }, + new + { + Id = 18, + Caption = "Хвостовик 3", + Order = 6.2f + }, + new + { + Id = 19, + Caption = "Пилотный ствол 4", + Order = 5.3f + }, + new + { + Id = 20, + Caption = "Направление 4", + Order = 0.3f + }, + new + { + Id = 21, + Caption = "Кондуктор 4", + Order = 1.3f + }, + new + { + Id = 22, + Caption = "Эксплуатационная колонна 4", + Order = 3.3f + }, + new + { + Id = 23, + Caption = "Транспортный ствол 4", + Order = 4.3f + }, + new + { + Id = 24, + Caption = "Хвостовик 4", + Order = 6.3f + }, + new + { + Id = 25, + Caption = "Пилотный ствол 5", + Order = 5.4f + }, + new + { + Id = 26, + Caption = "Направление 5", + Order = 0.4f + }, + new + { + Id = 27, + Caption = "Кондуктор 5", + Order = 1.4f + }, + new + { + Id = 28, + Caption = "Эксплуатационная колонна 5", + Order = 3.4f + }, + new + { + Id = 29, + Caption = "Транспортный ствол 5", + Order = 4.4f + }, + new + { + Id = 30, + Caption = "Хвостовик 5", + Order = 6.4f + }, + new + { + Id = 31, + Caption = "Техническая колонна", + Order = 2f + }, + new + { + Id = 32, + Caption = "Техническая колонна 2", + Order = 2.1f + }, + new + { + Id = 33, + Caption = "Техническая колонна 3", + Order = 2.2f + }, + new + { + Id = 34, + Caption = "Хвостовик 6", + Order = 6.5f + }, + new + { + Id = 35, + Caption = "Хвостовик 7", + Order = 6.6f + }, + new + { + Id = 36, + Caption = "Хвостовик 8", + Order = 6.7f + }, + new + { + Id = 37, + Caption = "Хвостовик 9", + Order = 6.8f + }, + new + { + Id = 38, + Caption = "Хвостовик 10", + Order = 6.9f + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSections.WellSectionPlan", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + 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("IdSectionType") + .HasColumnType("integer") + .HasColumnName("id_section_type") + .HasComment("Тип секции"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user") + .HasComment("Id пользователя"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("InnerDiameter") + .HasColumnType("double precision") + .HasColumnName("inner_diameter") + .HasComment("Внутренний диаметр"); + + b.Property("LastUpdateDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_last_update") + .HasComment("Дата последнего обновления"); + + b.Property("OuterDiameter") + .HasColumnType("double precision") + .HasColumnName("outer_diameter") + .HasComment("Внешний диаметр"); + + b.HasKey("Id"); + + b.HasIndex("IdSectionType"); + + b.HasIndex("IdWell", "IdSectionType") + .IsUnique(); + + b.ToTable("t_well_section_plan"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellType", 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.HasKey("Id"); + + b.ToTable("t_well_type", t => + { + t.HasComment("конструкция скважины"); + }); + + b.HasData( + new + { + Id = 1, + Caption = "Наклонно-направленная" + }, + new + { + Id = 2, + Caption = "Горизонтальная" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record1", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Blkpos") + .HasColumnType("real") + .HasColumnName("BLKPOS"); + + b.Property("Chkp") + .HasColumnType("real") + .HasColumnName("CHKP"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptbitv") + .HasColumnType("real") + .HasColumnName("DEPTBITV"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptretm") + .HasColumnType("real") + .HasColumnName("DEPTRETM"); + + b.Property("Deptvert") + .HasColumnType("real") + .HasColumnName("DEPTVERT"); + + b.Property("Gasa") + .HasColumnType("real") + .HasColumnName("GASA"); + + b.Property("Hkla") + .HasColumnType("real") + .HasColumnName("HKLA"); + + b.Property("Hklx") + .HasColumnType("real") + .HasColumnName("HKLX"); + + b.Property("Lagstks") + .HasColumnType("smallint") + .HasColumnName("LAGSTKS"); + + b.Property("Mcia") + .HasColumnType("real") + .HasColumnName("MCIA"); + + b.Property("Mcoa") + .HasColumnType("real") + .HasColumnName("MCOA"); + + b.Property("Mdia") + .HasColumnType("real") + .HasColumnName("MDIA"); + + b.Property("Mdoa") + .HasColumnType("real") + .HasColumnName("MDOA"); + + b.Property("Mfia") + .HasColumnType("real") + .HasColumnName("MFIA"); + + b.Property("Mfoa") + .HasColumnType("real") + .HasColumnName("MFOA"); + + b.Property("Mfop") + .HasColumnType("smallint") + .HasColumnName("MFOP"); + + b.Property("Mtia") + .HasColumnType("real") + .HasColumnName("MTIA"); + + b.Property("Mtoa") + .HasColumnType("real") + .HasColumnName("MTOA"); + + b.Property("Ropa") + .HasColumnType("real") + .HasColumnName("ROPA"); + + b.Property("Rpma") + .HasColumnType("smallint") + .HasColumnName("RPMA"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Spm1") + .HasColumnType("smallint") + .HasColumnName("SPM1"); + + b.Property("Spm2") + .HasColumnType("smallint") + .HasColumnName("SPM2"); + + b.Property("Spm3") + .HasColumnType("smallint") + .HasColumnName("SPM3"); + + b.Property("Sppa") + .HasColumnType("real") + .HasColumnName("SPPA"); + + b.Property("Stkc") + .HasColumnType("integer") + .HasColumnName("STKC"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.Property("Torqa") + .HasColumnType("real") + .HasColumnName("TORQA"); + + b.Property("Torqx") + .HasColumnType("real") + .HasColumnName("TORQX"); + + b.Property("Tvolact") + .HasColumnType("real") + .HasColumnName("TVOLACT"); + + b.Property("Tvolcact") + .HasColumnType("real") + .HasColumnName("TVOLCACT"); + + b.Property("Woba") + .HasColumnType("real") + .HasColumnName("WOBA"); + + b.Property("Wobx") + .HasColumnType("real") + .HasColumnName("WOBX"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_1"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record50", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("DeptmeasGdpMc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_GDP_mc"); + + b.Property("DeptmeasMcrstat") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_MCRSTAT"); + + b.Property("DeptmeasRa33Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33_mc"); + + b.Property("DeptmeasRa33f2Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33F2_mc"); + + b.Property("DeptmeasRa33f4Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33F4_mc"); + + b.Property("DeptmeasRp33Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33_mc"); + + b.Property("DeptmeasRp33f2Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33F2_mc"); + + b.Property("DeptmeasRp33f4Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33F4_mc"); + + b.Property("DeptmeasSlvlMc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_SLVL_mc"); + + b.Property("GdpMc") + .HasColumnType("real") + .HasColumnName("GDP_mc"); + + b.Property("Mcrstat") + .HasColumnType("real") + .HasColumnName("MCRSTAT"); + + b.Property("Ra33Mc") + .HasColumnType("real") + .HasColumnName("RA33_mc"); + + b.Property("Ra33f2Mc") + .HasColumnType("real") + .HasColumnName("RA33F2_mc"); + + b.Property("Ra33f4Mc") + .HasColumnType("real") + .HasColumnName("RA33F4_mc"); + + b.Property("Rp33Mc") + .HasColumnType("real") + .HasColumnName("RP33_mc"); + + b.Property("Rp33f2Mc") + .HasColumnType("real") + .HasColumnName("RP33F2_mc"); + + b.Property("Rp33f4Mc") + .HasColumnType("real") + .HasColumnName("RP33F4_mc"); + + b.Property("SlvlMc") + .HasColumnType("real") + .HasColumnName("SLVL_mc"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_50"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record60", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Btot") + .HasColumnType("real") + .HasColumnName("Btot"); + + b.Property("Bx") + .HasColumnType("real") + .HasColumnName("Bx"); + + b.Property("By") + .HasColumnType("real") + .HasColumnName("By"); + + b.Property("Bz") + .HasColumnType("real") + .HasColumnName("Bz"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Gtot") + .HasColumnType("real") + .HasColumnName("Gtot"); + + b.Property("Gx") + .HasColumnType("real") + .HasColumnName("Gx"); + + b.Property("Gy") + .HasColumnType("real") + .HasColumnName("Gy"); + + b.Property("Gz") + .HasColumnType("real") + .HasColumnName("Gz"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_60"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record61", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Att06h") + .HasColumnType("real") + .HasColumnName("ATT06H"); + + b.Property("Att06l") + .HasColumnType("real") + .HasColumnName("ATT06L"); + + b.Property("Att10h") + .HasColumnType("real") + .HasColumnName("ATT10H"); + + b.Property("Att10l") + .HasColumnType("real") + .HasColumnName("ATT10L"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Phl1f1") + .HasColumnType("real") + .HasColumnName("PHL1F1"); + + b.Property("Phl1f2") + .HasColumnType("real") + .HasColumnName("PHL1F2"); + + b.Property("Phl2f1") + .HasColumnType("real") + .HasColumnName("PHL2F1"); + + b.Property("Phl2f2") + .HasColumnType("real") + .HasColumnName("PHL2F2"); + + b.Property("Status") + .HasColumnType("real") + .HasColumnName("Status"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_61"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record7", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptsvym") + .HasColumnType("real") + .HasColumnName("DEPTSVYM"); + + b.Property("Deptsvyv") + .HasColumnType("real") + .HasColumnName("DEPTSVYV"); + + b.Property("Passnum") + .HasColumnType("smallint") + .HasColumnName("PASSNUM"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Svyazc") + .HasColumnType("real") + .HasColumnName("SVYAZC"); + + b.Property("Svyazu") + .HasColumnType("real") + .HasColumnName("SVYAZU"); + + b.Property("Svydls") + .HasColumnType("real") + .HasColumnName("SVYDLS"); + + b.Property("Svyew") + .HasColumnType("real") + .HasColumnName("SVYEW"); + + b.Property("Svygtf") + .HasColumnType("real") + .HasColumnName("SVYGTF"); + + b.Property("Svyinc") + .HasColumnType("real") + .HasColumnName("SVYINC"); + + b.Property("Svymtf") + .HasColumnType("real") + .HasColumnName("SVYMTF"); + + b.Property("Svyns") + .HasColumnType("real") + .HasColumnName("SVYNS"); + + b.Property("Svytype") + .HasColumnType("text") + .HasColumnName("SVYTYPE"); + + b.Property("Svywalk") + .HasColumnType("real") + .HasColumnName("SVYWALK"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_7"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record8", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptbitv") + .HasColumnType("real") + .HasColumnName("DEPTBITV"); + + b.Property("Deptcalm") + .HasColumnType("real") + .HasColumnName("DEPTCALM"); + + b.Property("Deptcalv") + .HasColumnType("real") + .HasColumnName("DEPTCALV"); + + b.Property("Deptfdm") + .HasColumnType("real") + .HasColumnName("DEPTFDM"); + + b.Property("Deptfdv") + .HasColumnType("real") + .HasColumnName("DEPTFDV"); + + b.Property("Deptgr1m") + .HasColumnType("real") + .HasColumnName("DEPTGR1M"); + + b.Property("Deptgr1v") + .HasColumnType("real") + .HasColumnName("DEPTGR1V"); + + b.Property("Deptgr2m") + .HasColumnType("real") + .HasColumnName("DEPTGR2M"); + + b.Property("Deptgr2v") + .HasColumnType("real") + .HasColumnName("DEPTGR2V"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptp1m") + .HasColumnType("real") + .HasColumnName("DEPTP1M"); + + b.Property("Deptp1v") + .HasColumnType("real") + .HasColumnName("DEPTP1V"); + + b.Property("Deptp2m") + .HasColumnType("real") + .HasColumnName("DEPTP2M"); + + b.Property("Deptp2v") + .HasColumnType("real") + .HasColumnName("DEPTP2V"); + + b.Property("Deptrs1m") + .HasColumnType("real") + .HasColumnName("DEPTRS1M"); + + b.Property("Deptrs1v") + .HasColumnType("real") + .HasColumnName("DEPTRS1V"); + + b.Property("Deptrs2m") + .HasColumnType("real") + .HasColumnName("DEPTRS2M"); + + b.Property("Deptrs2v") + .HasColumnType("real") + .HasColumnName("DEPTRS2V"); + + b.Property("Deptvert") + .HasColumnType("real") + .HasColumnName("DEPTVERT"); + + b.Property("Mclp") + .HasColumnType("real") + .HasColumnName("MCLP"); + + b.Property("Mfd") + .HasColumnType("real") + .HasColumnName("MFD"); + + b.Property("Mffp") + .HasColumnType("real") + .HasColumnName("MFFP"); + + b.Property("Mfpp") + .HasColumnType("real") + .HasColumnName("MFPP"); + + b.Property("Mfrann") + .HasColumnType("real") + .HasColumnName("MFRANN"); + + b.Property("Mfrpipe") + .HasColumnType("real") + .HasColumnName("MFRPIPE"); + + b.Property("Mftann") + .HasColumnType("real") + .HasColumnName("MFTANN"); + + b.Property("Mftpipe") + .HasColumnType("real") + .HasColumnName("MFTPIPE"); + + b.Property("Mg1") + .HasColumnType("real") + .HasColumnName("MG1"); + + b.Property("Mg1c") + .HasColumnType("real") + .HasColumnName("MG1C"); + + b.Property("Mg2") + .HasColumnType("real") + .HasColumnName("MG2"); + + b.Property("Mg2c") + .HasColumnType("real") + .HasColumnName("MG2C"); + + b.Property("Mpo1") + .HasColumnType("real") + .HasColumnName("MPO1"); + + b.Property("Mpo2") + .HasColumnType("real") + .HasColumnName("MPO2"); + + b.Property("Mr1") + .HasColumnType("real") + .HasColumnName("MR1"); + + b.Property("Mr1c") + .HasColumnType("real") + .HasColumnName("MR1C"); + + b.Property("Mr2") + .HasColumnType("real") + .HasColumnName("MR2"); + + b.Property("Mr2c") + .HasColumnType("real") + .HasColumnName("MR2C"); + + b.Property("Passnum") + .HasColumnType("smallint") + .HasColumnName("PASSNUM"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Spare6") + .HasColumnType("real") + .HasColumnName("SPARE6"); + + b.Property("Spare7") + .HasColumnType("real") + .HasColumnName("SPARE7"); + + b.Property("Spare8") + .HasColumnType("real") + .HasColumnName("SPARE8"); + + b.Property("Spare9") + .HasColumnType("real") + .HasColumnName("SPARE9"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_8"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Cluster", b => + { + b.HasOne("AsbCloudDb.Model.Deposit", "Deposit") + .WithMany("Clusters") + .HasForeignKey("IdDeposit") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_cluster_t_deposit_id_fk"); + + b.Navigation("Deposit"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Company", b => + { + b.HasOne("AsbCloudDb.Model.CompanyType", "CompanyType") + .WithMany("Companies") + .HasForeignKey("IdCompanyType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("CompanyType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Contact", b => + { + b.HasOne("AsbCloudDb.Model.CompanyType", "CompanyType") + .WithMany("Contacts") + .HasForeignKey("IdCompanyType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("Contacts") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("CompanyType"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DailyReports.DailyReport", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DataSaubStat", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DetectedOperation", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillTest", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillingProgramPart", b => + { + b.HasOne("AsbCloudDb.Model.FileCategory", "FileCategory") + .WithMany() + .HasForeignKey("IdFileCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("DrillingProgramParts") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("FileCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Faq", b => + { + b.HasOne("AsbCloudDb.Model.User", "AuthorAnswer") + .WithMany() + .HasForeignKey("IdAuthorAnswer"); + + b.HasOne("AsbCloudDb.Model.User", "AuthorQuestion") + .WithMany() + .HasForeignKey("IdAuthorQuestion") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("AuthorAnswer"); + + b.Navigation("AuthorQuestion"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileInfo", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany("Files") + .HasForeignKey("IdAuthor"); + + b.HasOne("AsbCloudDb.Model.FileCategory", "FileCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("FileCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileMark", b => + { + b.HasOne("AsbCloudDb.Model.FileInfo", "FileInfo") + .WithMany("FileMarks") + .HasForeignKey("IdFile") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_file_mark_t_file_info_fk"); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany("FileMarks") + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_user_t_file_mark_fk"); + + b.Navigation("FileInfo"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemFloat", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemInt", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemString", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.HelpPage", b => + { + b.HasOne("AsbCloudDb.Model.FileCategory", "FileCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("FileCategory"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.LimitingParameter", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Manuals.Manual", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.FileCategory", "Category") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Manuals.ManualDirectory", "Directory") + .WithMany("Manuals") + .HasForeignKey("IdDirectory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Category"); + + b.Navigation("Directory"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Manuals.ManualDirectory", b => + { + b.HasOne("AsbCloudDb.Model.Manuals.ManualDirectory", "Parent") + .WithMany("Children") + .HasForeignKey("IdParent") + .OnDelete(DeleteBehavior.Cascade); + + b.Navigation("Parent"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Measure", b => + { + b.HasOne("AsbCloudDb.Model.MeasureCategory", "Category") + .WithMany("Measures") + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Category"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Notification", b => + { + b.HasOne("AsbCloudDb.Model.NotificationCategory", "NotificationCategory") + .WithMany("Notifications") + .HasForeignKey("IdNotificationCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("NotificationCategory"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.OperationValue", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdOperationCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAntiCrashRotation", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAntiCrashRotation", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAutoHoldTF", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAutoHoldTF", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDamper", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDamper", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDrillTest", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDrillTest", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanOscillation", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanOscillation", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanShockTest", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanShockTest", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanStaticMeasurementOutput", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanStaticMeasurementOutput", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanLoadCapacity", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanLoadCapacity", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanOscillationAngles", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanOscillationAngles", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanPositioningOffTheBottom", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanPositioningOffTheBottom", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingRotor", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingRotor", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingSlide", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingSlide", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRecordingStaticMeasurement", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRecordingStaticMeasurement", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRotor", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRotor", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSlide", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSlide", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingOffThePump", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict) + .HasConstraintName("FK_t_process_map_plan_operation_switching_off_the_pump_t_user~1"); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingOffThePump", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_t_process_map_plan_operation_switching_off_the_pump_t_well~1"); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingToTheMode", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingToTheMode", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanTFOrientation", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanTFOrientation", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => + { + b.HasOne("AsbCloudDb.Model.Company", "Company") + .WithMany("RelationCompaniesWells") + .HasForeignKey("IdCompany") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_relation_company_well_t_company_id_fk"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("RelationCompaniesWells") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_relation_company_well_t_well_id_fk"); + + b.Navigation("Company"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationContactWell", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany("RelationContactsWells") + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserDrillingProgramPart", b => + { + b.HasOne("AsbCloudDb.Model.DrillingProgramPart", "DrillingProgramPart") + .WithMany("RelatedUsers") + .HasForeignKey("IdDrillingProgramPart") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("DrillingProgramPart"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRolePermission", b => + { + b.HasOne("AsbCloudDb.Model.Permission", "Permission") + .WithMany("RelationUserRolePermissions") + .HasForeignKey("IdPermission") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "UserRole") + .WithMany("RelationUserRolePermissions") + .HasForeignKey("IdUserRole") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Permission"); + + b.Navigation("UserRole"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRoleUserRole", b => + { + b.HasOne("AsbCloudDb.Model.UserRole", "Role") + .WithMany("RelationUserRoleUserRoles") + .HasForeignKey("Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "IncludeRole") + .WithMany() + .HasForeignKey("IdInclude") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("IncludeRole"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserUserRole", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany("RelationUsersUserRoles") + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "UserRole") + .WithMany("RelationUsersUserRoles") + .HasForeignKey("IdUserRole") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + + b.Navigation("UserRole"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ReportProperty", b => + { + b.HasOne("AsbCloudDb.Model.FileInfo", "File") + .WithMany() + .HasForeignKey("IdFile") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("File"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Schedule", b => + { + b.HasOne("AsbCloudDb.Model.Driller", "Driller") + .WithMany("Schedule") + .HasForeignKey("IdDriller") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_schedule_t_driller_id_driller"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Driller"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.SetpointsRequest", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaub", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("DataSaub") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_data_saub_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSpin", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("DataSpin") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_data_spin_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryEvent", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Events") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_event_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryMessage", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Messages") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_messages_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryUser", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Users") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_user_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Trajectory.TrajectoryFact", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Trajectory.TrajectoryPlan", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.HasOne("AsbCloudDb.Model.Company", "Company") + .WithMany("Users") + .HasForeignKey("IdCompany") + .OnDelete(DeleteBehavior.SetNull) + .IsRequired() + .HasConstraintName("t_user_t_company_id_fk"); + + b.Navigation("Company"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserSetting", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", b => + { + b.HasOne("AsbCloudDb.Model.Cluster", "Cluster") + .WithMany("Wells") + .HasForeignKey("IdCluster") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_t_cluster_id_fk"); + + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithOne("Well") + .HasForeignKey("AsbCloudDb.Model.Well", "IdTelemetry") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("t_well_t_telemetry_id_fk"); + + b.HasOne("AsbCloudDb.Model.WellType", "WellType") + .WithMany("Wells") + .HasForeignKey("IdWellType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Cluster"); + + b.Navigation("Telemetry"); + + b.Navigation("WellType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellComposite", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("WellComposites") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_t_well_id_fk"); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany("WellComposites") + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_t_well_section_type_id_fk"); + + b.HasOne("AsbCloudDb.Model.Well", "WellSrc") + .WithMany("WellCompositeSrcs") + .HasForeignKey("IdWellSrc") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_src_t_well_id_fk"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + + b.Navigation("WellSrc"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellFinalDocument", b => + { + b.HasOne("AsbCloudDb.Model.FileCategory", "Category") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Category"); + + b.Navigation("User"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperation", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellOperation", "OperationPlan") + .WithMany() + .HasForeignKey("IdPlan") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("WellOperations") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany("WellOperations") + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("OperationPlan"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperationCategory", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "Parent") + .WithMany() + .HasForeignKey("IdParent"); + + b.Navigation("Parent"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSections.WellSectionPlan", b => + { + b.HasOne("AsbCloudDb.Model.WellSectionType", "SectionType") + .WithMany() + .HasForeignKey("IdSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("SectionType"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record1", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record1", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record50", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record50", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record60", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record60", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record61", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record61", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record7", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record7", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record8", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record8", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Cluster", b => + { + b.Navigation("Wells"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Company", b => + { + b.Navigation("RelationCompaniesWells"); + + b.Navigation("Users"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.CompanyType", b => + { + b.Navigation("Companies"); + + b.Navigation("Contacts"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Deposit", b => + { + b.Navigation("Clusters"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Driller", b => + { + b.Navigation("Schedule"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillingProgramPart", b => + { + b.Navigation("RelatedUsers"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileInfo", b => + { + b.Navigation("FileMarks"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Manuals.ManualDirectory", b => + { + b.Navigation("Children"); + + b.Navigation("Manuals"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.MeasureCategory", b => + { + b.Navigation("Measures"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.NotificationCategory", b => + { + b.Navigation("Notifications"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Permission", b => + { + b.Navigation("RelationUserRolePermissions"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Telemetry", b => + { + b.Navigation("DataSaub"); + + b.Navigation("DataSpin"); + + b.Navigation("Events"); + + b.Navigation("Messages"); + + b.Navigation("Users"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.Navigation("FileMarks"); + + b.Navigation("Files"); + + b.Navigation("RelationContactsWells"); + + b.Navigation("RelationUsersUserRoles"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserRole", b => + { + b.Navigation("RelationUserRolePermissions"); + + b.Navigation("RelationUserRoleUserRoles"); + + b.Navigation("RelationUsersUserRoles"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", b => + { + b.Navigation("Contacts"); + + b.Navigation("DrillingProgramParts"); + + b.Navigation("RelationCompaniesWells"); + + b.Navigation("WellCompositeSrcs"); + + b.Navigation("WellComposites"); + + b.Navigation("WellOperations"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSectionType", b => + { + b.Navigation("WellComposites"); + + b.Navigation("WellOperations"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellType", b => + { + b.Navigation("Wells"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/AsbCloudDb/Migrations/20240724070443_Update_WellSectionType_Order.cs b/AsbCloudDb/Migrations/20240724070443_Update_WellSectionType_Order.cs new file mode 100644 index 00000000..24c5b912 --- /dev/null +++ b/AsbCloudDb/Migrations/20240724070443_Update_WellSectionType_Order.cs @@ -0,0 +1,158 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace AsbCloudDb.Migrations +{ + /// + public partial class Update_WellSectionType_Order : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.UpdateData( + table: "t_well_section_type", + keyColumn: "id", + keyValue: 1, + column: "order", + value: 5f); + + migrationBuilder.UpdateData( + table: "t_well_section_type", + keyColumn: "id", + keyValue: 5, + column: "order", + value: 4f); + + migrationBuilder.UpdateData( + table: "t_well_section_type", + keyColumn: "id", + keyValue: 7, + column: "order", + value: 5.1f); + + migrationBuilder.UpdateData( + table: "t_well_section_type", + keyColumn: "id", + keyValue: 11, + column: "order", + value: 4.1f); + + migrationBuilder.UpdateData( + table: "t_well_section_type", + keyColumn: "id", + keyValue: 13, + column: "order", + value: 5.2f); + + migrationBuilder.UpdateData( + table: "t_well_section_type", + keyColumn: "id", + keyValue: 17, + column: "order", + value: 4.2f); + + migrationBuilder.UpdateData( + table: "t_well_section_type", + keyColumn: "id", + keyValue: 19, + column: "order", + value: 5.3f); + + migrationBuilder.UpdateData( + table: "t_well_section_type", + keyColumn: "id", + keyValue: 23, + column: "order", + value: 4.3f); + + migrationBuilder.UpdateData( + table: "t_well_section_type", + keyColumn: "id", + keyValue: 25, + column: "order", + value: 5.4f); + + migrationBuilder.UpdateData( + table: "t_well_section_type", + keyColumn: "id", + keyValue: 29, + column: "order", + value: 4.4f); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.UpdateData( + table: "t_well_section_type", + keyColumn: "id", + keyValue: 1, + column: "order", + value: 4f); + + migrationBuilder.UpdateData( + table: "t_well_section_type", + keyColumn: "id", + keyValue: 5, + column: "order", + value: 5f); + + migrationBuilder.UpdateData( + table: "t_well_section_type", + keyColumn: "id", + keyValue: 7, + column: "order", + value: 4.1f); + + migrationBuilder.UpdateData( + table: "t_well_section_type", + keyColumn: "id", + keyValue: 11, + column: "order", + value: 5.1f); + + migrationBuilder.UpdateData( + table: "t_well_section_type", + keyColumn: "id", + keyValue: 13, + column: "order", + value: 4.2f); + + migrationBuilder.UpdateData( + table: "t_well_section_type", + keyColumn: "id", + keyValue: 17, + column: "order", + value: 5.2f); + + migrationBuilder.UpdateData( + table: "t_well_section_type", + keyColumn: "id", + keyValue: 19, + column: "order", + value: 4.3f); + + migrationBuilder.UpdateData( + table: "t_well_section_type", + keyColumn: "id", + keyValue: 23, + column: "order", + value: 5.3f); + + migrationBuilder.UpdateData( + table: "t_well_section_type", + keyColumn: "id", + keyValue: 25, + column: "order", + value: 4.4f); + + migrationBuilder.UpdateData( + table: "t_well_section_type", + keyColumn: "id", + keyValue: 29, + column: "order", + value: 5.4f); + } + } +} diff --git a/AsbCloudDb/Migrations/20240729063346_Update_WellSectionType_Caption.Designer.cs b/AsbCloudDb/Migrations/20240729063346_Update_WellSectionType_Caption.Designer.cs new file mode 100644 index 00000000..77f99d5d --- /dev/null +++ b/AsbCloudDb/Migrations/20240729063346_Update_WellSectionType_Caption.Designer.cs @@ -0,0 +1,12236 @@ +// +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("20240729063346_Update_WellSectionType_Caption")] + partial class Update_WellSectionType_Caption + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .UseCollation("Russian_Russia.1251") + .HasAnnotation("ProductVersion", "8.0.4") + .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", t => + { + t.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") + .HasColumnName("is_contact"); + + b.Property("Order") + .HasColumnType("integer") + .HasColumnName("order"); + + b.HasKey("Id"); + + b.ToTable("t_company_type"); + + b.HasData( + new + { + Id = 1, + Caption = "Недропользователь", + IsContact = true, + Order = 3 + }, + new + { + Id = 2, + Caption = "Буровой подрядчик", + IsContact = true, + Order = 2 + }, + new + { + Id = 3, + Caption = "Сервис автоматизации бурения", + IsContact = true, + Order = 0 + }, + new + { + Id = 4, + Caption = "Сервис по ГТИ", + IsContact = true, + Order = 6 + }, + new + { + Id = 5, + Caption = "Растворный сервис", + IsContact = true, + Order = 4 + }, + new + { + Id = 6, + Caption = "Сервис по ННБ", + IsContact = true, + Order = 5 + }, + new + { + Id = 7, + Caption = "Служба супервайзинга", + IsContact = false, + Order = 1 + }, + new + { + Id = 9, + Caption = "Сервис по цементированию", + IsContact = true, + Order = 7 + }, + new + { + Id = 11, + Caption = "Дизельный сервис", + IsContact = false, + Order = 9 + }, + new + { + Id = 12, + Caption = "Сервис по обслуживанию верхних силовых приводов", + IsContact = true, + Order = 8 + }); + }); + + 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") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("email") + .HasComment("email"); + + b.Property("FullName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("full_name") + .HasComment("ФИО"); + + b.Property("IdCompanyType") + .HasMaxLength(255) + .HasColumnType("integer") + .HasColumnName("id_company_type") + .HasComment("вид деятельности"); + + b.Property("IdWell") + .HasMaxLength(255) + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("ключ скважины"); + + b.Property("Phone") + .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.HasIndex("IdWell"); + + b.ToTable("t_contact", t => + { + t.HasComment("Контакты"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DailyReports.DailyReport", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Date") + .HasColumnType("date") + .HasColumnName("date") + .HasComment("Дата формирования отчёта"); + + b.Property("DateLastUpdate") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_last_update") + .HasComment("Дата последнего обновления"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("ID скважины"); + + b.Property("SignBlock") + .HasColumnType("jsonb") + .HasColumnName("sign_block") + .HasComment("Подпись"); + + b.Property("SubsystemBlock") + .HasColumnType("jsonb") + .HasColumnName("subsystem_block") + .HasComment("Наработкой подсистем"); + + b.Property("TimeBalanceBlock") + .HasColumnType("jsonb") + .HasColumnName("time_balance_block") + .HasComment("Баланс времени"); + + b.HasKey("Id"); + + b.HasIndex("IdWell", "Date") + .IsUnique(); + + b.ToTable("t_daily_report", t => + { + t.HasComment("Ежедневные отчёты"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DataSaubStat", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AxialLoad") + .HasColumnType("double precision") + .HasColumnName("axial_load") + .HasComment("Фактическая нагрузка"); + + b.Property("AxialLoadLimitMax") + .HasColumnType("double precision") + .HasColumnName("axial_load_limit_max") + .HasComment("Максимально допустимая нагрузка"); + + b.Property("AxialLoadSp") + .HasColumnType("double precision") + .HasColumnName("axial_load_sp") + .HasComment("Ограничение факт. нагрузки"); + + b.Property("BlockSpeedSp") + .HasColumnType("double precision") + .HasColumnName("block_speed_sp") + .HasComment("Ограничение скорости блока"); + + 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("EnabledSubsystems") + .HasColumnType("integer") + .HasColumnName("enabled_subsystems") + .HasComment("Флаги подсистем"); + + b.Property("Flow") + .HasColumnType("double precision") + .HasColumnName("flow") + .HasComment("Фактический расход"); + + b.Property("HasOscillation") + .HasColumnType("boolean") + .HasColumnName("has_oscillation") + .HasComment("Наличие или отсутствие осцилляции"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category") + .HasComment("Название автоопределённой операции"); + + b.Property("IdFeedRegulator") + .HasColumnType("smallint") + .HasColumnName("id_feed_regulator") + .HasComment("Работа при достижении ограничения"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry") + .HasComment("Ключ телеметрии"); + + b.Property("Pressure") + .HasColumnType("double precision") + .HasColumnName("pressure") + .HasComment("Давление"); + + b.Property("PressureIdle") + .HasColumnType("double precision") + .HasColumnName("pressure_idle") + .HasComment("Давление холостого хода"); + + b.Property("PressureSp") + .HasColumnType("double precision") + .HasColumnName("pressure_sp") + .HasComment("Ограничение фактического давления"); + + b.Property("RotorSpeed") + .HasColumnType("double precision") + .HasColumnName("rotor_speed") + .HasComment("Фактическая скорость оборотов ВСП"); + + b.Property("RotorTorque") + .HasColumnType("double precision") + .HasColumnName("rotor_torque") + .HasComment("Фактический момент"); + + b.Property("RotorTorqueLimitMax") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_limit_max") + .HasComment("Максимально допустимый момент"); + + b.Property("RotorTorqueSp") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_sp") + .HasComment("Ограничение факт. момента"); + + b.Property("Speed") + .HasColumnType("double precision") + .HasColumnName("speed") + .HasComment("Скорость бурения"); + + b.HasKey("Id"); + + b.HasIndex("IdCategory"); + + b.HasIndex("IdTelemetry"); + + b.ToTable("t_data_saub_stat", t => + { + t.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", t => + { + t.HasComment("Месторождение"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DetectedOperation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + 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("EnabledSubsystems") + .HasColumnType("integer") + .HasColumnName("enabled_subsystems") + .HasComment("флаги включенных подсистем"); + + b.Property("ExtraData") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("extra_data") + .HasComment("доп. инфо по операции"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category") + .HasComment("Id категории операции"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .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", t => + { + t.HasComment("автоматически определенные операции по телеметрии"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillTest", b => + { + b.Property("Id") + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry") + .HasComment("Идентификатор телеметрии"); + + b.Property("DepthStart") + .HasColumnType("real") + .HasColumnName("depthStart") + .HasComment("Глубина начала"); + + b.Property("Params") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("t_drill_test_params") + .HasComment("Параметры записи drill test"); + + b.Property("TimeStampStart") + .HasColumnType("timestamp with time zone") + .HasColumnName("timestamp_start") + .HasComment("Время начала"); + + b.HasKey("Id", "IdTelemetry"); + + b.HasIndex("IdTelemetry"); + + b.ToTable("t_drill_test", t => + { + t.HasComment("Drill_test"); + }); + }); + + 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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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", t => + { + t.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 = 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" + }, + new + { + Id = 528, + Description = "Разрешение на удаление контакта", + Name = "WellContact.delete" + }, + new + { + Id = 530, + Description = "Разрешение на редактирование плановой конструкции скважины", + Name = "WellSectionPlan.edit" + }, + new + { + Id = 531, + Description = "Разрешение на удаление плановой конструкции скважины", + Name = "WellSectionPlan.delete" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAntiCrashRotation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("TopDriveRpmMin") + .HasColumnType("double precision") + .HasColumnName("top_drive_rpm_min") + .HasComment("Минимальные обороты ВСП, об/мин"); + + b.Property("TopDriveStartMinFlowRate") + .HasColumnType("double precision") + .HasColumnName("top_drive_start_min_flow_rate") + .HasComment("Минимальный расход для запуска оборотов ВСП, л/сек"); + + b.Property("TopDriveTorqueMax") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque_max") + .HasComment("Максимально допустимый момент на ВСП при противоаварийном вращении, кН*м"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_anti_crash_rotation", t => + { + t.HasComment("Противоаварийное вращение"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAutoHoldTF", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("ZenithAngle") + .HasColumnType("double precision") + .HasColumnName("zenit_angle") + .HasComment("Зенитный угол, градусы"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_auto_hold_tf", t => + { + t.HasComment("Автоудержание TF"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDamper", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("StickSlip") + .HasColumnType("double precision") + .HasColumnName("stick_slip") + .HasComment("StickSlip"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_functions_damper", t => + { + t.HasComment("Демпфер"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDrillTest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("LengthStep") + .HasColumnType("double precision") + .HasColumnName("length_step") + .HasComment("Величина проходки шага, м."); + + b.Property("Note") + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("RpmMin") + .HasColumnType("double precision") + .HasColumnName("rpm_min") + .HasComment("Минимальные обороты на ВСП, об/мин."); + + b.Property("RpmStepsCount") + .HasColumnType("integer") + .HasColumnName("rpm_steps_count") + .HasComment("Количество шагов оборотов на ВСП, об/мин."); + + b.Property("WeightOnBitMin") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_min") + .HasComment("Нагрузка минимальная, т"); + + b.Property("WeightOnBitStepsCount") + .HasColumnType("integer") + .HasColumnName("weight_on_bit_steps_count") + .HasComment("Количество шагов по нагрузке"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_drilltest", t => + { + t.HasComment("DrillTest"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanOscillation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Mode") + .HasColumnType("integer") + .HasColumnName("mode") + .HasComment("Режим Авто/Руч"); + + b.Property("Note") + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("OptimalOscillationAngle") + .HasColumnType("double precision") + .HasColumnName("optimal_oscillation_angle") + .HasComment("Оптимальный угол осцилляции, градусы"); + + b.Property("RpmLeft") + .HasColumnType("double precision") + .HasColumnName("Rpm_left") + .HasComment("Скорость влево, об/мин"); + + b.Property("RpmRight") + .HasColumnType("double precision") + .HasColumnName("Rpm_right") + .HasComment("Скорость вправо, об/мин"); + + b.Property("TorqueMaxLeft") + .HasColumnType("double precision") + .HasColumnName("torque_max_left") + .HasComment("Ограничение момента влево, кН*м"); + + b.Property("TorqueMaxRight") + .HasColumnType("double precision") + .HasColumnName("torque_max_right") + .HasComment("Ограничение момента вправо, кН*м"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_oscillation", t => + { + t.HasComment("Осцилляция"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanShockTest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AxialVibrations") + .HasColumnType("double precision") + .HasColumnName("axial_vibrations") + .HasComment("Осевые вибрации"); + + b.Property("CombinedVibrations") + .HasColumnType("double precision") + .HasColumnName("combined_vibrations") + .HasComment("Комбинированные вибрации"); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("RpmMin") + .HasColumnType("double precision") + .HasColumnName("rpm_min") + .HasComment("Минимальные обороты на ВСП, об/мин."); + + b.Property("StickSlip") + .HasColumnType("double precision") + .HasColumnName("stick_slip") + .HasComment("stickSlip"); + + b.Property("WeightOnBitMin") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_min") + .HasComment("Нагрузка минимальная, т"); + + b.Property("Whirl") + .HasColumnType("double precision") + .HasColumnName("whirl") + .HasComment("Whirl"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_shock_test", t => + { + t.HasComment("ShockTest"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanStaticMeasurementOutput", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("SignalWaitingTime") + .HasColumnType("double precision") + .HasColumnName("signal_waiting_time") + .HasComment("Время ожидания выхода сигнала с ТМС, сек."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_static_measurement_output", t => + { + t.HasComment("Выход статического замера"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanLoadCapacity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressureMin") + .HasColumnType("double precision") + .HasColumnName("differential_pressure_min") + .HasComment("Перепад давления минимальный, атм"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("TimeLoadCapacityMin") + .HasColumnType("double precision") + .HasColumnName("time_load_capacity_min") + .HasComment("Время выработки минимальное, сек"); + + b.Property("WeightOnBitMin") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_min") + .HasComment("Нагрузка минимальная, т"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_load_capacity", t => + { + t.HasComment("РТК выработка нагрузки"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanOscillationAngles", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("Rpm") + .HasColumnType("double precision") + .HasColumnName("rpm") + .HasComment("Обороты на ВСП, об/мин., Уставка"); + + b.Property("RpmMax") + .HasColumnType("double precision") + .HasColumnName("rpm_max") + .HasComment("Обороты на ВСП, об/мин., Ограничение"); + + b.Property("TopDriveTorque") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque") + .HasComment("Момент на ВСП, кН*м., Уставка"); + + b.Property("TopDriveTorqueMax") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque_max") + .HasComment("Момент на ВСП, кН*м., Ограничение"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_operation_oscillation_angels", t => + { + t.HasComment("Определение углов осцилляции"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanPositioningOffTheBottom", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления уставка, атм."); + + b.Property("FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("flow_rate_down") + .HasComment("Расход вниз, л/с."); + + b.Property("FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("flow_rate_up") + .HasComment("Расход вверх, л/с."); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("RopDown") + .HasColumnType("double precision") + .HasColumnName("rop_down") + .HasComment("Скорость вниз, м/ч."); + + b.Property("RopUp") + .HasColumnType("double precision") + .HasColumnName("rop_up") + .HasComment("Скорость вверх, м/ч."); + + b.Property("RpmDown") + .HasColumnType("double precision") + .HasColumnName("rpm_down") + .HasComment("Обороты вниз, об/мин."); + + b.Property("RpmUp") + .HasColumnType("double precision") + .HasColumnName("rpm_up") + .HasComment("Обороты вверх, об/мин."); + + b.Property("SlackingOff") + .HasColumnType("double precision") + .HasColumnName("slacking_off") + .HasComment("Посадка, т."); + + b.Property("StopOffTheBottom") + .HasColumnType("double precision") + .HasColumnName("stop_off_the_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Tight") + .HasColumnType("double precision") + .HasColumnName("tight") + .HasComment("Затяжка, т."); + + b.Property("TorqueMax") + .HasColumnType("double precision") + .HasColumnName("torque_max") + .HasComment("Максимально допустимый момент, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_positioning_off_the_bottom", t => + { + t.HasComment("Позиционирование над забоем"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingRotor", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления уставка, атм."); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("Reaming1FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_flow_rate_down") + .HasComment("Проработка 1, Расход, л/с., Вниз"); + + b.Property("Reaming1FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_flow_rate_up") + .HasComment("Проработка 1, Расход, л/с., Вверх"); + + b.Property("Reaming1Interval") + .HasColumnType("double precision") + .HasColumnName("reaming1_interval") + .HasComment("Проработка 1, Интервал проработки, м."); + + b.Property("Reaming1RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("reaming1_repetitions_count") + .HasComment("Проработка 1. Количество повторений, шт."); + + b.Property("Reaming1RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_rop_down") + .HasComment("Проработка 1, Скорость, м/ч., Вниз"); + + b.Property("Reaming1RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_rop_up") + .HasComment("Проработка 1. Скорость вверх, м/ч."); + + b.Property("Reaming1RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_rpm_down") + .HasComment("Проработка 1, Обороты, об/мин., Вниз"); + + b.Property("Reaming1RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_rpm_up") + .HasComment("Проработка 1, Обороты, об/мин., Вверх"); + + b.Property("Reaming1StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming1_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Reaming2FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_flow_rate_down") + .HasComment("Проработка 2, Расход, л/с., Вниз"); + + b.Property("Reaming2FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_flow_rate_up") + .HasComment("Проработка 2, Расход, л/с., Вверх"); + + b.Property("Reaming2Interval") + .HasColumnType("double precision") + .HasColumnName("reaming2_interval") + .HasComment("Проработка 2, Интервал проработки, м."); + + b.Property("Reaming2RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("reaming2_repetitions_count") + .HasComment("Проработка 2, Количество повторений, шт."); + + b.Property("Reaming2RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_rop_down") + .HasComment("Проработка 2, Скорость, м/ч., Вниз"); + + b.Property("Reaming2RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_rop_up") + .HasComment("Проработка 2, Скорость, м/ч., Вверх"); + + b.Property("Reaming2RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_rpm_down") + .HasComment("Проработка 2, Обороты, об/мин., Вниз"); + + b.Property("Reaming2RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_rpm_up") + .HasComment("Проработка 2, Обороты, об/мин., Вверх"); + + b.Property("Reaming2StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming2_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Reaming3FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_flow_rate_down") + .HasComment("Проработка 3, Расход, л/с., Вниз"); + + b.Property("Reaming3FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_flow_rate_up") + .HasComment("Проработка 3, Расход, л/с., Вверх"); + + b.Property("Reaming3Interval") + .HasColumnType("double precision") + .HasColumnName("reaming3_interval") + .HasComment("Проработка 3, Интервал проработки, м."); + + b.Property("Reaming3RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("reaming3_repetitions_count") + .HasComment("Проработка 3, Количество повторений, шт."); + + b.Property("Reaming3RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_rop_down") + .HasComment("Проработка 3, Скорость, м/ч., Вниз"); + + b.Property("Reaming3RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_rop_up") + .HasComment("Проработка 3, Скорость, м/ч., Вверх"); + + b.Property("Reaming3RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_rpm_down") + .HasComment("Проработка 3, Обороты, об/мин., Вниз"); + + b.Property("Reaming3RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_rpm_up") + .HasComment("Проработка 3, Обороты, об/мин., Вверх"); + + b.Property("Reaming3StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming3_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("SlackingOff") + .HasColumnType("double precision") + .HasColumnName("slacking_off") + .HasComment("Посадка, т."); + + b.Property("Tight") + .HasColumnType("double precision") + .HasColumnName("tight") + .HasComment("Затяжка, т."); + + b.Property("TorqueMax") + .HasColumnType("double precision") + .HasColumnName("torque_max") + .HasComment("Максимально допустимый момент, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_operation_reaming_rotor", t => + { + t.HasComment("РТК проработка ротор"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingSlide", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления уставка, атм."); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("Reaming1FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_flow_rate_down") + .HasComment("Проработка 1, Расход, л/с., Вниз"); + + b.Property("Reaming1FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_flow_rate_up") + .HasComment("Проработка 1, Расход, л/с., Вверх"); + + b.Property("Reaming1Interval") + .HasColumnType("double precision") + .HasColumnName("reaming1_interval") + .HasComment("Проработка 1, Интервал проработки, м."); + + b.Property("Reaming1RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("reaming1_repetitions_count") + .HasComment("Проработка 1. Количество повторений, шт."); + + b.Property("Reaming1RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_rop_down") + .HasComment("Проработка 1. Скорость вниз, м/ч."); + + b.Property("Reaming1RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_rop_up") + .HasComment("Проработка 1. Скорость вверх, м/ч."); + + b.Property("Reaming1RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_rpm_down") + .HasComment("Проработка 1, Обороты, об/мин., Вниз"); + + b.Property("Reaming1RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_rpm_up") + .HasComment("Проработка 1, Обороты, об/мин., Вверх"); + + b.Property("Reaming1StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming1_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Reaming2FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_flow_rate_down") + .HasComment("Проработка 2, Расход, л/с., Вниз"); + + b.Property("Reaming2FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_flow_rate_up") + .HasComment("Проработка 2, Расход, л/с., Вверх"); + + b.Property("Reaming2Interval") + .HasColumnType("double precision") + .HasColumnName("reaming2_interval") + .HasComment("Проработка 2, Интервал проработки, м."); + + b.Property("Reaming2RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("reaming2_repetitions_count") + .HasComment("Проработка 2, Количество повторений, шт."); + + b.Property("Reaming2RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_rop_down") + .HasComment("Проработка 2, Скорость, м/ч., Вниз"); + + b.Property("Reaming2RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_rop_up") + .HasComment("Проработка 2, Скорость, м/ч., Вверх"); + + b.Property("Reaming2RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_rpm_down") + .HasComment("Проработка 2, Обороты, об/мин., Вниз"); + + b.Property("Reaming2RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_rpm_up") + .HasComment("Проработка 2, Обороты, об/мин., Вверх"); + + b.Property("Reaming2StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming2_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Reaming3FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_flow_rate_down") + .HasComment("Проработка 3, Расход, л/с., Вниз"); + + b.Property("Reaming3FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_flow_rate_up") + .HasComment("Проработка 3, Расход, л/с., Вверх"); + + b.Property("Reaming3Interval") + .HasColumnType("double precision") + .HasColumnName("reaming3_interval") + .HasComment("Проработка 3, Интервал проработки, м."); + + b.Property("Reaming3RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("reaming3_repetitions_count") + .HasComment("Проработка 3, Количество повторений, шт."); + + b.Property("Reaming3RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_rop_down") + .HasComment("Проработка 3, Скорость, м/ч., Вниз"); + + b.Property("Reaming3RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_rop_up") + .HasComment("Проработка 3, Скорость, м/ч., Вверх"); + + b.Property("Reaming3RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_rpm_down") + .HasComment("Проработка 3, Обороты, об/мин., Вниз"); + + b.Property("Reaming3RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_rpm_up") + .HasComment("Проработка 3, Обороты, об/мин., Вверх"); + + b.Property("Reaming3StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming3_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("SlackingOff") + .HasColumnType("double precision") + .HasColumnName("slacking_off") + .HasComment("Посадка, т."); + + b.Property("Tight") + .HasColumnType("double precision") + .HasColumnName("tight") + .HasComment("Затяжка, т."); + + b.Property("TorqueMax") + .HasColumnType("double precision") + .HasColumnName("torque_max") + .HasComment("Максимально допустимый момент, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_reaming_slide", t => + { + t.HasComment("РТК проработка слайд"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRecordingStaticMeasurement", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("MeasurementRecordingTime") + .HasColumnType("double precision") + .HasColumnName("measurement_recording_time") + .HasComment("Время записи замера, сек"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_recording_static_measurement", t => + { + t.HasComment("Запись статического замера"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRotor", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления, атм. Уставка"); + + b.Property("DifferentialPressureMax") + .HasColumnType("double precision") + .HasColumnName("differential_pressure_max") + .HasComment("Перепад давления, атм. Ограничение"); + + b.Property("FlowRate") + .HasColumnType("double precision") + .HasColumnName("flow_rate") + .HasComment("Расход л/с. Уставка"); + + b.Property("FlowRateMax") + .HasColumnType("double precision") + .HasColumnName("flow_rate_max") + .HasComment("Расход л/с. Ограничение"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм"); + + b.Property("RopMax") + .HasColumnType("double precision") + .HasColumnName("rop_max") + .HasComment("Максимально допустимая скорость, м/ч"); + + b.Property("Rpm") + .HasColumnType("double precision") + .HasColumnName("rpm") + .HasComment("Обороты на ВСП, об/мин. Уставка"); + + b.Property("RpmMax") + .HasColumnType("double precision") + .HasColumnName("rpm_max") + .HasComment("Обороты на ВСП, об/мин. Ограничение"); + + b.Property("TopDriveTorque") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque") + .HasComment("Момент на ВСП, кН*м. Уставка"); + + b.Property("TopDriveTorqueMax") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque_max") + .HasComment("Момент на ВСП, кН*м. Ограничение"); + + b.Property("WeightOnBit") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit") + .HasComment("Нагрузка, т. Уставка"); + + b.Property("WeightOnBitMax") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_max") + .HasComment("Нагрузка, т. Ограничение"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_rotor", t => + { + t.HasComment("РТК план бурение ротор"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSlide", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Buckling") + .HasColumnType("double precision") + .HasColumnName("buckling") + .HasComment("Складывание инструмента, м."); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления уставка, атм."); + + b.Property("DifferentialPressureMax") + .HasColumnType("double precision") + .HasColumnName("differential_pressure_max") + .HasComment("Перепад давления ограничение, атм."); + + b.Property("FlowRate") + .HasColumnType("double precision") + .HasColumnName("flow_rate") + .HasComment("Расход уставка, л/с."); + + b.Property("FlowRateMax") + .HasColumnType("double precision") + .HasColumnName("flow_rate_max") + .HasComment("Расход ограничение, л/с."); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("RopMax") + .HasColumnType("double precision") + .HasColumnName("rop_max") + .HasComment("Максимально допустимая скорость, м/ч."); + + b.Property("Spring") + .HasColumnType("double precision") + .HasColumnName("spring") + .HasComment("Расчётная пружина, градус"); + + b.Property("WeightOnBit") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit") + .HasComment("Нагрузка уставка, т."); + + b.Property("WeightOnBitMax") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_max") + .HasComment("Нагрузка ограничение, т."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_slide", t => + { + t.HasComment("РТК план бурение слайд"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingOffThePump", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("Duration") + .HasColumnType("double precision") + .HasColumnName("duration") + .HasComment("Продолжительность, сек."); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("ResidualPressureLimit") + .HasColumnType("double precision") + .HasColumnName("residual_pressure_limit") + .HasComment("Лимит остаточного давления, атм."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_operation_switching_off_the_pump", t => + { + t.HasComment("Выключение насоса"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingToTheMode", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("FlowRate") + .HasColumnType("double precision") + .HasColumnName("flow_rate") + .HasComment("Расход, л/с"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_limit") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("RampTime") + .HasColumnType("double precision") + .HasColumnName("ramp_time") + .HasComment("Время выхода буровых насосов на плановый расход, сек."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_switching_to_the_mode", t => + { + t.HasComment("Выход на плановый расход"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanTFOrientation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления, атм."); + + b.Property("FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("flow_rate_down") + .HasComment("Расход вниз, л/с."); + + b.Property("FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("flow_rate_up") + .HasComment("Расход вверх, л/с."); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Interval") + .HasColumnType("double precision") + .HasColumnName("interval") + .HasComment("Интервал расхаживания, м."); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимальное давление, атм."); + + b.Property("RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("repetitions_count") + .HasComment("Количество расхаживаний, шт."); + + b.Property("RopDown") + .HasColumnType("double precision") + .HasColumnName("rop_down") + .HasComment("Скорость вниз, м/ч."); + + b.Property("RopUp") + .HasColumnType("double precision") + .HasColumnName("rop_up") + .HasComment("Скорость вверх, м/ч."); + + b.Property("SlackingOff") + .HasColumnType("double precision") + .HasColumnName("slacking_off") + .HasComment("Посадка, т."); + + b.Property("Spring") + .HasColumnType("double precision") + .HasColumnName("spring") + .HasComment("Пружина, град."); + + b.Property("StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("TFSetpoint") + .HasColumnType("double precision") + .HasColumnName("tf_setpoint") + .HasComment("Задание TF, град."); + + b.Property("Tight") + .HasColumnType("double precision") + .HasColumnName("tight") + .HasComment("Затяжка, т."); + + b.Property("TorqueMax") + .HasColumnType("double precision") + .HasColumnName("torque_max") + .HasComment("Максимально допустимый момент, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_tf_orientation", t => + { + t.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", t => + { + t.HasComment("отношение скважин и компаний"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationContactWell", b => + { + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.HasKey("IdWell", "IdUser"); + + b.HasIndex("IdUser"); + + b.ToTable("t_relation_contact_well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserDrillingProgramPart", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("IdDrillingProgramPart") + .HasColumnType("integer") + .HasColumnName("id_drilling_program_part"); + + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_role") + .HasComment("1 - publisher, 2 - approver"); + + b.HasKey("IdUser", "IdDrillingProgramPart") + .HasName("t_relation_user_drilling_program_part_pk"); + + b.HasIndex("IdDrillingProgramPart"); + + b.ToTable("t_relation_user_drilling_program_part", t => + { + t.HasComment("Отношение пользователей и частей ПБ"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRolePermission", b => + { + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.Property("IdPermission") + .HasColumnType("integer") + .HasColumnName("id_permission"); + + b.HasKey("IdUserRole", "IdPermission"); + + b.HasIndex("IdPermission"); + + b.ToTable("t_relation_user_role_permission", t => + { + t.HasComment("Отношение ролей пользователей и разрешений доступа"); + }); + + b.HasData( + new + { + IdUserRole = 1100, + IdPermission = 102 + }, + new + { + IdUserRole = 1100, + IdPermission = 111 + }, + new + { + IdUserRole = 1101, + IdPermission = 101 + }, + new + { + IdUserRole = 1101, + IdPermission = 100 + }, + new + { + IdUserRole = 1102, + IdPermission = 105 + }, + new + { + IdUserRole = 1102, + IdPermission = 108 + }, + new + { + IdUserRole = 1103, + IdPermission = 104 + }, + new + { + IdUserRole = 1103, + IdPermission = 103 + }, + new + { + IdUserRole = 1104, + IdPermission = 108 + }, + new + { + IdUserRole = 1105, + IdPermission = 107 + }, + new + { + IdUserRole = 1105, + IdPermission = 106 + }, + new + { + IdUserRole = 1106, + IdPermission = 111 + }, + new + { + IdUserRole = 1107, + IdPermission = 110 + }, + new + { + IdUserRole = 1107, + IdPermission = 109 + }, + new + { + IdUserRole = 1108, + IdPermission = 114 + }, + new + { + IdUserRole = 1109, + IdPermission = 113 + }, + new + { + IdUserRole = 1109, + IdPermission = 112 + }, + new + { + IdUserRole = 1110, + IdPermission = 123 + }, + new + { + IdUserRole = 1110, + IdPermission = 114 + }, + new + { + IdUserRole = 1111, + IdPermission = 122 + }, + new + { + IdUserRole = 1111, + IdPermission = 121 + }, + new + { + IdUserRole = 1112, + IdPermission = 117 + }, + new + { + IdUserRole = 1113, + IdPermission = 105 + }, + new + { + IdUserRole = 1113, + IdPermission = 123 + }, + new + { + IdUserRole = 1113, + IdPermission = 120 + }, + new + { + IdUserRole = 1114, + IdPermission = 119 + }, + new + { + IdUserRole = 1114, + IdPermission = 118 + }, + new + { + IdUserRole = 1114, + IdPermission = 200 + }, + new + { + IdUserRole = 1115, + IdPermission = 223 + }, + new + { + IdUserRole = 1116, + IdPermission = 105 + }, + new + { + IdUserRole = 1116, + IdPermission = 102 + }, + new + { + IdUserRole = 1116, + IdPermission = 117 + }, + new + { + IdUserRole = 1116, + IdPermission = 126 + }, + new + { + IdUserRole = 1117, + IdPermission = 125 + }, + new + { + IdUserRole = 1117, + IdPermission = 124 + }, + new + { + IdUserRole = 1200, + IdPermission = 203 + }, + new + { + IdUserRole = 1200, + IdPermission = 230 + }, + new + { + IdUserRole = 1201, + IdPermission = 202 + }, + new + { + IdUserRole = 1201, + IdPermission = 203 + }, + new + { + IdUserRole = 1201, + IdPermission = 220 + }, + new + { + IdUserRole = 1202, + IdPermission = 203 + }, + new + { + IdUserRole = 1202, + IdPermission = 220 + }, + new + { + IdUserRole = 1202, + IdPermission = 236 + }, + new + { + IdUserRole = 1202, + IdPermission = 212 + }, + new + { + IdUserRole = 1203, + IdPermission = 235 + }, + new + { + IdUserRole = 1204, + IdPermission = 202 + }, + new + { + IdUserRole = 1204, + IdPermission = 203 + }, + new + { + IdUserRole = 1205, + IdPermission = 215 + }, + new + { + IdUserRole = 1206, + IdPermission = 203 + }, + new + { + IdUserRole = 1206, + IdPermission = 206 + }, + new + { + IdUserRole = 1207, + IdPermission = 205 + }, + new + { + IdUserRole = 1208, + IdPermission = 218 + }, + new + { + IdUserRole = 1209, + IdPermission = 217 + }, + new + { + IdUserRole = 1210, + IdPermission = 203 + }, + new + { + IdUserRole = 1210, + IdPermission = 230 + }, + new + { + IdUserRole = 1210, + IdPermission = 219 + }, + new + { + IdUserRole = 1211, + IdPermission = 203 + }, + new + { + IdUserRole = 1211, + IdPermission = 220 + }, + new + { + IdUserRole = 1211, + IdPermission = 239 + }, + new + { + IdUserRole = 1212, + IdPermission = 238 + }, + new + { + IdUserRole = 1212, + IdPermission = 237 + }, + new + { + IdUserRole = 1213, + IdPermission = 203 + }, + new + { + IdUserRole = 1213, + IdPermission = 239 + }, + new + { + IdUserRole = 1213, + IdPermission = 212 + }, + new + { + IdUserRole = 1214, + IdPermission = 211 + }, + new + { + IdUserRole = 1214, + IdPermission = 210 + }, + new + { + IdUserRole = 1215, + IdPermission = 203 + }, + new + { + IdUserRole = 1215, + IdPermission = 222 + }, + new + { + IdUserRole = 1216, + IdPermission = 221 + }, + new + { + IdUserRole = 1217, + IdPermission = 226 + }, + new + { + IdUserRole = 1218, + IdPermission = 225 + }, + new + { + IdUserRole = 1218, + IdPermission = 224 + }, + new + { + IdUserRole = 1219, + IdPermission = 203 + }, + new + { + IdUserRole = 1219, + IdPermission = 206 + }, + new + { + IdUserRole = 1219, + IdPermission = 230 + }, + new + { + IdUserRole = 1219, + IdPermission = 232 + }, + new + { + IdUserRole = 1220, + IdPermission = 203 + }, + new + { + IdUserRole = 1220, + IdPermission = 228 + }, + new + { + IdUserRole = 1221, + IdPermission = 202 + }, + new + { + IdUserRole = 1221, + IdPermission = 203 + }, + new + { + IdUserRole = 1221, + IdPermission = 220 + }, + new + { + IdUserRole = 1221, + IdPermission = 234 + }, + new + { + IdUserRole = 1500, + IdPermission = 507 + }, + new + { + IdUserRole = 1500, + IdPermission = 510 + }, + new + { + IdUserRole = 1501, + IdPermission = 214 + }, + new + { + IdUserRole = 1501, + IdPermission = 213 + }, + new + { + IdUserRole = 1502, + IdPermission = 207 + }, + new + { + IdUserRole = 1502, + IdPermission = 208 + }, + new + { + IdUserRole = 2000, + IdPermission = 205 + }, + new + { + IdUserRole = 2000, + IdPermission = 204 + }, + new + { + IdUserRole = 2000, + IdPermission = 245 + }, + new + { + IdUserRole = 2001, + IdPermission = 244 + }, + new + { + IdUserRole = 2001, + IdPermission = 245 + }, + new + { + IdUserRole = 2002, + IdPermission = 244 + }, + new + { + IdUserRole = 2002, + IdPermission = 246 + }, + new + { + IdUserRole = 2002, + IdPermission = 237 + }, + new + { + IdUserRole = 2002, + IdPermission = 238 + }, + new + { + IdUserRole = 2003, + IdPermission = 240 + }, + new + { + IdUserRole = 2003, + IdPermission = 217 + }, + new + { + IdUserRole = 2003, + IdPermission = 216 + }, + new + { + IdUserRole = 2004, + IdPermission = 242 + }, + new + { + IdUserRole = 2004, + IdPermission = 217 + }, + new + { + IdUserRole = 2004, + IdPermission = 216 + }, + new + { + IdUserRole = 2004, + IdPermission = 205 + }, + new + { + IdUserRole = 2004, + IdPermission = 204 + }, + new + { + IdUserRole = 2005, + IdPermission = 247 + }, + new + { + IdUserRole = 2005, + IdPermission = 205 + }, + new + { + IdUserRole = 2005, + IdPermission = 204 + }, + new + { + IdUserRole = 2006, + IdPermission = 243 + }, + new + { + IdUserRole = 2006, + IdPermission = 205 + }, + new + { + IdUserRole = 2006, + IdPermission = 204 + }, + new + { + IdUserRole = 2007, + IdPermission = 241 + }, + new + { + IdUserRole = 2007, + IdPermission = 205 + }, + new + { + IdUserRole = 2007, + IdPermission = 204 + }, + new + { + IdUserRole = 1, + IdPermission = 100 + }, + new + { + IdUserRole = 1, + IdPermission = 101 + }, + new + { + IdUserRole = 1, + IdPermission = 102 + }, + new + { + IdUserRole = 1, + IdPermission = 103 + }, + new + { + IdUserRole = 1, + IdPermission = 104 + }, + new + { + IdUserRole = 1, + IdPermission = 105 + }, + new + { + IdUserRole = 1, + IdPermission = 106 + }, + new + { + IdUserRole = 1, + IdPermission = 107 + }, + new + { + IdUserRole = 1, + IdPermission = 108 + }, + new + { + IdUserRole = 1, + IdPermission = 109 + }, + new + { + IdUserRole = 1, + IdPermission = 110 + }, + new + { + IdUserRole = 1, + IdPermission = 111 + }, + new + { + IdUserRole = 1, + IdPermission = 112 + }, + new + { + IdUserRole = 1, + IdPermission = 113 + }, + new + { + IdUserRole = 1, + IdPermission = 114 + }, + new + { + IdUserRole = 1, + IdPermission = 115 + }, + new + { + IdUserRole = 1, + IdPermission = 116 + }, + new + { + IdUserRole = 1, + IdPermission = 117 + }, + new + { + IdUserRole = 1, + IdPermission = 118 + }, + new + { + IdUserRole = 1, + IdPermission = 119 + }, + new + { + IdUserRole = 1, + IdPermission = 120 + }, + new + { + IdUserRole = 1, + IdPermission = 121 + }, + new + { + IdUserRole = 1, + IdPermission = 122 + }, + new + { + IdUserRole = 1, + IdPermission = 123 + }, + new + { + IdUserRole = 1, + IdPermission = 124 + }, + new + { + IdUserRole = 1, + IdPermission = 125 + }, + new + { + IdUserRole = 1, + IdPermission = 126 + }, + new + { + IdUserRole = 1, + IdPermission = 127 + }, + new + { + IdUserRole = 1, + IdPermission = 128 + }, + new + { + IdUserRole = 1, + IdPermission = 129 + }, + new + { + IdUserRole = 1, + IdPermission = 200 + }, + new + { + IdUserRole = 1, + IdPermission = 201 + }, + new + { + IdUserRole = 1, + IdPermission = 202 + }, + new + { + IdUserRole = 1, + IdPermission = 203 + }, + new + { + IdUserRole = 1, + IdPermission = 204 + }, + new + { + IdUserRole = 1, + IdPermission = 205 + }, + new + { + IdUserRole = 1, + IdPermission = 206 + }, + new + { + IdUserRole = 1, + IdPermission = 207 + }, + new + { + IdUserRole = 1, + IdPermission = 208 + }, + new + { + IdUserRole = 1, + IdPermission = 209 + }, + new + { + IdUserRole = 1, + IdPermission = 210 + }, + new + { + IdUserRole = 1, + IdPermission = 211 + }, + new + { + IdUserRole = 1, + IdPermission = 212 + }, + new + { + IdUserRole = 1, + IdPermission = 213 + }, + new + { + IdUserRole = 1, + IdPermission = 214 + }, + new + { + IdUserRole = 1, + IdPermission = 215 + }, + new + { + IdUserRole = 1, + IdPermission = 216 + }, + new + { + IdUserRole = 1, + IdPermission = 217 + }, + new + { + IdUserRole = 1, + IdPermission = 218 + }, + new + { + IdUserRole = 1, + IdPermission = 219 + }, + new + { + IdUserRole = 1, + IdPermission = 220 + }, + new + { + IdUserRole = 1, + IdPermission = 221 + }, + new + { + IdUserRole = 1, + IdPermission = 222 + }, + new + { + IdUserRole = 1, + IdPermission = 223 + }, + new + { + IdUserRole = 1, + IdPermission = 224 + }, + new + { + IdUserRole = 1, + IdPermission = 225 + }, + new + { + IdUserRole = 1, + IdPermission = 226 + }, + new + { + IdUserRole = 1, + IdPermission = 227 + }, + new + { + IdUserRole = 1, + IdPermission = 228 + }, + new + { + IdUserRole = 1, + IdPermission = 229 + }, + new + { + IdUserRole = 1, + IdPermission = 230 + }, + new + { + IdUserRole = 1, + IdPermission = 231 + }, + new + { + IdUserRole = 1, + IdPermission = 232 + }, + new + { + IdUserRole = 1, + IdPermission = 233 + }, + new + { + IdUserRole = 1, + IdPermission = 234 + }, + new + { + IdUserRole = 1, + IdPermission = 235 + }, + new + { + IdUserRole = 1, + IdPermission = 236 + }, + new + { + IdUserRole = 1, + IdPermission = 237 + }, + new + { + IdUserRole = 1, + IdPermission = 238 + }, + new + { + IdUserRole = 1, + IdPermission = 239 + }, + new + { + IdUserRole = 1, + IdPermission = 240 + }, + new + { + IdUserRole = 1, + IdPermission = 241 + }, + new + { + IdUserRole = 1, + IdPermission = 242 + }, + new + { + IdUserRole = 1, + IdPermission = 243 + }, + new + { + IdUserRole = 1, + IdPermission = 244 + }, + new + { + IdUserRole = 1, + IdPermission = 245 + }, + new + { + IdUserRole = 1, + IdPermission = 246 + }, + new + { + IdUserRole = 1, + IdPermission = 247 + }, + new + { + IdUserRole = 1, + IdPermission = 248 + }, + new + { + IdUserRole = 1, + IdPermission = 249 + }, + new + { + IdUserRole = 1, + IdPermission = 250 + }, + new + { + IdUserRole = 1, + IdPermission = 251 + }, + new + { + IdUserRole = 1, + IdPermission = 252 + }, + new + { + IdUserRole = 1, + IdPermission = 253 + }, + new + { + IdUserRole = 1, + IdPermission = 254 + }, + new + { + IdUserRole = 1, + IdPermission = 255 + }, + new + { + IdUserRole = 1, + IdPermission = 256 + }, + new + { + IdUserRole = 1, + IdPermission = 257 + }, + new + { + IdUserRole = 1, + IdPermission = 258 + }, + new + { + IdUserRole = 1, + IdPermission = 259 + }, + new + { + IdUserRole = 1, + IdPermission = 260 + }, + new + { + IdUserRole = 1, + IdPermission = 261 + }, + new + { + IdUserRole = 1, + IdPermission = 262 + }, + new + { + IdUserRole = 1, + IdPermission = 263 + }, + new + { + IdUserRole = 1, + IdPermission = 264 + }, + new + { + IdUserRole = 1, + IdPermission = 265 + }, + new + { + IdUserRole = 1, + IdPermission = 266 + }, + new + { + IdUserRole = 1, + IdPermission = 267 + }, + new + { + IdUserRole = 1, + IdPermission = 268 + }, + new + { + IdUserRole = 1, + IdPermission = 269 + }, + new + { + IdUserRole = 1, + IdPermission = 380 + }, + new + { + IdUserRole = 1, + IdPermission = 381 + }, + new + { + IdUserRole = 1, + IdPermission = 382 + }, + new + { + IdUserRole = 1, + IdPermission = 383 + }, + new + { + IdUserRole = 1, + IdPermission = 384 + }, + new + { + IdUserRole = 1, + IdPermission = 385 + }, + new + { + IdUserRole = 1, + IdPermission = 386 + }, + new + { + IdUserRole = 1, + IdPermission = 387 + }, + new + { + IdUserRole = 1, + IdPermission = 388 + }, + new + { + IdUserRole = 1, + IdPermission = 389 + }, + new + { + IdUserRole = 1, + IdPermission = 390 + }, + new + { + IdUserRole = 1, + IdPermission = 391 + }, + new + { + IdUserRole = 1, + IdPermission = 400 + }, + new + { + IdUserRole = 1, + IdPermission = 401 + }, + new + { + IdUserRole = 1, + IdPermission = 407 + }, + new + { + IdUserRole = 1, + IdPermission = 408 + }, + new + { + IdUserRole = 1, + IdPermission = 450 + }, + new + { + IdUserRole = 1, + IdPermission = 460 + }, + new + { + IdUserRole = 1, + IdPermission = 461 + }, + new + { + IdUserRole = 1, + IdPermission = 500 + }, + new + { + IdUserRole = 1, + IdPermission = 501 + }, + new + { + IdUserRole = 1, + IdPermission = 502 + }, + new + { + IdUserRole = 1, + IdPermission = 503 + }, + new + { + IdUserRole = 1, + IdPermission = 504 + }, + new + { + IdUserRole = 1, + IdPermission = 505 + }, + new + { + IdUserRole = 1, + IdPermission = 506 + }, + new + { + IdUserRole = 1, + IdPermission = 507 + }, + new + { + IdUserRole = 1, + IdPermission = 510 + }, + new + { + IdUserRole = 1, + IdPermission = 511 + }, + new + { + IdUserRole = 1, + IdPermission = 512 + }, + new + { + IdUserRole = 1, + IdPermission = 516 + }, + new + { + IdUserRole = 1, + IdPermission = 517 + }, + new + { + IdUserRole = 1, + IdPermission = 518 + }, + new + { + IdUserRole = 1, + IdPermission = 519 + }, + new + { + IdUserRole = 1, + IdPermission = 520 + }, + new + { + IdUserRole = 1, + IdPermission = 521 + }, + new + { + IdUserRole = 1, + IdPermission = 522 + }, + new + { + IdUserRole = 1, + IdPermission = 523 + }, + new + { + IdUserRole = 1, + IdPermission = 524 + }, + new + { + IdUserRole = 1, + IdPermission = 525 + }, + new + { + IdUserRole = 1, + IdPermission = 526 + }, + new + { + IdUserRole = 1, + IdPermission = 527 + }, + new + { + IdUserRole = 1, + IdPermission = 528 + }, + new + { + IdUserRole = 1, + IdPermission = 530 + }, + new + { + IdUserRole = 1, + IdPermission = 531 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRoleUserRole", b => + { + b.Property("Id") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.Property("IdInclude") + .HasColumnType("integer") + .HasColumnName("id_include_user_role"); + + b.HasKey("Id", "IdInclude") + .HasName("t_relation_user_role_user_role_pk"); + + b.HasIndex("IdInclude"); + + b.ToTable("t_relation_user_role_user_role", t => + { + t.HasComment("Отношение ролей к ролям"); + }); + + b.HasData( + new + { + Id = 1101, + IdInclude = 1100 + }, + new + { + Id = 1103, + IdInclude = 1102 + }, + new + { + Id = 1105, + IdInclude = 1104 + }, + new + { + Id = 1107, + IdInclude = 1106 + }, + new + { + Id = 1109, + IdInclude = 1108 + }, + new + { + Id = 1111, + IdInclude = 1110 + }, + new + { + Id = 1114, + IdInclude = 1113 + }, + new + { + Id = 1117, + IdInclude = 1116 + }, + new + { + Id = 1203, + IdInclude = 1202 + }, + new + { + Id = 1207, + IdInclude = 1206 + }, + new + { + Id = 1209, + IdInclude = 1208 + }, + new + { + Id = 1212, + IdInclude = 1211 + }, + new + { + Id = 1214, + IdInclude = 1213 + }, + new + { + Id = 1216, + IdInclude = 1215 + }, + new + { + Id = 1218, + IdInclude = 1217 + }, + new + { + Id = 2000, + IdInclude = 1200 + }, + new + { + Id = 2000, + IdInclude = 1201 + }, + new + { + Id = 2000, + IdInclude = 1202 + }, + new + { + Id = 2000, + IdInclude = 1204 + }, + new + { + Id = 2000, + IdInclude = 1205 + }, + new + { + Id = 2000, + IdInclude = 1206 + }, + new + { + Id = 2000, + IdInclude = 1208 + }, + new + { + Id = 2000, + IdInclude = 1210 + }, + new + { + Id = 2000, + IdInclude = 1211 + }, + new + { + Id = 2000, + IdInclude = 1213 + }, + new + { + Id = 2000, + IdInclude = 1215 + }, + new + { + Id = 2000, + IdInclude = 1217 + }, + new + { + Id = 2000, + IdInclude = 1219 + }, + new + { + Id = 2000, + IdInclude = 1220 + }, + new + { + Id = 2000, + IdInclude = 1221 + }, + new + { + Id = 2000, + IdInclude = 1500 + }, + new + { + Id = 2000, + IdInclude = 1501 + }, + new + { + Id = 2000, + IdInclude = 1502 + }, + new + { + Id = 2001, + IdInclude = 1500 + }, + new + { + Id = 2001, + IdInclude = 1501 + }, + new + { + Id = 2001, + IdInclude = 1502 + }, + new + { + Id = 2002, + IdInclude = 1500 + }, + new + { + Id = 2002, + IdInclude = 1501 + }, + new + { + Id = 2002, + IdInclude = 1502 + }, + new + { + Id = 2003, + IdInclude = 1500 + }, + new + { + Id = 2003, + IdInclude = 1501 + }, + new + { + Id = 2003, + IdInclude = 1502 + }, + new + { + Id = 2004, + IdInclude = 1500 + }, + new + { + Id = 2004, + IdInclude = 1501 + }, + new + { + Id = 2004, + IdInclude = 1502 + }, + new + { + Id = 2005, + IdInclude = 1500 + }, + new + { + Id = 2005, + IdInclude = 1501 + }, + new + { + Id = 2005, + IdInclude = 1502 + }, + new + { + Id = 2006, + IdInclude = 1500 + }, + new + { + Id = 2006, + IdInclude = 1501 + }, + new + { + Id = 2006, + IdInclude = 1502 + }, + new + { + Id = 2007, + IdInclude = 1500 + }, + new + { + Id = 2007, + IdInclude = 1501 + }, + new + { + Id = 2007, + IdInclude = 1502 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserUserRole", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.HasKey("IdUser", "IdUserRole"); + + b.HasIndex("IdUserRole"); + + b.ToTable("t_relation_user_user_role", t => + { + t.HasComment("Отношение пользователей и ролей"); + }); + + b.HasData( + new + { + IdUser = 1, + IdUserRole = 1 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ReportProperty", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Begin") + .HasColumnType("timestamp with time zone") + .HasColumnName("begin"); + + b.Property("End") + .HasColumnType("timestamp with time zone") + .HasColumnName("end") + .HasComment("timestamp with time zone"); + + b.Property("Format") + .HasColumnType("integer") + .HasColumnName("format") + .HasComment("Формат отчета"); + + b.Property("IdFile") + .HasColumnType("integer") + .HasColumnName("id_file") + .HasComment("id файла-родителя"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("id скважины"); + + b.Property("Step") + .HasColumnType("integer") + .HasColumnName("step") + .HasComment("размер шага в секундах"); + + b.HasKey("Id"); + + b.HasIndex("IdFile"); + + b.HasIndex("IdWell"); + + b.ToTable("t_report_property", t => + { + t.HasComment("Отчеты с данными по буровым"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Schedule", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("DrillEnd") + .HasColumnType("timestamp with time zone") + .HasColumnName("drill_end") + .HasComment("Конец вахты"); + + b.Property("DrillStart") + .HasColumnType("timestamp with time zone") + .HasColumnName("drill_start") + .HasComment("Начало вахты"); + + b.Property("IdDriller") + .HasColumnType("integer") + .HasColumnName("id_driller") + .HasComment("Идентификатор бурильщика"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Идентификатор скважины"); + + b.Property("ShiftEnd") + .HasColumnType("time without time zone") + .HasColumnName("shift_end") + .HasComment("Конец смены"); + + b.Property("ShiftStart") + .HasColumnType("time without time zone") + .HasColumnName("shift_start") + .HasComment("Начало смены"); + + b.HasKey("Id"); + + b.HasIndex("IdDriller"); + + b.HasIndex("IdWell"); + + b.ToTable("t_schedule", t => + { + t.HasComment("График работы бурильщика"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.SetpointsRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Comment") + .HasColumnType("text") + .HasColumnName("comment") + .HasComment("комментарий для оператора"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Id пользователя, загрузившего файл"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("0: неизвестно, 1:ожидает отправки, 2: отправлено, 3: принято оператором, 4: отклонено оператором, 5: устарело"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("id скважины"); + + b.Property("ObsolescenceSec") + .HasColumnType("integer") + .HasColumnName("obsolescence") + .HasComment("сек. до устаревания"); + + b.Property("Setpoints") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("setpoint_set") + .HasComment("Набор уставок"); + + b.Property("UploadDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdWell"); + + b.ToTable("t_setpoints_rquest", t => + { + t.HasComment("Запросы на изменение уставок панели оператора"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Subsystem", 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"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name"); + + b.HasKey("Id"); + + b.ToTable("t_subsystem", t => + { + t.HasComment("Описание подсистем"); + }); + + b.HasData( + new + { + Id = 1, + Description = "Совместная работа режимов \"Бурение в роторе\" и \"Бурение в слайде\"", + Name = "АПД" + }, + new + { + Id = 11, + Description = "Режим работы \"Бурение в роторе\"", + Name = "АПД ротор" + }, + new + { + Id = 12, + Description = "Режим работы \"Бурение в слайде\"", + Name = "АПД слайд" + }, + new + { + Id = 65536, + Description = "Осцилляция", + Name = "Осцилляция" + }, + new + { + Id = 65537, + Description = "Демпфер", + Name = "Демпфер" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Telemetry", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Info") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("info") + .HasComment("Информация с панели о скважине"); + + b.Property("RemoteUid") + .IsRequired() + .HasColumnType("text") + .HasColumnName("remote_uid") + .HasComment("Идентификатор передающего устройства. Может повторяться в списке, так как комплекты оборудования переезжают от скв. к скв."); + + b.Property("TimeZone") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("timezone") + .HasComment("Смещение часового пояса от UTC"); + + b.HasKey("Id"); + + b.HasIndex(new[] { "RemoteUid" }, "t_telemetry_remote_uid_index"); + + b.ToTable("t_telemetry", t => + { + t.HasComment("таблица привязки телеметрии от комплектов к конкретной скважине."); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaub", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date") + .HasComment("'2021-10-19 18:23:54+05'"); + + b.Property("AxialLoad") + .HasColumnType("real") + .HasColumnName("axial_load") + .HasComment("Осевая нагрузка"); + + b.Property("AxialLoadLimitMax") + .HasColumnType("real") + .HasColumnName("axial_load_limit_max") + .HasComment("Осевая нагрузка. Аварийная макс."); + + b.Property("AxialLoadSp") + .HasColumnType("real") + .HasColumnName("axial_load_sp") + .HasComment("Осевая нагрузка. Задание"); + + b.Property("BitDepth") + .HasColumnType("real") + .HasColumnName("bit_depth") + .HasComment("Положение инструмента"); + + b.Property("BlockPosition") + .HasColumnType("real") + .HasColumnName("block_position") + .HasComment("Высота талевого блока"); + + b.Property("BlockPositionMax") + .HasColumnType("real") + .HasColumnName("block_position_max") + .HasComment("Талевый блок. Макс положение"); + + b.Property("BlockPositionMin") + .HasColumnType("real") + .HasColumnName("block_position_min") + .HasComment("Талевый блок. Мин положение"); + + b.Property("BlockSpeed") + .HasColumnType("real") + .HasColumnName("block_speed") + .HasComment("Скорость талевого блока"); + + b.Property("BlockSpeedSp") + .HasColumnType("real") + .HasColumnName("block_speed_sp") + .HasComment("Скорости талевого блока. Задание"); + + b.Property("BlockSpeedSpDevelop") + .HasColumnType("real") + .HasColumnName("block_speed_sp_develop") + .HasComment("Талевый блок. Задание скорости для проработки"); + + b.Property("BlockSpeedSpRotor") + .HasColumnType("real") + .HasColumnName("block_speed_sp_rotor") + .HasComment("Талевый блок. Задание скорости для роторного бурения"); + + b.Property("BlockSpeedSpSlide") + .HasColumnType("real") + .HasColumnName("block_speed_sp_slide") + .HasComment("Талевый блок. Задание скорости для режима слайда"); + + b.Property("Flow") + .HasColumnType("real") + .HasColumnName("flow") + .HasComment("Расход"); + + b.Property("FlowDeltaLimitMax") + .HasColumnType("real") + .HasColumnName("flow_delta_limit_max") + .HasComment("Расход. Аварийный макс."); + + b.Property("FlowIdle") + .HasColumnType("real") + .HasColumnName("flow_idle") + .HasComment("Расход. Холостой ход"); + + b.Property("HookWeight") + .HasColumnType("real") + .HasColumnName("hook_weight") + .HasComment("Вес на крюке"); + + b.Property("HookWeightIdle") + .HasColumnType("real") + .HasColumnName("hook_weight_idle") + .HasComment("Вес на крюке. Холостой ход"); + + b.Property("HookWeightLimitMax") + .HasColumnType("real") + .HasColumnName("hook_weight_limit_max") + .HasComment("Вес на крюке. Затяжка"); + + b.Property("HookWeightLimitMin") + .HasColumnType("real") + .HasColumnName("hook_weight_limit_min") + .HasComment("Вес на крюке. Посадка"); + + b.Property("IdFeedRegulator") + .HasColumnType("smallint") + .HasColumnName("id_feed_regulator") + .HasComment("Текущий критерий бурения"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user") + .HasComment("Пользователь САУБ"); + + b.Property("Mode") + .HasColumnType("smallint") + .HasColumnName("mode") + .HasComment("Режим САУБ"); + + b.Property("Mse") + .HasColumnType("real") + .HasColumnName("mse") + .HasComment("MSE"); + + b.Property("MseState") + .HasColumnType("smallint") + .HasColumnName("mse_state") + .HasComment("Текущее состояние работы MSE"); + + b.Property("Pressure") + .HasColumnType("real") + .HasColumnName("pressure") + .HasComment("Давление"); + + b.Property("PressureDeltaLimitMax") + .HasColumnType("real") + .HasColumnName("pressure_delta_limit_max") + .HasComment("Давление дифф. Аварийное макс."); + + b.Property("PressureIdle") + .HasColumnType("real") + .HasColumnName("pressure_idle") + .HasComment("Давление. Холостой ход"); + + b.Property("PressureSp") + .HasColumnType("real") + .HasColumnName("pressure_sp") + .HasComment("Давление. Задание"); + + b.Property("PressureSpDevelop") + .HasColumnType("real") + .HasColumnName("pressure_sp_develop") + .HasComment("Давление. Задание для проработки"); + + b.Property("PressureSpRotor") + .HasColumnType("real") + .HasColumnName("pressure_sp_rotor") + .HasComment("Давление. Задание для роторного бурения"); + + b.Property("PressureSpSlide") + .HasColumnType("real") + .HasColumnName("pressure_sp_slide") + .HasComment("Давление. Задание для режима слайда"); + + b.Property("Pump0Flow") + .HasColumnType("real") + .HasColumnName("pump0_flow") + .HasComment("Расход. Буровой насос 1"); + + b.Property("Pump1Flow") + .HasColumnType("real") + .HasColumnName("pump1_flow") + .HasComment("Расход. Буровой насос 2"); + + b.Property("Pump2Flow") + .HasColumnType("real") + .HasColumnName("pump2_flow") + .HasComment("Расход. Буровой насос 3"); + + b.Property("RotorSpeed") + .HasColumnType("real") + .HasColumnName("rotor_speed") + .HasComment("Обороты ротора"); + + b.Property("RotorTorque") + .HasColumnType("real") + .HasColumnName("rotor_torque") + .HasComment("Момент на роторе"); + + b.Property("RotorTorqueIdle") + .HasColumnType("real") + .HasColumnName("rotor_torque_idle") + .HasComment("Момент на роторе. Холостой ход"); + + b.Property("RotorTorqueLimitMax") + .HasColumnType("real") + .HasColumnName("rotor_torque_limit_max") + .HasComment("Момент на роторе. Аварийный макс."); + + b.Property("RotorTorqueSp") + .HasColumnType("real") + .HasColumnName("rotor_torque_sp") + .HasComment("Момент на роторе. Задание"); + + b.Property("WellDepth") + .HasColumnType("real") + .HasColumnName("well_depth") + .HasComment("Глубина забоя"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_data_saub", t => + { + t.HasComment("набор основных данных по SAUB"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaubStat", b => + { + b.Property("Count") + .HasColumnType("bigint") + .HasColumnName("count_items"); + + b.Property("DateMax") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_max"); + + b.Property("DateMin") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_min"); + + b.Property("DepthMax") + .HasColumnType("real") + .HasColumnName("depth_max"); + + b.Property("DepthMin") + .HasColumnType("real") + .HasColumnName("depth_min"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.ToTable((string)null); + + b.ToView("mw_telemetry_datas_saub_stat", (string)null); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSpin", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date") + .HasComment("'2021-10-19 18:23:54+05'"); + + b.Property("Mode") + .HasColumnType("smallint") + .HasColumnName("mode") + .HasComment("Выбранный режим управления"); + + b.Property("PositionRight") + .HasColumnType("real") + .HasColumnName("position_right") + .HasComment("Крайний правый угол осцилляции"); + + b.Property("PositionZero") + .HasColumnType("real") + .HasColumnName("position_zero") + .HasComment("Нулевая позиция осцилляции"); + + b.Property("RevolsLeftLimit") + .HasColumnType("real") + .HasColumnName("revols_left_limit") + .HasComment("Ограничение числа оборотов влево"); + + b.Property("RevolsLeftTotal") + .HasColumnType("real") + .HasColumnName("revols_left_total") + .HasComment("Суммарное количество оборотов влево"); + + b.Property("RevolsRightLimit") + .HasColumnType("real") + .HasColumnName("revols_right_limit") + .HasComment("Ограничение числа оборотов вправо"); + + b.Property("RevolsRightTotal") + .HasColumnType("real") + .HasColumnName("revols_right_total") + .HasComment("Суммарное количество оборотов вправо"); + + b.Property("SpeedLeftSp") + .HasColumnType("real") + .HasColumnName("speed_left_sp") + .HasComment("Заданная скорость вращения влево"); + + b.Property("SpeedRightSp") + .HasColumnType("real") + .HasColumnName("speed_right_sp") + .HasComment("Заданная скорость вращения вправо"); + + b.Property("State") + .HasColumnType("smallint") + .HasColumnName("state") + .HasComment("Переменная этапа"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_data_spin", t => + { + t.HasComment("набор основных данных по SpinMaster"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryEvent", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdEvent") + .HasColumnType("integer") + .HasColumnName("id_event"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category"); + + b.Property("MessageTemplate") + .IsRequired() + .HasColumnType("text") + .HasColumnName("message_template"); + + b.HasKey("IdTelemetry", "IdEvent"); + + b.ToTable("t_telemetry_event", t => + { + t.HasComment("Справочник событий. События формируют сообщения. Разделено по версиям посылок от телеметрии."); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Arg0") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg0") + .HasComment("Аргумент №0 для вставки в шаблон сообщения"); + + b.Property("Arg1") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg1"); + + b.Property("Arg2") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg2"); + + b.Property("Arg3") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg3"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("IdEvent") + .HasColumnType("integer") + .HasColumnName("id_event"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdTelemetryUser") + .HasColumnType("integer") + .HasColumnName("id_telemetry_user") + .HasComment("Пользователь панели отправляющей телеметрию. не пользователь облака."); + + b.Property("WellDepth") + .HasColumnType("double precision") + .HasColumnName("well_depth"); + + b.HasKey("Id"); + + b.HasIndex("IdTelemetry"); + + b.ToTable("t_telemetry_message", t => + { + t.HasComment("Сообщения на буровых"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryUser", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("Level") + .HasColumnType("integer") + .HasColumnName("level"); + + b.Property("Name") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name"); + + b.Property("Patronymic") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("patronymic"); + + b.Property("Surname") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("surname"); + + b.HasKey("IdTelemetry", "IdUser"); + + b.ToTable("t_telemetry_user", t => + { + t.HasComment("Пользователи панели САУБ. Для сообщений."); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryWirelineRunOut", b => + { + b.Property("IdTelemetry") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id_telemetry") + .HasComment("Идентификатор телеметрии"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("IdTelemetry")); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_time") + .HasComment("Отметка времени"); + + b.Property("Hauling") + .HasColumnType("real") + .HasColumnName("hauling") + .HasComment("Наработка талевого каната с момента перетяжки каната, т*км"); + + b.Property("HaulingWarnSp") + .HasColumnType("real") + .HasColumnName("hauling_warn_sp") + .HasComment("Наработка талевого каната до сигнализации о необходимости перетяжки, т*км"); + + b.Property("Replace") + .HasColumnType("real") + .HasColumnName("replace") + .HasComment("Наработка талевого каната с момента замены каната, т*км"); + + b.Property("ReplaceWarnSp") + .HasColumnType("real") + .HasColumnName("replace_warn_sp") + .HasComment("Наработка талевого каната до сигнализации о необходимости замены, т*км"); + + b.HasKey("IdTelemetry"); + + b.ToTable("t_telemetry_wireline_run_out", t => + { + t.HasComment("Наработка талевого каната"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Trajectory.TrajectoryFact", 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("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_trajectory_fact", t => + { + t.HasComment("Загрузка фактической траектории"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Trajectory.TrajectoryPlan", 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_trajectory_plan", t => + { + t.HasComment("Загрузка плановой траектории"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Email") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("email") + .HasComment("должность"); + + b.Property("IdCompany") + .HasColumnType("integer") + .HasColumnName("id_company"); + + b.Property("IdState") + .HasColumnType("smallint") + .HasColumnName("state") + .HasComment("состояние:\n0 - не активен, \n1 - активен, \n2 - заблокирован"); + + b.Property("Login") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("login"); + + b.Property("Name") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name") + .HasComment("имя"); + + b.Property("PasswordHash") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("password_hash") + .HasComment("соленый хэш пароля.\nпервые 5 символов - соль"); + + b.Property("Patronymic") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("patronymic") + .HasComment("отчество"); + + b.Property("Phone") + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .HasColumnName("phone") + .HasComment("номер телефона"); + + b.Property("Position") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("position") + .HasComment("email"); + + b.Property("Surname") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("surname") + .HasComment("фамилия"); + + b.HasKey("Id"); + + b.HasIndex("IdCompany"); + + b.HasIndex("Login") + .IsUnique(); + + b.ToTable("t_user", t => + { + t.HasComment("Пользователи облака"); + }); + + b.HasData( + new + { + Id = 1, + Email = "", + IdCompany = 1, + IdState = (short)1, + Login = "dev", + Name = "Разработчик", + PasswordHash = "Vlcj|4fa529103dde7ff72cfe76185f344d4aa87931f8e1b2044e8a7739947c3d18923464eaad93843e4f809c5e126d013072" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserRole", 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("IdType") + .HasColumnType("integer") + .HasColumnName("id_type") + .HasComment("0-роль из стандартной матрицы, \n1-специальная роль для какого-либо пользователя"); + + b.HasKey("Id"); + + b.ToTable("t_user_role", t => + { + t.HasComment("Роли пользователей в системе"); + }); + + b.HasData( + new + { + Id = 1, + Caption = "root", + IdType = 1 + }, + new + { + Id = 1100, + Caption = "admin_cluster.view", + IdType = 1 + }, + new + { + Id = 1101, + Caption = "admin_cluster.edit", + IdType = 1 + }, + new + { + Id = 1102, + Caption = "admin_company.view", + IdType = 1 + }, + new + { + Id = 1103, + Caption = "admin_company.edit", + IdType = 1 + }, + new + { + Id = 1104, + Caption = "admin_company_type.view", + IdType = 1 + }, + new + { + Id = 1105, + Caption = "admin_company_type.edit", + IdType = 1 + }, + new + { + Id = 1106, + Caption = "admin_deposit.view", + IdType = 1 + }, + new + { + Id = 1107, + Caption = "admin_deposit.edit", + IdType = 1 + }, + new + { + Id = 1108, + Caption = "admin_permission.view", + IdType = 1 + }, + new + { + Id = 1109, + Caption = "admin_permission.edit", + IdType = 1 + }, + new + { + Id = 1110, + Caption = "admin_role.view", + IdType = 1 + }, + new + { + Id = 1111, + Caption = "admin_role.edit", + IdType = 1 + }, + new + { + Id = 1112, + Caption = "admin_telemetry.view", + IdType = 1 + }, + new + { + Id = 1113, + Caption = "admin_user.view", + IdType = 1 + }, + new + { + Id = 1114, + Caption = "admin_user.edit", + IdType = 1 + }, + new + { + Id = 1115, + Caption = "admin_visit_log.view", + IdType = 1 + }, + new + { + Id = 1116, + Caption = "admin_well.view", + IdType = 1 + }, + new + { + Id = 1117, + Caption = "admin_well.edit", + IdType = 1 + }, + new + { + Id = 1200, + Caption = "archive.view", + IdType = 1 + }, + new + { + Id = 1201, + Caption = "cluster.view", + IdType = 1 + }, + new + { + Id = 1202, + Caption = "composite.view", + IdType = 1 + }, + new + { + Id = 1203, + Caption = "composite.edit", + IdType = 1 + }, + new + { + Id = 1204, + Caption = "deposit.view", + IdType = 1 + }, + new + { + Id = 1205, + Caption = "document.view", + IdType = 1 + }, + new + { + Id = 1206, + Caption = "drillProcessFlow.view", + IdType = 1 + }, + new + { + Id = 1207, + Caption = "drillProcessFlow.edit", + IdType = 1 + }, + new + { + Id = 1208, + Caption = "measure.view", + IdType = 1 + }, + new + { + Id = 1209, + Caption = "measure.edit", + IdType = 1 + }, + new + { + Id = 1210, + Caption = "message.view", + IdType = 1 + }, + new + { + Id = 1211, + Caption = "operations.view", + IdType = 1 + }, + new + { + Id = 1212, + Caption = "operations.edit", + IdType = 1 + }, + new + { + Id = 1213, + Caption = "params.view", + IdType = 1 + }, + new + { + Id = 1214, + Caption = "params.edit", + IdType = 1 + }, + new + { + Id = 1215, + Caption = "report.view", + IdType = 1 + }, + new + { + Id = 1216, + Caption = "report.edit", + IdType = 1 + }, + new + { + Id = 1217, + Caption = "setpoints.view", + IdType = 1 + }, + new + { + Id = 1218, + Caption = "setpoints.edit", + IdType = 1 + }, + new + { + Id = 1219, + Caption = "telemetry.view", + IdType = 1 + }, + new + { + Id = 1220, + Caption = "telemetryAnalysis.view", + IdType = 1 + }, + new + { + Id = 1221, + Caption = "well.view", + IdType = 1 + }, + new + { + Id = 1500, + Caption = "Просмотр всего", + IdType = 1 + }, + new + { + Id = 1501, + Caption = "file.edit", + IdType = 1 + }, + new + { + Id = 1502, + Caption = "drillingProgram.edit", + IdType = 1 + }, + new + { + Id = 2000, + Caption = "Заказчик", + IdType = 0 + }, + new + { + Id = 2001, + Caption = "Супервайзер", + IdType = 0 + }, + new + { + Id = 2002, + Caption = "Буровой подрядчик", + IdType = 0 + }, + new + { + Id = 2003, + Caption = "Растворщик", + IdType = 0 + }, + new + { + Id = 2004, + Caption = "Телеметрист", + IdType = 0 + }, + new + { + Id = 2005, + Caption = "Долотный сервис", + IdType = 0 + }, + new + { + Id = 2006, + Caption = "ГТИ", + IdType = 0 + }, + new + { + Id = 2007, + Caption = "Цементирование", + IdType = 0 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserSetting", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("Key") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("key") + .HasComment("Ключ настроек пользователя"); + + b.Property("Value") + .HasColumnType("jsonb") + .HasColumnName("setting_value") + .HasComment("Значение настроек пользователя"); + + b.HasKey("IdUser", "Key"); + + b.ToTable("t_user_settings", t => + { + t.HasComment("настройки интерфейса пользователя"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.RecordBase", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("Actcod") + .HasColumnType("smallint") + .HasColumnName("ACTCOD"); + + b.Property("Date") + .HasColumnType("integer") + .HasColumnName("DATE"); + + b.Property("Recid") + .HasColumnType("smallint") + .HasColumnName("RECID"); + + b.Property("Seqid") + .HasColumnType("integer") + .HasColumnName("SEQID"); + + b.Property("Stknum") + .HasColumnType("smallint") + .HasColumnName("STKNUM"); + + b.Property("Time") + .HasColumnType("integer") + .HasColumnName("TIME"); + + b.Property("Wellid") + .HasColumnType("text") + .HasColumnName("WELLID"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_wits_base"); + + b.UseTptMappingStrategy(); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", 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("IdCluster") + .HasColumnType("integer") + .HasColumnName("id_cluster"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("state") + .HasComment("0 - неизвестно, 1 - в работе, 2 - завершена"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdWellType") + .HasColumnType("integer") + .HasColumnName("id_well_type"); + + 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("IdCluster"); + + b.HasIndex("IdTelemetry") + .IsUnique(); + + b.HasIndex("IdWellType"); + + b.ToTable("t_well", t => + { + t.HasComment("скважины"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellComposite", b => + { + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины получателя"); + + b.Property("IdWellSrc") + .HasColumnType("integer") + .HasColumnName("id_well_src") + .HasComment("Id скважины композита"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_well_section_type") + .HasComment("Id тип секции композита"); + + b.HasKey("IdWell", "IdWellSrc", "IdWellSectionType"); + + b.HasIndex("IdWellSectionType"); + + b.HasIndex("IdWellSrc"); + + b.ToTable("t_well_composite", t => + { + t.HasComment("Композитная скважина"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellFinalDocument", b => + { + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category"); + + b.HasKey("IdWell", "IdUser", "IdCategory") + .HasName("t_well_final_documents_pk"); + + b.HasIndex("IdCategory"); + + b.HasIndex("IdUser"); + + b.ToTable("t_well_final_documents", t => + { + t.HasComment("Дело скважины"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CategoryInfo") + .HasColumnType("text") + .HasColumnName("category_info") + .HasComment("Доп. информация к выбраной категории"); + + b.Property("Comment") + .HasColumnType("text") + .HasColumnName("comment") + .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("DurationHours") + .HasColumnType("double precision") + .HasColumnName("duration_hours") + .HasComment("Продолжительность, часы"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category") + .HasComment("Id категории операции"); + + b.Property("IdPlan") + .HasColumnType("integer") + .HasColumnName("id_plan") + .HasComment("Id плановой операции"); + + b.Property("IdType") + .HasColumnType("integer") + .HasColumnName("id_type") + .HasComment("0 = План или 1 = Факт"); + + b.Property("IdUser") + .HasColumnType("integer"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_well_section_type") + .HasComment("Id тип секции скважины"); + + b.Property("LastUpdateDate") + .HasColumnType("timestamp with time zone"); + + b.HasKey("Id"); + + b.HasIndex("DateStart"); + + b.HasIndex("DepthEnd"); + + b.HasIndex("IdCategory"); + + b.HasIndex("IdPlan"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_well_operation", t => + { + t.HasComment("Данные по операциям на скважине"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperationCategory", 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("IsHidden") + .HasColumnType("boolean"); + + b.Property("KeyValueName") + .HasMaxLength(32) + .HasColumnType("character varying(32)") + .HasColumnName("key_value_name") + .HasComment("Название ключевого показателя операции"); + + b.Property("KeyValueUnits") + .HasMaxLength(16) + .HasColumnType("character varying(16)") + .HasColumnName("key_value_units") + .HasComment("Единицы измерения ключевого показателя операции"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name") + .HasComment("Название категории операции"); + + b.HasKey("Id"); + + b.HasIndex("IdParent"); + + b.ToTable("t_well_operation_category", t => + { + t.HasComment("Справочник операций на скважине"); + }); + + b.HasData( + new + { + Id = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "м/ч", + Name = "БУРЕНИЕ" + }, + new + { + Id = 3001, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО" + }, + new + { + Id = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "КРЕПЛЕНИЕ" + }, + new + { + Id = 3003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ГФР" + }, + new + { + Id = 3004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Вспомогательные операции" + }, + new + { + Id = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Непроизводительное время (НПВ)" + }, + new + { + Id = 3006, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Заключительные работы" + }, + new + { + Id = 4000, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "КНБК" + }, + new + { + Id = 4001, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "м/ч", + Name = "Механическое. бурение" + }, + new + { + Id = 4002, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Статический замер" + }, + new + { + Id = 4003, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Нормализация диаметра скважины" + }, + new + { + Id = 4004, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Наращивание" + }, + new + { + Id = 4005, + IdParent = 3001, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО" + }, + new + { + Id = 4006, + IdParent = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск обсадной колонны" + }, + new + { + Id = 4018, + IdParent = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Крепление" + }, + new + { + Id = 4007, + IdParent = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Цементирование" + }, + new + { + Id = 4008, + IdParent = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Вспомогательные работы при креплении" + }, + new + { + Id = 4009, + IdParent = 3003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка/разборка приборов ГИС" + }, + new + { + Id = 4010, + IdParent = 3003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО" + }, + new + { + Id = 4011, + IdParent = 3003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ГИС" + }, + new + { + Id = 4012, + IdParent = 3004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка, ОБР" + }, + new + { + Id = 4013, + IdParent = 3004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Вспомогательные работы" + }, + new + { + Id = 4014, + IdParent = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ремонт оборудования" + }, + new + { + Id = 4015, + IdParent = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Аварийные работы" + }, + new + { + Id = 4016, + IdParent = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Осложнение" + }, + new + { + Id = 4017, + IdParent = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Незаложенные в ГГД операции" + }, + new + { + Id = 4019, + IdParent = 3006, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Заключительные операции" + }, + new + { + Id = 5000, + IdParent = 4000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Разборка КНБК" + }, + new + { + Id = 5001, + IdParent = 4000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка КНБК" + }, + new + { + Id = 5002, + IdParent = 4001, + IsHidden = true, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", + Name = "Бурение слайдом" + }, + new + { + Id = 5003, + IdParent = 4001, + IsHidden = true, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", + Name = "Бурение ротором" + }, + new + { + Id = 5004, + IdParent = 4002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Замер ЗТС (запись MWD)" + }, + new + { + Id = 5005, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка перед наращиванием" + }, + new + { + Id = 5006, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Проработка во время бурения" + }, + new + { + Id = 5007, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Проработка" + }, + new + { + Id = 5008, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонировка во время бурения" + }, + new + { + Id = 5009, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонировка перед наращиванием" + }, + new + { + Id = 5010, + IdParent = 4004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Наращивание" + }, + new + { + Id = 5011, + IdParent = 4004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Удержание в клиньях" + }, + new + { + Id = 5012, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем инструмента" + }, + new + { + Id = 5013, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем КНБК" + }, + new + { + Id = 5014, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск инструмента" + }, + new + { + Id = 5015, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск КНБК" + }, + new + { + Id = 5016, + IdParent = 4006, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка при спуске ОК" + }, + new + { + Id = 5017, + IdParent = 4006, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск ОК" + }, + new + { + Id = 5018, + IdParent = 4007, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ОЗЦ" + }, + new + { + Id = 5019, + IdParent = 4007, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Цементирование" + }, + new + { + Id = 5020, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Опрессовка БИ" + }, + new + { + Id = 5021, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Опрессовка ОК" + }, + new + { + Id = 5022, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПЗР при спуске ОК" + }, + new + { + Id = 5023, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПЗР при цементировании" + }, + new + { + Id = 5024, + IdParent = 4009, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Разборка комплекса приборов ГИС" + }, + new + { + Id = 5025, + IdParent = 4009, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка комплекса приборов ГИС" + }, + new + { + Id = 5026, + IdParent = 4010, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем приборов ГИС (на трубах)" + }, + new + { + Id = 5027, + IdParent = 4010, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск приборов ГИС (на трубах)" + }, + new + { + Id = 5028, + IdParent = 4011, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Комплекс ГИС на жестком кабеле" + }, + new + { + Id = 5029, + IdParent = 4011, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Комплекс ГИС на кабеле" + }, + new + { + Id = 5030, + IdParent = 4011, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Комплекс ГИС на трубах" + }, + new + { + Id = 5031, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Закачка/прокачка пачки" + }, + new + { + Id = 5032, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Обработка БР" + }, + new + { + Id = 5033, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ориентирование ТС при бурении" + }, + new + { + Id = 5034, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Перезапись гаммы-каротажа" + }, + new + { + Id = 5035, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Приготовление БР" + }, + new + { + Id = 5036, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка" + }, + new + { + Id = 5037, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Разбуривание тех.оснастки" + }, + new + { + Id = 5038, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск инструмента с проработкой" + }, + new + { + Id = 5039, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ВМР" + }, + new + { + Id = 5040, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Демонтаж ПВО" + }, + new + { + Id = 5041, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Долив затруба при подъёме" + }, + new + { + Id = 5042, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Монтаж ПВО" + }, + new + { + Id = 5043, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Наработка жёлоба" + }, + new + { + Id = 5044, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Обвязка устья с циркуляционной системой" + }, + new + { + Id = 5045, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Оборудование устья" + }, + new + { + Id = 5046, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Опрессовка ПВО" + }, + new + { + Id = 5047, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Перемонтаж ПВО " + }, + new + { + Id = 5048, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Перетяжка талевого каната" + }, + new + { + Id = 5049, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПЗР при сборке КНБК" + }, + new + { + Id = 5050, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Полная замена талевого каната" + }, + new + { + Id = 5051, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПР перед забуркой направления" + }, + new + { + Id = 5052, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Продувка манифольда" + }, + new + { + Id = 5053, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Срезка" + }, + new + { + Id = 5054, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Тайм-дриллинг" + }, + new + { + Id = 5055, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Тех.отстой" + }, + new + { + Id = 5056, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Учебная тревога \"Выброс\"" + }, + new + { + Id = 5057, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Чистка ЦСГО/емкостного блока" + }, + new + { + Id = 5058, + IdParent = 4014, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ремонт бурового оборудования" + }, + new + { + Id = 5059, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ловильные работы" + }, + new + { + Id = 5060, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ожидание" + }, + new + { + Id = 5061, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Определение места прихвата и ЛМ" + }, + new + { + Id = 5062, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Работа яссом" + }, + new + { + Id = 5063, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Расхаживание" + }, + new + { + Id = 5064, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО - колокол" + }, + new + { + Id = 5065, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО - метчик" + }, + new + { + Id = 5066, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО - овершот" + }, + new + { + Id = 5067, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО - труболовка" + }, + new + { + Id = 5068, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Торпедирование (встряхивание)" + }, + new + { + Id = 5069, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Торпедирование (отстрел)" + }, + new + { + Id = 5070, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Установка ванн" + }, + new + { + Id = 5071, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Фрезеровка" + }, + new + { + Id = 5072, + IdParent = 4016, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Контролируемое ГНВП" + }, + new + { + Id = 5073, + IdParent = 4016, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Поглощение" + }, + new + { + Id = 5074, + IdParent = 4016, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сальникообразование" + }, + new + { + Id = 5075, + IdParent = 4016, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Утяжеление БР" + }, + new + { + Id = 5076, + IdParent = 4017, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "НПВ / прочее" + }, + new + { + Id = 5077, + IdParent = 4017, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Обработка раствора (несоответствие параметров)" + }, + new + { + Id = 5078, + IdParent = 4017, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "подъем ОК" + }, + new + { + Id = 5079, + IdParent = 4017, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ревизия КНБК/инструмента/ЗТС" + }, + new + { + Id = 5082, + IdParent = 4000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка устройства ориентирования КО" + }, + new + { + Id = 5083, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Проработка принудительная" + }, + new + { + Id = 5084, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонировка подъем БИ, продувка" + }, + new + { + Id = 5085, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск бурильного инструмента со сборкой с мостков" + }, + new + { + Id = 5086, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем БИ с выбросом на мостки" + }, + new + { + Id = 5087, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск БИ со сборкой с мостков" + }, + new + { + Id = 5088, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка и спуск ТБТ" + }, + new + { + Id = 5089, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск КО на транспортной колонне" + }, + new + { + Id = 5090, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Отворот допускной трубы" + }, + new + { + Id = 5091, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Активация подвески, опрессовка" + }, + new + { + Id = 5092, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Монтаж, опрессовка ФА" + }, + new + { + Id = 5093, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка хвостовика 114мм (согласно схеме)" + }, + new + { + Id = 5094, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПЗР к спуску УЭЦН" + }, + new + { + Id = 5095, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Активация подвески (потайной колонны, хвостовика)" + }, + new + { + Id = 5096, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонирование перед спуском" + }, + new + { + Id = 5097, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка - перевод скважины на новый раствор" + }, + new + { + Id = 5098, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка БИ с мостков на подсвечник" + }, + new + { + Id = 5099, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подготовка ствола скважины. Перезапись ГК в интервале установки КО." + }, + new + { + Id = 5100, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Смена рабочего переводника ВСП" + }, + new + { + Id = 5101, + IdParent = 4014, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ремонт" + }, + new + { + Id = 5102, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск пакера" + }, + new + { + Id = 5103, + IdParent = 4011, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Запись гамма-каратожа" + }, + new + { + Id = 5104, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонирование спуск БИ" + }, + new + { + Id = 5105, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка клин-отклонителя" + }, + new + { + Id = 5106, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ориентирование и посадка клина-отклонителя" + }, + new + { + Id = 5107, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Протяжка подъемного патрубка подвески" + }, + new + { + Id = 5108, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем клина-отклонителя" + }, + new + { + Id = 5109, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Стыковка стингера с хвостовиком основного ствола" + }, + new + { + Id = 5110, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ориентирование и установка стыковочного узла хвостовика" + }, + new + { + Id = 5111, + IdParent = 4001, + IsHidden = false, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", + Name = "Бурение с отбором керна" + }, + new + { + Id = 5112, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Работа пакером в обсадной колонне" + }, + new + { + Id = 5113, + IdParent = 4001, + IsHidden = false, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", + Name = "Бурение" + }, + new + { + Id = 5114, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ТО оборудования" + }, + new + { + Id = 5115, + IdParent = 4019, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск НКТ" + }, + new + { + Id = 5116, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Вырезка окна" + }, + new + { + Id = 5117, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Расширение ствола" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSectionType", 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("Order") + .HasColumnType("real") + .HasColumnName("order") + .HasComment("Порядок"); + + b.HasKey("Id"); + + b.ToTable("t_well_section_type", t => + { + t.HasComment("конструкция секции скважины"); + }); + + b.HasData( + new + { + Id = 1, + Caption = "Пилотный ствол 1", + Order = 5f + }, + new + { + Id = 2, + Caption = "Направление 1", + Order = 0f + }, + new + { + Id = 3, + Caption = "Кондуктор 1", + Order = 1f + }, + new + { + Id = 4, + Caption = "Эксплуатационная колонна 1", + Order = 3f + }, + new + { + Id = 5, + Caption = "Транспортный ствол 1", + Order = 4f + }, + new + { + Id = 6, + Caption = "Хвостовик 1", + Order = 6f + }, + new + { + Id = 7, + Caption = "Пилотный ствол 2", + Order = 5.1f + }, + new + { + Id = 8, + Caption = "Направление 2", + Order = 0.1f + }, + new + { + Id = 9, + Caption = "Кондуктор 2", + Order = 1.1f + }, + new + { + Id = 10, + Caption = "Эксплуатационная колонна 2", + Order = 3.1f + }, + new + { + Id = 11, + Caption = "Транспортный ствол 2", + Order = 4.1f + }, + new + { + Id = 12, + Caption = "Хвостовик 2", + Order = 6.1f + }, + new + { + Id = 13, + Caption = "Пилотный ствол 3", + Order = 5.2f + }, + new + { + Id = 14, + Caption = "Направление 3", + Order = 0.2f + }, + new + { + Id = 15, + Caption = "Кондуктор 3", + Order = 1.2f + }, + new + { + Id = 16, + Caption = "Эксплуатационная колонна 3", + Order = 3.2f + }, + new + { + Id = 17, + Caption = "Транспортный ствол 3", + Order = 4.2f + }, + new + { + Id = 18, + Caption = "Хвостовик 3", + Order = 6.2f + }, + new + { + Id = 19, + Caption = "Пилотный ствол 4", + Order = 5.3f + }, + new + { + Id = 20, + Caption = "Направление 4", + Order = 0.3f + }, + new + { + Id = 21, + Caption = "Кондуктор 4", + Order = 1.3f + }, + new + { + Id = 22, + Caption = "Эксплуатационная колонна 4", + Order = 3.3f + }, + new + { + Id = 23, + Caption = "Транспортный ствол 4", + Order = 4.3f + }, + new + { + Id = 24, + Caption = "Хвостовик 4", + Order = 6.3f + }, + new + { + Id = 25, + Caption = "Пилотный ствол 5", + Order = 5.4f + }, + new + { + Id = 26, + Caption = "Направление 5", + Order = 0.4f + }, + new + { + Id = 27, + Caption = "Кондуктор 5", + Order = 1.4f + }, + new + { + Id = 28, + Caption = "Эксплуатационная колонна 5", + Order = 3.4f + }, + new + { + Id = 29, + Caption = "Транспортный ствол 5", + Order = 4.4f + }, + new + { + Id = 30, + Caption = "Хвостовик 5", + Order = 6.4f + }, + new + { + Id = 31, + Caption = "Техническая колонна 1", + Order = 2f + }, + new + { + Id = 32, + Caption = "Техническая колонна 2", + Order = 2.1f + }, + new + { + Id = 33, + Caption = "Техническая колонна 3", + Order = 2.2f + }, + new + { + Id = 34, + Caption = "Хвостовик 6", + Order = 6.5f + }, + new + { + Id = 35, + Caption = "Хвостовик 7", + Order = 6.6f + }, + new + { + Id = 36, + Caption = "Хвостовик 8", + Order = 6.7f + }, + new + { + Id = 37, + Caption = "Хвостовик 9", + Order = 6.8f + }, + new + { + Id = 38, + Caption = "Хвостовик 10", + Order = 6.9f + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSections.WellSectionPlan", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + 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("IdSectionType") + .HasColumnType("integer") + .HasColumnName("id_section_type") + .HasComment("Тип секции"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user") + .HasComment("Id пользователя"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("InnerDiameter") + .HasColumnType("double precision") + .HasColumnName("inner_diameter") + .HasComment("Внутренний диаметр"); + + b.Property("LastUpdateDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_last_update") + .HasComment("Дата последнего обновления"); + + b.Property("OuterDiameter") + .HasColumnType("double precision") + .HasColumnName("outer_diameter") + .HasComment("Внешний диаметр"); + + b.HasKey("Id"); + + b.HasIndex("IdSectionType"); + + b.HasIndex("IdWell", "IdSectionType") + .IsUnique(); + + b.ToTable("t_well_section_plan"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellType", 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.HasKey("Id"); + + b.ToTable("t_well_type", t => + { + t.HasComment("конструкция скважины"); + }); + + b.HasData( + new + { + Id = 1, + Caption = "Наклонно-направленная" + }, + new + { + Id = 2, + Caption = "Горизонтальная" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record1", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Blkpos") + .HasColumnType("real") + .HasColumnName("BLKPOS"); + + b.Property("Chkp") + .HasColumnType("real") + .HasColumnName("CHKP"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptbitv") + .HasColumnType("real") + .HasColumnName("DEPTBITV"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptretm") + .HasColumnType("real") + .HasColumnName("DEPTRETM"); + + b.Property("Deptvert") + .HasColumnType("real") + .HasColumnName("DEPTVERT"); + + b.Property("Gasa") + .HasColumnType("real") + .HasColumnName("GASA"); + + b.Property("Hkla") + .HasColumnType("real") + .HasColumnName("HKLA"); + + b.Property("Hklx") + .HasColumnType("real") + .HasColumnName("HKLX"); + + b.Property("Lagstks") + .HasColumnType("smallint") + .HasColumnName("LAGSTKS"); + + b.Property("Mcia") + .HasColumnType("real") + .HasColumnName("MCIA"); + + b.Property("Mcoa") + .HasColumnType("real") + .HasColumnName("MCOA"); + + b.Property("Mdia") + .HasColumnType("real") + .HasColumnName("MDIA"); + + b.Property("Mdoa") + .HasColumnType("real") + .HasColumnName("MDOA"); + + b.Property("Mfia") + .HasColumnType("real") + .HasColumnName("MFIA"); + + b.Property("Mfoa") + .HasColumnType("real") + .HasColumnName("MFOA"); + + b.Property("Mfop") + .HasColumnType("smallint") + .HasColumnName("MFOP"); + + b.Property("Mtia") + .HasColumnType("real") + .HasColumnName("MTIA"); + + b.Property("Mtoa") + .HasColumnType("real") + .HasColumnName("MTOA"); + + b.Property("Ropa") + .HasColumnType("real") + .HasColumnName("ROPA"); + + b.Property("Rpma") + .HasColumnType("smallint") + .HasColumnName("RPMA"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Spm1") + .HasColumnType("smallint") + .HasColumnName("SPM1"); + + b.Property("Spm2") + .HasColumnType("smallint") + .HasColumnName("SPM2"); + + b.Property("Spm3") + .HasColumnType("smallint") + .HasColumnName("SPM3"); + + b.Property("Sppa") + .HasColumnType("real") + .HasColumnName("SPPA"); + + b.Property("Stkc") + .HasColumnType("integer") + .HasColumnName("STKC"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.Property("Torqa") + .HasColumnType("real") + .HasColumnName("TORQA"); + + b.Property("Torqx") + .HasColumnType("real") + .HasColumnName("TORQX"); + + b.Property("Tvolact") + .HasColumnType("real") + .HasColumnName("TVOLACT"); + + b.Property("Tvolcact") + .HasColumnType("real") + .HasColumnName("TVOLCACT"); + + b.Property("Woba") + .HasColumnType("real") + .HasColumnName("WOBA"); + + b.Property("Wobx") + .HasColumnType("real") + .HasColumnName("WOBX"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_1"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record50", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("DeptmeasGdpMc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_GDP_mc"); + + b.Property("DeptmeasMcrstat") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_MCRSTAT"); + + b.Property("DeptmeasRa33Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33_mc"); + + b.Property("DeptmeasRa33f2Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33F2_mc"); + + b.Property("DeptmeasRa33f4Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33F4_mc"); + + b.Property("DeptmeasRp33Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33_mc"); + + b.Property("DeptmeasRp33f2Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33F2_mc"); + + b.Property("DeptmeasRp33f4Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33F4_mc"); + + b.Property("DeptmeasSlvlMc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_SLVL_mc"); + + b.Property("GdpMc") + .HasColumnType("real") + .HasColumnName("GDP_mc"); + + b.Property("Mcrstat") + .HasColumnType("real") + .HasColumnName("MCRSTAT"); + + b.Property("Ra33Mc") + .HasColumnType("real") + .HasColumnName("RA33_mc"); + + b.Property("Ra33f2Mc") + .HasColumnType("real") + .HasColumnName("RA33F2_mc"); + + b.Property("Ra33f4Mc") + .HasColumnType("real") + .HasColumnName("RA33F4_mc"); + + b.Property("Rp33Mc") + .HasColumnType("real") + .HasColumnName("RP33_mc"); + + b.Property("Rp33f2Mc") + .HasColumnType("real") + .HasColumnName("RP33F2_mc"); + + b.Property("Rp33f4Mc") + .HasColumnType("real") + .HasColumnName("RP33F4_mc"); + + b.Property("SlvlMc") + .HasColumnType("real") + .HasColumnName("SLVL_mc"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_50"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record60", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Btot") + .HasColumnType("real") + .HasColumnName("Btot"); + + b.Property("Bx") + .HasColumnType("real") + .HasColumnName("Bx"); + + b.Property("By") + .HasColumnType("real") + .HasColumnName("By"); + + b.Property("Bz") + .HasColumnType("real") + .HasColumnName("Bz"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Gtot") + .HasColumnType("real") + .HasColumnName("Gtot"); + + b.Property("Gx") + .HasColumnType("real") + .HasColumnName("Gx"); + + b.Property("Gy") + .HasColumnType("real") + .HasColumnName("Gy"); + + b.Property("Gz") + .HasColumnType("real") + .HasColumnName("Gz"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_60"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record61", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Att06h") + .HasColumnType("real") + .HasColumnName("ATT06H"); + + b.Property("Att06l") + .HasColumnType("real") + .HasColumnName("ATT06L"); + + b.Property("Att10h") + .HasColumnType("real") + .HasColumnName("ATT10H"); + + b.Property("Att10l") + .HasColumnType("real") + .HasColumnName("ATT10L"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Phl1f1") + .HasColumnType("real") + .HasColumnName("PHL1F1"); + + b.Property("Phl1f2") + .HasColumnType("real") + .HasColumnName("PHL1F2"); + + b.Property("Phl2f1") + .HasColumnType("real") + .HasColumnName("PHL2F1"); + + b.Property("Phl2f2") + .HasColumnType("real") + .HasColumnName("PHL2F2"); + + b.Property("Status") + .HasColumnType("real") + .HasColumnName("Status"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_61"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record7", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptsvym") + .HasColumnType("real") + .HasColumnName("DEPTSVYM"); + + b.Property("Deptsvyv") + .HasColumnType("real") + .HasColumnName("DEPTSVYV"); + + b.Property("Passnum") + .HasColumnType("smallint") + .HasColumnName("PASSNUM"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Svyazc") + .HasColumnType("real") + .HasColumnName("SVYAZC"); + + b.Property("Svyazu") + .HasColumnType("real") + .HasColumnName("SVYAZU"); + + b.Property("Svydls") + .HasColumnType("real") + .HasColumnName("SVYDLS"); + + b.Property("Svyew") + .HasColumnType("real") + .HasColumnName("SVYEW"); + + b.Property("Svygtf") + .HasColumnType("real") + .HasColumnName("SVYGTF"); + + b.Property("Svyinc") + .HasColumnType("real") + .HasColumnName("SVYINC"); + + b.Property("Svymtf") + .HasColumnType("real") + .HasColumnName("SVYMTF"); + + b.Property("Svyns") + .HasColumnType("real") + .HasColumnName("SVYNS"); + + b.Property("Svytype") + .HasColumnType("text") + .HasColumnName("SVYTYPE"); + + b.Property("Svywalk") + .HasColumnType("real") + .HasColumnName("SVYWALK"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_7"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record8", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptbitv") + .HasColumnType("real") + .HasColumnName("DEPTBITV"); + + b.Property("Deptcalm") + .HasColumnType("real") + .HasColumnName("DEPTCALM"); + + b.Property("Deptcalv") + .HasColumnType("real") + .HasColumnName("DEPTCALV"); + + b.Property("Deptfdm") + .HasColumnType("real") + .HasColumnName("DEPTFDM"); + + b.Property("Deptfdv") + .HasColumnType("real") + .HasColumnName("DEPTFDV"); + + b.Property("Deptgr1m") + .HasColumnType("real") + .HasColumnName("DEPTGR1M"); + + b.Property("Deptgr1v") + .HasColumnType("real") + .HasColumnName("DEPTGR1V"); + + b.Property("Deptgr2m") + .HasColumnType("real") + .HasColumnName("DEPTGR2M"); + + b.Property("Deptgr2v") + .HasColumnType("real") + .HasColumnName("DEPTGR2V"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptp1m") + .HasColumnType("real") + .HasColumnName("DEPTP1M"); + + b.Property("Deptp1v") + .HasColumnType("real") + .HasColumnName("DEPTP1V"); + + b.Property("Deptp2m") + .HasColumnType("real") + .HasColumnName("DEPTP2M"); + + b.Property("Deptp2v") + .HasColumnType("real") + .HasColumnName("DEPTP2V"); + + b.Property("Deptrs1m") + .HasColumnType("real") + .HasColumnName("DEPTRS1M"); + + b.Property("Deptrs1v") + .HasColumnType("real") + .HasColumnName("DEPTRS1V"); + + b.Property("Deptrs2m") + .HasColumnType("real") + .HasColumnName("DEPTRS2M"); + + b.Property("Deptrs2v") + .HasColumnType("real") + .HasColumnName("DEPTRS2V"); + + b.Property("Deptvert") + .HasColumnType("real") + .HasColumnName("DEPTVERT"); + + b.Property("Mclp") + .HasColumnType("real") + .HasColumnName("MCLP"); + + b.Property("Mfd") + .HasColumnType("real") + .HasColumnName("MFD"); + + b.Property("Mffp") + .HasColumnType("real") + .HasColumnName("MFFP"); + + b.Property("Mfpp") + .HasColumnType("real") + .HasColumnName("MFPP"); + + b.Property("Mfrann") + .HasColumnType("real") + .HasColumnName("MFRANN"); + + b.Property("Mfrpipe") + .HasColumnType("real") + .HasColumnName("MFRPIPE"); + + b.Property("Mftann") + .HasColumnType("real") + .HasColumnName("MFTANN"); + + b.Property("Mftpipe") + .HasColumnType("real") + .HasColumnName("MFTPIPE"); + + b.Property("Mg1") + .HasColumnType("real") + .HasColumnName("MG1"); + + b.Property("Mg1c") + .HasColumnType("real") + .HasColumnName("MG1C"); + + b.Property("Mg2") + .HasColumnType("real") + .HasColumnName("MG2"); + + b.Property("Mg2c") + .HasColumnType("real") + .HasColumnName("MG2C"); + + b.Property("Mpo1") + .HasColumnType("real") + .HasColumnName("MPO1"); + + b.Property("Mpo2") + .HasColumnType("real") + .HasColumnName("MPO2"); + + b.Property("Mr1") + .HasColumnType("real") + .HasColumnName("MR1"); + + b.Property("Mr1c") + .HasColumnType("real") + .HasColumnName("MR1C"); + + b.Property("Mr2") + .HasColumnType("real") + .HasColumnName("MR2"); + + b.Property("Mr2c") + .HasColumnType("real") + .HasColumnName("MR2C"); + + b.Property("Passnum") + .HasColumnType("smallint") + .HasColumnName("PASSNUM"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Spare6") + .HasColumnType("real") + .HasColumnName("SPARE6"); + + b.Property("Spare7") + .HasColumnType("real") + .HasColumnName("SPARE7"); + + b.Property("Spare8") + .HasColumnType("real") + .HasColumnName("SPARE8"); + + b.Property("Spare9") + .HasColumnType("real") + .HasColumnName("SPARE9"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_8"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Cluster", b => + { + b.HasOne("AsbCloudDb.Model.Deposit", "Deposit") + .WithMany("Clusters") + .HasForeignKey("IdDeposit") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_cluster_t_deposit_id_fk"); + + b.Navigation("Deposit"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Company", b => + { + b.HasOne("AsbCloudDb.Model.CompanyType", "CompanyType") + .WithMany("Companies") + .HasForeignKey("IdCompanyType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("CompanyType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Contact", b => + { + b.HasOne("AsbCloudDb.Model.CompanyType", "CompanyType") + .WithMany("Contacts") + .HasForeignKey("IdCompanyType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("Contacts") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("CompanyType"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DailyReports.DailyReport", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DataSaubStat", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DetectedOperation", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillTest", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillingProgramPart", b => + { + b.HasOne("AsbCloudDb.Model.FileCategory", "FileCategory") + .WithMany() + .HasForeignKey("IdFileCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("DrillingProgramParts") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("FileCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Faq", b => + { + b.HasOne("AsbCloudDb.Model.User", "AuthorAnswer") + .WithMany() + .HasForeignKey("IdAuthorAnswer"); + + b.HasOne("AsbCloudDb.Model.User", "AuthorQuestion") + .WithMany() + .HasForeignKey("IdAuthorQuestion") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("AuthorAnswer"); + + b.Navigation("AuthorQuestion"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileInfo", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany("Files") + .HasForeignKey("IdAuthor"); + + b.HasOne("AsbCloudDb.Model.FileCategory", "FileCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("FileCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileMark", b => + { + b.HasOne("AsbCloudDb.Model.FileInfo", "FileInfo") + .WithMany("FileMarks") + .HasForeignKey("IdFile") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_file_mark_t_file_info_fk"); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany("FileMarks") + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_user_t_file_mark_fk"); + + b.Navigation("FileInfo"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemFloat", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemInt", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemString", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.HelpPage", b => + { + b.HasOne("AsbCloudDb.Model.FileCategory", "FileCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("FileCategory"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.LimitingParameter", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Manuals.Manual", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.FileCategory", "Category") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Manuals.ManualDirectory", "Directory") + .WithMany("Manuals") + .HasForeignKey("IdDirectory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Category"); + + b.Navigation("Directory"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Manuals.ManualDirectory", b => + { + b.HasOne("AsbCloudDb.Model.Manuals.ManualDirectory", "Parent") + .WithMany("Children") + .HasForeignKey("IdParent") + .OnDelete(DeleteBehavior.Cascade); + + b.Navigation("Parent"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Measure", b => + { + b.HasOne("AsbCloudDb.Model.MeasureCategory", "Category") + .WithMany("Measures") + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Category"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Notification", b => + { + b.HasOne("AsbCloudDb.Model.NotificationCategory", "NotificationCategory") + .WithMany("Notifications") + .HasForeignKey("IdNotificationCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("NotificationCategory"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.OperationValue", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdOperationCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAntiCrashRotation", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAntiCrashRotation", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAutoHoldTF", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAutoHoldTF", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDamper", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDamper", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDrillTest", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDrillTest", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanOscillation", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanOscillation", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanShockTest", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanShockTest", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanStaticMeasurementOutput", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanStaticMeasurementOutput", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanLoadCapacity", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanLoadCapacity", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanOscillationAngles", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanOscillationAngles", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanPositioningOffTheBottom", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanPositioningOffTheBottom", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingRotor", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingRotor", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingSlide", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingSlide", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRecordingStaticMeasurement", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRecordingStaticMeasurement", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRotor", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRotor", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSlide", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSlide", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingOffThePump", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict) + .HasConstraintName("FK_t_process_map_plan_operation_switching_off_the_pump_t_user~1"); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingOffThePump", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_t_process_map_plan_operation_switching_off_the_pump_t_well~1"); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingToTheMode", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingToTheMode", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanTFOrientation", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanTFOrientation", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => + { + b.HasOne("AsbCloudDb.Model.Company", "Company") + .WithMany("RelationCompaniesWells") + .HasForeignKey("IdCompany") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_relation_company_well_t_company_id_fk"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("RelationCompaniesWells") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_relation_company_well_t_well_id_fk"); + + b.Navigation("Company"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationContactWell", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany("RelationContactsWells") + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserDrillingProgramPart", b => + { + b.HasOne("AsbCloudDb.Model.DrillingProgramPart", "DrillingProgramPart") + .WithMany("RelatedUsers") + .HasForeignKey("IdDrillingProgramPart") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("DrillingProgramPart"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRolePermission", b => + { + b.HasOne("AsbCloudDb.Model.Permission", "Permission") + .WithMany("RelationUserRolePermissions") + .HasForeignKey("IdPermission") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "UserRole") + .WithMany("RelationUserRolePermissions") + .HasForeignKey("IdUserRole") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Permission"); + + b.Navigation("UserRole"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRoleUserRole", b => + { + b.HasOne("AsbCloudDb.Model.UserRole", "Role") + .WithMany("RelationUserRoleUserRoles") + .HasForeignKey("Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "IncludeRole") + .WithMany() + .HasForeignKey("IdInclude") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("IncludeRole"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserUserRole", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany("RelationUsersUserRoles") + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "UserRole") + .WithMany("RelationUsersUserRoles") + .HasForeignKey("IdUserRole") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + + b.Navigation("UserRole"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ReportProperty", b => + { + b.HasOne("AsbCloudDb.Model.FileInfo", "File") + .WithMany() + .HasForeignKey("IdFile") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("File"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Schedule", b => + { + b.HasOne("AsbCloudDb.Model.Driller", "Driller") + .WithMany("Schedule") + .HasForeignKey("IdDriller") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_schedule_t_driller_id_driller"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Driller"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.SetpointsRequest", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaub", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("DataSaub") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_data_saub_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSpin", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("DataSpin") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_data_spin_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryEvent", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Events") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_event_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryMessage", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Messages") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_messages_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryUser", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Users") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_user_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Trajectory.TrajectoryFact", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Trajectory.TrajectoryPlan", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.HasOne("AsbCloudDb.Model.Company", "Company") + .WithMany("Users") + .HasForeignKey("IdCompany") + .OnDelete(DeleteBehavior.SetNull) + .IsRequired() + .HasConstraintName("t_user_t_company_id_fk"); + + b.Navigation("Company"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserSetting", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", b => + { + b.HasOne("AsbCloudDb.Model.Cluster", "Cluster") + .WithMany("Wells") + .HasForeignKey("IdCluster") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_t_cluster_id_fk"); + + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithOne("Well") + .HasForeignKey("AsbCloudDb.Model.Well", "IdTelemetry") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("t_well_t_telemetry_id_fk"); + + b.HasOne("AsbCloudDb.Model.WellType", "WellType") + .WithMany("Wells") + .HasForeignKey("IdWellType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Cluster"); + + b.Navigation("Telemetry"); + + b.Navigation("WellType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellComposite", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("WellComposites") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_t_well_id_fk"); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany("WellComposites") + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_t_well_section_type_id_fk"); + + b.HasOne("AsbCloudDb.Model.Well", "WellSrc") + .WithMany("WellCompositeSrcs") + .HasForeignKey("IdWellSrc") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_src_t_well_id_fk"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + + b.Navigation("WellSrc"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellFinalDocument", b => + { + b.HasOne("AsbCloudDb.Model.FileCategory", "Category") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Category"); + + b.Navigation("User"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperation", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellOperation", "OperationPlan") + .WithMany() + .HasForeignKey("IdPlan") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("WellOperations") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany("WellOperations") + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("OperationPlan"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperationCategory", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "Parent") + .WithMany() + .HasForeignKey("IdParent"); + + b.Navigation("Parent"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSections.WellSectionPlan", b => + { + b.HasOne("AsbCloudDb.Model.WellSectionType", "SectionType") + .WithMany() + .HasForeignKey("IdSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("SectionType"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record1", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record1", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record50", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record50", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record60", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record60", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record61", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record61", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record7", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record7", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record8", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record8", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Cluster", b => + { + b.Navigation("Wells"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Company", b => + { + b.Navigation("RelationCompaniesWells"); + + b.Navigation("Users"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.CompanyType", b => + { + b.Navigation("Companies"); + + b.Navigation("Contacts"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Deposit", b => + { + b.Navigation("Clusters"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Driller", b => + { + b.Navigation("Schedule"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillingProgramPart", b => + { + b.Navigation("RelatedUsers"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileInfo", b => + { + b.Navigation("FileMarks"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Manuals.ManualDirectory", b => + { + b.Navigation("Children"); + + b.Navigation("Manuals"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.MeasureCategory", b => + { + b.Navigation("Measures"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.NotificationCategory", b => + { + b.Navigation("Notifications"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Permission", b => + { + b.Navigation("RelationUserRolePermissions"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Telemetry", b => + { + b.Navigation("DataSaub"); + + b.Navigation("DataSpin"); + + b.Navigation("Events"); + + b.Navigation("Messages"); + + b.Navigation("Users"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.Navigation("FileMarks"); + + b.Navigation("Files"); + + b.Navigation("RelationContactsWells"); + + b.Navigation("RelationUsersUserRoles"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserRole", b => + { + b.Navigation("RelationUserRolePermissions"); + + b.Navigation("RelationUserRoleUserRoles"); + + b.Navigation("RelationUsersUserRoles"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", b => + { + b.Navigation("Contacts"); + + b.Navigation("DrillingProgramParts"); + + b.Navigation("RelationCompaniesWells"); + + b.Navigation("WellCompositeSrcs"); + + b.Navigation("WellComposites"); + + b.Navigation("WellOperations"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSectionType", b => + { + b.Navigation("WellComposites"); + + b.Navigation("WellOperations"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellType", b => + { + b.Navigation("Wells"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/AsbCloudDb/Migrations/20240729063346_Update_WellSectionType_Caption.cs b/AsbCloudDb/Migrations/20240729063346_Update_WellSectionType_Caption.cs new file mode 100644 index 00000000..a7aea125 --- /dev/null +++ b/AsbCloudDb/Migrations/20240729063346_Update_WellSectionType_Caption.cs @@ -0,0 +1,116 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace AsbCloudDb.Migrations +{ + /// + public partial class Update_WellSectionType_Caption : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.UpdateData( + table: "t_well_section_type", + keyColumn: "id", + keyValue: 1, + column: "caption", + value: "Пилотный ствол 1"); + + migrationBuilder.UpdateData( + table: "t_well_section_type", + keyColumn: "id", + keyValue: 2, + column: "caption", + value: "Направление 1"); + + migrationBuilder.UpdateData( + table: "t_well_section_type", + keyColumn: "id", + keyValue: 3, + column: "caption", + value: "Кондуктор 1"); + + migrationBuilder.UpdateData( + table: "t_well_section_type", + keyColumn: "id", + keyValue: 4, + column: "caption", + value: "Эксплуатационная колонна 1"); + + migrationBuilder.UpdateData( + table: "t_well_section_type", + keyColumn: "id", + keyValue: 5, + column: "caption", + value: "Транспортный ствол 1"); + + migrationBuilder.UpdateData( + table: "t_well_section_type", + keyColumn: "id", + keyValue: 6, + column: "caption", + value: "Хвостовик 1"); + + migrationBuilder.UpdateData( + table: "t_well_section_type", + keyColumn: "id", + keyValue: 31, + column: "caption", + value: "Техническая колонна 1"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.UpdateData( + table: "t_well_section_type", + keyColumn: "id", + keyValue: 1, + column: "caption", + value: "Пилотный ствол"); + + migrationBuilder.UpdateData( + table: "t_well_section_type", + keyColumn: "id", + keyValue: 2, + column: "caption", + value: "Направление"); + + migrationBuilder.UpdateData( + table: "t_well_section_type", + keyColumn: "id", + keyValue: 3, + column: "caption", + value: "Кондуктор"); + + migrationBuilder.UpdateData( + table: "t_well_section_type", + keyColumn: "id", + keyValue: 4, + column: "caption", + value: "Эксплуатационная колонна"); + + migrationBuilder.UpdateData( + table: "t_well_section_type", + keyColumn: "id", + keyValue: 5, + column: "caption", + value: "Транспортный ствол"); + + migrationBuilder.UpdateData( + table: "t_well_section_type", + keyColumn: "id", + keyValue: 6, + column: "caption", + value: "Хвостовик"); + + migrationBuilder.UpdateData( + table: "t_well_section_type", + keyColumn: "id", + keyValue: 31, + column: "caption", + value: "Техническая колонна"); + } + } +} diff --git a/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs b/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs index d029b26d..5d6ea48e 100644 --- a/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs +++ b/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs @@ -19,7 +19,7 @@ namespace AsbCloudDb.Migrations #pragma warning disable 612, 618 modelBuilder .UseCollation("Russian_Russia.1251") - .HasAnnotation("ProductVersion", "8.0.2") + .HasAnnotation("ProductVersion", "8.0.4") .HasAnnotation("Relational:MaxIdentifierLength", 63); NpgsqlModelBuilderExtensions.HasPostgresExtension(modelBuilder, "adminpack"); @@ -2629,7 +2629,7 @@ namespace AsbCloudDb.Migrations }); }); - modelBuilder.Entity("AsbCloudDb.Model.ProcessMaps.ProcessMapPlanDrilling", b => + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAntiCrashRotation", b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -2639,38 +2639,11 @@ namespace AsbCloudDb.Migrations 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("Comment") - .IsRequired() - .HasMaxLength(1024) - .HasColumnType("character varying(1024)") - .HasColumnName("comment") - .HasComment("Комментарий"); - b.Property("Creation") .HasColumnType("timestamp with time zone") .HasColumnName("creation") .HasComment("дата создания"); - b.Property("DeltaPressureLimitMax") - .HasColumnType("double precision") - .HasColumnName("delta_pressure_limit_max") - .HasComment("Перепад давления, атм, допустимый максимум"); - - b.Property("DeltaPressurePlan") - .HasColumnType("double precision") - .HasColumnName("delta_pressure_plan") - .HasComment("Перепад давления, атм, план"); - b.Property("DepthEnd") .HasColumnType("double precision") .HasColumnName("depth_end") @@ -2681,16 +2654,6 @@ namespace AsbCloudDb.Migrations .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("IdAuthor") .HasColumnType("integer") .HasColumnName("id_author") @@ -2701,11 +2664,6 @@ namespace AsbCloudDb.Migrations .HasColumnName("id_editor") .HasComment("Редактор"); - b.Property("IdMode") - .HasColumnType("integer") - .HasColumnName("id_mode") - .HasComment("Id режима (1- ротор, 2 слайд)"); - b.Property("IdPrevious") .HasColumnType("integer") .HasColumnName("id_previous") @@ -2726,45 +2684,32 @@ namespace AsbCloudDb.Migrations .HasColumnName("id_wellsection_type") .HasComment("Тип секции"); + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + b.Property("Obsolete") .HasColumnType("timestamp with time zone") .HasColumnName("obsolete") .HasComment("дата устаревания"); - b.Property("RopPlan") + b.Property("TopDriveRpmMin") .HasColumnType("double precision") - .HasColumnName("rop_plan") - .HasComment("Плановая механическая скорость, м/ч"); + .HasColumnName("top_drive_rpm_min") + .HasComment("Минимальные обороты ВСП, об/мин"); - b.Property("TopDriveSpeedLimitMax") + b.Property("TopDriveStartMinFlowRate") .HasColumnType("double precision") - .HasColumnName("top_drive_speed_limit_max") - .HasComment("Обороты на ВСП, допустимый максимум"); + .HasColumnName("top_drive_start_min_flow_rate") + .HasComment("Минимальный расход для запуска оборотов ВСП, л/сек"); - b.Property("TopDriveSpeedPlan") + b.Property("TopDriveTorqueMax") .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"); + .HasColumnName("top_drive_torque_max") + .HasComment("Максимально допустимый момент на ВСП при противоаварийном вращении, кН*м"); b.HasKey("Id"); @@ -2778,13 +2723,13 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdWellSectionType"); - b.ToTable("t_process_map_plan_drilling", t => + b.ToTable("t_process_map_plan_anti_crash_rotation", t => { - t.HasComment("РТК план бурение"); + t.HasComment("Противоаварийное вращение"); }); }); - modelBuilder.Entity("AsbCloudDb.Model.ProcessMaps.ProcessMapPlanReam", b => + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAutoHoldTF", b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -2839,55 +2784,21 @@ namespace AsbCloudDb.Migrations .HasColumnName("id_wellsection_type") .HasComment("Тип секции"); + b.Property("Note") + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + b.Property("Obsolete") .HasColumnType("timestamp with time zone") .HasColumnName("obsolete") .HasComment("дата устаревания"); - b.Property("Pressure") + b.Property("ZenithAngle") .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("Момент, кН*м"); + .HasColumnName("zenit_angle") + .HasComment("Зенитный угол, градусы"); b.HasKey("Id"); @@ -2895,13 +2806,2089 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdEditor"); + b.HasIndex("IdPrevious"); + b.HasIndex("IdWell"); b.HasIndex("IdWellSectionType"); - b.ToTable("t_process_map_plan_ream", t => + b.ToTable("t_process_map_plan_auto_hold_tf", t => { - t.HasComment("РТК проработка скважины"); + t.HasComment("Автоудержание TF"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDamper", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("StickSlip") + .HasColumnType("double precision") + .HasColumnName("stick_slip") + .HasComment("StickSlip"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_functions_damper", t => + { + t.HasComment("Демпфер"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDrillTest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("LengthStep") + .HasColumnType("double precision") + .HasColumnName("length_step") + .HasComment("Величина проходки шага, м."); + + b.Property("Note") + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("RpmMin") + .HasColumnType("double precision") + .HasColumnName("rpm_min") + .HasComment("Минимальные обороты на ВСП, об/мин."); + + b.Property("RpmStepsCount") + .HasColumnType("integer") + .HasColumnName("rpm_steps_count") + .HasComment("Количество шагов оборотов на ВСП, об/мин."); + + b.Property("WeightOnBitMin") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_min") + .HasComment("Нагрузка минимальная, т"); + + b.Property("WeightOnBitStepsCount") + .HasColumnType("integer") + .HasColumnName("weight_on_bit_steps_count") + .HasComment("Количество шагов по нагрузке"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_drilltest", t => + { + t.HasComment("DrillTest"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanOscillation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Mode") + .HasColumnType("integer") + .HasColumnName("mode") + .HasComment("Режим Авто/Руч"); + + b.Property("Note") + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("OptimalOscillationAngle") + .HasColumnType("double precision") + .HasColumnName("optimal_oscillation_angle") + .HasComment("Оптимальный угол осцилляции, градусы"); + + b.Property("RpmLeft") + .HasColumnType("double precision") + .HasColumnName("Rpm_left") + .HasComment("Скорость влево, об/мин"); + + b.Property("RpmRight") + .HasColumnType("double precision") + .HasColumnName("Rpm_right") + .HasComment("Скорость вправо, об/мин"); + + b.Property("TorqueMaxLeft") + .HasColumnType("double precision") + .HasColumnName("torque_max_left") + .HasComment("Ограничение момента влево, кН*м"); + + b.Property("TorqueMaxRight") + .HasColumnType("double precision") + .HasColumnName("torque_max_right") + .HasComment("Ограничение момента вправо, кН*м"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_oscillation", t => + { + t.HasComment("Осцилляция"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanShockTest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AxialVibrations") + .HasColumnType("double precision") + .HasColumnName("axial_vibrations") + .HasComment("Осевые вибрации"); + + b.Property("CombinedVibrations") + .HasColumnType("double precision") + .HasColumnName("combined_vibrations") + .HasComment("Комбинированные вибрации"); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("RpmMin") + .HasColumnType("double precision") + .HasColumnName("rpm_min") + .HasComment("Минимальные обороты на ВСП, об/мин."); + + b.Property("StickSlip") + .HasColumnType("double precision") + .HasColumnName("stick_slip") + .HasComment("stickSlip"); + + b.Property("WeightOnBitMin") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_min") + .HasComment("Нагрузка минимальная, т"); + + b.Property("Whirl") + .HasColumnType("double precision") + .HasColumnName("whirl") + .HasComment("Whirl"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_shock_test", t => + { + t.HasComment("ShockTest"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanStaticMeasurementOutput", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("SignalWaitingTime") + .HasColumnType("double precision") + .HasColumnName("signal_waiting_time") + .HasComment("Время ожидания выхода сигнала с ТМС, сек."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_static_measurement_output", t => + { + t.HasComment("Выход статического замера"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanLoadCapacity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressureMin") + .HasColumnType("double precision") + .HasColumnName("differential_pressure_min") + .HasComment("Перепад давления минимальный, атм"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("TimeLoadCapacityMin") + .HasColumnType("double precision") + .HasColumnName("time_load_capacity_min") + .HasComment("Время выработки минимальное, сек"); + + b.Property("WeightOnBitMin") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_min") + .HasComment("Нагрузка минимальная, т"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_load_capacity", t => + { + t.HasComment("РТК выработка нагрузки"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanOscillationAngles", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("Rpm") + .HasColumnType("double precision") + .HasColumnName("rpm") + .HasComment("Обороты на ВСП, об/мин., Уставка"); + + b.Property("RpmMax") + .HasColumnType("double precision") + .HasColumnName("rpm_max") + .HasComment("Обороты на ВСП, об/мин., Ограничение"); + + b.Property("TopDriveTorque") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque") + .HasComment("Момент на ВСП, кН*м., Уставка"); + + b.Property("TopDriveTorqueMax") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque_max") + .HasComment("Момент на ВСП, кН*м., Ограничение"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_operation_oscillation_angels", t => + { + t.HasComment("Определение углов осцилляции"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanPositioningOffTheBottom", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления уставка, атм."); + + b.Property("FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("flow_rate_down") + .HasComment("Расход вниз, л/с."); + + b.Property("FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("flow_rate_up") + .HasComment("Расход вверх, л/с."); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("RopDown") + .HasColumnType("double precision") + .HasColumnName("rop_down") + .HasComment("Скорость вниз, м/ч."); + + b.Property("RopUp") + .HasColumnType("double precision") + .HasColumnName("rop_up") + .HasComment("Скорость вверх, м/ч."); + + b.Property("RpmDown") + .HasColumnType("double precision") + .HasColumnName("rpm_down") + .HasComment("Обороты вниз, об/мин."); + + b.Property("RpmUp") + .HasColumnType("double precision") + .HasColumnName("rpm_up") + .HasComment("Обороты вверх, об/мин."); + + b.Property("SlackingOff") + .HasColumnType("double precision") + .HasColumnName("slacking_off") + .HasComment("Посадка, т."); + + b.Property("StopOffTheBottom") + .HasColumnType("double precision") + .HasColumnName("stop_off_the_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Tight") + .HasColumnType("double precision") + .HasColumnName("tight") + .HasComment("Затяжка, т."); + + b.Property("TorqueMax") + .HasColumnType("double precision") + .HasColumnName("torque_max") + .HasComment("Максимально допустимый момент, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_positioning_off_the_bottom", t => + { + t.HasComment("Позиционирование над забоем"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingRotor", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления уставка, атм."); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("Reaming1FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_flow_rate_down") + .HasComment("Проработка 1, Расход, л/с., Вниз"); + + b.Property("Reaming1FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_flow_rate_up") + .HasComment("Проработка 1, Расход, л/с., Вверх"); + + b.Property("Reaming1Interval") + .HasColumnType("double precision") + .HasColumnName("reaming1_interval") + .HasComment("Проработка 1, Интервал проработки, м."); + + b.Property("Reaming1RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("reaming1_repetitions_count") + .HasComment("Проработка 1. Количество повторений, шт."); + + b.Property("Reaming1RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_rop_down") + .HasComment("Проработка 1, Скорость, м/ч., Вниз"); + + b.Property("Reaming1RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_rop_up") + .HasComment("Проработка 1. Скорость вверх, м/ч."); + + b.Property("Reaming1RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_rpm_down") + .HasComment("Проработка 1, Обороты, об/мин., Вниз"); + + b.Property("Reaming1RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_rpm_up") + .HasComment("Проработка 1, Обороты, об/мин., Вверх"); + + b.Property("Reaming1StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming1_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Reaming2FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_flow_rate_down") + .HasComment("Проработка 2, Расход, л/с., Вниз"); + + b.Property("Reaming2FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_flow_rate_up") + .HasComment("Проработка 2, Расход, л/с., Вверх"); + + b.Property("Reaming2Interval") + .HasColumnType("double precision") + .HasColumnName("reaming2_interval") + .HasComment("Проработка 2, Интервал проработки, м."); + + b.Property("Reaming2RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("reaming2_repetitions_count") + .HasComment("Проработка 2, Количество повторений, шт."); + + b.Property("Reaming2RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_rop_down") + .HasComment("Проработка 2, Скорость, м/ч., Вниз"); + + b.Property("Reaming2RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_rop_up") + .HasComment("Проработка 2, Скорость, м/ч., Вверх"); + + b.Property("Reaming2RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_rpm_down") + .HasComment("Проработка 2, Обороты, об/мин., Вниз"); + + b.Property("Reaming2RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_rpm_up") + .HasComment("Проработка 2, Обороты, об/мин., Вверх"); + + b.Property("Reaming2StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming2_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Reaming3FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_flow_rate_down") + .HasComment("Проработка 3, Расход, л/с., Вниз"); + + b.Property("Reaming3FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_flow_rate_up") + .HasComment("Проработка 3, Расход, л/с., Вверх"); + + b.Property("Reaming3Interval") + .HasColumnType("double precision") + .HasColumnName("reaming3_interval") + .HasComment("Проработка 3, Интервал проработки, м."); + + b.Property("Reaming3RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("reaming3_repetitions_count") + .HasComment("Проработка 3, Количество повторений, шт."); + + b.Property("Reaming3RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_rop_down") + .HasComment("Проработка 3, Скорость, м/ч., Вниз"); + + b.Property("Reaming3RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_rop_up") + .HasComment("Проработка 3, Скорость, м/ч., Вверх"); + + b.Property("Reaming3RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_rpm_down") + .HasComment("Проработка 3, Обороты, об/мин., Вниз"); + + b.Property("Reaming3RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_rpm_up") + .HasComment("Проработка 3, Обороты, об/мин., Вверх"); + + b.Property("Reaming3StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming3_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("SlackingOff") + .HasColumnType("double precision") + .HasColumnName("slacking_off") + .HasComment("Посадка, т."); + + b.Property("Tight") + .HasColumnType("double precision") + .HasColumnName("tight") + .HasComment("Затяжка, т."); + + b.Property("TorqueMax") + .HasColumnType("double precision") + .HasColumnName("torque_max") + .HasComment("Максимально допустимый момент, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_operation_reaming_rotor", t => + { + t.HasComment("РТК проработка ротор"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingSlide", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления уставка, атм."); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("Reaming1FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_flow_rate_down") + .HasComment("Проработка 1, Расход, л/с., Вниз"); + + b.Property("Reaming1FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_flow_rate_up") + .HasComment("Проработка 1, Расход, л/с., Вверх"); + + b.Property("Reaming1Interval") + .HasColumnType("double precision") + .HasColumnName("reaming1_interval") + .HasComment("Проработка 1, Интервал проработки, м."); + + b.Property("Reaming1RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("reaming1_repetitions_count") + .HasComment("Проработка 1. Количество повторений, шт."); + + b.Property("Reaming1RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_rop_down") + .HasComment("Проработка 1. Скорость вниз, м/ч."); + + b.Property("Reaming1RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_rop_up") + .HasComment("Проработка 1. Скорость вверх, м/ч."); + + b.Property("Reaming1RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_rpm_down") + .HasComment("Проработка 1, Обороты, об/мин., Вниз"); + + b.Property("Reaming1RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_rpm_up") + .HasComment("Проработка 1, Обороты, об/мин., Вверх"); + + b.Property("Reaming1StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming1_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Reaming2FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_flow_rate_down") + .HasComment("Проработка 2, Расход, л/с., Вниз"); + + b.Property("Reaming2FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_flow_rate_up") + .HasComment("Проработка 2, Расход, л/с., Вверх"); + + b.Property("Reaming2Interval") + .HasColumnType("double precision") + .HasColumnName("reaming2_interval") + .HasComment("Проработка 2, Интервал проработки, м."); + + b.Property("Reaming2RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("reaming2_repetitions_count") + .HasComment("Проработка 2, Количество повторений, шт."); + + b.Property("Reaming2RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_rop_down") + .HasComment("Проработка 2, Скорость, м/ч., Вниз"); + + b.Property("Reaming2RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_rop_up") + .HasComment("Проработка 2, Скорость, м/ч., Вверх"); + + b.Property("Reaming2RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_rpm_down") + .HasComment("Проработка 2, Обороты, об/мин., Вниз"); + + b.Property("Reaming2RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_rpm_up") + .HasComment("Проработка 2, Обороты, об/мин., Вверх"); + + b.Property("Reaming2StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming2_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Reaming3FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_flow_rate_down") + .HasComment("Проработка 3, Расход, л/с., Вниз"); + + b.Property("Reaming3FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_flow_rate_up") + .HasComment("Проработка 3, Расход, л/с., Вверх"); + + b.Property("Reaming3Interval") + .HasColumnType("double precision") + .HasColumnName("reaming3_interval") + .HasComment("Проработка 3, Интервал проработки, м."); + + b.Property("Reaming3RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("reaming3_repetitions_count") + .HasComment("Проработка 3, Количество повторений, шт."); + + b.Property("Reaming3RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_rop_down") + .HasComment("Проработка 3, Скорость, м/ч., Вниз"); + + b.Property("Reaming3RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_rop_up") + .HasComment("Проработка 3, Скорость, м/ч., Вверх"); + + b.Property("Reaming3RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_rpm_down") + .HasComment("Проработка 3, Обороты, об/мин., Вниз"); + + b.Property("Reaming3RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_rpm_up") + .HasComment("Проработка 3, Обороты, об/мин., Вверх"); + + b.Property("Reaming3StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming3_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("SlackingOff") + .HasColumnType("double precision") + .HasColumnName("slacking_off") + .HasComment("Посадка, т."); + + b.Property("Tight") + .HasColumnType("double precision") + .HasColumnName("tight") + .HasComment("Затяжка, т."); + + b.Property("TorqueMax") + .HasColumnType("double precision") + .HasColumnName("torque_max") + .HasComment("Максимально допустимый момент, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_reaming_slide", t => + { + t.HasComment("РТК проработка слайд"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRecordingStaticMeasurement", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("MeasurementRecordingTime") + .HasColumnType("double precision") + .HasColumnName("measurement_recording_time") + .HasComment("Время записи замера, сек"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_recording_static_measurement", t => + { + t.HasComment("Запись статического замера"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRotor", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления, атм. Уставка"); + + b.Property("DifferentialPressureMax") + .HasColumnType("double precision") + .HasColumnName("differential_pressure_max") + .HasComment("Перепад давления, атм. Ограничение"); + + b.Property("FlowRate") + .HasColumnType("double precision") + .HasColumnName("flow_rate") + .HasComment("Расход л/с. Уставка"); + + b.Property("FlowRateMax") + .HasColumnType("double precision") + .HasColumnName("flow_rate_max") + .HasComment("Расход л/с. Ограничение"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм"); + + b.Property("RopMax") + .HasColumnType("double precision") + .HasColumnName("rop_max") + .HasComment("Максимально допустимая скорость, м/ч"); + + b.Property("Rpm") + .HasColumnType("double precision") + .HasColumnName("rpm") + .HasComment("Обороты на ВСП, об/мин. Уставка"); + + b.Property("RpmMax") + .HasColumnType("double precision") + .HasColumnName("rpm_max") + .HasComment("Обороты на ВСП, об/мин. Ограничение"); + + b.Property("TopDriveTorque") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque") + .HasComment("Момент на ВСП, кН*м. Уставка"); + + b.Property("TopDriveTorqueMax") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque_max") + .HasComment("Момент на ВСП, кН*м. Ограничение"); + + b.Property("WeightOnBit") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit") + .HasComment("Нагрузка, т. Уставка"); + + b.Property("WeightOnBitMax") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_max") + .HasComment("Нагрузка, т. Ограничение"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_rotor", t => + { + t.HasComment("РТК план бурение ротор"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSlide", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Buckling") + .HasColumnType("double precision") + .HasColumnName("buckling") + .HasComment("Складывание инструмента, м."); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления уставка, атм."); + + b.Property("DifferentialPressureMax") + .HasColumnType("double precision") + .HasColumnName("differential_pressure_max") + .HasComment("Перепад давления ограничение, атм."); + + b.Property("FlowRate") + .HasColumnType("double precision") + .HasColumnName("flow_rate") + .HasComment("Расход уставка, л/с."); + + b.Property("FlowRateMax") + .HasColumnType("double precision") + .HasColumnName("flow_rate_max") + .HasComment("Расход ограничение, л/с."); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("RopMax") + .HasColumnType("double precision") + .HasColumnName("rop_max") + .HasComment("Максимально допустимая скорость, м/ч."); + + b.Property("Spring") + .HasColumnType("double precision") + .HasColumnName("spring") + .HasComment("Расчётная пружина, градус"); + + b.Property("WeightOnBit") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit") + .HasComment("Нагрузка уставка, т."); + + b.Property("WeightOnBitMax") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_max") + .HasComment("Нагрузка ограничение, т."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_slide", t => + { + t.HasComment("РТК план бурение слайд"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingOffThePump", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("Duration") + .HasColumnType("double precision") + .HasColumnName("duration") + .HasComment("Продолжительность, сек."); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("ResidualPressureLimit") + .HasColumnType("double precision") + .HasColumnName("residual_pressure_limit") + .HasComment("Лимит остаточного давления, атм."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_operation_switching_off_the_pump", t => + { + t.HasComment("Выключение насоса"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingToTheMode", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("FlowRate") + .HasColumnType("double precision") + .HasColumnName("flow_rate") + .HasComment("Расход, л/с"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_limit") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("RampTime") + .HasColumnType("double precision") + .HasColumnName("ramp_time") + .HasComment("Время выхода буровых насосов на плановый расход, сек."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_switching_to_the_mode", t => + { + t.HasComment("Выход на плановый расход"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanTFOrientation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления, атм."); + + b.Property("FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("flow_rate_down") + .HasComment("Расход вниз, л/с."); + + b.Property("FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("flow_rate_up") + .HasComment("Расход вверх, л/с."); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Interval") + .HasColumnType("double precision") + .HasColumnName("interval") + .HasComment("Интервал расхаживания, м."); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимальное давление, атм."); + + b.Property("RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("repetitions_count") + .HasComment("Количество расхаживаний, шт."); + + b.Property("RopDown") + .HasColumnType("double precision") + .HasColumnName("rop_down") + .HasComment("Скорость вниз, м/ч."); + + b.Property("RopUp") + .HasColumnType("double precision") + .HasColumnName("rop_up") + .HasComment("Скорость вверх, м/ч."); + + b.Property("SlackingOff") + .HasColumnType("double precision") + .HasColumnName("slacking_off") + .HasComment("Посадка, т."); + + b.Property("Spring") + .HasColumnType("double precision") + .HasColumnName("spring") + .HasComment("Пружина, град."); + + b.Property("StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("TFSetpoint") + .HasColumnType("double precision") + .HasColumnName("tf_setpoint") + .HasComment("Задание TF, град."); + + b.Property("Tight") + .HasColumnType("double precision") + .HasColumnName("tight") + .HasComment("Затяжка, т."); + + b.Property("TorqueMax") + .HasColumnType("double precision") + .HasColumnName("torque_max") + .HasComment("Максимально допустимый момент, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_tf_orientation", t => + { + t.HasComment("Выставление"); }); }); @@ -6501,7 +8488,7 @@ namespace AsbCloudDb.Migrations { Id = 5002, IdParent = 4001, - IsHidden = false, + IsHidden = true, KeyValueName = "МСП", KeyValueUnits = "м/ч", Name = "Бурение слайдом" @@ -6510,7 +8497,7 @@ namespace AsbCloudDb.Migrations { Id = 5003, IdParent = 4001, - IsHidden = false, + IsHidden = true, KeyValueName = "МСП", KeyValueUnits = "м/ч", Name = "Бурение ротором" @@ -7557,44 +9544,44 @@ namespace AsbCloudDb.Migrations new { Id = 1, - Caption = "Пилотный ствол", - Order = 4f + Caption = "Пилотный ствол 1", + Order = 5f }, new { Id = 2, - Caption = "Направление", + Caption = "Направление 1", Order = 0f }, new { Id = 3, - Caption = "Кондуктор", + Caption = "Кондуктор 1", Order = 1f }, new { Id = 4, - Caption = "Эксплуатационная колонна", + Caption = "Эксплуатационная колонна 1", Order = 3f }, new { Id = 5, - Caption = "Транспортный ствол", - Order = 5f + Caption = "Транспортный ствол 1", + Order = 4f }, new { Id = 6, - Caption = "Хвостовик", + Caption = "Хвостовик 1", Order = 6f }, new { Id = 7, Caption = "Пилотный ствол 2", - Order = 4.1f + Order = 5.1f }, new { @@ -7618,7 +9605,7 @@ namespace AsbCloudDb.Migrations { Id = 11, Caption = "Транспортный ствол 2", - Order = 5.1f + Order = 4.1f }, new { @@ -7630,7 +9617,7 @@ namespace AsbCloudDb.Migrations { Id = 13, Caption = "Пилотный ствол 3", - Order = 4.2f + Order = 5.2f }, new { @@ -7654,7 +9641,7 @@ namespace AsbCloudDb.Migrations { Id = 17, Caption = "Транспортный ствол 3", - Order = 5.2f + Order = 4.2f }, new { @@ -7666,7 +9653,7 @@ namespace AsbCloudDb.Migrations { Id = 19, Caption = "Пилотный ствол 4", - Order = 4.3f + Order = 5.3f }, new { @@ -7690,7 +9677,7 @@ namespace AsbCloudDb.Migrations { Id = 23, Caption = "Транспортный ствол 4", - Order = 5.3f + Order = 4.3f }, new { @@ -7702,7 +9689,7 @@ namespace AsbCloudDb.Migrations { Id = 25, Caption = "Пилотный ствол 5", - Order = 4.4f + Order = 5.4f }, new { @@ -7726,7 +9713,7 @@ namespace AsbCloudDb.Migrations { Id = 29, Caption = "Транспортный ствол 5", - Order = 5.4f + Order = 4.4f }, new { @@ -7737,7 +9724,7 @@ namespace AsbCloudDb.Migrations new { Id = 31, - Caption = "Техническая колонна", + Caption = "Техническая колонна 1", Order = 2f }, new @@ -8864,7 +10851,7 @@ namespace AsbCloudDb.Migrations b.Navigation("Well"); }); - modelBuilder.Entity("AsbCloudDb.Model.ProcessMaps.ProcessMapPlanDrilling", b => + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAntiCrashRotation", b => { b.HasOne("AsbCloudDb.Model.User", "Author") .WithMany() @@ -8877,7 +10864,7 @@ namespace AsbCloudDb.Migrations .HasForeignKey("IdEditor") .OnDelete(DeleteBehavior.Restrict); - b.HasOne("AsbCloudDb.Model.ProcessMaps.ProcessMapPlanDrilling", "Previous") + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAntiCrashRotation", "Previous") .WithMany() .HasForeignKey("IdPrevious"); @@ -8904,17 +10891,22 @@ namespace AsbCloudDb.Migrations b.Navigation("WellSectionType"); }); - modelBuilder.Entity("AsbCloudDb.Model.ProcessMaps.ProcessMapPlanReam", b => + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAutoHoldTF", b => { b.HasOne("AsbCloudDb.Model.User", "Author") .WithMany() .HasForeignKey("IdAuthor") - .OnDelete(DeleteBehavior.Cascade) + .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("AsbCloudDb.Model.User", "Editor") .WithMany() - .HasForeignKey("IdEditor"); + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAutoHoldTF", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); b.HasOne("AsbCloudDb.Model.Well", "Well") .WithMany() @@ -8932,6 +10924,650 @@ namespace AsbCloudDb.Migrations b.Navigation("Editor"); + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDamper", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDamper", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDrillTest", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDrillTest", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanOscillation", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanOscillation", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanShockTest", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanShockTest", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanStaticMeasurementOutput", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanStaticMeasurementOutput", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanLoadCapacity", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanLoadCapacity", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanOscillationAngles", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanOscillationAngles", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanPositioningOffTheBottom", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanPositioningOffTheBottom", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingRotor", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingRotor", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingSlide", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingSlide", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRecordingStaticMeasurement", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRecordingStaticMeasurement", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRotor", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRotor", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSlide", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSlide", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingOffThePump", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict) + .HasConstraintName("FK_t_process_map_plan_operation_switching_off_the_pump_t_user~1"); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingOffThePump", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_t_process_map_plan_operation_switching_off_the_pump_t_well~1"); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingToTheMode", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingToTheMode", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanTFOrientation", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanTFOrientation", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + b.Navigation("Well"); b.Navigation("WellSectionType"); diff --git a/AsbCloudDb/Model/AsbCloudDbContext.cs b/AsbCloudDb/Model/AsbCloudDbContext.cs index ae4c2894..7908dbd6 100644 --- a/AsbCloudDb/Model/AsbCloudDbContext.cs +++ b/AsbCloudDb/Model/AsbCloudDbContext.cs @@ -1,12 +1,13 @@ -using AsbCloudDb.Model.GTR; +using AsbCloudDb.Model.GTR; using Microsoft.EntityFrameworkCore; using System.Threading; using System.Threading.Tasks; using AsbCloudDb.Model.DailyReports; using AsbCloudDb.Model.Manuals; -using AsbCloudDb.Model.ProcessMaps; using AsbCloudDb.Model.WellSections; using AsbCloudDb.Model.Trajectory; +using AsbCloudDb.Model.ProcessMapPlan.Functions; +using AsbCloudDb.Model.ProcessMapPlan.Operations; namespace AsbCloudDb.Model { @@ -15,12 +16,28 @@ namespace AsbCloudDb.Model public virtual DbSet Clusters => Set(); public virtual DbSet Companies => Set(); public virtual DbSet CompaniesTypes => Set(); - public virtual DbSet DailyReports => Set (); + public virtual DbSet DailyReports => Set(); public virtual DbSet Deposits => Set(); public virtual DbSet DetectedOperations => Set(); public virtual DbSet TrajectoriesPlan => Set(); - public virtual DbSet ProcessMapPlanDrilling => Set(); - public virtual DbSet ProcessMapPlanReams => Set(); + public virtual DbSet ProcessMapPlanRotor => Set(); + public virtual DbSet ProcessMapPlanSlide => Set(); + public virtual DbSet ProcessMapPlanReamingRotor => Set(); + public virtual DbSet ProcessMapPlanReamingSlide => Set(); + public virtual DbSet ProcessMapPlanLoadCapacity => Set(); + public virtual DbSet ProcessMapPlanRecordingStaticMeasurement => Set(); + public virtual DbSet ProcessMapPlanPositioningOffTheBottom => Set(); + public virtual DbSet ProcessMapPlanOscillationAngles => Set(); + public virtual DbSet ProcessMapPlanTFOrientation => Set(); + public virtual DbSet ProcessMapPlanSwitchingOffThePump => Set(); + public virtual DbSet ProcessMapPlanSwitchingToTheMode => Set(); + public virtual DbSet ProcessMapPlanDrillTest => Set(); + public virtual DbSet ProcessMapPlanShockTest => Set(); + public virtual DbSet ProcessMapPlanDamper => Set(); + public virtual DbSet ProcessMapPlanAutoHoldTF => Set(); + public virtual DbSet ProcessMapPlanOscillation => Set(); + public virtual DbSet ProcessMapPlanAntiCrashRotation => Set(); + public virtual DbSet ProcessMapPlanStaticMeasurementOutput => Set(); public virtual DbSet DrillingProgramParts => Set(); public virtual DbSet FileCategories => Set(); public virtual DbSet Files => Set(); @@ -61,7 +78,7 @@ namespace AsbCloudDb.Model public virtual DbSet TelemetryWirelineRunOut => Set(); public virtual DbSet TrajectoriesFact => Set(); - + public virtual DbSet WellSectionsPlan => Set(); // GTR WITS @@ -108,7 +125,7 @@ namespace AsbCloudDb.Model } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) - { + { if (!optionsBuilder.IsConfigured) optionsBuilder.UseNpgsql("Host=localhost;Database=postgres;Username=postgres;Password=q;Persist Security Info=True;Include Error Detail=True;" //, builder=>builder.EnableRetryOnFailure(2, System.TimeSpan.FromMinutes(1)) @@ -135,7 +152,7 @@ namespace AsbCloudDb.Model entity.Property(e => e.Timezone) .HasJsonConversion(); - }); + }); modelBuilder.Entity(entity => { @@ -286,7 +303,7 @@ namespace AsbCloudDb.Model entity.HasIndex(d => d.DepthEnd); entity.HasIndex(d => d.DateStart); - entity.HasOne(o => o.OperationPlan) + entity.HasOne(o => o.OperationPlan) .WithMany() .HasForeignKey(o => o.IdPlan) .OnDelete(DeleteBehavior.SetNull); @@ -341,7 +358,7 @@ namespace AsbCloudDb.Model { entity.HasIndex(e => new { e.IdWell, e.Date }) .IsUnique(); - + entity.Property(e => e.SubsystemBlock) .HasJsonConversion(); @@ -353,7 +370,7 @@ namespace AsbCloudDb.Model }); modelBuilder.Entity(entity => entity - .Property(p=>p.ExtraData) + .Property(p => p.ExtraData) .HasJsonConversion()); modelBuilder.Entity(entity => @@ -370,7 +387,8 @@ namespace AsbCloudDb.Model .HasConstraintName("t_schedule_t_driller_id_driller"); }); - modelBuilder.Entity(entity => { + modelBuilder.Entity(entity => + { entity.Property(e => e.Setpoints) .HasJsonConversion(); }); @@ -382,7 +400,7 @@ namespace AsbCloudDb.Model nameof(WitsItemBase.IdRecord), nameof(WitsItemBase.IdItem), nameof(WitsItemBase.DateTime)); - }); + }); modelBuilder.Entity(entity => { entity.HasKey( @@ -422,7 +440,7 @@ namespace AsbCloudDb.Model .WithMany(mf => mf.Children) .HasForeignKey(mf => mf.IdParent) .OnDelete(DeleteBehavior.Cascade); - + modelBuilder.Entity() .HasOne(m => m.Directory) .WithMany(f => f.Manuals) @@ -442,16 +460,186 @@ namespace AsbCloudDb.Model .HasIndex(w => new { w.IdWell, w.IdSectionType }) .IsUnique(); - modelBuilder.Entity() + modelBuilder.Entity() .HasOne(p => p.Author) .WithMany() .OnDelete(DeleteBehavior.Restrict); - modelBuilder.Entity() + modelBuilder.Entity() + .HasOne(p => p.Author) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Author) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Author) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Author) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Author) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Author) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Author) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Author) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Author) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Author) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Author) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Author) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Author) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Author) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Author) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Author) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Author) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() .HasOne(p => p.Editor) .WithMany() .OnDelete(DeleteBehavior.Restrict); + modelBuilder.Entity() + .HasOne(p => p.Editor) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Editor) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Editor) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Editor) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Editor) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Editor) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Editor) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Editor) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Editor) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Editor) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Editor) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Editor) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Editor) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Editor) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Editor) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Editor) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Editor) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + DefaultData.DefaultContextData.Fill(modelBuilder); } @@ -467,6 +655,6 @@ namespace AsbCloudDb.Model { var sql = $"REFRESH MATERIALIZED VIEW {materializedViewName};"; return Database.ExecuteSqlRawAsync(sql, token); - } + } } } diff --git a/AsbCloudDb/Model/ChangeLogAbstract.cs b/AsbCloudDb/Model/ChangeLogAbstract.cs index d9bc74e0..9ef57caf 100644 --- a/AsbCloudDb/Model/ChangeLogAbstract.cs +++ b/AsbCloudDb/Model/ChangeLogAbstract.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using System; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; @@ -86,4 +86,10 @@ public abstract class ChangeLogAbstract /// [Column("id_previous"), Comment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная")] public int? IdPrevious { get; set; } + + [ForeignKey(nameof(IdAuthor))] + public virtual User Author { get; set; } = null!; + + [ForeignKey(nameof(IdEditor))] + public virtual User? Editor { get; set; } } diff --git a/AsbCloudDb/Model/Cluster.cs b/AsbCloudDb/Model/Cluster.cs index 846a141a..229ae6fa 100644 --- a/AsbCloudDb/Model/Cluster.cs +++ b/AsbCloudDb/Model/Cluster.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; diff --git a/AsbCloudDb/Model/Company.cs b/AsbCloudDb/Model/Company.cs index 4db9573b..c42ddbd2 100644 --- a/AsbCloudDb/Model/Company.cs +++ b/AsbCloudDb/Model/Company.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; diff --git a/AsbCloudDb/Model/CompanyType.cs b/AsbCloudDb/Model/CompanyType.cs index 55525e47..1bd67158 100644 --- a/AsbCloudDb/Model/CompanyType.cs +++ b/AsbCloudDb/Model/CompanyType.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; diff --git a/AsbCloudDb/Model/Contact.cs b/AsbCloudDb/Model/Contact.cs index a804999d..43398cf9 100644 --- a/AsbCloudDb/Model/Contact.cs +++ b/AsbCloudDb/Model/Contact.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; diff --git a/AsbCloudDb/Model/DailyReports/Blocks/Sign/SignBlock.cs b/AsbCloudDb/Model/DailyReports/Blocks/Sign/SignBlock.cs index 2e394f79..ec1cc570 100644 --- a/AsbCloudDb/Model/DailyReports/Blocks/Sign/SignBlock.cs +++ b/AsbCloudDb/Model/DailyReports/Blocks/Sign/SignBlock.cs @@ -2,7 +2,7 @@ namespace AsbCloudDb.Model.DailyReports.Blocks.Sign; public class SignBlock : ItemInfo { - public SignRecord? DrillingMaster { get; set; } - - public SignRecord? Supervisor { get; set; } + public SignRecord? DrillingMaster { get; set; } + + public SignRecord? Supervisor { get; set; } } \ No newline at end of file diff --git a/AsbCloudDb/Model/DailyReports/Blocks/Sign/SignRecord.cs b/AsbCloudDb/Model/DailyReports/Blocks/Sign/SignRecord.cs index 9ea1119e..c8495a38 100644 --- a/AsbCloudDb/Model/DailyReports/Blocks/Sign/SignRecord.cs +++ b/AsbCloudDb/Model/DailyReports/Blocks/Sign/SignRecord.cs @@ -2,9 +2,9 @@ namespace AsbCloudDb.Model.DailyReports.Blocks.Sign; public class SignRecord { - public string Name { get; set; } = null!; + public string Name { get; set; } = null!; - public string Surname { get; set; } = null!; - - public string? Patronymic { get; set; } + public string Surname { get; set; } = null!; + + public string? Patronymic { get; set; } } \ No newline at end of file diff --git a/AsbCloudDb/Model/DailyReports/Blocks/Subsystem/SubsystemBlock.cs b/AsbCloudDb/Model/DailyReports/Blocks/Subsystem/SubsystemBlock.cs index 67223138..9c22624e 100644 --- a/AsbCloudDb/Model/DailyReports/Blocks/Subsystem/SubsystemBlock.cs +++ b/AsbCloudDb/Model/DailyReports/Blocks/Subsystem/SubsystemBlock.cs @@ -4,15 +4,15 @@ namespace AsbCloudDb.Model.DailyReports.Blocks.Subsystem; public class SubsystemBlock : ItemInfo { - public double? Wellbore { get; set; } - - public double? MeasurementsPerDay { get; set; } - - public double? TvgLagDays { get; set; } + public double? Wellbore { get; set; } + + public double? MeasurementsPerDay { get; set; } + + public double? TvgLagDays { get; set; } - public double? TotalRopPlan { get; set; } + public double? TotalRopPlan { get; set; } - public string? Comment { get; set; } + public string? Comment { get; set; } - public IEnumerable? Subsystems { get; set; } + public IEnumerable? Subsystems { get; set; } } \ No newline at end of file diff --git a/AsbCloudDb/Model/DailyReports/Blocks/Subsystem/SubsystemParameters.cs b/AsbCloudDb/Model/DailyReports/Blocks/Subsystem/SubsystemParameters.cs index 839e181c..cb030e25 100644 --- a/AsbCloudDb/Model/DailyReports/Blocks/Subsystem/SubsystemParameters.cs +++ b/AsbCloudDb/Model/DailyReports/Blocks/Subsystem/SubsystemParameters.cs @@ -2,9 +2,9 @@ namespace AsbCloudDb.Model.DailyReports.Blocks.Subsystem; public class SubsystemParameters { - public double? SumDepthInterval { get; set; } - - public double? UsedTimeHours { get; set; } - - public double? KUsage { get; set; } + public double? SumDepthInterval { get; set; } + + public double? UsedTimeHours { get; set; } + + public double? KUsage { get; set; } } \ No newline at end of file diff --git a/AsbCloudDb/Model/DailyReports/Blocks/Subsystem/SubsystemRecord.cs b/AsbCloudDb/Model/DailyReports/Blocks/Subsystem/SubsystemRecord.cs index 86b376b6..371213d3 100644 --- a/AsbCloudDb/Model/DailyReports/Blocks/Subsystem/SubsystemRecord.cs +++ b/AsbCloudDb/Model/DailyReports/Blocks/Subsystem/SubsystemRecord.cs @@ -2,9 +2,9 @@ namespace AsbCloudDb.Model.DailyReports.Blocks.Subsystem; public class SubsystemRecord { - public string Name { get; set; } = null!; + public string Name { get; set; } = null!; - public SubsystemParameters? UsagePerDay { get; set; } - - public SubsystemParameters? UsagePerWell { get; set; } + public SubsystemParameters? UsagePerDay { get; set; } + + public SubsystemParameters? UsagePerWell { get; set; } } \ No newline at end of file diff --git a/AsbCloudDb/Model/DailyReports/Blocks/TimeBalance/TimeBalanceBlock.cs b/AsbCloudDb/Model/DailyReports/Blocks/TimeBalance/TimeBalanceBlock.cs index 6af3a946..1b16a34d 100644 --- a/AsbCloudDb/Model/DailyReports/Blocks/TimeBalance/TimeBalanceBlock.cs +++ b/AsbCloudDb/Model/DailyReports/Blocks/TimeBalance/TimeBalanceBlock.cs @@ -4,15 +4,15 @@ namespace AsbCloudDb.Model.DailyReports.Blocks.TimeBalance; public class TimeBalanceBlock : ItemInfo { - public int IdSection { get; set; } + public int IdSection { get; set; } - public string? SectionName { get; set; } + public string? SectionName { get; set; } - public double? WellDepthPlan { get; set; } + public double? WellDepthPlan { get; set; } - public double WellDepthFact { get; set; } + public double WellDepthFact { get; set; } - public double? WellOperationSlipsTimeCount { get; set; } + public double? WellOperationSlipsTimeCount { get; set; } - public IEnumerable? WellOperations { get; set; } + public IEnumerable? WellOperations { get; set; } } \ No newline at end of file diff --git a/AsbCloudDb/Model/DailyReports/Blocks/TimeBalance/TimeBalanceRecord.cs b/AsbCloudDb/Model/DailyReports/Blocks/TimeBalance/TimeBalanceRecord.cs index 5c08ab8c..68a07193 100644 --- a/AsbCloudDb/Model/DailyReports/Blocks/TimeBalance/TimeBalanceRecord.cs +++ b/AsbCloudDb/Model/DailyReports/Blocks/TimeBalance/TimeBalanceRecord.cs @@ -2,15 +2,15 @@ namespace AsbCloudDb.Model.DailyReports.Blocks.TimeBalance; public class TimeBalanceRecord { - public int IdWellOperation { get; set; } - - public double? DurationHoursPlan { get; set; } - - public double? DurationHoursFact { get; set; } - - public double? DrillingDeviationPerSection { get; set; } + public int IdWellOperation { get; set; } + + public double? DurationHoursPlan { get; set; } + + public double? DurationHoursFact { get; set; } + + public double? DrillingDeviationPerSection { get; set; } - public double? DrillingDeviationPerDay { get; set; } - - public string? ReasonDeviation { get; set; } + public double? DrillingDeviationPerDay { get; set; } + + public string? ReasonDeviation { get; set; } } \ No newline at end of file diff --git a/AsbCloudDb/Model/DailyReports/DailyReport.cs b/AsbCloudDb/Model/DailyReports/DailyReport.cs index 8bc99470..6cd7e622 100644 --- a/AsbCloudDb/Model/DailyReports/DailyReport.cs +++ b/AsbCloudDb/Model/DailyReports/DailyReport.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using AsbCloudDb.Model.DailyReports.Blocks.Sign; @@ -11,27 +11,27 @@ namespace AsbCloudDb.Model.DailyReports; [Table("t_daily_report"), Comment("Ежедневные отчёты")] public class DailyReport : IId { - [Key] - public int Id { get; set; } - - [Column("id_well"), Comment("ID скважины")] - public int IdWell { get; set; } + [Key] + public int Id { get; set; } + + [Column("id_well"), Comment("ID скважины")] + public int IdWell { get; set; } - [Column("date_last_update", TypeName = "timestamp with time zone"), Comment("Дата последнего обновления")] - public DateTimeOffset? DateLastUpdate { get; set; } + [Column("date_last_update", TypeName = "timestamp with time zone"), Comment("Дата последнего обновления")] + public DateTimeOffset? DateLastUpdate { get; set; } - [Column("date", TypeName = "date"), Comment("Дата формирования отчёта")] - public DateOnly Date { get; set; } - - [Column("sign_block", TypeName = "jsonb"), Comment("Подпись")] - public SignBlock? SignBlock { get; set; } - - [Column("time_balance_block", TypeName = "jsonb"), Comment("Баланс времени")] - public TimeBalanceBlock? TimeBalanceBlock { get; set; } - - [Column("subsystem_block", TypeName = "jsonb"), Comment("Наработкой подсистем")] - public SubsystemBlock? SubsystemBlock { get; set; } + [Column("date", TypeName = "date"), Comment("Дата формирования отчёта")] + public DateOnly Date { get; set; } + + [Column("sign_block", TypeName = "jsonb"), Comment("Подпись")] + public SignBlock? SignBlock { get; set; } + + [Column("time_balance_block", TypeName = "jsonb"), Comment("Баланс времени")] + public TimeBalanceBlock? TimeBalanceBlock { get; set; } + + [Column("subsystem_block", TypeName = "jsonb"), Comment("Наработкой подсистем")] + public SubsystemBlock? SubsystemBlock { get; set; } - [ForeignKey(nameof(IdWell))] - public virtual Well Well { get; set; } = null!; + [ForeignKey(nameof(IdWell))] + public virtual Well Well { get; set; } = null!; } \ No newline at end of file diff --git a/AsbCloudDb/Model/DataSaubStat.cs b/AsbCloudDb/Model/DataSaubStat.cs index 8871b598..b4017a8e 100644 --- a/AsbCloudDb/Model/DataSaubStat.cs +++ b/AsbCloudDb/Model/DataSaubStat.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using System; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; diff --git a/AsbCloudDb/Model/DefaultData/DefaultContextData.cs b/AsbCloudDb/Model/DefaultData/DefaultContextData.cs index 48d5a5cf..302c7f0a 100644 --- a/AsbCloudDb/Model/DefaultData/DefaultContextData.cs +++ b/AsbCloudDb/Model/DefaultData/DefaultContextData.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; diff --git a/AsbCloudDb/Model/DefaultData/EntityFiller.cs b/AsbCloudDb/Model/DefaultData/EntityFiller.cs index f6f5f016..6e63b515 100644 --- a/AsbCloudDb/Model/DefaultData/EntityFiller.cs +++ b/AsbCloudDb/Model/DefaultData/EntityFiller.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using System.Collections.Generic; namespace AsbCloudDb.Model.DefaultData diff --git a/AsbCloudDb/Model/DefaultData/EntityFillerCompany.cs b/AsbCloudDb/Model/DefaultData/EntityFillerCompany.cs index d7416fd6..f4957b07 100644 --- a/AsbCloudDb/Model/DefaultData/EntityFillerCompany.cs +++ b/AsbCloudDb/Model/DefaultData/EntityFillerCompany.cs @@ -1,4 +1,4 @@ -namespace AsbCloudDb.Model.DefaultData +namespace AsbCloudDb.Model.DefaultData { internal class EntityFillerCompany : EntityFiller { diff --git a/AsbCloudDb/Model/DefaultData/EntityFillerCompanyType.cs b/AsbCloudDb/Model/DefaultData/EntityFillerCompanyType.cs index 68017b47..38b04ffd 100644 --- a/AsbCloudDb/Model/DefaultData/EntityFillerCompanyType.cs +++ b/AsbCloudDb/Model/DefaultData/EntityFillerCompanyType.cs @@ -1,4 +1,4 @@ -namespace AsbCloudDb.Model.DefaultData +namespace AsbCloudDb.Model.DefaultData { internal class EntityFillerCompanyType : EntityFiller { diff --git a/AsbCloudDb/Model/DefaultData/EntityFillerFileCategory.cs b/AsbCloudDb/Model/DefaultData/EntityFillerFileCategory.cs index 39ddc2eb..f5754bbd 100644 --- a/AsbCloudDb/Model/DefaultData/EntityFillerFileCategory.cs +++ b/AsbCloudDb/Model/DefaultData/EntityFillerFileCategory.cs @@ -1,4 +1,4 @@ -namespace AsbCloudDb.Model.DefaultData +namespace AsbCloudDb.Model.DefaultData { internal class EntityFillerFileCategory: EntityFiller { diff --git a/AsbCloudDb/Model/DefaultData/EntityFillerMeasureCategory.cs b/AsbCloudDb/Model/DefaultData/EntityFillerMeasureCategory.cs index 94713108..1e8855af 100644 --- a/AsbCloudDb/Model/DefaultData/EntityFillerMeasureCategory.cs +++ b/AsbCloudDb/Model/DefaultData/EntityFillerMeasureCategory.cs @@ -1,4 +1,4 @@ -namespace AsbCloudDb.Model.DefaultData +namespace AsbCloudDb.Model.DefaultData { internal class EntityFillerMeasureCategory : EntityFiller { diff --git a/AsbCloudDb/Model/DefaultData/EntityFillerPermission.cs b/AsbCloudDb/Model/DefaultData/EntityFillerPermission.cs index 64d3cebe..703331d9 100644 --- a/AsbCloudDb/Model/DefaultData/EntityFillerPermission.cs +++ b/AsbCloudDb/Model/DefaultData/EntityFillerPermission.cs @@ -1,4 +1,4 @@ -namespace AsbCloudDb.Model.DefaultData +namespace AsbCloudDb.Model.DefaultData { internal class EntityFillerPermission : EntityFiller { diff --git a/AsbCloudDb/Model/DefaultData/EntityFillerRelationUserRolePermission.cs b/AsbCloudDb/Model/DefaultData/EntityFillerRelationUserRolePermission.cs index 72a560d3..4d50910a 100644 --- a/AsbCloudDb/Model/DefaultData/EntityFillerRelationUserRolePermission.cs +++ b/AsbCloudDb/Model/DefaultData/EntityFillerRelationUserRolePermission.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; namespace AsbCloudDb.Model.DefaultData { diff --git a/AsbCloudDb/Model/DefaultData/EntityFillerRelationUserRoleUserRole.cs b/AsbCloudDb/Model/DefaultData/EntityFillerRelationUserRoleUserRole.cs index 87a99eae..c848f559 100644 --- a/AsbCloudDb/Model/DefaultData/EntityFillerRelationUserRoleUserRole.cs +++ b/AsbCloudDb/Model/DefaultData/EntityFillerRelationUserRoleUserRole.cs @@ -1,4 +1,4 @@ -namespace AsbCloudDb.Model.DefaultData +namespace AsbCloudDb.Model.DefaultData { internal class EntityFillerRelationUserRoleUserRole: EntityFiller< RelationUserRoleUserRole> { diff --git a/AsbCloudDb/Model/DefaultData/EntityFillerRelationUserUserRole.cs b/AsbCloudDb/Model/DefaultData/EntityFillerRelationUserUserRole.cs index 9d2b3d70..dcb9d7a2 100644 --- a/AsbCloudDb/Model/DefaultData/EntityFillerRelationUserUserRole.cs +++ b/AsbCloudDb/Model/DefaultData/EntityFillerRelationUserUserRole.cs @@ -1,4 +1,4 @@ -namespace AsbCloudDb.Model.DefaultData +namespace AsbCloudDb.Model.DefaultData { internal class EntityFillerRelationUserUserRole : EntityFiller { diff --git a/AsbCloudDb/Model/DefaultData/EntityFillerSubsystem.cs b/AsbCloudDb/Model/DefaultData/EntityFillerSubsystem.cs index 48de1bb4..8529692e 100644 --- a/AsbCloudDb/Model/DefaultData/EntityFillerSubsystem.cs +++ b/AsbCloudDb/Model/DefaultData/EntityFillerSubsystem.cs @@ -1,4 +1,4 @@ -namespace AsbCloudDb.Model.DefaultData +namespace AsbCloudDb.Model.DefaultData { internal class EntityFillerSubsystem : EntityFiller { diff --git a/AsbCloudDb/Model/DefaultData/EntityFillerUser.cs b/AsbCloudDb/Model/DefaultData/EntityFillerUser.cs index b67eb3d2..4bfa5542 100644 --- a/AsbCloudDb/Model/DefaultData/EntityFillerUser.cs +++ b/AsbCloudDb/Model/DefaultData/EntityFillerUser.cs @@ -1,4 +1,4 @@ -namespace AsbCloudDb.Model.DefaultData +namespace AsbCloudDb.Model.DefaultData { internal class EntityFillerUser : EntityFiller { diff --git a/AsbCloudDb/Model/DefaultData/EntityFillerUserRole.cs b/AsbCloudDb/Model/DefaultData/EntityFillerUserRole.cs index 07d7b9dc..977dfe7f 100644 --- a/AsbCloudDb/Model/DefaultData/EntityFillerUserRole.cs +++ b/AsbCloudDb/Model/DefaultData/EntityFillerUserRole.cs @@ -1,4 +1,4 @@ -namespace AsbCloudDb.Model.DefaultData +namespace AsbCloudDb.Model.DefaultData { internal class EntityFillerUserRole : EntityFiller { diff --git a/AsbCloudDb/Model/DefaultData/EntityFillerWellOperationCategory.cs b/AsbCloudDb/Model/DefaultData/EntityFillerWellOperationCategory.cs index 12fa61a7..38dded7d 100644 --- a/AsbCloudDb/Model/DefaultData/EntityFillerWellOperationCategory.cs +++ b/AsbCloudDb/Model/DefaultData/EntityFillerWellOperationCategory.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Linq; namespace AsbCloudDb.Model.DefaultData diff --git a/AsbCloudDb/Model/DefaultData/EntityFillerWellSectionType.cs b/AsbCloudDb/Model/DefaultData/EntityFillerWellSectionType.cs index 90d58479..b9f6f7c9 100644 --- a/AsbCloudDb/Model/DefaultData/EntityFillerWellSectionType.cs +++ b/AsbCloudDb/Model/DefaultData/EntityFillerWellSectionType.cs @@ -1,45 +1,45 @@ -namespace AsbCloudDb.Model.DefaultData +namespace AsbCloudDb.Model.DefaultData { internal class EntityFillerWellSectionType : EntityFiller { public override WellSectionType[] GetData() => new WellSectionType[] { - new (){ Id = 1, Caption = "Пилотный ствол", Order = 4}, - new (){ Id = 2, Caption = "Направление", Order = 0}, - new (){ Id = 3, Caption = "Кондуктор", Order = 1}, - new (){ Id = 4, Caption = "Эксплуатационная колонна", Order = 3}, - new (){ Id = 5, Caption = "Транспортный ствол", Order = 5}, - new (){ Id = 6, Caption = "Хвостовик", Order = 6}, + new (){ Id = 1, Caption = "Пилотный ствол 1", Order = 5}, + new (){ Id = 2, Caption = "Направление 1", Order = 0}, + new (){ Id = 3, Caption = "Кондуктор 1", Order = 1}, + new (){ Id = 4, Caption = "Эксплуатационная колонна 1", Order = 3}, + new (){ Id = 5, Caption = "Транспортный ствол 1", Order = 4}, + new (){ Id = 6, Caption = "Хвостовик 1", Order = 6}, - new (){ Id = 7, Caption = "Пилотный ствол 2", Order = 4.1f}, + new (){ Id = 7, Caption = "Пилотный ствол 2", Order = 5.1f}, new (){ Id = 8, Caption = "Направление 2", Order = 0.1f}, new (){ Id = 9, Caption = "Кондуктор 2", Order = 1.1f}, new (){ Id = 10, Caption = "Эксплуатационная колонна 2", Order = 3.1f}, - new (){ Id = 11, Caption = "Транспортный ствол 2", Order = 5.1f}, + new (){ Id = 11, Caption = "Транспортный ствол 2", Order = 4.1f}, new (){ Id = 12, Caption = "Хвостовик 2", Order = 6.1f}, - new (){ Id = 13, Caption = "Пилотный ствол 3", Order = 4.2f}, + new (){ Id = 13, Caption = "Пилотный ствол 3", Order = 5.2f}, new (){ Id = 14, Caption = "Направление 3", Order = 0.2f}, new (){ Id = 15, Caption = "Кондуктор 3", Order = 1.2f}, new (){ Id = 16, Caption = "Эксплуатационная колонна 3", Order = 3.2f}, - new (){ Id = 17, Caption = "Транспортный ствол 3", Order = 5.2f}, + new (){ Id = 17, Caption = "Транспортный ствол 3", Order = 4.2f}, new (){ Id = 18, Caption = "Хвостовик 3", Order = 6.2f}, - new (){ Id = 19, Caption = "Пилотный ствол 4", Order = 4.3f}, + new (){ Id = 19, Caption = "Пилотный ствол 4", Order = 5.3f}, new (){ Id = 20, Caption = "Направление 4", Order = 0.3f}, new (){ Id = 21, Caption = "Кондуктор 4", Order = 1.3f}, new (){ Id = 22, Caption = "Эксплуатационная колонна 4", Order = 3.3f}, - new (){ Id = 23, Caption = "Транспортный ствол 4", Order = 5.3f}, + new (){ Id = 23, Caption = "Транспортный ствол 4", Order = 4.3f}, new (){ Id = 24, Caption = "Хвостовик 4", Order = 6.3f}, - new (){ Id = 25, Caption = "Пилотный ствол 5", Order = 4.4f}, + new (){ Id = 25, Caption = "Пилотный ствол 5", Order = 5.4f}, new (){ Id = 26, Caption = "Направление 5", Order = 0.4f}, new (){ Id = 27, Caption = "Кондуктор 5", Order = 1.4f}, new (){ Id = 28, Caption = "Эксплуатационная колонна 5", Order = 3.4f}, - new (){ Id = 29, Caption = "Транспортный ствол 5", Order = 5.4f}, + new (){ Id = 29, Caption = "Транспортный ствол 5", Order = 4.4f}, new (){ Id = 30, Caption = "Хвостовик 5", Order = 6.4f}, - new (){ Id = 31, Caption = "Техническая колонна", Order = 2}, + new (){ Id = 31, Caption = "Техническая колонна 1", Order = 2}, new (){ Id = 32, Caption = "Техническая колонна 2", Order = 2.1f}, new (){ Id = 33, Caption = "Техническая колонна 3", Order = 2.2f}, diff --git a/AsbCloudDb/Model/DefaultData/EntityFillerWellType.cs b/AsbCloudDb/Model/DefaultData/EntityFillerWellType.cs index 895f8f1e..e433b19d 100644 --- a/AsbCloudDb/Model/DefaultData/EntityFillerWellType.cs +++ b/AsbCloudDb/Model/DefaultData/EntityFillerWellType.cs @@ -1,4 +1,4 @@ -namespace AsbCloudDb.Model.DefaultData +namespace AsbCloudDb.Model.DefaultData { internal class EntityFillerWellType : EntityFiller { diff --git a/AsbCloudDb/Model/DefaultData/EntityNotificationCategory.cs b/AsbCloudDb/Model/DefaultData/EntityNotificationCategory.cs index 2a2e5eab..f37782d8 100644 --- a/AsbCloudDb/Model/DefaultData/EntityNotificationCategory.cs +++ b/AsbCloudDb/Model/DefaultData/EntityNotificationCategory.cs @@ -2,8 +2,8 @@ namespace AsbCloudDb.Model.DefaultData; public class EntityNotificationCategory : EntityFiller { - public override NotificationCategory[] GetData() => new NotificationCategory[] - { - new() { Id = NotificationCategory.IdSystemNotificationCategory, Name = "Системные уведомления" } - }; + public override NotificationCategory[] GetData() => new NotificationCategory[] + { + new() { Id = NotificationCategory.IdSystemNotificationCategory, Name = "Системные уведомления" } + }; } \ No newline at end of file diff --git a/AsbCloudDb/Model/DefaultData/IEntityFiller.cs b/AsbCloudDb/Model/DefaultData/IEntityFiller.cs index d505790f..28779d36 100644 --- a/AsbCloudDb/Model/DefaultData/IEntityFiller.cs +++ b/AsbCloudDb/Model/DefaultData/IEntityFiller.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; namespace AsbCloudDb.Model.DefaultData { diff --git a/AsbCloudDb/Model/Deposit.cs b/AsbCloudDb/Model/Deposit.cs index 44468bb6..ce19cc5f 100644 --- a/AsbCloudDb/Model/Deposit.cs +++ b/AsbCloudDb/Model/Deposit.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; diff --git a/AsbCloudDb/Model/DetectedOperation.cs b/AsbCloudDb/Model/DetectedOperation.cs index 611e933d..ff6e6350 100644 --- a/AsbCloudDb/Model/DetectedOperation.cs +++ b/AsbCloudDb/Model/DetectedOperation.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; diff --git a/AsbCloudDb/Model/DrillTest.cs b/AsbCloudDb/Model/DrillTest.cs index 52d29d1a..d64bcf01 100644 --- a/AsbCloudDb/Model/DrillTest.cs +++ b/AsbCloudDb/Model/DrillTest.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; diff --git a/AsbCloudDb/Model/DrillTestParameter.cs b/AsbCloudDb/Model/DrillTestParameter.cs index 457de46a..f8296156 100644 --- a/AsbCloudDb/Model/DrillTestParameter.cs +++ b/AsbCloudDb/Model/DrillTestParameter.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; diff --git a/AsbCloudDb/Model/Driller.cs b/AsbCloudDb/Model/Driller.cs index cb2a30d5..da310bd3 100644 --- a/AsbCloudDb/Model/Driller.cs +++ b/AsbCloudDb/Model/Driller.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; diff --git a/AsbCloudDb/Model/DrillingProgramPart.cs b/AsbCloudDb/Model/DrillingProgramPart.cs index 62da8567..35441961 100644 --- a/AsbCloudDb/Model/DrillingProgramPart.cs +++ b/AsbCloudDb/Model/DrillingProgramPart.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; diff --git a/AsbCloudDb/Model/Faq.cs b/AsbCloudDb/Model/Faq.cs index c02bd793..0ed74842 100644 --- a/AsbCloudDb/Model/Faq.cs +++ b/AsbCloudDb/Model/Faq.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using System; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; diff --git a/AsbCloudDb/Model/FileCategory.cs b/AsbCloudDb/Model/FileCategory.cs index ca47394c..2d29e8c6 100644 --- a/AsbCloudDb/Model/FileCategory.cs +++ b/AsbCloudDb/Model/FileCategory.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; diff --git a/AsbCloudDb/Model/FileInfo.cs b/AsbCloudDb/Model/FileInfo.cs index 31ab234a..a683c4cf 100644 --- a/AsbCloudDb/Model/FileInfo.cs +++ b/AsbCloudDb/Model/FileInfo.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; diff --git a/AsbCloudDb/Model/GTR/WitsItemBase.cs b/AsbCloudDb/Model/GTR/WitsItemBase.cs index 7d01b106..9b1f48ef 100644 --- a/AsbCloudDb/Model/GTR/WitsItemBase.cs +++ b/AsbCloudDb/Model/GTR/WitsItemBase.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using System; using System.ComponentModel.DataAnnotations.Schema; diff --git a/AsbCloudDb/Model/HelpPage.cs b/AsbCloudDb/Model/HelpPage.cs index fe84254f..e37ca926 100644 --- a/AsbCloudDb/Model/HelpPage.cs +++ b/AsbCloudDb/Model/HelpPage.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Text.Json.Serialization; diff --git a/AsbCloudDb/Model/IAsbCloudDbContext.cs b/AsbCloudDb/Model/IAsbCloudDbContext.cs index f21f8173..a0828c2a 100644 --- a/AsbCloudDb/Model/IAsbCloudDbContext.cs +++ b/AsbCloudDb/Model/IAsbCloudDbContext.cs @@ -1,4 +1,4 @@ -using AsbCloudDb.Model.GTR; +using AsbCloudDb.Model.GTR; using AsbCloudDb.Model.WITS; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.ChangeTracking; @@ -8,9 +8,10 @@ using System.Threading; using System.Threading.Tasks; using AsbCloudDb.Model.DailyReports; using AsbCloudDb.Model.Manuals; -using AsbCloudDb.Model.ProcessMaps; using AsbCloudDb.Model.WellSections; using AsbCloudDb.Model.Trajectory; +using AsbCloudDb.Model.ProcessMapPlan.Functions; +using AsbCloudDb.Model.ProcessMapPlan.Operations; namespace AsbCloudDb.Model { @@ -80,7 +81,24 @@ namespace AsbCloudDb.Model DbSet WellSectionsPlan { get; } DbSet DataSaubStat { get; } DatabaseFacade Database { get; } - DbSet ProcessMapPlanReams { get; } + DbSet ProcessMapPlanRotor { get; } + DbSet ProcessMapPlanSlide { get; } + DbSet ProcessMapPlanReamingRotor { get; } + DbSet ProcessMapPlanReamingSlide { get; } + DbSet ProcessMapPlanLoadCapacity { get; } + DbSet ProcessMapPlanRecordingStaticMeasurement { get; } + DbSet ProcessMapPlanPositioningOffTheBottom { get; } + DbSet ProcessMapPlanOscillationAngles { get; } + DbSet ProcessMapPlanTFOrientation { get; } + DbSet ProcessMapPlanSwitchingOffThePump { get; } + DbSet ProcessMapPlanSwitchingToTheMode { get; } + DbSet ProcessMapPlanDrillTest { get; } + DbSet ProcessMapPlanShockTest { get; } + DbSet ProcessMapPlanDamper { get; } + DbSet ProcessMapPlanAutoHoldTF { get; } + DbSet ProcessMapPlanOscillation { get; } + DbSet ProcessMapPlanAntiCrashRotation { get; } + DbSet ProcessMapPlanStaticMeasurementOutput { get; } Task RefreshMaterializedViewAsync(string mwName, CancellationToken token); Task RefreshMaterializedViewAsync(CancellationToken token) where TEntity : class; diff --git a/AsbCloudDb/Model/IId.cs b/AsbCloudDb/Model/IId.cs index 8225abc4..d30e2bae 100644 --- a/AsbCloudDb/Model/IId.cs +++ b/AsbCloudDb/Model/IId.cs @@ -1,4 +1,4 @@ -namespace AsbCloudDb.Model +namespace AsbCloudDb.Model { public interface IId { diff --git a/AsbCloudDb/Model/IMapPoint.cs b/AsbCloudDb/Model/IMapPoint.cs index a4083a3a..e5d90fba 100644 --- a/AsbCloudDb/Model/IMapPoint.cs +++ b/AsbCloudDb/Model/IMapPoint.cs @@ -1,4 +1,4 @@ -namespace AsbCloudDb.Model +namespace AsbCloudDb.Model { public interface IMapPoint { diff --git a/AsbCloudDb/Model/ITelemetryData.cs b/AsbCloudDb/Model/ITelemetryData.cs index 0d1517b1..2b3330ab 100644 --- a/AsbCloudDb/Model/ITelemetryData.cs +++ b/AsbCloudDb/Model/ITelemetryData.cs @@ -1,4 +1,4 @@ -using System; +using System; namespace AsbCloudDb.Model { diff --git a/AsbCloudDb/Model/IWellRelated.cs b/AsbCloudDb/Model/IWellRelated.cs index f61aeae6..452fc900 100644 --- a/AsbCloudDb/Model/IWellRelated.cs +++ b/AsbCloudDb/Model/IWellRelated.cs @@ -1,4 +1,4 @@ -namespace AsbCloudDb.Model +namespace AsbCloudDb.Model { /// /// For well related entities diff --git a/AsbCloudDb/Model/ItemInfo.cs b/AsbCloudDb/Model/ItemInfo.cs index c93a74bf..1ab34658 100644 --- a/AsbCloudDb/Model/ItemInfo.cs +++ b/AsbCloudDb/Model/ItemInfo.cs @@ -1,4 +1,4 @@ -using System; +using System; namespace AsbCloudDb.Model { diff --git a/AsbCloudDb/Model/LimitingParameter.cs b/AsbCloudDb/Model/LimitingParameter.cs index 62cc7047..80fb9261 100644 --- a/AsbCloudDb/Model/LimitingParameter.cs +++ b/AsbCloudDb/Model/LimitingParameter.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using System; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; diff --git a/AsbCloudDb/Model/Manuals/Manual.cs b/AsbCloudDb/Model/Manuals/Manual.cs index 8ab64735..f5abdd9e 100644 --- a/AsbCloudDb/Model/Manuals/Manual.cs +++ b/AsbCloudDb/Model/Manuals/Manual.cs @@ -8,31 +8,31 @@ namespace AsbCloudDb.Model.Manuals; [Table("t_manual"), Comment("Инструкции")] public class Manual : IId { - [Key] - [Column("id")] - public int Id { get; set; } + [Key] + [Column("id")] + public int Id { get; set; } - [Column("name"), Comment("Название")] - public string Name { get; set; } = null!; - - [Column("date_download", TypeName = "timestamp with time zone"), Comment("Дата загрузки")] + [Column("name"), Comment("Название")] + public string Name { get; set; } = null!; + + [Column("date_download", TypeName = "timestamp with time zone"), Comment("Дата загрузки")] public DateTimeOffset DateDownload { get; set; } - [Column("id_directory"), Comment("Id директории")] - public int IdDirectory { get; set; } - - [Column("id_category"), Comment("Id категории файла")] - public int IdCategory { get; set; } - - [Column("id_author"), Comment("Id автора")] - public int IdAuthor { get; set; } + [Column("id_directory"), Comment("Id директории")] + public int IdDirectory { get; set; } + + [Column("id_category"), Comment("Id категории файла")] + public int IdCategory { get; set; } + + [Column("id_author"), Comment("Id автора")] + public int IdAuthor { get; set; } - [ForeignKey(nameof(IdDirectory))] - public virtual ManualDirectory Directory { get; set; } = null!; + [ForeignKey(nameof(IdDirectory))] + public virtual ManualDirectory Directory { get; set; } = null!; - [ForeignKey(nameof(IdCategory))] - public virtual FileCategory Category { get; set; } = null!; + [ForeignKey(nameof(IdCategory))] + public virtual FileCategory Category { get; set; } = null!; - [ForeignKey(nameof(IdAuthor))] - public virtual User Author { get; set; } = null!; + [ForeignKey(nameof(IdAuthor))] + public virtual User Author { get; set; } = null!; } \ No newline at end of file diff --git a/AsbCloudDb/Model/Manuals/ManualDirectory.cs b/AsbCloudDb/Model/Manuals/ManualDirectory.cs index b553eb67..e72ac647 100644 --- a/AsbCloudDb/Model/Manuals/ManualDirectory.cs +++ b/AsbCloudDb/Model/Manuals/ManualDirectory.cs @@ -8,20 +8,20 @@ namespace AsbCloudDb.Model.Manuals; [Table("t_manual_directory"), Comment("Директория для инструкций")] public class ManualDirectory : IId { - [Key] - [Column("id")] - public int Id { get; set; } + [Key] + [Column("id")] + public int Id { get; set; } - [Column("name"), Comment("Название")] - public string Name { get; set; } = null!; + [Column("name"), Comment("Название")] + public string Name { get; set; } = null!; - [Column("id_parent"), Comment("Id родительской директории")] - public int? IdParent { get; set; } - - [ForeignKey(nameof(IdParent))] - public virtual ManualDirectory? Parent { get; set; } - - public virtual ICollection? Children { get; set; } - - public virtual ICollection? Manuals { get; set; } + [Column("id_parent"), Comment("Id родительской директории")] + public int? IdParent { get; set; } + + [ForeignKey(nameof(IdParent))] + public virtual ManualDirectory? Parent { get; set; } + + public virtual ICollection? Children { get; set; } + + public virtual ICollection? Manuals { get; set; } } \ No newline at end of file diff --git a/AsbCloudDb/Model/Measure.cs b/AsbCloudDb/Model/Measure.cs index 4493e054..f2d8a13c 100644 --- a/AsbCloudDb/Model/Measure.cs +++ b/AsbCloudDb/Model/Measure.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using System; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; diff --git a/AsbCloudDb/Model/MeasureCategory.cs b/AsbCloudDb/Model/MeasureCategory.cs index cbd0f7d1..e219dde6 100644 --- a/AsbCloudDb/Model/MeasureCategory.cs +++ b/AsbCloudDb/Model/MeasureCategory.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; diff --git a/AsbCloudDb/Model/Notification.cs b/AsbCloudDb/Model/Notification.cs index bed84a2b..fc9477d9 100644 --- a/AsbCloudDb/Model/Notification.cs +++ b/AsbCloudDb/Model/Notification.cs @@ -8,37 +8,37 @@ namespace AsbCloudDb.Model; [Table("t_notification"), Comment("Уведомления")] public class Notification : IId { - [Key] - [Column("id")] - public int Id { get; set; } - - [Column("id_user"), Comment("Id получателя")] - public int IdUser { get; set; } + [Key] + [Column("id")] + public int Id { get; set; } + + [Column("id_user"), Comment("Id получателя")] + public int IdUser { get; set; } - [Column("id_notification_category"), Comment("Id категории уведомления")] - public int IdNotificationCategory { get; set; } + [Column("id_notification_category"), Comment("Id категории уведомления")] + public int IdNotificationCategory { get; set; } - [Column("title"), Comment("Заголовок уведомления")] - public string Title { get; set; } = null!; + [Column("title"), Comment("Заголовок уведомления")] + public string Title { get; set; } = null!; - [Column("message"), Comment("Сообщение уведомления")] - public string Message { get; set; } = null!; + [Column("message"), Comment("Сообщение уведомления")] + public string Message { get; set; } = null!; - [Column("registration_date"), Comment("Дата регистрации уведомления")] - public DateTimeOffset RegistrationDate { get; set; } + [Column("registration_date"), Comment("Дата регистрации уведомления")] + public DateTimeOffset RegistrationDate { get; set; } - [Column("sent_date"), Comment("Дата отправки уведомления")] - public DateTimeOffset? SentDate { get; set; } - - [Column("read_date"), Comment("Дата прочтения уведомления")] - public DateTimeOffset? ReadDate { get; set; } - - [Column("id_transport_type"), Comment("Id типа доставки уведомления")] - public int IdTransportType { get; set; } + [Column("sent_date"), Comment("Дата отправки уведомления")] + public DateTimeOffset? SentDate { get; set; } + + [Column("read_date"), Comment("Дата прочтения уведомления")] + public DateTimeOffset? ReadDate { get; set; } + + [Column("id_transport_type"), Comment("Id типа доставки уведомления")] + public int IdTransportType { get; set; } - [ForeignKey(nameof(IdNotificationCategory))] - public virtual NotificationCategory NotificationCategory { get; set; } = null!; - - [ForeignKey(nameof(IdUser))] - public virtual User User { get; set; } = null!; + [ForeignKey(nameof(IdNotificationCategory))] + public virtual NotificationCategory NotificationCategory { get; set; } = null!; + + [ForeignKey(nameof(IdUser))] + public virtual User User { get; set; } = null!; } \ No newline at end of file diff --git a/AsbCloudDb/Model/NotificationCategory.cs b/AsbCloudDb/Model/NotificationCategory.cs index 3359ce29..f2fb2de5 100644 --- a/AsbCloudDb/Model/NotificationCategory.cs +++ b/AsbCloudDb/Model/NotificationCategory.cs @@ -16,12 +16,12 @@ public class NotificationCategory : IId #endregion [Key] - [Column("id")] - public int Id { get; set; } + [Column("id")] + public int Id { get; set; } - [Column("name")] - public string Name { get; set; } = null!; + [Column("name")] + public string Name { get; set; } = null!; - [InverseProperty(nameof(Notification.NotificationCategory))] - public virtual ICollection Notifications { get; set; } = null!; + [InverseProperty(nameof(Notification.NotificationCategory))] + public virtual ICollection Notifications { get; set; } = null!; } \ No newline at end of file diff --git a/AsbCloudDb/Model/OperationValue.cs b/AsbCloudDb/Model/OperationValue.cs index 227a4995..fd45a4bb 100644 --- a/AsbCloudDb/Model/OperationValue.cs +++ b/AsbCloudDb/Model/OperationValue.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; diff --git a/AsbCloudDb/Model/ProcessMapPlan/Functions/ProcessMapPlanAntiCrashRotation.cs b/AsbCloudDb/Model/ProcessMapPlan/Functions/ProcessMapPlanAntiCrashRotation.cs new file mode 100644 index 00000000..eee068a1 --- /dev/null +++ b/AsbCloudDb/Model/ProcessMapPlan/Functions/ProcessMapPlanAntiCrashRotation.cs @@ -0,0 +1,31 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using AsbCloudDb.Model.ProcessMapPlan; +using Microsoft.EntityFrameworkCore; + +namespace AsbCloudDb.Model.ProcessMapPlan.Functions; + +[Table("t_process_map_plan_anti_crash_rotation"), Comment("Противоаварийное вращение")] +public class ProcessMapPlanAntiCrashRotation : ProcessMapPlanBase +{ + [Column("top_drive_rpm_min"), Comment("Минимальные обороты ВСП, об/мин")] + [Range(0.0, 250.0)] + [Required] + public double TopDriveRpmMin { get; set; } + + [Column("top_drive_start_min_flow_rate"), Comment("Минимальный расход для запуска оборотов ВСП, л/сек")] + [Range(0.0, 100.0)] + [Required] + public double TopDriveStartMinFlowRate { get; set; } + + [Column("top_drive_torque_max"), Comment("Максимально допустимый момент на ВСП при противоаварийном вращении, кН*м")] + [Range(1.0, 35.0)] + [Required] + public double TopDriveTorqueMax { get; set; } + + [Column("note"), Comment("Примечание"), StringLength(1024)] + public string Note { get; set; } = string.Empty; + + [ForeignKey(nameof(IdPrevious))] + public virtual ProcessMapPlanAntiCrashRotation? Previous { get; set; } +} \ No newline at end of file diff --git a/AsbCloudDb/Model/ProcessMapPlan/Functions/ProcessMapPlanAutoHoldTF.cs b/AsbCloudDb/Model/ProcessMapPlan/Functions/ProcessMapPlanAutoHoldTF.cs new file mode 100644 index 00000000..a079de5d --- /dev/null +++ b/AsbCloudDb/Model/ProcessMapPlan/Functions/ProcessMapPlanAutoHoldTF.cs @@ -0,0 +1,21 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using AsbCloudDb.Model.ProcessMapPlan; +using Microsoft.EntityFrameworkCore; + +namespace AsbCloudDb.Model.ProcessMapPlan.Functions; + +[Table("t_process_map_plan_auto_hold_tf"), Comment("Автоудержание TF")] +public class ProcessMapPlanAutoHoldTF : ProcessMapPlanBase +{ + [Column("zenit_angle"), Comment("Зенитный угол, градусы")] + [Range(0.0, 100.0)] + [Required] + public double ZenithAngle { get; set; } + + [Column("note"), Comment("Примечание"), StringLength(1024)] + public string? Note { get; set; } + + [ForeignKey(nameof(IdPrevious))] + public virtual ProcessMapPlanAutoHoldTF? Previous { get; set; } +} \ No newline at end of file diff --git a/AsbCloudDb/Model/ProcessMapPlan/Functions/ProcessMapPlanDamper.cs b/AsbCloudDb/Model/ProcessMapPlan/Functions/ProcessMapPlanDamper.cs new file mode 100644 index 00000000..cfc57181 --- /dev/null +++ b/AsbCloudDb/Model/ProcessMapPlan/Functions/ProcessMapPlanDamper.cs @@ -0,0 +1,21 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using AsbCloudDb.Model.ProcessMapPlan; +using Microsoft.EntityFrameworkCore; + +namespace AsbCloudDb.Model.ProcessMapPlan.Functions; + +[Table("t_process_map_plan_functions_damper"), Comment("Демпфер")] +public class ProcessMapPlanDamper : ProcessMapPlanBase +{ + [Column("stick_slip"), Comment("StickSlip")] + [Range(0.0, 1000.0)] + [Required] + public double StickSlip { get; set; } + + [Column("note"), Comment("Примечание"), StringLength(1024)] + public string? Note { get; set; } + + [ForeignKey(nameof(IdPrevious))] + public virtual ProcessMapPlanDamper? Previous { get; set; } +} \ No newline at end of file diff --git a/AsbCloudDb/Model/ProcessMapPlan/Functions/ProcessMapPlanDrillTest.cs b/AsbCloudDb/Model/ProcessMapPlan/Functions/ProcessMapPlanDrillTest.cs new file mode 100644 index 00000000..fad4b944 --- /dev/null +++ b/AsbCloudDb/Model/ProcessMapPlan/Functions/ProcessMapPlanDrillTest.cs @@ -0,0 +1,41 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using AsbCloudDb.Model.ProcessMapPlan; +using Microsoft.EntityFrameworkCore; + +namespace AsbCloudDb.Model.ProcessMapPlan.Functions; + +[Table("t_process_map_plan_drilltest"), Comment("DrillTest")] +public class ProcessMapPlanDrillTest : ProcessMapPlanBase +{ + [Column("weight_on_bit_min"), Comment("Нагрузка минимальная, т")] + [Range(1.0, 30.0)] + [Required] + public double WeightOnBitMin { get; set; } + + [Column("weight_on_bit_steps_count"), Comment("Количество шагов по нагрузке")] + [Range(1, 5)] + [Required] + public int WeightOnBitStepsCount { get; set; } + + [Column("rpm_min"), Comment("Минимальные обороты на ВСП, об/мин.")] + [Range(5, 200)] + [Required] + public double RpmMin { get; set; } + + [Column("rpm_steps_count"), Comment("Количество шагов оборотов на ВСП, об/мин.")] + [Range(1, 5)] + [Required] + public int RpmStepsCount { get; set; } + + [Column("length_step"), Comment("Величина проходки шага, м.")] + [Range(0.1, 2.0)] + [Required] + public double LengthStep { get; set; } + + [Column("note"), Comment("Примечание"), StringLength(1024)] + public string? Note { get; set; } + + [ForeignKey(nameof(IdPrevious))] + public virtual ProcessMapPlanDrillTest? Previous { get; set; } +} \ No newline at end of file diff --git a/AsbCloudDb/Model/ProcessMapPlan/Functions/ProcessMapPlanOscillation.cs b/AsbCloudDb/Model/ProcessMapPlan/Functions/ProcessMapPlanOscillation.cs new file mode 100644 index 00000000..f6eb478c --- /dev/null +++ b/AsbCloudDb/Model/ProcessMapPlan/Functions/ProcessMapPlanOscillation.cs @@ -0,0 +1,46 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using AsbCloudDb.Model.ProcessMapPlan; +using Microsoft.EntityFrameworkCore; + +namespace AsbCloudDb.Model.ProcessMapPlan.Functions; + +[Table("t_process_map_plan_oscillation"), Comment("Осцилляция")] +public class ProcessMapPlanOscillation : ProcessMapPlanBase +{ + [Column("optimal_oscillation_angle"), Comment("Оптимальный угол осцилляции, градусы")] + [Range(0.0, 6000.0)] + [Required] + public double OptimalOscillationAngle { get; set; } + + [Column("Rpm_right"), Comment("Скорость вправо, об/мин")] + [Range(0.0, 270.0)] + [Required] + public double RpmRight { get; set; } + + [Column("Rpm_left"), Comment("Скорость влево, об/мин")] + [Range(0.0, 270.0)] + [Required] + public double RpmLeft { get; set; } + + [Column("torque_max_right"), Comment("Ограничение момента вправо, кН*м")] + [Range(0.0, 35.0)] + [Required] + public double TorqueMaxRight { get; set; } + + [Column("torque_max_left"), Comment("Ограничение момента влево, кН*м")] + [Range(0.0, 35.0)] + [Required] + public double TorqueMaxLeft { get; set; } + + [Column("mode"), Comment("Режим Авто/Руч")] + [Range(0, 1)] + [Required] + public int Mode { get; set; } + + [Column("note"), Comment("Примечание"), StringLength(1024)] + public string? Note { get; set; } + + [ForeignKey(nameof(IdPrevious))] + public virtual ProcessMapPlanOscillation? Previous { get; set; } +} \ No newline at end of file diff --git a/AsbCloudDb/Model/ProcessMapPlan/Functions/ProcessMapPlanShockTest.cs b/AsbCloudDb/Model/ProcessMapPlan/Functions/ProcessMapPlanShockTest.cs new file mode 100644 index 00000000..6e9d7a7c --- /dev/null +++ b/AsbCloudDb/Model/ProcessMapPlan/Functions/ProcessMapPlanShockTest.cs @@ -0,0 +1,46 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using AsbCloudDb.Model.ProcessMapPlan; +using Microsoft.EntityFrameworkCore; + +namespace AsbCloudDb.Model.ProcessMapPlan.Functions; + +[Table("t_process_map_shock_test"), Comment("ShockTest")] +public class ProcessMapPlanShockTest : ProcessMapPlanBase +{ + [Column("stick_slip"), Comment("stickSlip")] + [Range(0.0, 1000.0)] + [Required] + public double StickSlip { get; set; } + + [Column("whirl"), Comment("Whirl")] + [Range(0.0, 1000.0)] + [Required] + public double Whirl { get; set; } + + [Column("axial_vibrations"), Comment("Осевые вибрации")] + [Range(0.0, 1000.0)] + [Required] + public double AxialVibrations { get; set; } + + [Column("combined_vibrations"), Comment("Комбинированные вибрации")] + [Range(0.0, 1000.0)] + [Required] + public double CombinedVibrations { get; set; } + + [Column("weight_on_bit_min"), Comment("Нагрузка минимальная, т")] + [Range(0.0, 30.0)] + [Required] + public double WeightOnBitMin { get; set; } + + [Column("rpm_min"), Comment("Минимальные обороты на ВСП, об/мин.")] + [Range(5, 200)] + [Required] + public double RpmMin { get; set; } + + [Column("note"), Comment("Примечание"), StringLength(1024)] + public string? Note { get; set; } + + [ForeignKey(nameof(IdPrevious))] + public virtual ProcessMapPlanShockTest? Previous { get; set; } +} \ No newline at end of file diff --git a/AsbCloudDb/Model/ProcessMapPlan/Functions/ProcessMapPlanStaticMeasurementOutput.cs b/AsbCloudDb/Model/ProcessMapPlan/Functions/ProcessMapPlanStaticMeasurementOutput.cs new file mode 100644 index 00000000..372c0dce --- /dev/null +++ b/AsbCloudDb/Model/ProcessMapPlan/Functions/ProcessMapPlanStaticMeasurementOutput.cs @@ -0,0 +1,21 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using AsbCloudDb.Model.ProcessMapPlan; +using Microsoft.EntityFrameworkCore; + +namespace AsbCloudDb.Model.ProcessMapPlan.Functions; + +[Table("t_process_map_plan_static_measurement_output"), Comment("Выход статического замера")] +public class ProcessMapPlanStaticMeasurementOutput : ProcessMapPlanBase +{ + [Column("signal_waiting_time"), Comment("Время ожидания выхода сигнала с ТМС, сек.")] + [Range(0.0, 1800.0)] + [Required] + public double SignalWaitingTime { get; set; } + + [Column("note"), Comment("Примечание"), StringLength(1024)] + public string Note { get; set; } = string.Empty; + + [ForeignKey(nameof(IdPrevious))] + public virtual ProcessMapPlanStaticMeasurementOutput? Previous { get; set; } +} \ No newline at end of file diff --git a/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanLoadCapacity.cs b/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanLoadCapacity.cs new file mode 100644 index 00000000..6d6d2c00 --- /dev/null +++ b/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanLoadCapacity.cs @@ -0,0 +1,31 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using AsbCloudDb.Model.ProcessMapPlan; +using Microsoft.EntityFrameworkCore; + +namespace AsbCloudDb.Model.ProcessMapPlan.Operations; + +[Table("t_process_map_plan_load_capacity"), Comment("РТК выработка нагрузки")] +public class ProcessMapPlanLoadCapacity : ProcessMapPlanBase +{ + [Column("time_load_capacity_min"), Comment("Время выработки минимальное, сек")] + [Range(0.0, 800.0)] + [Required] + public double TimeLoadCapacityMin { get; set; } + + [Column("differential_pressure_min"), Comment("Перепад давления минимальный, атм")] + [Range(0.1, 400.0)] + [Required] + public double DifferentialPressureMin { get; set; } + + [Column("weight_on_bit_min"), Comment("Нагрузка минимальная, т")] + [Range(0.1, 99.0)] + [Required] + public double WeightOnBitMin { get; set; } + + [Column("note"), Comment("Примечание"), StringLength(1024)] + public string Note { get; set; } = string.Empty; + + [ForeignKey(nameof(IdPrevious))] + public virtual ProcessMapPlanLoadCapacity? Previous { get; set; } +} \ No newline at end of file diff --git a/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanOscillationAngles.cs b/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanOscillationAngles.cs new file mode 100644 index 00000000..d8ebc10c --- /dev/null +++ b/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanOscillationAngles.cs @@ -0,0 +1,37 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using AsbCloudDb.Model.ProcessMapPlan; +using Microsoft.EntityFrameworkCore; + +namespace AsbCloudDb.Model.ProcessMapPlan.Operations; + +[Table("t_process_map_plan_operation_oscillation_angels"), Comment("Определение углов осцилляции")] +public class ProcessMapPlanOscillationAngles : ProcessMapPlanBase +{ + [Column("top_drive_torque"), Comment("Момент на ВСП, кН*м., Уставка")] + [Range(0.0, 35.0)] + [Required] + public double TopDriveTorque { get; set; } + + [Column("top_drive_torque_max"), Comment("Момент на ВСП, кН*м., Ограничение")] + [Range(0.0, 35.0)] + [Required] + public double TopDriveTorqueMax { get; set; } + + [Column("rpm"), Comment("Обороты на ВСП, об/мин., Уставка")] + [Range(0.0, 270.0)] + [Required] + public double Rpm { get; set; } + + [Column("rpm_max"), Comment("Обороты на ВСП, об/мин., Ограничение")] + [Range(0.0, 270.0)] + [Required] + public double RpmMax { get; set; } + + [Column("note"), Comment("Примечание"), StringLength(1024)] + [Required] + public string Note { get; set; } = string.Empty; + + [ForeignKey(nameof(IdPrevious))] + public virtual ProcessMapPlanOscillationAngles? Previous { get; set; } +} \ No newline at end of file diff --git a/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanPositioningOffTheBottom.cs b/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanPositioningOffTheBottom.cs new file mode 100644 index 00000000..32e213fc --- /dev/null +++ b/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanPositioningOffTheBottom.cs @@ -0,0 +1,77 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using AsbCloudDb.Model.ProcessMapPlan; +using Microsoft.EntityFrameworkCore; + +namespace AsbCloudDb.Model.ProcessMapPlan.Operations; + +[Table("t_process_map_plan_positioning_off_the_bottom"), Comment("Позиционирование над забоем")] +public class ProcessMapPlanPositioningOffTheBottom : ProcessMapPlanBase +{ + [Column("stop_off_the_bottom"), Comment("Остановка над забоем, м.")] + [Range(0.0, 30.0)] + [Required] + public double StopOffTheBottom { get; set; } + + [Column("pressure_max"), Comment("Максимально допустимое давление, атм.")] + [Range(0.0, 400.0)] + [Required] + public double PressureMax { get; set; } + + [Column("differential_pressure"), Comment("Перепад давления уставка, атм.")] + [Range(0.0, 60.0)] + [Required] + public double DifferentialPressure { get; set; } + + [Column("tight"), Comment("Затяжка, т.")] + [Range(0.0, 20.0)] + [Required] + public double Tight { get; set; } + + [Column("slacking_off"), Comment("Посадка, т.")] + [Range(0.0, 20.0)] + [Required] + public double SlackingOff { get; set; } + + [Column("torque_max"), Comment("Максимально допустимый момент, кН*м.")] + [Range(0.0, 35.0)] + [Required] + public double TorqueMax { get; set; } + + [Column("rop_up"), Comment("Скорость вверх, м/ч.")] + [Range(0.0, 999.0)] + [Required] + public double RopUp { get; set; } + + [Column("rop_down"), Comment("Скорость вниз, м/ч.")] + [Range(0.0, 999.0)] + [Required] + public double RopDown { get; set; } + + [Column("rpm_up"), Comment("Обороты вверх, об/мин.")] + [Range(0.0, 270.0)] + [Required] + public double RpmUp { get; set; } + + [Column("rpm_down"), Comment("Обороты вниз, об/мин.")] + [Range(0.0, 270.0)] + [Required] + public double RpmDown { get; set; } + + [Column("flow_rate_up"), Comment("Расход вверх, л/с.")] + [Range(0.0, 100.0)] + [Required] + public double FlowRateUp { get; set; } + + [Column("flow_rate_down"), Comment("Расход вниз, л/с.")] + [Range(0.0, 100.0)] + [Required] + public double FlowRateDown { get; set; } + + [Column("note"), Comment("Примечание"), StringLength(1024)] + [Required] + public string Note { get; set; } = string.Empty; + + [ForeignKey(nameof(IdPrevious))] + public virtual ProcessMapPlanPositioningOffTheBottom? Previous { get; set; } +} \ No newline at end of file diff --git a/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanReamingRotor.cs b/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanReamingRotor.cs new file mode 100644 index 00000000..897e9f1f --- /dev/null +++ b/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanReamingRotor.cs @@ -0,0 +1,176 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using AsbCloudDb.Model.ProcessMapPlan; +using Microsoft.EntityFrameworkCore; + +namespace AsbCloudDb.Model.ProcessMapPlan.Operations; + +[Table("t_process_map_plan_operation_reaming_rotor"), Comment("РТК проработка ротор")] +public class ProcessMapPlanReamingRotor : ProcessMapPlanBase +{ + [Column("pressure_max"), Comment("Максимально допустимое давление, атм.")] + [Range(0.0, 400.0)] + [Required] + public double PressureMax { get; set; } + + [Column("differential_pressure"), Comment("Перепад давления уставка, атм.")] + [Range(0.0, 60.0)] + [Required] + public double DifferentialPressure { get; set; } + + [Column("tight"), Comment("Затяжка, т.")] + [Range(0.0, 20.0)] + [Required] + public double Tight { get; set; } + + [Column("slacking_off"), Comment("Посадка, т.")] + [Range(0.0, 20.0)] + [Required] + public double SlackingOff { get; set; } + + [Column("torque_max"), Comment("Максимально допустимый момент, кН*м.")] + [Range(0.0, 35.0)] + [Required] + public double TorqueMax { get; set; } + + [Column("reaming1_repetitions_count"), Comment("Проработка 1. Количество повторений, шт.")] + [Range(0, 99)] + [Required] + public int Reaming1RepetitionsCount { get; set; } + + [Column("reaming1_rop_up"), Comment("Проработка 1. Скорость вверх, м/ч.")] + [Range(0.0, 999.0)] + [Required] + public double Reaming1RopUp { get; set; } + + [Column("reaming1_rop_down"), Comment("Проработка 1, Скорость, м/ч., Вниз")] + [Range(0.0, 999.0)] + [Required] + public double Reaming1RopDown { get; set; } + + [Column("reaming1_rpm_up"), Comment("Проработка 1, Обороты, об/мин., Вверх")] + [Range(0.0, 270.0)] + [Required] + public double Reaming1RpmUp { get; set; } + + [Column("reaming1_rpm_down"), Comment("Проработка 1, Обороты, об/мин., Вниз")] + [Range(0.0, 270.0)] + [Required] + public double Reaming1RpmDown { get; set; } + + [Column("reaming1_flow_rate_up"), Comment("Проработка 1, Расход, л/с., Вверх")] + [Range(0.0, 100.0)] + [Required] + public double Reaming1FlowRateUp { get; set; } + + [Column("reaming1_flow_rate_down"), Comment("Проработка 1, Расход, л/с., Вниз")] + [Range(0.0, 100.0)] + [Required] + public double Reaming1FlowRateDown { get; set; } + + [Column("reaming1_interval"), Comment("Проработка 1, Интервал проработки, м.")] + [Range(0.0, 30.0)] + [Required] + public double Reaming1Interval { get; set; } + + [Column("reaming1_stop_point_off_bottom"), Comment("Остановка над забоем, м.")] + [Range(0.0, 10.0)] + [Required] + public double Reaming1StopPointOffBottom { get; set; } + + [Column("reaming2_repetitions_count"), Comment("Проработка 2, Количество повторений, шт.")] + [Range(0, 99)] + [Required] + public int Reaming2RepetitionsCount { get; set; } + + [Column("reaming2_rop_up"), Comment("Проработка 2, Скорость, м/ч., Вверх")] + [Range(0.0, 999.0)] + [Required] + public double Reaming2RopUp { get; set; } + + [Column("reaming2_rop_down"), Comment("Проработка 2, Скорость, м/ч., Вниз")] + [Range(0.0, 999.0)] + [Required] + public double Reaming2RopDown { get; set; } + + [Column("reaming2_rpm_up"), Comment("Проработка 2, Обороты, об/мин., Вверх")] + [Range(0.0, 270.0)] + [Required] + public double Reaming2RpmUp { get; set; } + + [Column("reaming2_rpm_down"), Comment("Проработка 2, Обороты, об/мин., Вниз")] + [Range(0.0, 270.0)] + [Required] + public double Reaming2RpmDown { get; set; } + + [Column("reaming2_flow_rate_up"), Comment("Проработка 2, Расход, л/с., Вверх")] + [Range(0.0, 100.0)] + [Required] + public double Reaming2FlowRateUp { get; set; } + + [Column("reaming2_flow_rate_down"), Comment("Проработка 2, Расход, л/с., Вниз")] + [Range(0.0, 100.0)] + [Required] + public double Reaming2FlowRateDown { get; set; } + + [Column("reaming2_interval"), Comment("Проработка 2, Интервал проработки, м.")] + [Range(0.0, 30.0)] + [Required] + public double Reaming2Interval { get; set; } + + [Column("reaming2_stop_point_off_bottom"), Comment("Остановка над забоем, м.")] + [Range(0.0, 10.0)] + [Required] + public double Reaming2StopPointOffBottom { get; set; } + + [Column("reaming3_repetitions_count"), Comment("Проработка 3, Количество повторений, шт.")] + [Range(0, 99)] + [Required] + public int Reaming3RepetitionsCount { get; set; } + + [Column("reaming3_rop_up"), Comment("Проработка 3, Скорость, м/ч., Вверх")] + [Range(0.0, 999.0)] + [Required] + public double Reaming3RopUp { get; set; } + + [Column("reaming3_rop_down"), Comment("Проработка 3, Скорость, м/ч., Вниз")] + [Range(0.0, 999.0)] + [Required] + public double Reaming3RopDown { get; set; } + + [Column("reaming3_rpm_up"), Comment("Проработка 3, Обороты, об/мин., Вверх")] + [Range(0.0, 270.0)] + [Required] + public double Reaming3RpmUp { get; set; } + + [Column("reaming3_rpm_down"), Comment("Проработка 3, Обороты, об/мин., Вниз")] + [Range(0.0, 270.0)] + [Required] + public double Reaming3RpmDown { get; set; } + + [Column("reaming3_flow_rate_up"), Comment("Проработка 3, Расход, л/с., Вверх")] + [Range(0.0, 100.0)] + [Required] + public double Reaming3FlowRateUp { get; set; } + + [Column("reaming3_flow_rate_down"), Comment("Проработка 3, Расход, л/с., Вниз")] + [Range(0.0, 100.0)] + [Required] + public double Reaming3FlowRateDown { get; set; } + + [Column("reaming3_interval"), Comment("Проработка 3, Интервал проработки, м.")] + [Range(0.0, 30.0)] + [Required] + public double Reaming3Interval { get; set; } + + [Column("reaming3_stop_point_off_bottom"), Comment("Остановка над забоем, м.")] + [Range(0.0, 10.0)] + [Required] + public double Reaming3StopPointOffBottom { get; set; } + + [Column("note"), Comment("Примечание"), StringLength(1024)] + public string? Note { get; set; } + + [ForeignKey(nameof(IdPrevious))] + public virtual ProcessMapPlanReamingRotor? Previous { get; set; } +} \ No newline at end of file diff --git a/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanReamingSlide.cs b/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanReamingSlide.cs new file mode 100644 index 00000000..96fc576d --- /dev/null +++ b/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanReamingSlide.cs @@ -0,0 +1,176 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using AsbCloudDb.Model.ProcessMapPlan; +using Microsoft.EntityFrameworkCore; + +namespace AsbCloudDb.Model.ProcessMapPlan.Operations; + +[Table("t_process_map_plan_reaming_slide"), Comment("РТК проработка слайд")] +public class ProcessMapPlanReamingSlide : ProcessMapPlanBase +{ + [Column("pressure_max"), Comment("Максимально допустимое давление, атм.")] + [Range(0.0, 400.0)] + [Required] + public double PressureMax { get; set; } + + [Column("differential_pressure"), Comment("Перепад давления уставка, атм.")] + [Range(0.0, 60.0)] + [Required] + public double DifferentialPressure { get; set; } + + [Column("tight"), Comment("Затяжка, т.")] + [Range(0.0, 20.0)] + [Required] + public double Tight { get; set; } + + [Column("slacking_off"), Comment("Посадка, т.")] + [Range(0.0, 20.0)] + [Required] + public double SlackingOff { get; set; } + + [Column("torque_max"), Comment("Максимально допустимый момент, кН*м.")] + [Range(0.0, 35.0)] + [Required] + public double TorqueMax { get; set; } + + [Column("reaming1_repetitions_count"), Comment("Проработка 1. Количество повторений, шт.")] + [Range(0.0, 99.0)] + [Required] + public int Reaming1RepetitionsCount { get; set; } + + [Column("reaming1_rop_up"), Comment("Проработка 1. Скорость вверх, м/ч.")] + [Range(0.0, 999.0)] + [Required] + public double Reaming1RopUp { get; set; } + + [Column("reaming1_rop_down"), Comment("Проработка 1. Скорость вниз, м/ч.")] + [Range(0.0, 999.0)] + [Required] + public double Reaming1RopDown { get; set; } + + [Column("reaming1_rpm_up"), Comment("Проработка 1, Обороты, об/мин., Вверх")] + [Range(0.0, 270.0)] + [Required] + public double Reaming1RpmUp { get; set; } + + [Column("reaming1_rpm_down"), Comment("Проработка 1, Обороты, об/мин., Вниз")] + [Range(0.0, 270.0)] + [Required] + public double Reaming1RpmDown { get; set; } + + [Column("reaming1_flow_rate_up"), Comment("Проработка 1, Расход, л/с., Вверх")] + [Range(0.0, 100.0)] + [Required] + public double Reaming1FlowRateUp { get; set; } + + [Column("reaming1_flow_rate_down"), Comment("Проработка 1, Расход, л/с., Вниз")] + [Range(0.0, 100.0)] + [Required] + public double Reaming1FlowRateDown { get; set; } + + [Column("reaming1_interval"), Comment("Проработка 1, Интервал проработки, м.")] + [Range(0.0, 30.0)] + [Required] + public double Reaming1Interval { get; set; } + + [Column("reaming1_stop_point_off_bottom"), Comment("Остановка над забоем, м.")] + [Range(0.0, 10.0)] + [Required] + public double Reaming1StopPointOffBottom { get; set; } + + [Column("reaming2_repetitions_count"), Comment("Проработка 2, Количество повторений, шт.")] + [Range(0.0, 99.0)] + [Required] + public int Reaming2RepetitionsCount { get; set; } + + [Column("reaming2_rop_up"), Comment("Проработка 2, Скорость, м/ч., Вверх")] + [Range(0.0, 999.0)] + [Required] + public double Reaming2RopUp { get; set; } + + [Column("reaming2_rop_down"), Comment("Проработка 2, Скорость, м/ч., Вниз")] + [Range(0.0, 999.0)] + [Required] + public double Reaming2RopDown { get; set; } + + [Column("reaming2_rpm_up"), Comment("Проработка 2, Обороты, об/мин., Вверх")] + [Range(0.0, 270.0)] + [Required] + public double Reaming2RpmUp { get; set; } + + [Column("reaming2_rpm_down"), Comment("Проработка 2, Обороты, об/мин., Вниз")] + [Range(0.0, 270.0)] + [Required] + public double Reaming2RpmDown { get; set; } + + [Column("reaming2_flow_rate_up"), Comment("Проработка 2, Расход, л/с., Вверх")] + [Range(0.0, 100.0)] + [Required] + public double Reaming2FlowRateUp { get; set; } + + [Column("reaming2_flow_rate_down"), Comment("Проработка 2, Расход, л/с., Вниз")] + [Range(0.0, 100.0)] + [Required] + public double Reaming2FlowRateDown { get; set; } + + [Column("reaming2_interval"), Comment("Проработка 2, Интервал проработки, м.")] + [Range(0.0, 30.0)] + [Required] + public double Reaming2Interval { get; set; } + + [Column("reaming2_stop_point_off_bottom"), Comment("Остановка над забоем, м.")] + [Range(0.0, 10.0)] + [Required] + public double Reaming2StopPointOffBottom { get; set; } + + [Column("reaming3_repetitions_count"), Comment("Проработка 3, Количество повторений, шт.")] + [Range(0.0, 99.0)] + [Required] + public int Reaming3RepetitionsCount { get; set; } + + [Column("reaming3_rop_up"), Comment("Проработка 3, Скорость, м/ч., Вверх")] + [Range(0.0, 999.0)] + [Required] + public double Reaming3RopUp { get; set; } + + [Column("reaming3_rop_down"), Comment("Проработка 3, Скорость, м/ч., Вниз")] + [Range(0.0, 999.0)] + [Required] + public double Reaming3RopDown { get; set; } + + [Column("reaming3_rpm_up"), Comment("Проработка 3, Обороты, об/мин., Вверх")] + [Range(0.0, 270.0)] + [Required] + public double Reaming3RpmUp { get; set; } + + [Column("reaming3_rpm_down"), Comment("Проработка 3, Обороты, об/мин., Вниз")] + [Range(0.0, 270.0)] + [Required] + public double Reaming3RpmDown { get; set; } + + [Column("reaming3_flow_rate_up"), Comment("Проработка 3, Расход, л/с., Вверх")] + [Range(0.0, 100.0)] + [Required] + public double Reaming3FlowRateUp { get; set; } + + [Column("reaming3_flow_rate_down"), Comment("Проработка 3, Расход, л/с., Вниз")] + [Range(0.0, 100.0)] + [Required] + public double Reaming3FlowRateDown { get; set; } + + [Column("reaming3_interval"), Comment("Проработка 3, Интервал проработки, м.")] + [Range(0.0, 30.0)] + [Required] + public double Reaming3Interval { get; set; } + + [Column("reaming3_stop_point_off_bottom"), Comment("Остановка над забоем, м.")] + [Range(0.0, 10.0)] + [Required] + public double Reaming3StopPointOffBottom { get; set; } + + [Column("note"), Comment("Примечание"), StringLength(1024)] + public string? Note { get; set; } + + [ForeignKey(nameof(IdPrevious))] + public virtual ProcessMapPlanReamingSlide? Previous { get; set; } +} \ No newline at end of file diff --git a/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanRecordingStaticMeasurement.cs b/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanRecordingStaticMeasurement.cs new file mode 100644 index 00000000..430e1042 --- /dev/null +++ b/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanRecordingStaticMeasurement.cs @@ -0,0 +1,21 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using AsbCloudDb.Model.ProcessMapPlan; +using Microsoft.EntityFrameworkCore; + +namespace AsbCloudDb.Model.ProcessMapPlan.Operations; + +[Table("t_process_map_plan_recording_static_measurement"), Comment("Запись статического замера")] +public class ProcessMapPlanRecordingStaticMeasurement : ProcessMapPlanBase +{ + [Column("measurement_recording_time"), Comment("Время записи замера, сек")] + [Range(0.0, 1800.0)] + [Required] + public double MeasurementRecordingTime { get; set; } + + [Column("note"), Comment("Примечание"), StringLength(1024)] + public string Note { get; set; } = string.Empty; + + [ForeignKey(nameof(IdPrevious))] + public virtual ProcessMapPlanRecordingStaticMeasurement? Previous { get; set; } +} \ No newline at end of file diff --git a/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanRotor.cs b/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanRotor.cs new file mode 100644 index 00000000..3f0d5218 --- /dev/null +++ b/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanRotor.cs @@ -0,0 +1,77 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using AsbCloudDb.Model.ProcessMapPlan; +using Microsoft.EntityFrameworkCore; + +namespace AsbCloudDb.Model.ProcessMapPlan.Operations; + +[Table("t_process_map_plan_rotor"), Comment("РТК план бурение ротор")] +public class ProcessMapPlanRotor : ProcessMapPlanBase +{ + [Column("rop_max"), Comment("Максимально допустимая скорость, м/ч")] + [Range(0, 800.0)] + [Required] + public double RopMax { get; set; } + + [Column("pressure_max"), Comment("Максимально допустимое давление, атм")] + [Range(0.0, 400.0)] + [Required] + public double PressureMax { get; set; } + + [Column("differential_pressure"), Comment("Перепад давления, атм. Уставка")] + [Range(0.0, 60.0)] + [Required] + public double DifferentialPressure { get; set; } + + [Column("differential_pressure_max"), Comment("Перепад давления, атм. Ограничение")] + [Range(0.0, 60.0)] + [Required] + public double DifferentialPressureMax { get; set; } + + [Column("weight_on_bit"), Comment("Нагрузка, т. Уставка")] + [Range(0.0, 99.0)] + [Required] + public double WeightOnBit { get; set; } + + [Column("weight_on_bit_max"), Comment("Нагрузка, т. Ограничение")] + [Range(0.0, 99.0)] + [Required] + public double WeightOnBitMax { get; set; } + + [Column("top_drive_torque"), Comment("Момент на ВСП, кН*м. Уставка")] + [Range(0.0, 35.0)] + [Required] + public double TopDriveTorque { get; set; } + + [Column("top_drive_torque_max"), Comment("Момент на ВСП, кН*м. Ограничение")] + [Range(0.0, 35.0)] + [Required] + public double TopDriveTorqueMax { get; set; } + + [Column("rpm"), Comment("Обороты на ВСП, об/мин. Уставка")] + [Range(0.0, 270.0)] + [Required] + public double Rpm { get; set; } + + [Column("rpm_max"), Comment("Обороты на ВСП, об/мин. Ограничение")] + [Range(0.0, 270.0)] + [Required] + public double RpmMax { get; set; } + + [Column("flow_rate"), Comment("Расход л/с. Уставка")] + [Range(0.0, 100.0)] + [Required] + public double FlowRate { get; set; } + + [Column("flow_rate_max"), Comment("Расход л/с. Ограничение")] + [Range(0.0, 100.0)] + [Required] + public double FlowRateMax { get; set; } + + [Column("note"), Comment("Примечание"), StringLength(1024)] + [Required] + public string Note { get; set; } = string.Empty; + + [ForeignKey(nameof(IdPrevious))] + public virtual ProcessMapPlanRotor? Previous { get; set; } +} \ No newline at end of file diff --git a/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanSlide.cs b/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanSlide.cs new file mode 100644 index 00000000..883ff97c --- /dev/null +++ b/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanSlide.cs @@ -0,0 +1,66 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using AsbCloudDb.Model.ProcessMapPlan; +using Microsoft.EntityFrameworkCore; + +namespace AsbCloudDb.Model.ProcessMapPlan.Operations; + +[Table("t_process_map_plan_slide"), Comment("РТК план бурение слайд")] +public class ProcessMapPlanSlide : ProcessMapPlanBase +{ + [Column("rop_max"), Comment("Максимально допустимая скорость, м/ч.")] + [Range(0, 800)] + [Required] + public double RopMax { get; set; } + + [Column("pressure_max"), Comment("Максимально допустимое давление, атм.")] + [Range(0, 400)] + [Required] + public double PressureMax { get; set; } + + [Column("differential_pressure"), Comment("Перепад давления уставка, атм.")] + [Range(0, 60)] + [Required] + public double DifferentialPressure { get; set; } + + [Column("differential_pressure_max"), Comment("Перепад давления ограничение, атм.")] + [Range(0, 60)] + [Required] + public double DifferentialPressureMax { get; set; } + + [Column("weight_on_bit"), Comment("Нагрузка уставка, т.")] + [Range(0, 99)] + [Required] + public double WeightOnBit { get; set; } + + [Column("weight_on_bit_max"), Comment("Нагрузка ограничение, т.")] + [Range(0, 99)] + [Required] + public double WeightOnBitMax { get; set; } + + [Column("flow_rate"), Comment("Расход уставка, л/с.")] + [Range(0, 100)] + [Required] + public double FlowRate { get; set; } + + [Column("flow_rate_max"), Comment("Расход ограничение, л/с.")] + [Range(0, 100)] + [Required] + public double FlowRateMax { get; set; } + + [Column("spring"), Comment("Расчётная пружина, градус")] + [Range(0, 9999)] + [Required] + public double Spring { get; set; } + + [Column("buckling"), Comment("Складывание инструмента, м.")] + [Range(0, 9999)] + [Required] + public double Buckling { get; set; } + + [Column("note"), Comment("Примечание"), StringLength(1024)] + public string Note { get; set; } = string.Empty; + + [ForeignKey(nameof(IdPrevious))] + public virtual ProcessMapPlanSlide? Previous { get; set; } +} \ No newline at end of file diff --git a/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanSwitchingOffThePump.cs b/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanSwitchingOffThePump.cs new file mode 100644 index 00000000..04148bb1 --- /dev/null +++ b/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanSwitchingOffThePump.cs @@ -0,0 +1,25 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using AsbCloudDb.Model.ProcessMapPlan; +using Microsoft.EntityFrameworkCore; + +namespace AsbCloudDb.Model.ProcessMapPlan.Operations; + +[Table("t_process_map_plan_operation_switching_off_the_pump"), Comment("Выключение насоса")] +public class ProcessMapPlanSwitchingOffThePump : ProcessMapPlanBase +{ + [Column("duration"), Comment("Продолжительность, сек.")] + [Range(0.0, 1800.0)] + [Required] + public double Duration { get; set; } + + [Column("residual_pressure_limit"), Comment("Лимит остаточного давления, атм.")] + [Range(0.0, 100.0)] + public double ResidualPressureLimit { get; set; } + + [Column("note"), Comment("Примечание"), StringLength(1024)] + public string Note { get; set; } = string.Empty; + + [ForeignKey(nameof(IdPrevious))] + public virtual ProcessMapPlanSwitchingOffThePump? Previous { get; set; } +} \ No newline at end of file diff --git a/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanSwitchingToTheMode.cs b/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanSwitchingToTheMode.cs new file mode 100644 index 00000000..ac21e961 --- /dev/null +++ b/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanSwitchingToTheMode.cs @@ -0,0 +1,32 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using AsbCloudDb.Model.ProcessMapPlan; +using Microsoft.EntityFrameworkCore; + +namespace AsbCloudDb.Model.ProcessMapPlan.Operations; + +[Table("t_process_map_plan_switching_to_the_mode"), Comment("Выход на плановый расход")] +public class ProcessMapPlanSwitchingToTheMode : ProcessMapPlanBase +{ + [Column("ramp_time"), Comment("Время выхода буровых насосов на плановый расход, сек.")] + [Range(0.0, 3600.0)] + [Required] + public double RampTime { get; set; } + + [Column("flow_rate"), Comment("Расход, л/с")] + [Range(0.0, 100.0)] + [Required] + public double FlowRate { get; set; } + + [Column("pressure_limit"), Comment("Максимально допустимое давление, атм.")] + [Range(0.0, 400.0)] + [Required] + public double PressureMax { get; set; } + + [Column("note"), Comment("Примечание"), StringLength(1024)] + [Required] + public string Note { get; set; } = string.Empty; + + [ForeignKey(nameof(IdPrevious))] + public virtual ProcessMapPlanSwitchingToTheMode? Previous { get; set; } +} \ No newline at end of file diff --git a/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanTFOrientation.cs b/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanTFOrientation.cs new file mode 100644 index 00000000..5f6a4fea --- /dev/null +++ b/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanTFOrientation.cs @@ -0,0 +1,86 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using AsbCloudDb.Model.ProcessMapPlan; +using Microsoft.EntityFrameworkCore; + +namespace AsbCloudDb.Model.ProcessMapPlan.Operations; + +[Table("t_process_map_plan_tf_orientation"), Comment("Выставление")] +public class ProcessMapPlanTFOrientation : ProcessMapPlanBase +{ + [Column("tf_setpoint"), Comment("Задание TF, град.")] + [Range(0.0, 360.0)] + [Required] + public double TFSetpoint { get; set; } + + [Column("spring"), Comment("Пружина, град.")] + [Range(0.0, 10000.0)] + [Required] + public double Spring { get; set; } + + [Column("pressure_max"), Comment("Максимальное давление, атм.")] + [Range(0.0, 400.0)] + [Required] + public double PressureMax { get; set; } + + [Column("differential_pressure"), Comment("Перепад давления, атм.")] + [Range(0.0, 60.0)] + [Required] + public double DifferentialPressure { get; set; } + + [Column("tight"), Comment("Затяжка, т.")] + [Range(0.0, 20.0)] + [Required] + public double Tight { get; set; } + + [Column("slacking_off"), Comment("Посадка, т.")] + [Range(0.0, 20.0)] + [Required] + public double SlackingOff { get; set; } + + [Column("torque_max"), Comment("Максимально допустимый момент, кН*м.")] + [Range(0.0, 35.0)] + [Required] + public double TorqueMax { get; set; } + + [Column("repetitions_count"), Comment("Количество расхаживаний, шт.")] + [Range(0.0, 99.0)] + [Required] + public int RepetitionsCount { get; set; } + + [Column("rop_up"), Comment("Скорость вверх, м/ч.")] + [Range(0.0, 999.0)] + [Required] + public double RopUp { get; set; } + + [Column("rop_down"), Comment("Скорость вниз, м/ч.")] + [Range(0.0, 999.0)] + [Required] + public double RopDown { get; set; } + + [Column("flow_rate_up"), Comment("Расход вверх, л/с.")] + [Range(0.0, 100.0)] + [Required] + public double FlowRateUp { get; set; } + + [Column("flow_rate_down"), Comment("Расход вниз, л/с.")] + [Range(0.0, 100.0)] + [Required] + public double FlowRateDown { get; set; } + + [Column("interval"), Comment("Интервал расхаживания, м.")] + [Range(0.0, 30.0)] + [Required] + public double Interval { get; set; } + + [Column("stop_point_off_bottom"), Comment("Остановка над забоем, м.")] + [Range(0.0, 10.0)] + [Required] + public double StopPointOffBottom { get; set; } + + [Column("note"), Comment("Примечание"), StringLength(1024)] + public string Note { get; set; } = string.Empty; + + [ForeignKey(nameof(IdPrevious))] + public virtual ProcessMapPlanTFOrientation? Previous { get; set; } +} \ No newline at end of file diff --git a/AsbCloudDb/Model/ProcessMapPlan/ProcessMapPlanBase.cs b/AsbCloudDb/Model/ProcessMapPlan/ProcessMapPlanBase.cs index 47c45dd1..174b2106 100644 --- a/AsbCloudDb/Model/ProcessMapPlan/ProcessMapPlanBase.cs +++ b/AsbCloudDb/Model/ProcessMapPlan/ProcessMapPlanBase.cs @@ -1,4 +1,5 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; +using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace AsbCloudDb.Model.ProcessMapPlan; @@ -12,20 +13,16 @@ public abstract class ProcessMapPlanBase : ChangeLogAbstract, IId, IWellRelated public int IdWellSectionType { get; set; } [Column("depth_start"), Comment("Глубина по стволу от, м")] + [Range(0.0, 9999.9)] public double DepthStart { get; set; } [Column("depth_end"), Comment("Глубина по стволу до, м")] + [Range(0.0, 9999.9)] public double DepthEnd { get; set; } [ForeignKey(nameof(IdWell))] public virtual Well Well { get; set; } = null!; - [ForeignKey(nameof(IdAuthor))] - public virtual User Author { get; set; } = null!; - - [ForeignKey(nameof(IdEditor))] - public virtual User? Editor { get; set; } = null!; - [ForeignKey(nameof(IdWellSectionType))] public virtual WellSectionType WellSectionType { get; set; } = null!; } \ No newline at end of file diff --git a/AsbCloudDb/Model/ProcessMapPlan/ProcessMapPlanDrilling.cs b/AsbCloudDb/Model/ProcessMapPlan/ProcessMapPlanDrilling.cs deleted file mode 100644 index e9ade162..00000000 --- a/AsbCloudDb/Model/ProcessMapPlan/ProcessMapPlanDrilling.cs +++ /dev/null @@ -1,58 +0,0 @@ -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; -using AsbCloudDb.Model.ProcessMapPlan; -using Microsoft.EntityFrameworkCore; - -namespace AsbCloudDb.Model.ProcessMaps; - -[Table("t_process_map_plan_drilling"), Comment("РТК план бурение")] -public class ProcessMapPlanDrilling : ProcessMapPlanBase -{ - [Column("id_mode"), Comment("Id режима (1- ротор, 2 слайд)")] - public int IdMode { get; set; } - - [Column("axial_load_plan"), Comment("Осевая нагрузка, т, план")] - public double AxialLoadPlan { get; set; } - - [Column("axial_load_limit_max"), Comment("Осевая нагрузка, т, допустимый максимум")] - public double AxialLoadLimitMax { get; set; } - - [Column("delta_pressure_plan"), Comment("Перепад давления, атм, план")] - public double DeltaPressurePlan { get; set; } - - [Column("delta_pressure_limit_max"), Comment("Перепад давления, атм, допустимый максимум")] - public double DeltaPressureLimitMax { get; set; } - - [Column("top_drive_torque_plan"), Comment("Момент на ВСП, план")] - public double TopDriveTorquePlan { get; set; } - - [Column("top_drive_torque_limit_max"), Comment("Момент на ВСП, допустимый максимум")] - public double TopDriveTorqueLimitMax { get; set; } - - [Column("top_drive_speed_plan"), Comment("Обороты на ВСП, план")] - public double TopDriveSpeedPlan { get; set; } - - [Column("top_drive_speed_limit_max"), Comment("Обороты на ВСП, допустимый максимум")] - public double TopDriveSpeedLimitMax { get; set; } - - [Column("flow_plan"), Comment("Расход, л/с, план")] - public double FlowPlan { get; set; } - - [Column("flow_limit_max"), Comment("Расход, л/с, допустимый максимум")] - public double FlowLimitMax { get; set; } - - [Column("rop_plan"), Comment("Плановая механическая скорость, м/ч")] - public double RopPlan { get; set; } - - [Column("usage_saub"), Comment("Плановый процент использования АКБ")] - public double UsageSaub { get; set; } - - [Column("usage_spin"), Comment("Плановый процент использования spin master")] - public double UsageSpin { get; set; } - - [Column("comment"), Comment("Комментарий"), StringLength(1024)] - public string Comment { get; set; } = string.Empty; - - [ForeignKey(nameof(IdPrevious))] - public virtual ProcessMapPlanDrilling? Previous { get; set; } -} \ No newline at end of file diff --git a/AsbCloudDb/Model/ProcessMapPlan/ProcessMapPlanReam.cs b/AsbCloudDb/Model/ProcessMapPlan/ProcessMapPlanReam.cs deleted file mode 100644 index 05659bfa..00000000 --- a/AsbCloudDb/Model/ProcessMapPlan/ProcessMapPlanReam.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.ComponentModel.DataAnnotations.Schema; -using AsbCloudDb.Model.ProcessMapPlan; -using Microsoft.EntityFrameworkCore; - -namespace AsbCloudDb.Model.ProcessMaps; - -[Table("t_process_map_plan_ream"), Comment("РТК проработка скважины")] -public class ProcessMapPlanReam : ProcessMapPlanBase -{ - [Column("repeats"), Comment("Количество повторений")] - public double Repeats { get; set; } - - [Column("spin_upward"), Comment("Вращение при движении вверх, об/мин")] - public double SpinUpward { get; set; } - - [Column("spin_downward"), Comment("Вращение при движении вниз, об/мин")] - public double SpinDownward { get; set; } - - [Column("speed_upward"), Comment("Скорость подъёма, м/ч")] - public double SpeedUpward { get; set; } - - [Column("speed_downward"), Comment("Скорость спуска, м/ч")] - public double SpeedDownward { get; set; } - - [Column("setpoint_drag"), Comment("Уставка зятяжки, т")] - public double SetpointDrag { get; set; } - - [Column("setpoint_tight"), Comment("Уставка посадки, т")] - public double SetpointTight { get; set; } - - [Column("pressure"), Comment("Давление, атм")] - public double Pressure { get; set; } - - [Column("torque"), Comment("Момент, кН*м")] - public double Torque { get; set; } -} \ No newline at end of file diff --git a/AsbCloudDb/Model/RawData.cs b/AsbCloudDb/Model/RawData.cs index a3c030aa..8163122f 100644 --- a/AsbCloudDb/Model/RawData.cs +++ b/AsbCloudDb/Model/RawData.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; namespace AsbCloudDb.Model { diff --git a/AsbCloudDb/Model/RelationCompanyWell.cs b/AsbCloudDb/Model/RelationCompanyWell.cs index 2f7c1705..4aa5b58f 100644 --- a/AsbCloudDb/Model/RelationCompanyWell.cs +++ b/AsbCloudDb/Model/RelationCompanyWell.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using System.ComponentModel.DataAnnotations.Schema; namespace AsbCloudDb.Model diff --git a/AsbCloudDb/Model/RelationContactWell.cs b/AsbCloudDb/Model/RelationContactWell.cs index 3f49f768..99da13ef 100644 --- a/AsbCloudDb/Model/RelationContactWell.cs +++ b/AsbCloudDb/Model/RelationContactWell.cs @@ -1,4 +1,4 @@ -using System.ComponentModel.DataAnnotations.Schema; +using System.ComponentModel.DataAnnotations.Schema; namespace AsbCloudDb.Model { diff --git a/AsbCloudDb/Model/RelationUserDrillingProgramPart.cs b/AsbCloudDb/Model/RelationUserDrillingProgramPart.cs index b8985337..4be58be4 100644 --- a/AsbCloudDb/Model/RelationUserDrillingProgramPart.cs +++ b/AsbCloudDb/Model/RelationUserDrillingProgramPart.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using System.ComponentModel.DataAnnotations.Schema; namespace AsbCloudDb.Model diff --git a/AsbCloudDb/Model/RelationUserRoleUserRole.cs b/AsbCloudDb/Model/RelationUserRoleUserRole.cs index c8c46edb..20c3a8c2 100644 --- a/AsbCloudDb/Model/RelationUserRoleUserRole.cs +++ b/AsbCloudDb/Model/RelationUserRoleUserRole.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using System.ComponentModel.DataAnnotations.Schema; namespace AsbCloudDb.Model diff --git a/AsbCloudDb/Model/ReportProperty.cs b/AsbCloudDb/Model/ReportProperty.cs index e54837fb..12c0c6a8 100644 --- a/AsbCloudDb/Model/ReportProperty.cs +++ b/AsbCloudDb/Model/ReportProperty.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using System; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; diff --git a/AsbCloudDb/Model/Schedule.cs b/AsbCloudDb/Model/Schedule.cs index f8aece41..bc698de7 100644 --- a/AsbCloudDb/Model/Schedule.cs +++ b/AsbCloudDb/Model/Schedule.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using System; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; diff --git a/AsbCloudDb/Model/SetpointsRequest.cs b/AsbCloudDb/Model/SetpointsRequest.cs index 568cae28..35556256 100644 --- a/AsbCloudDb/Model/SetpointsRequest.cs +++ b/AsbCloudDb/Model/SetpointsRequest.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; diff --git a/AsbCloudDb/Model/Subsystem.cs b/AsbCloudDb/Model/Subsystem.cs index cbb0539c..72393430 100644 --- a/AsbCloudDb/Model/Subsystem.cs +++ b/AsbCloudDb/Model/Subsystem.cs @@ -1,4 +1,4 @@ -using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using Microsoft.EntityFrameworkCore; diff --git a/AsbCloudDb/Model/Telemetry.cs b/AsbCloudDb/Model/Telemetry.cs index fdc5d1c0..71d5eef4 100644 --- a/AsbCloudDb/Model/Telemetry.cs +++ b/AsbCloudDb/Model/Telemetry.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; diff --git a/AsbCloudDb/Model/TelemetryDataSaub.cs b/AsbCloudDb/Model/TelemetryDataSaub.cs index cfba5fb8..299917ad 100644 --- a/AsbCloudDb/Model/TelemetryDataSaub.cs +++ b/AsbCloudDb/Model/TelemetryDataSaub.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using System; using System.ComponentModel.DataAnnotations.Schema; using System.Text.Json.Serialization; diff --git a/AsbCloudDb/Model/TelemetryDataSaubStat.cs b/AsbCloudDb/Model/TelemetryDataSaubStat.cs index 85c81b67..e7939203 100644 --- a/AsbCloudDb/Model/TelemetryDataSaubStat.cs +++ b/AsbCloudDb/Model/TelemetryDataSaubStat.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.ComponentModel.DataAnnotations.Schema; namespace AsbCloudDb.Model diff --git a/AsbCloudDb/Model/TelemetryDataSpin.cs b/AsbCloudDb/Model/TelemetryDataSpin.cs index 6499b81d..94031ed9 100644 --- a/AsbCloudDb/Model/TelemetryDataSpin.cs +++ b/AsbCloudDb/Model/TelemetryDataSpin.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using System; using System.ComponentModel.DataAnnotations.Schema; using System.Text.Json.Serialization; diff --git a/AsbCloudDb/Model/TelemetryEvent.cs b/AsbCloudDb/Model/TelemetryEvent.cs index 13f6fcf3..153defe6 100644 --- a/AsbCloudDb/Model/TelemetryEvent.cs +++ b/AsbCloudDb/Model/TelemetryEvent.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using System.ComponentModel.DataAnnotations.Schema; using System.Text.Json.Serialization; diff --git a/AsbCloudDb/Model/TelemetryInfo.cs b/AsbCloudDb/Model/TelemetryInfo.cs index 1bfda6e2..6afeefc4 100644 --- a/AsbCloudDb/Model/TelemetryInfo.cs +++ b/AsbCloudDb/Model/TelemetryInfo.cs @@ -1,4 +1,4 @@ -using System; +using System; namespace AsbCloudDb.Model { diff --git a/AsbCloudDb/Model/TelemetryMessage.cs b/AsbCloudDb/Model/TelemetryMessage.cs index f4796d66..273d38f8 100644 --- a/AsbCloudDb/Model/TelemetryMessage.cs +++ b/AsbCloudDb/Model/TelemetryMessage.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using System; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; diff --git a/AsbCloudDb/Model/TelemetryUser.cs b/AsbCloudDb/Model/TelemetryUser.cs index c47b3eec..f7f0cd6a 100644 --- a/AsbCloudDb/Model/TelemetryUser.cs +++ b/AsbCloudDb/Model/TelemetryUser.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Text.Json.Serialization; diff --git a/AsbCloudDb/Model/TelemetryWirelineRunOut.cs b/AsbCloudDb/Model/TelemetryWirelineRunOut.cs index 0d9ab12c..0ffeba5d 100644 --- a/AsbCloudDb/Model/TelemetryWirelineRunOut.cs +++ b/AsbCloudDb/Model/TelemetryWirelineRunOut.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using System; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; diff --git a/AsbCloudDb/Model/Trajectory/Trajectory.cs b/AsbCloudDb/Model/Trajectory/Trajectory.cs index 7d62ba41..a0a9c84d 100644 --- a/AsbCloudDb/Model/Trajectory/Trajectory.cs +++ b/AsbCloudDb/Model/Trajectory/Trajectory.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using System; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; diff --git a/AsbCloudDb/Model/Trajectory/TrajectoryFact.cs b/AsbCloudDb/Model/Trajectory/TrajectoryFact.cs index 26165da9..4820cfbc 100644 --- a/AsbCloudDb/Model/Trajectory/TrajectoryFact.cs +++ b/AsbCloudDb/Model/Trajectory/TrajectoryFact.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using System.ComponentModel.DataAnnotations.Schema; namespace AsbCloudDb.Model.Trajectory diff --git a/AsbCloudDb/Model/Trajectory/TrajectoryPlan.cs b/AsbCloudDb/Model/Trajectory/TrajectoryPlan.cs index 3f88e0d4..cfe2ac4e 100644 --- a/AsbCloudDb/Model/Trajectory/TrajectoryPlan.cs +++ b/AsbCloudDb/Model/Trajectory/TrajectoryPlan.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using System.ComponentModel.DataAnnotations.Schema; namespace AsbCloudDb.Model.Trajectory diff --git a/AsbCloudDb/Model/User.cs b/AsbCloudDb/Model/User.cs index aa206660..a5136910 100644 --- a/AsbCloudDb/Model/User.cs +++ b/AsbCloudDb/Model/User.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; diff --git a/AsbCloudDb/Model/UserRole.cs b/AsbCloudDb/Model/UserRole.cs index abe9f6ad..90a38693 100644 --- a/AsbCloudDb/Model/UserRole.cs +++ b/AsbCloudDb/Model/UserRole.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; diff --git a/AsbCloudDb/Model/UserSetting.cs b/AsbCloudDb/Model/UserSetting.cs index 84a98d34..f4a93ca9 100644 --- a/AsbCloudDb/Model/UserSetting.cs +++ b/AsbCloudDb/Model/UserSetting.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using System; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; diff --git a/AsbCloudDb/Model/WITS/Record7.cs b/AsbCloudDb/Model/WITS/Record7.cs index 0b768243..8c432d20 100644 --- a/AsbCloudDb/Model/WITS/Record7.cs +++ b/AsbCloudDb/Model/WITS/Record7.cs @@ -12,7 +12,7 @@ namespace AsbCloudDb.Model.WITS { /// - /// + /// длина ствола /// RecordId = 7, /// ItemId = 8, /// LongMnemonic = "DEPTSVYM", @@ -88,7 +88,7 @@ namespace AsbCloudDb.Model.WITS public string? Svytype { get; set; } /// - /// + /// зенитный угол /// RecordId = 7, /// ItemId = 13, /// LongMnemonic = "SVYINC", @@ -119,7 +119,7 @@ namespace AsbCloudDb.Model.WITS public float? Svyazu { get; set; } /// - /// + /// азимут географический /// RecordId = 7, /// ItemId = 15, /// LongMnemonic = "SVYAZC", diff --git a/AsbCloudDb/Model/Well.cs b/AsbCloudDb/Model/Well.cs index 1d8ce486..c44d8e03 100644 --- a/AsbCloudDb/Model/Well.cs +++ b/AsbCloudDb/Model/Well.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; diff --git a/AsbCloudDb/Model/WellComposite.cs b/AsbCloudDb/Model/WellComposite.cs index acf6aaf4..7ae2a90f 100644 --- a/AsbCloudDb/Model/WellComposite.cs +++ b/AsbCloudDb/Model/WellComposite.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using System.ComponentModel.DataAnnotations.Schema; namespace AsbCloudDb.Model diff --git a/AsbCloudDb/Model/WellFinalDocument.cs b/AsbCloudDb/Model/WellFinalDocument.cs index f310c7fb..50cb4d9e 100644 --- a/AsbCloudDb/Model/WellFinalDocument.cs +++ b/AsbCloudDb/Model/WellFinalDocument.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using System.ComponentModel.DataAnnotations.Schema; namespace AsbCloudDb.Model diff --git a/AsbCloudDb/Model/WellOperation.cs b/AsbCloudDb/Model/WellOperation.cs index 06b330df..c4aa3573 100644 --- a/AsbCloudDb/Model/WellOperation.cs +++ b/AsbCloudDb/Model/WellOperation.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using System; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; diff --git a/AsbCloudDb/Model/WellOperationCategory.cs b/AsbCloudDb/Model/WellOperationCategory.cs index 26bee0f3..65cd8255 100644 --- a/AsbCloudDb/Model/WellOperationCategory.cs +++ b/AsbCloudDb/Model/WellOperationCategory.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Text.Json.Serialization; diff --git a/AsbCloudDb/Model/WellSectionType.cs b/AsbCloudDb/Model/WellSectionType.cs index bf470de7..f6e930e8 100644 --- a/AsbCloudDb/Model/WellSectionType.cs +++ b/AsbCloudDb/Model/WellSectionType.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; diff --git a/AsbCloudDb/Model/WellSections/WellSectionPlan.cs b/AsbCloudDb/Model/WellSections/WellSectionPlan.cs index 44fec348..3fec54da 100644 --- a/AsbCloudDb/Model/WellSections/WellSectionPlan.cs +++ b/AsbCloudDb/Model/WellSections/WellSectionPlan.cs @@ -7,39 +7,39 @@ namespace AsbCloudDb.Model.WellSections; [Table("t_well_section_plan")] public class WellSectionPlan : IId, - IWellRelated + IWellRelated { - [Key] - [Column("id")] - public int Id { get; set; } + [Key] + [Column("id")] + public int Id { get; set; } - [Column("id_well"), Comment("Id скважины")] - public int IdWell { get; set; } + [Column("id_well"), Comment("Id скважины")] + public int IdWell { get; set; } - [Column("id_section_type"), Comment("Тип секции")] - public int IdSectionType { get; set; } + [Column("id_section_type"), Comment("Тип секции")] + public int IdSectionType { get; set; } - [Column("id_user"), Comment("Id пользователя")] - public int IdUser { get; set; } + [Column("id_user"), Comment("Id пользователя")] + public int IdUser { get; set; } - [Column("date_last_update", TypeName = "timestamp with time zone"), Comment("Дата последнего обновления")] - public DateTimeOffset? LastUpdateDate { get; set; } + [Column("date_last_update", TypeName = "timestamp with time zone"), Comment("Дата последнего обновления")] + public DateTimeOffset? LastUpdateDate { get; set; } - [Column("depth_start"), Comment("Начальная глубина бурения, м")] - public double DepthStart { get; set; } + [Column("depth_start"), Comment("Начальная глубина бурения, м")] + public double DepthStart { get; set; } - [Column("depth_end"), Comment("Конечная глубина бурения, м")] - public double DepthEnd { get; set; } + [Column("depth_end"), Comment("Конечная глубина бурения, м")] + public double DepthEnd { get; set; } - [Column("outer_diameter"), Comment("Внешний диаметр")] - public double? OuterDiameter { get; set; } + [Column("outer_diameter"), Comment("Внешний диаметр")] + public double? OuterDiameter { get; set; } - [Column("inner_diameter"), Comment("Внутренний диаметр")] - public double? InnerDiameter { get; set; } + [Column("inner_diameter"), Comment("Внутренний диаметр")] + public double? InnerDiameter { get; set; } - [ForeignKey(nameof(IdWell))] - public virtual Well Well { get; set; } = null!; + [ForeignKey(nameof(IdWell))] + public virtual Well Well { get; set; } = null!; - [ForeignKey(nameof(IdSectionType))] - public virtual WellSectionType SectionType { get; set; } = null!; + [ForeignKey(nameof(IdSectionType))] + public virtual WellSectionType SectionType { get; set; } = null!; } \ No newline at end of file diff --git a/AsbCloudDb/Model/WellType.cs b/AsbCloudDb/Model/WellType.cs index cfbe1f27..f59abba6 100644 --- a/AsbCloudDb/Model/WellType.cs +++ b/AsbCloudDb/Model/WellType.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; diff --git a/AsbCloudDb/Readme.md b/AsbCloudDb/Readme.md index f44a4167..0ad34426 100644 --- a/AsbCloudDb/Readme.md +++ b/AsbCloudDb/Readme.md @@ -1,4 +1,4 @@ -# Миграции +# Миграции ## EF tools https://docs.microsoft.com/ru-ru/ef/core/cli/dotnet diff --git a/AsbCloudDb/UsefulQueries/Add permission to company for cluster.sql b/AsbCloudDb/UsefulQueries/Add permission to company for cluster.sql index e777397a..da0e242e 100644 --- a/AsbCloudDb/UsefulQueries/Add permission to company for cluster.sql +++ b/AsbCloudDb/UsefulQueries/Add permission to company for cluster.sql @@ -1,4 +1,4 @@ -insert into t_relation_company_well (id_well, id_company ) +insert into t_relation_company_well (id_well, id_company ) Select t_well.id as id_well, 8 as id_company diff --git a/AsbCloudDb/UsefulQueries/Export_for_LMK.sql b/AsbCloudDb/UsefulQueries/Export_for_LMK.sql index 01aad56f..a91bb07e 100644 --- a/AsbCloudDb/UsefulQueries/Export_for_LMK.sql +++ b/AsbCloudDb/UsefulQueries/Export_for_LMK.sql @@ -1,9 +1,9 @@ select t_cluster.caption as cluster, - t_well.caption as well, - t_well.id_telemetry + t_well.caption as well, + t_well.id_telemetry from t_cluster join t_well on t_well.id_cluster = t_cluster.id -where t_cluster.caption in ('82', '50 ', '8', '6 A') and t_well.id_telemetry is not null +where t_cluster.caption in ('82', 'к50 Б', 'к8', '6 A') and t_well.id_telemetry is not null order by cluster , well \copy (select "date", "mode", well_depth, bit_depth, hook_weight, hook_weight_idle, axial_load, block_speed, block_position, rotor_speed, rotor_torque, flow, flow_idle, pressure, pressure_idle from t_telemetry_data_saub where id_telemetry = 137) to '/home/asb/export/dump_c_82_w_2533_t_137.csv' DELIMITER ';' CSV header; diff --git a/AsbCloudDb/UsefulQueries/TimescaleDB.sql b/AsbCloudDb/UsefulQueries/TimescaleDB.sql index 498e640c..f41acce3 100644 --- a/AsbCloudDb/UsefulQueries/TimescaleDB.sql +++ b/AsbCloudDb/UsefulQueries/TimescaleDB.sql @@ -1,4 +1,4 @@ -CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE; +CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE; SELECT create_hypertable( 'tsd.t_tele', diff --git a/AsbCloudDb/UsefulQueries/Update sequence.sql b/AsbCloudDb/UsefulQueries/Update sequence.sql index 61838e7a..0e05e8fd 100644 --- a/AsbCloudDb/UsefulQueries/Update sequence.sql +++ b/AsbCloudDb/UsefulQueries/Update sequence.sql @@ -1 +1 @@ -select setval('t_well_operation_id_seq', 175); \ No newline at end of file +select setval('t_well_operation_id_seq', 175); \ No newline at end of file diff --git a/AsbCloudDb/UsefulQueries/add_all_permissions_to_root.sql b/AsbCloudDb/UsefulQueries/add_all_permissions_to_root.sql index bd77fefe..0ece3b7b 100644 --- a/AsbCloudDb/UsefulQueries/add_all_permissions_to_root.sql +++ b/AsbCloudDb/UsefulQueries/add_all_permissions_to_root.sql @@ -1,12 +1,12 @@ -- Добавить все отсутствующие разрешения группе root. insert into t_relation_user_role_permission - (select - 1 as id_user_role, - id as id_permission - from t_permission - where id not in ( - select - t_relation_user_role_permission.id_permission - from t_relation_user_role_permission - where id_user_role = 1) - ); \ No newline at end of file + (select + 1 as id_user_role, + id as id_permission + from t_permission + where id not in ( + select + t_relation_user_role_permission.id_permission + from t_relation_user_role_permission + where id_user_role = 1) + ); \ No newline at end of file diff --git a/AsbCloudDb/UsefulQueries/lost_telemetries.sql b/AsbCloudDb/UsefulQueries/lost_telemetries.sql index 7b31e11b..a7e3e4ff 100644 --- a/AsbCloudDb/UsefulQueries/lost_telemetries.sql +++ b/AsbCloudDb/UsefulQueries/lost_telemetries.sql @@ -1,3 +1,3 @@ -SELECT * from t_telemetry +SELECT * from t_telemetry left outer join t_well on t_telemetry.id = t_well.id_telemetry where t_well.id is null \ No newline at end of file diff --git a/AsbCloudDb/UsefulQueries/telemetryOperations.sql b/AsbCloudDb/UsefulQueries/telemetryOperations.sql index 31430c48..fc72a1de 100644 --- a/AsbCloudDb/UsefulQueries/telemetryOperations.sql +++ b/AsbCloudDb/UsefulQueries/telemetryOperations.sql @@ -1,4 +1,4 @@ -SELECT +SELECT to_timestamp(unix_date), twoc.name, duration_sec, diff --git a/AsbCloudDb/UsefulQueries/timescale_restore_dump.sql b/AsbCloudDb/UsefulQueries/timescale_restore_dump.sql index f9d908bf..af603524 100644 --- a/AsbCloudDb/UsefulQueries/timescale_restore_dump.sql +++ b/AsbCloudDb/UsefulQueries/timescale_restore_dump.sql @@ -10,12 +10,12 @@ SELECT timescaledb_post_restore(); --https://www.postgresql.org/docs/current/rules-materializedviews.html CREATE MATERIALIZED VIEW mv_telemetry_statistic AS select - id_telemetry, - count(*) as count, - min(date) as date_start, - max(date) as date_end, - min(well_depth) as depth_start, - max(well_depth) as depth_end + id_telemetry, + count(*) as count, + min(date) as date_start, + max(date) as date_end, + min(well_depth) as depth_start, + max(well_depth) as depth_end from t_telemetry_data_saub group by id_telemetry; diff --git a/AsbCloudDb/install pg timescale.md b/AsbCloudDb/install pg timescale.md index 10bb8ab7..f3fe6155 100644 --- a/AsbCloudDb/install pg timescale.md +++ b/AsbCloudDb/install pg timescale.md @@ -41,7 +41,7 @@ change port - replace `port = '5433'` to `port = '5499'` **/etc/postgresql/14/main/pg_hba.conf** Add line to allow your IP: -`host all all /32 scram-sha-256` +`host all all /32 scram-sha-256` ### check connection: `psql -h -p 5499 -d postgres -U postgres -W` diff --git a/AsbCloudInfrastructure/AsbCloudInfrastructure.csproj b/AsbCloudInfrastructure/AsbCloudInfrastructure.csproj index 6bdaf411..57a0258c 100644 --- a/AsbCloudInfrastructure/AsbCloudInfrastructure.csproj +++ b/AsbCloudInfrastructure/AsbCloudInfrastructure.csproj @@ -10,21 +10,9 @@ - - - - - - - - - - - - - + - + PreserveNewest @@ -38,8 +26,24 @@ - - + + + + + + + + + + + + + + + + + + @@ -62,6 +66,7 @@ + diff --git a/AsbCloudInfrastructure/AssemblyExtensions.cs b/AsbCloudInfrastructure/AssemblyExtensions.cs index 03cf7325..79ff0695 100644 --- a/AsbCloudInfrastructure/AssemblyExtensions.cs +++ b/AsbCloudInfrastructure/AssemblyExtensions.cs @@ -1,48 +1,27 @@ -using System; +using System; using System.IO; using System.Linq; using System.Reflection; -using System.Threading; -using System.Threading.Tasks; namespace AsbCloudInfrastructure { - public static class AssemblyExtensions - { - public static Stream GetTemplateCopyStream(this Assembly assembly, string templateName) - { - var resourceName = assembly - .GetManifestResourceNames() - .FirstOrDefault(n => n.EndsWith(templateName)); + public static class AssemblyExtensions + { + public static Stream GetTemplateCopyStream(this Assembly assembly, string templateName) + { + var resourceName = assembly + .GetManifestResourceNames() + .FirstOrDefault(n => n.EndsWith(templateName)); - if (string.IsNullOrWhiteSpace(resourceName)) - throw new ArgumentNullException(nameof(resourceName)); + if (string.IsNullOrWhiteSpace(resourceName)) + throw new ArgumentNullException(nameof(resourceName)); - using var stream = Assembly.GetExecutingAssembly() - .GetManifestResourceStream(resourceName); + using var stream = Assembly.GetExecutingAssembly() + .GetManifestResourceStream(resourceName); - var memoryStream = new MemoryStream(); - stream?.CopyTo(memoryStream); - memoryStream.Position = 0; - - return memoryStream; - } - - [Obsolete] - public static async Task GetTemplateCopyStreamAsync(this Assembly assembly, - string templateName, - CancellationToken cancellationToken) - { - var resourceName = assembly - .GetManifestResourceNames() - .FirstOrDefault(n => n.EndsWith(templateName))!; - - using var stream = Assembly.GetExecutingAssembly() - .GetManifestResourceStream(resourceName)!; - - var memoryStream = new MemoryStream(); - await stream.CopyToAsync(memoryStream, cancellationToken); - memoryStream.Position = 0; + var memoryStream = new MemoryStream(); + stream?.CopyTo(memoryStream); + memoryStream.Position = 0; return memoryStream; } diff --git a/AsbCloudInfrastructure/Background/BackgroundWorker.cs b/AsbCloudInfrastructure/Background/BackgroundWorker.cs index 861c8a47..71426519 100644 --- a/AsbCloudInfrastructure/Background/BackgroundWorker.cs +++ b/AsbCloudInfrastructure/Background/BackgroundWorker.cs @@ -1,4 +1,4 @@ -using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using System; using System.Collections.Generic; diff --git a/AsbCloudInfrastructure/Background/NotificationBackgroundWorker.cs b/AsbCloudInfrastructure/Background/NotificationBackgroundWorker.cs index 4b68df31..42bceb1b 100644 --- a/AsbCloudInfrastructure/Background/NotificationBackgroundWorker.cs +++ b/AsbCloudInfrastructure/Background/NotificationBackgroundWorker.cs @@ -4,7 +4,7 @@ namespace AsbCloudInfrastructure.Background; public class NotificationBackgroundWorker : BackgroundWorker { - public NotificationBackgroundWorker(IServiceProvider serviceProvider) : base(serviceProvider) - { - } + public NotificationBackgroundWorker(IServiceProvider serviceProvider) : base(serviceProvider) + { + } } \ No newline at end of file diff --git a/AsbCloudInfrastructure/Background/PeriodicBackgroundWorker.cs b/AsbCloudInfrastructure/Background/PeriodicBackgroundWorker.cs index fbbfd58e..1be737e9 100644 --- a/AsbCloudInfrastructure/Background/PeriodicBackgroundWorker.cs +++ b/AsbCloudInfrastructure/Background/PeriodicBackgroundWorker.cs @@ -1,4 +1,4 @@ -using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using System; using System.Collections.Generic; diff --git a/AsbCloudInfrastructure/Background/PeriodicWorks/WorkDataSaubStat.cs b/AsbCloudInfrastructure/Background/PeriodicWorks/WorkDataSaubStat.cs index 35979165..c7ea36ff 100644 --- a/AsbCloudInfrastructure/Background/PeriodicWorks/WorkDataSaubStat.cs +++ b/AsbCloudInfrastructure/Background/PeriodicWorks/WorkDataSaubStat.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Data.DetectedOperation; using AsbCloudApp.Data.SAUB; using AsbCloudApp.Repositories; diff --git a/AsbCloudInfrastructure/Background/PeriodicWorks/WorkLimitingParameterCalc.cs b/AsbCloudInfrastructure/Background/PeriodicWorks/WorkLimitingParameterCalc.cs index 9e6f3629..2b415d1a 100644 --- a/AsbCloudInfrastructure/Background/PeriodicWorks/WorkLimitingParameterCalc.cs +++ b/AsbCloudInfrastructure/Background/PeriodicWorks/WorkLimitingParameterCalc.cs @@ -1,4 +1,4 @@ -using AsbCloudDb.Model; +using AsbCloudDb.Model; using Microsoft.EntityFrameworkCore; using System; using System.Data.Common; diff --git a/AsbCloudInfrastructure/Background/PeriodicWorks/WorkToDeleteOldReports.cs b/AsbCloudInfrastructure/Background/PeriodicWorks/WorkToDeleteOldReports.cs index adb70d32..5a91dedd 100644 --- a/AsbCloudInfrastructure/Background/PeriodicWorks/WorkToDeleteOldReports.cs +++ b/AsbCloudInfrastructure/Background/PeriodicWorks/WorkToDeleteOldReports.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Services; +using AsbCloudApp.Services; using Microsoft.Extensions.DependencyInjection; using System; using System.Threading; diff --git a/AsbCloudInfrastructure/Background/Work.cs b/AsbCloudInfrastructure/Background/Work.cs index 1177892c..db3a888d 100644 --- a/AsbCloudInfrastructure/Background/Work.cs +++ b/AsbCloudInfrastructure/Background/Work.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using System; using System.Diagnostics; using System.Text; diff --git a/AsbCloudInfrastructure/Background/WorkPeriodic.cs b/AsbCloudInfrastructure/Background/WorkPeriodic.cs index 4cd22af6..290b4c8b 100644 --- a/AsbCloudInfrastructure/Background/WorkPeriodic.cs +++ b/AsbCloudInfrastructure/Background/WorkPeriodic.cs @@ -1,4 +1,4 @@ -using System; +using System; namespace AsbCloudInfrastructure.Background; diff --git a/AsbCloudInfrastructure/Background/WorkToCreateReport.cs b/AsbCloudInfrastructure/Background/WorkToCreateReport.cs index f07e7f85..f9508b2a 100644 --- a/AsbCloudInfrastructure/Background/WorkToCreateReport.cs +++ b/AsbCloudInfrastructure/Background/WorkToCreateReport.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.Progress; +using AsbCloudApp.Data.Progress; using AsbCloudApp.Requests; using AsbCloudApp.Services; using Microsoft.Extensions.DependencyInjection; diff --git a/AsbCloudInfrastructure/Background/WorkToSendEmail.cs b/AsbCloudInfrastructure/Background/WorkToSendEmail.cs index ef8048e9..d4b20ceb 100644 --- a/AsbCloudInfrastructure/Background/WorkToSendEmail.cs +++ b/AsbCloudInfrastructure/Background/WorkToSendEmail.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Repositories; using AsbCloudApp.Services.Notifications; using Microsoft.Extensions.DependencyInjection; diff --git a/AsbCloudInfrastructure/Background/readme.md b/AsbCloudInfrastructure/Background/readme.md index 2026f2c4..b58d252d 100644 --- a/AsbCloudInfrastructure/Background/readme.md +++ b/AsbCloudInfrastructure/Background/readme.md @@ -1,11 +1,11 @@ # BackgroundWorker - . - scope. +Класс выполнения разовой фоновой работы. +Для каждой работы создается свой scope. # NotificationBackgroundWorker - . - BackgroundWorker, BackgroundWorker. - . +Предназначен для различных оповещений пользователей разными способами. +Фактически это дополнительный экземпляр BackgroundWorker, чтобы оповещения не ждали завершения долгих операций из стандартного BackgroundWorker. +Не должен давать большой нагрузки БД. # PeriodicBackgroundWorker - . +Класс выполнения периодической фоновой работы. diff --git a/AsbCloudInfrastructure/CommonLibs/Readme.md b/AsbCloudInfrastructure/CommonLibs/Readme.md index 64cb4b4c..f9ec0f79 100644 --- a/AsbCloudInfrastructure/CommonLibs/Readme.md +++ b/AsbCloudInfrastructure/CommonLibs/Readme.md @@ -1,2 +1,2 @@ -# Библиотека формирования рапортов в формате PDF. +# Библиотека формирования рапортов в формате PDF. Для брендирования положить рядом с библиотекой файл logo_720x404.png \ No newline at end of file diff --git a/AsbCloudInfrastructure/DateTimeExtensions.cs b/AsbCloudInfrastructure/DateTimeExtensions.cs index 2e355356..38c24f52 100644 --- a/AsbCloudInfrastructure/DateTimeExtensions.cs +++ b/AsbCloudInfrastructure/DateTimeExtensions.cs @@ -1,4 +1,4 @@ -// Ignore Spelling: Linq +// Ignore Spelling: Linq using System; diff --git a/AsbCloudInfrastructure/DependencyInjection.cs b/AsbCloudInfrastructure/DependencyInjection.cs index 713f5614..9fbe1721 100644 --- a/AsbCloudInfrastructure/DependencyInjection.cs +++ b/AsbCloudInfrastructure/DependencyInjection.cs @@ -1,23 +1,26 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Data.DailyReport.Blocks.TimeBalance; +using AsbCloudApp.Data.DetectedOperation; using AsbCloudApp.Data.DrillTestReport; using AsbCloudApp.Data.Manuals; using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Data.ProcessMaps.Operations; using AsbCloudApp.Data.SAUB; using AsbCloudApp.Data.Subsystems; using AsbCloudApp.Data.Trajectory; -using AsbCloudApp.Data.WellOperationImport.Options; using AsbCloudApp.Repositories; using AsbCloudApp.Requests; using AsbCloudApp.Services; using AsbCloudApp.Services.DailyReport; using AsbCloudApp.Services.Notifications; -using AsbCloudApp.Services.ProcessMaps; using AsbCloudApp.Services.ProcessMaps.WellDrilling; using AsbCloudDb.Model; using AsbCloudDb.Model.DailyReports.Blocks.TimeBalance; using AsbCloudDb.Model.Manuals; -using AsbCloudDb.Model.ProcessMaps; +using AsbCloudDb.Model.ProcessMapPlan; +using AsbCloudDb.Model.ProcessMapPlan.Functions; +using AsbCloudDb.Model.ProcessMapPlan.Operations; using AsbCloudDb.Model.Trajectory; using AsbCloudDb.Model.WellSections; using AsbCloudInfrastructure.Background; @@ -27,14 +30,15 @@ using AsbCloudInfrastructure.Services.DailyReport; using AsbCloudInfrastructure.Services.DetectOperations; using AsbCloudInfrastructure.Services.DrillingProgram; using AsbCloudInfrastructure.Services.DrillTestReport; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; -using AsbCloudInfrastructure.Services.ProcessMaps; using AsbCloudInfrastructure.Services.ProcessMaps.Report; using AsbCloudInfrastructure.Services.SAUB; using AsbCloudInfrastructure.Services.Subsystems; using AsbCloudInfrastructure.Services.Trajectory; using AsbCloudInfrastructure.Services.Trajectory.Export; using AsbCloudInfrastructure.Services.Trajectory.Parser; +using AsbCloudInfrastructure.Services.WellOperations.Factories; using AsbCloudInfrastructure.Services.WellOperationService; using Mapster; using Microsoft.EntityFrameworkCore; @@ -42,9 +46,6 @@ using Microsoft.Extensions.Caching.Memory; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using System; -using AsbCloudApp.Data.DetectedOperation; -using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; -using AsbCloudInfrastructure.Services.WellOperations.Factories; namespace AsbCloudInfrastructure { @@ -56,15 +57,21 @@ namespace AsbCloudInfrastructure .ForType() .Ignore(source => source.Author) .Ignore(source => source.Well); - + TypeAdapterConfig.GlobalSettings.Default.Config .ForType() .Ignore(source => source.OperationCategory); - + TypeAdapterConfig.GlobalSettings.Default.Config .ForType() .Ignore(source => source.Driller); - + +#pragma warning disable CS8603 // Possible null reference return. + TypeAdapterConfig.GlobalSettings.Default.Config + .ForType() + .Ignore(dst => dst.Author, dst => dst.Editor); +#pragma warning restore CS8603 // Possible null reference return. + TypeAdapterConfig.GlobalSettings.Default.Config .ForType() .MapWith((source) => source.DateTime); @@ -127,6 +134,132 @@ namespace AsbCloudInfrastructure { Plan = src.WellDepthPlan }); + + TypeAdapterConfig>.NewConfig() + .Include>() + .Map(dest => dest, src => new ChangeLogDto() + { + Item = src.Adapt() + }); + + TypeAdapterConfig>.NewConfig() + .Include>() + .Map(dest => dest, src => new ChangeLogDto() + { + Item = src.Adapt() + }); + + TypeAdapterConfig>.NewConfig() + .Include>() + .Map(dest => dest, src => new ChangeLogDto() + { + Item = src.Adapt() + }); + + TypeAdapterConfig>.NewConfig() + .Include>() + .Map(dest => dest, src => new ChangeLogDto() + { + Item = src.Adapt() + }); + + TypeAdapterConfig>.NewConfig() + .Include>() + .Map(dest => dest, src => new ChangeLogDto() + { + Item = src.Adapt() + }); + + TypeAdapterConfig>.NewConfig() + .Include>() + .Map(dest => dest, src => new ChangeLogDto() + { + Item = src.Adapt() + }); + + TypeAdapterConfig>.NewConfig() + .Include>() + .Map(dest => dest, src => new ChangeLogDto() + { + Item = src.Adapt() + }); + + TypeAdapterConfig>.NewConfig() + .Include>() + .Map(dest => dest, src => new ChangeLogDto() + { + Item = src.Adapt() + }); + + TypeAdapterConfig>.NewConfig() + .Include>() + .Map(dest => dest, src => new ChangeLogDto() + { + Item = src.Adapt() + }); + + TypeAdapterConfig>.NewConfig() + .Include>() + .Map(dest => dest, src => new ChangeLogDto() + { + Item = src.Adapt() + }); + + TypeAdapterConfig>.NewConfig() + .Include>() + .Map(dest => dest, src => new ChangeLogDto() + { + Item = src.Adapt() + }); + + TypeAdapterConfig>.NewConfig() + .Include>() + .Map(dest => dest, src => new ChangeLogDto() + { + Item = src.Adapt() + }); + + TypeAdapterConfig>.NewConfig() + .Include>() + .Map(dest => dest, src => new ChangeLogDto() + { + Item = src.Adapt() + }); + + TypeAdapterConfig>.NewConfig() + .Include>() + .Map(dest => dest, src => new ChangeLogDto() + { + Item = src.Adapt() + }); + + TypeAdapterConfig>.NewConfig() + .Include>() + .Map(dest => dest, src => new ChangeLogDto() + { + Item = src.Adapt() + }); + + TypeAdapterConfig>.NewConfig() + .Include>() + .Map(dest => dest, src => new ChangeLogDto() + { + Item = src.Adapt() + }); + + TypeAdapterConfig>.NewConfig() + .Include>() + .Map(dest => dest, src => new ChangeLogDto() + { + Item = src.Adapt() + }); + + TypeAdapterConfig>.NewConfig() + .Include>() + .Map(dest => dest, src => new ChangeLogDto() + { + Item = src.Adapt() + }); } public static IServiceCollection AddInfrastructure(this IServiceCollection services, IConfiguration configuration) @@ -185,12 +318,76 @@ namespace AsbCloudInfrastructure services.AddTransient(); services.AddTransient< - IChangeLogRepository, - ProcessMapPlanBaseRepository>(); + IChangeLogRepository, + ProcessMapPlanBaseRepository>(); services.AddTransient< - IChangeLogRepository, - ProcessMapPlanBaseRepository>(); + IChangeLogRepository, + ProcessMapPlanBaseRepository>(); + + services.AddTransient< + IChangeLogRepository, + ProcessMapPlanBaseRepository>(); + + services.AddTransient< + IChangeLogRepository, + ProcessMapPlanBaseRepository>(); + + services.AddTransient< + IChangeLogRepository, + ProcessMapPlanBaseRepository>(); + + services.AddTransient< + IChangeLogRepository, + ProcessMapPlanBaseRepository>(); + + services.AddTransient< + IChangeLogRepository, + ProcessMapPlanBaseRepository>(); + + services.AddTransient< + IChangeLogRepository, + ProcessMapPlanBaseRepository>(); + + services.AddTransient< + IChangeLogRepository, + ProcessMapPlanBaseRepository>(); + + services.AddTransient< + IChangeLogRepository, + ProcessMapPlanBaseRepository>(); + + services.AddTransient< + IChangeLogRepository, + ProcessMapPlanBaseRepository>(); + + services.AddTransient< + IChangeLogRepository, + ProcessMapPlanBaseRepository>(); + + services.AddTransient< + IChangeLogRepository, + ProcessMapPlanBaseRepository>(); + + services.AddTransient< + IChangeLogRepository, + ProcessMapPlanBaseRepository>(); + + services.AddTransient< + IChangeLogRepository, + ProcessMapPlanBaseRepository>(); + + services.AddTransient< + IChangeLogRepository, + ProcessMapPlanBaseRepository>(); + + services.AddTransient< + IChangeLogRepository, + ProcessMapPlanBaseRepository>(); + + services.AddTransient< + IChangeLogRepository, + ProcessMapPlanBaseRepository>(); services.AddTransient(); @@ -237,7 +434,26 @@ namespace AsbCloudInfrastructure services.AddTransient(); services.AddTransient(); services.AddTransient(); - services.AddTransient(); + + services.AddTransient>(); + services.AddTransient>(); + services.AddTransient>(); + services.AddTransient>(); + services.AddTransient>(); + services.AddTransient>(); + services.AddTransient>(); + services.AddTransient>(); + services.AddTransient>(); + services.AddTransient>(); + services.AddTransient>(); + services.AddTransient>(); + services.AddTransient>(); + services.AddTransient>(); + services.AddTransient>(); + services.AddTransient>(); + services.AddTransient>(); + services.AddTransient>(); + services.AddTransient(); services.AddTransient(); services.AddTransient(); @@ -277,6 +493,8 @@ namespace AsbCloudInfrastructure services.AddTransient(); + services.AddTransient(); + services.AddTransient(); services.AddTransient(); @@ -291,19 +509,51 @@ namespace AsbCloudInfrastructure services.AddTransient(); services.AddTransient(); - services.AddTransient(); - services.AddTransient(); - + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); services.AddTransient(); services.AddTransient(); - services.AddTransient(); - services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); services.AddTransient(); services.AddTransient(); - + return services; } } diff --git a/AsbCloudInfrastructure/GlobalSuppressions.cs b/AsbCloudInfrastructure/GlobalSuppressions.cs new file mode 100644 index 00000000..2cf53382 --- /dev/null +++ b/AsbCloudInfrastructure/GlobalSuppressions.cs @@ -0,0 +1,8 @@ +// This file is used by Code Analysis to maintain SuppressMessage +// attributes that are applied to this project. +// Project-level suppressions either have no target or are given +// a specific target and scoped to a namespace, type, member, etc. + +using System.Diagnostics.CodeAnalysis; + +[assembly: SuppressMessage("Style", "IDE0290:Использовать основной конструктор", Justification = "<Ожидание>", Scope = "member")] diff --git a/AsbCloudInfrastructure/LinqExtensions.cs b/AsbCloudInfrastructure/LinqExtensions.cs index cf182051..061cc60a 100644 --- a/AsbCloudInfrastructure/LinqExtensions.cs +++ b/AsbCloudInfrastructure/LinqExtensions.cs @@ -1,4 +1,4 @@ -// Ignore Spelling: Linq +// Ignore Spelling: Linq using System; using System.Collections.Generic; diff --git a/AsbCloudInfrastructure/MemoryCacheExtentions.cs b/AsbCloudInfrastructure/MemoryCacheExtentions.cs index 0153778a..a8d89010 100644 --- a/AsbCloudInfrastructure/MemoryCacheExtentions.cs +++ b/AsbCloudInfrastructure/MemoryCacheExtentions.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Caching.Memory; using System; using System.Collections.Generic; @@ -46,14 +46,15 @@ namespace AsbCloudInfrastructure /// public static Task> GetOrCreateBasicAsync(this IMemoryCache memoryCache, Func>> getterAsync, CancellationToken token) { - var key = typeof(T).FullName; - var cache = memoryCache.GetOrCreateAsync(key, async (cacheEntry) => { + var key = typeof(T).FullName!; + var cache = memoryCache.GetOrCreateAsync(key, async (cacheEntry) => + { cacheEntry.AbsoluteExpirationRelativeToNow = CacheOlescence; cacheEntry.SlidingExpiration = CacheOlescence; var entities = await getterAsync(token); return entities; }); - return cache; + return cache!; } /// @@ -83,13 +84,14 @@ namespace AsbCloudInfrastructure /// public static IEnumerable GetOrCreateBasic(this IMemoryCache memoryCache, Func> getter) { - var key = typeof(T).FullName; - var cache = memoryCache.GetOrCreate(key, cacheEntry => { + var key = typeof(T).FullName!; + var cache = memoryCache.GetOrCreate(key, cacheEntry => + { cacheEntry.AbsoluteExpirationRelativeToNow = CacheOlescence; cacheEntry.SlidingExpiration = CacheOlescence; return getter(); }); - return cache; + return cache!; } /// @@ -101,7 +103,8 @@ namespace AsbCloudInfrastructure public static void DropBasic(this IMemoryCache memoryCache) where T : class { - var key = typeof(T).FullName; + var key = typeof(T).FullName!; + memoryCache.Remove(key); } } diff --git a/AsbCloudInfrastructure/PredicateBuilder.cs b/AsbCloudInfrastructure/PredicateBuilder.cs index 05ca6779..423dec6f 100644 --- a/AsbCloudInfrastructure/PredicateBuilder.cs +++ b/AsbCloudInfrastructure/PredicateBuilder.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; diff --git a/AsbCloudInfrastructure/ReportDataSourcePgCloud.cs b/AsbCloudInfrastructure/ReportDataSourcePgCloud.cs index d06a5f1a..8c4333a6 100644 --- a/AsbCloudInfrastructure/ReportDataSourcePgCloud.cs +++ b/AsbCloudInfrastructure/ReportDataSourcePgCloud.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Exceptions; +using AsbCloudApp.Exceptions; using AsbCloudDb.Model; using AsbSaubReport.Model; using Microsoft.EntityFrameworkCore; diff --git a/AsbCloudInfrastructure/Repository/CacheBase.cs b/AsbCloudInfrastructure/Repository/CacheBase.cs index 84f702df..46670658 100644 --- a/AsbCloudInfrastructure/Repository/CacheBase.cs +++ b/AsbCloudInfrastructure/Repository/CacheBase.cs @@ -1,4 +1,4 @@ -using AsbCloudDb.Model; +using AsbCloudDb.Model; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Caching.Memory; using System; @@ -43,12 +43,12 @@ namespace AsbCloudInfrastructure.Repository cacheEntry.Value = entities; return entities; }); - return cache; + return cache!; } - protected virtual Task> GetCacheAsync(CancellationToken token) + protected virtual async Task> GetCacheAsync(CancellationToken token) { - var cache = memoryCache.GetOrCreateAsync(CacheTag, async (cacheEntry) => + var cache = await memoryCache.GetOrCreateAsync(CacheTag, async (cacheEntry) => { cacheEntry.AbsoluteExpirationRelativeToNow = CacheObsolescence; cacheEntry.SlidingExpiration = CacheObsolescence; @@ -57,7 +57,7 @@ namespace AsbCloudInfrastructure.Repository cacheEntry.Value = entities; return entities.AsEnumerable(); }); - return cache; + return cache!; } } diff --git a/AsbCloudInfrastructure/Repository/ChangeLogRepositoryAbstract.cs b/AsbCloudInfrastructure/Repository/ChangeLogRepositoryAbstract.cs index 7a01f7df..157b204d 100644 --- a/AsbCloudInfrastructure/Repository/ChangeLogRepositoryAbstract.cs +++ b/AsbCloudInfrastructure/Repository/ChangeLogRepositoryAbstract.cs @@ -1,4 +1,5 @@ -using AsbCloudApp.Exceptions; +using AsbCloudApp.Data; +using AsbCloudApp.Exceptions; using AsbCloudApp.Repositories; using AsbCloudApp.Requests; using AsbCloudDb.Model; @@ -13,10 +14,9 @@ using System.Threading.Tasks; namespace AsbCloudInfrastructure.Repository; -public abstract class ChangeLogRepositoryAbstract : IChangeLogRepository - where TDto : AsbCloudApp.Data.ChangeLogAbstract +public abstract class ChangeLogRepositoryAbstract : IChangeLogRepository + where TDto : AsbCloudApp.Data.IId where TEntity : ChangeLogAbstract - where TRequest : ChangeLogBaseRequest { protected readonly IAsbCloudDbContext db; @@ -25,6 +25,97 @@ public abstract class ChangeLogRepositoryAbstract : ICh this.db = db; } + private class ChangeLogQueryBuilder: IChangeLogQueryBuilder + { + protected readonly ChangeLogRepositoryAbstract Repository; + protected IQueryable Query; + + public ChangeLogQueryBuilder( + ChangeLogRepositoryAbstract repository, + ChangeLogRequest request) + { + this.Repository = repository; + this.Query = repository.db.Set() + .Include(e => e.Author) + .Include(e => e.Editor); + + if (request.Moment.HasValue) + { + var momentUtc = request.Moment.Value.ToUniversalTime(); + + this.Query = this.Query + .Where(e => e.Creation <= momentUtc) + .Where(e => e.Obsolete == null || e.Obsolete >= momentUtc); + } + } + + public ChangeLogQueryBuilder(ChangeLogQueryBuilder builder) + { + Repository = builder.Repository; + Query = builder.Query; + } + + public virtual IChangeLogQueryBuilderWithKnownTimezone ApplyRequest(TRequest request) + { + this.Query = Repository.BuildQuery(request, Query); + return new ChangeLogQueryBuilderWithKnownTimezone(this, request); + } + + public async Task> GetData(TimeSpan offset, CancellationToken token) + { + var dtos = await this.Query.Select(e => Repository.Convert(e, offset)) + .ToArrayAsync(token); + return dtos; + } + + public async Task>> GetChangeLogData(TimeSpan offset, CancellationToken token) + { + var dtos = await this.Query.Select(e => Repository.ConvertChangeLogDto(e, offset)) + .ToArrayAsync(token); + return dtos; + } + } + + private class ChangeLogQueryBuilderWithKnownTimezone: ChangeLogQueryBuilder, IChangeLogQueryBuilderWithKnownTimezone + { + TRequest request; + + public ChangeLogQueryBuilderWithKnownTimezone( + ChangeLogQueryBuilder parentBuilder, + TRequest request) + :base(parentBuilder) + { + this.request = request; + } + + public override IChangeLogQueryBuilderWithKnownTimezone ApplyRequest(TRequest request) + { + Query = Repository.BuildQuery(request, Query); + this.request = request; + return this; + } + + public async Task> GetData(CancellationToken token) + { + TimeSpan timezoneOffset = Repository.GetTimezoneOffset(request); + var dtos = await this.GetData(timezoneOffset, token); + return dtos; + } + + public async Task>> GetChangeLogData(CancellationToken token) + { + TimeSpan timezoneOffset = Repository.GetTimezoneOffset(request); + var dtos = await this.GetChangeLogData(timezoneOffset, token); + return dtos; + } + } + + public IChangeLogQueryBuilder GetQueryBuilder(ChangeLogRequest request) + { + var builder = new ChangeLogQueryBuilder(this, request); + return builder; + } + public async Task InsertRange(int idUser, IEnumerable dtos, CancellationToken token) { var result = 0; @@ -133,6 +224,7 @@ public abstract class ChangeLogRepositoryAbstract : ICh public async Task Clear(int idUser, TRequest request, CancellationToken token) { var updateTime = DateTimeOffset.UtcNow; + var query = BuildQuery(request); query = query.Where(e => e.Obsolete == null); @@ -168,7 +260,7 @@ public abstract class ChangeLogRepositoryAbstract : ICh } } - public async Task DeleteRange(int idUser, IEnumerable ids, CancellationToken token) + public async Task MarkAsDeleted(int idUser, IEnumerable ids, CancellationToken token) { var updateTime = DateTimeOffset.UtcNow; var query = db.Set() @@ -217,7 +309,7 @@ public abstract class ChangeLogRepositoryAbstract : ICh return datesOnly; } - public async Task> GetChangeLog(TRequest request, DateOnly? date, CancellationToken token) + public async Task>> GetChangeLogForDate(TRequest request, DateOnly? date, CancellationToken token) { var query = BuildQuery(request); TimeSpan offset = GetTimezoneOffset(request); @@ -233,53 +325,72 @@ public abstract class ChangeLogRepositoryAbstract : ICh query = createdQuery.Union(editedQuery); } + var dtos = await CreateChangeLogDto(query, offset, token); + + return dtos; + } + + public async Task>> CreateChangeLogDto(IQueryable query, TimeSpan offset, CancellationToken token) + { var entities = await query .OrderBy(e => e.Creation) .ThenBy(e => e.Obsolete) .ThenBy(e => e.Id) .ToListAsync(token); - var dtos = entities.Select(e => Convert(e, offset)); + var dtos = entities.Select(e => ConvertChangeLogDto(e, offset)); return dtos; } - public async Task> Get(TRequest request, CancellationToken token) + public async Task> GetCurrent(TRequest request, CancellationToken token) { - var query = BuildQuery(request); - var entities = await query - .OrderBy(e => e.Creation) - .ThenBy(e => e.Obsolete) - .ThenBy(e => e.Id) - .ToArrayAsync(token); + var changeLogRequest = new ChangeLogRequest() + { + Moment = new DateTimeOffset(3000, 1, 1, 0, 0, 0, TimeSpan.Zero) + }; + + var builder = GetQueryBuilder(changeLogRequest) + .ApplyRequest(request); + var dtos = await builder.GetData(token); - TimeSpan offset = GetTimezoneOffset(request); - var dtos = entities.Select(e => Convert(e, offset)); return dtos; } protected abstract TimeSpan GetTimezoneOffset(TRequest request); - protected abstract IQueryable BuildQuery(TRequest request); + private IQueryable BuildQuery(TRequest request) => + BuildQuery(request, db.Set() + .Include(e => e.Author) + .Include(e => e.Editor)); + + protected abstract IQueryable BuildQuery(TRequest request, IQueryable query); protected virtual TEntity Convert(TDto dto) { var entity = dto.Adapt(); entity.Creation = entity.Creation.ToUniversalTime(); - if(entity.Obsolete.HasValue) + if (entity.Obsolete.HasValue) entity.Obsolete = entity.Obsolete.Value.ToUniversalTime(); return entity; } + protected virtual ChangeLogDto ConvertChangeLogDto(TEntity entity, TimeSpan offset) + { + var changeLogDto = entity.Adapt>(); + changeLogDto.Creation = entity.Creation.ToOffset(offset); + + if (entity.Obsolete.HasValue) + changeLogDto.Obsolete = entity.Obsolete.Value.ToOffset(offset); + + changeLogDto.Item = Convert(entity, offset); + return changeLogDto; + } + protected virtual TDto Convert(TEntity entity, TimeSpan offset) { var dto = entity.Adapt(); - dto.Creation = entity.Creation.ToOffset(offset); - - if (entity.Obsolete.HasValue) - dto.Obsolete = entity.Obsolete.Value.ToOffset(offset); - return dto; } @@ -303,4 +414,5 @@ public abstract class ChangeLogRepositoryAbstract : ICh if (pgException.SqlState == PostgresErrorCodes.ForeignKeyViolation) throw new ArgumentInvalidException("dtos", pgException.Message + "\r\n" + pgException.Detail); } + } diff --git a/AsbCloudInfrastructure/Repository/CrudCacheRepositoryBase.cs b/AsbCloudInfrastructure/Repository/CrudCacheRepositoryBase.cs index 5b761e25..bfa1c410 100644 --- a/AsbCloudInfrastructure/Repository/CrudCacheRepositoryBase.cs +++ b/AsbCloudInfrastructure/Repository/CrudCacheRepositoryBase.cs @@ -13,7 +13,7 @@ namespace AsbCloudInfrastructure.Repository { /// - /// CRUD + /// CRUD сервис с кешем в оперативке /// /// /// @@ -72,7 +72,7 @@ namespace AsbCloudInfrastructure.Repository } /// - /// + /// Синхронно получить запись по ИД /// /// /// diff --git a/AsbCloudInfrastructure/Repository/CrudRepositoryBase.cs b/AsbCloudInfrastructure/Repository/CrudRepositoryBase.cs index 80bc3a99..48fe4c8b 100644 --- a/AsbCloudInfrastructure/Repository/CrudRepositoryBase.cs +++ b/AsbCloudInfrastructure/Repository/CrudRepositoryBase.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Services; +using AsbCloudApp.Services; using AsbCloudDb.Model; using Mapster; using Microsoft.EntityFrameworkCore; diff --git a/AsbCloudInfrastructure/Repository/CrudWellRelatedCacheRepositoryBase.cs b/AsbCloudInfrastructure/Repository/CrudWellRelatedCacheRepositoryBase.cs index c02702b5..601ab274 100644 --- a/AsbCloudInfrastructure/Repository/CrudWellRelatedCacheRepositoryBase.cs +++ b/AsbCloudInfrastructure/Repository/CrudWellRelatedCacheRepositoryBase.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Services; +using AsbCloudApp.Services; using AsbCloudDb.Model; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Caching.Memory; diff --git a/AsbCloudInfrastructure/Repository/CrudWellRelatedRepositoryBase.cs b/AsbCloudInfrastructure/Repository/CrudWellRelatedRepositoryBase.cs index d6b267a8..bafb2944 100644 --- a/AsbCloudInfrastructure/Repository/CrudWellRelatedRepositoryBase.cs +++ b/AsbCloudInfrastructure/Repository/CrudWellRelatedRepositoryBase.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Services; +using AsbCloudApp.Services; using AsbCloudDb.Model; using Microsoft.EntityFrameworkCore; using System; diff --git a/AsbCloudInfrastructure/Repository/DataSaubStatRepository.cs b/AsbCloudInfrastructure/Repository/DataSaubStatRepository.cs index 23eba5f9..d5159bf6 100644 --- a/AsbCloudInfrastructure/Repository/DataSaubStatRepository.cs +++ b/AsbCloudInfrastructure/Repository/DataSaubStatRepository.cs @@ -1,5 +1,6 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; using AsbCloudApp.Services; using AsbCloudDb.Model; using Mapster; @@ -81,5 +82,32 @@ namespace AsbCloudInfrastructure.Repository return entity; } + + private IQueryable BuildQuery(TelemetryPartDeleteRequest request) + { + var query = db.Set() + .Where(o => o.IdTelemetry == request.IdTelemetry); + + if (request.LeDate is not null) + { + var leDate = request.LeDate.Value.ToUniversalTime(); + query = query.Where(o => o.DateStart <= leDate); + } + + if (request.GeDate is not null) + { + var geDate = request.GeDate.Value.ToUniversalTime(); + query = query.Where(o => o.DateEnd >= geDate); + } + + return query; + } + + public async Task DeleteAsync(TelemetryPartDeleteRequest request, CancellationToken token) + { + var query = BuildQuery(request); + db.Set().RemoveRange(query); + return await db.SaveChangesAsync(token); + } } } diff --git a/AsbCloudInfrastructure/Repository/DepositRepository.cs b/AsbCloudInfrastructure/Repository/DepositRepository.cs index 344ad0f7..d30470a0 100644 --- a/AsbCloudInfrastructure/Repository/DepositRepository.cs +++ b/AsbCloudInfrastructure/Repository/DepositRepository.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Repositories; using AsbCloudApp.Services; using AsbCloudDb.Model; diff --git a/AsbCloudInfrastructure/Repository/DetectedOperationRepository.cs b/AsbCloudInfrastructure/Repository/DetectedOperationRepository.cs index 3864b4e1..7d664066 100644 --- a/AsbCloudInfrastructure/Repository/DetectedOperationRepository.cs +++ b/AsbCloudInfrastructure/Repository/DetectedOperationRepository.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.DetectedOperation; +using AsbCloudApp.Data.DetectedOperation; using AsbCloudApp.Repositories; using AsbCloudApp.Requests; using AsbCloudApp.Services; @@ -15,7 +15,8 @@ using AsbCloudApp.Data; namespace AsbCloudInfrastructure.Repository; -public class DetectedOperationRepository : CrudRepositoryBase, IDetectedOperationRepository +public class DetectedOperationRepository + : CrudRepositoryBase, IDetectedOperationRepository { private readonly ITelemetryService telemetryService; @@ -25,7 +26,24 @@ public class DetectedOperationRepository : CrudRepositoryBase> GetLastDetectedOperationsAsync(CancellationToken token) + { + var entities = await dbContext.Set() + .GroupBy(o => o.IdTelemetry) + .Select(g => new + { + IdTelemetry = g.Key, + LastDetectedOperation = g.OrderBy(o => o.DateEnd).Last() + }) + .ToArrayAsync(token); + + var dtos = entities.ToDictionary(x => x.IdTelemetry, + x => Convert(x.LastDetectedOperation)); + + return dtos; + } + public async Task DeleteAsync(DetectedOperationByTelemetryRequest request, CancellationToken token) { var query = BuildQuery(request); @@ -33,6 +51,13 @@ public class DetectedOperationRepository : CrudRepositoryBase DeleteAsync(TelemetryPartDeleteRequest request, CancellationToken token) + { + var query = BuildQuery(request); + dbContext.Set().RemoveRange(query); + return await dbContext.SaveChangesAsync(token); + } + public async Task> GetPageAsync(DetectedOperationByTelemetryRequest request, CancellationToken token) { var skip = request.Skip ?? 0; @@ -57,17 +82,7 @@ public class DetectedOperationRepository : CrudRepositoryBase> GetLastDetectedDatesAsync(CancellationToken token) => - await dbContext.Set() - .GroupBy(o => o.IdTelemetry) - .Select(g => new - { - IdTelemetry = g.Key, - LastDate = g.Max(o => o.DateEnd) - }) - .ToDictionaryAsync(x => x.IdTelemetry, x => x.LastDate, token); - + public async Task> Get(DetectedOperationByTelemetryRequest request, CancellationToken token) { var query = BuildQuery(request) @@ -112,7 +127,27 @@ public class DetectedOperationRepository : CrudRepositoryBase BuildQuery(TelemetryPartDeleteRequest request) + { + var query = dbContext.Set() + .Where(o => o.IdTelemetry == request.IdTelemetry); + + if (request.LeDate is not null) + { + var leDate = request.LeDate.Value.ToUniversalTime(); + query = query.Where(o => o.DateStart <= leDate); + } + + if (request.GeDate is not null) + { + var geDate = request.GeDate.Value.ToUniversalTime(); + query = query.Where(o => o.DateEnd >= geDate); + } + + return query; + } + private static DetectedOperationDto Convert(DetectedOperation src, TimeSpan offset) { var dto = src.Adapt(); diff --git a/AsbCloudInfrastructure/Repository/DrillTestRepository.cs b/AsbCloudInfrastructure/Repository/DrillTestRepository.cs index 96ba0ece..a7bc82a0 100644 --- a/AsbCloudInfrastructure/Repository/DrillTestRepository.cs +++ b/AsbCloudInfrastructure/Repository/DrillTestRepository.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.SAUB; +using AsbCloudApp.Data.SAUB; using AsbCloudApp.Exceptions; using AsbCloudApp.Repositories; using AsbCloudApp.Requests; @@ -84,5 +84,33 @@ namespace AsbCloudInfrastructure.Repository dto.TimeStampStart = dto.TimeStampStart.ToRemoteDateTime(dto.Telemetry?.TimeZone?.Hours ?? 0); return dto; } + + //TODO: Унифицировать модели данных телеметрии.Чтобы в будущем унифицировать репозитории данных телеметрии. + private IQueryable BuildQuery(TelemetryPartDeleteRequest request) + { + var query = db.Set() + .Where(o => o.IdTelemetry == request.IdTelemetry); + + if (request.LeDate is not null) + { + var leDate = request.LeDate.Value.ToUniversalTime(); + query = query.Where(o => o.TimeStampStart <= leDate); + } + + if (request.GeDate is not null) + { + var geDate = request.GeDate.Value.ToUniversalTime(); + query = query.Where(o => o.TimeStampStart >= geDate); + } + + return query; + } + + public async Task DeleteAsync(TelemetryPartDeleteRequest request, CancellationToken token) + { + var query = BuildQuery(request); + db.Set().RemoveRange(query); + return await db.SaveChangesAsync(token); + } } } diff --git a/AsbCloudInfrastructure/Repository/FaqRepository.cs b/AsbCloudInfrastructure/Repository/FaqRepository.cs index efe09074..378a540a 100644 --- a/AsbCloudInfrastructure/Repository/FaqRepository.cs +++ b/AsbCloudInfrastructure/Repository/FaqRepository.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Exceptions; using AsbCloudApp.Repositories; using AsbCloudApp.Requests; diff --git a/AsbCloudInfrastructure/Repository/FileRepository.cs b/AsbCloudInfrastructure/Repository/FileRepository.cs index 3e97da03..a01f121b 100644 --- a/AsbCloudInfrastructure/Repository/FileRepository.cs +++ b/AsbCloudInfrastructure/Repository/FileRepository.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Repositories; using AsbCloudApp.Requests; using AsbCloudDb; diff --git a/AsbCloudInfrastructure/Repository/FileStorageRepository.cs b/AsbCloudInfrastructure/Repository/FileStorageRepository.cs index 50e9bff5..18afc95f 100644 --- a/AsbCloudInfrastructure/Repository/FileStorageRepository.cs +++ b/AsbCloudInfrastructure/Repository/FileStorageRepository.cs @@ -1,4 +1,4 @@ -using System; +using System; using AsbCloudApp.Data; using AsbCloudApp.Repositories; using System.Collections.Generic; diff --git a/AsbCloudInfrastructure/Repository/GtrWitsRepository.cs b/AsbCloudInfrastructure/Repository/GtrWitsRepository.cs index 3f8333c9..54b19e6b 100644 --- a/AsbCloudInfrastructure/Repository/GtrWitsRepository.cs +++ b/AsbCloudInfrastructure/Repository/GtrWitsRepository.cs @@ -1,9 +1,13 @@ -using AsbCloudApp.Data.GTR; +using AsbCloudApp.Data; +using AsbCloudApp.Data.GTR; +using AsbCloudApp.Exceptions; using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; using AsbCloudApp.Services; using AsbCloudDb; using AsbCloudDb.Model; using AsbCloudDb.Model.GTR; +using Mapster; using Microsoft.EntityFrameworkCore; using System; using System.Collections.Concurrent; @@ -12,11 +16,6 @@ using System.Diagnostics; using System.Linq; using System.Threading; using System.Threading.Tasks; -using AsbCloudApp.Exceptions; -using AsbCloudApp.Requests; -using Mapster; -using AsbCloudApp.Data; -using System.ComponentModel.DataAnnotations; namespace AsbCloudInfrastructure.Repository { @@ -87,7 +86,7 @@ namespace AsbCloudInfrastructure.Repository public async Task GetRangeAsync(int idWell, DateTimeOffset? geDate, DateTimeOffset? leDate, CancellationToken token) { var telemetry = telemetryService.GetOrDefaultTelemetryByIdWell(idWell); - + if (telemetry is null) return null; @@ -109,7 +108,7 @@ namespace AsbCloudInfrastructure.Repository }); var range = await groupedQuery.FirstOrDefaultAsync(token); - if (range is null) + if (range is null) return null; var result = new DatesRangeDto @@ -121,16 +120,16 @@ namespace AsbCloudInfrastructure.Repository } private async Task> GetAsync(int idWell, GtrRequest request, CancellationToken token) - where TEntity : WitsItemBase + where TEntity : WitsItemBase where TType : notnull { var telemetry = telemetryService.GetOrDefaultTelemetryByIdWell(idWell); - + if (telemetry is null) return Enumerable.Empty(); if (telemetry.TimeZone is null) - throw new ArgumentInvalidException(nameof(idWell),$"Telemetry id: {telemetry.Id} can't find timezone"); + throw new ArgumentInvalidException(nameof(idWell), $"Telemetry id: {telemetry.Id} can't find timezone"); var query = BuildQuery(telemetry.Id, request); @@ -147,7 +146,7 @@ namespace AsbCloudInfrastructure.Repository var interval = TimeSpan.FromSeconds(10); var timezoneOffset = TimeSpan.FromHours(telemetry.TimeZone.Hours); - + var dtos = entities .GroupBy(e => e.DateTime.Ticks / interval.Ticks) .Select(groupByInterval => @@ -166,9 +165,9 @@ namespace AsbCloudInfrastructure.Repository } private IQueryable BuildQuery(int idTelemetry, GtrRequest request) - where TEntity : WitsItemBase + where TEntity : WitsItemBase where TType : notnull - { + { var query = db.Set() .Where(e => e.IdTelemetry == idTelemetry); @@ -183,9 +182,9 @@ namespace AsbCloudInfrastructure.Repository else { var lastDate = query - .OrderBy(e=>e.DateTime) + .OrderBy(e => e.DateTime) .LastOrDefault() - ?.DateTime + ?.DateTime ?? DateTimeOffset.UtcNow; var dateBegin = lastDate.AddSeconds(-request.IntervalSec); var dateEnd = lastDate; @@ -329,10 +328,10 @@ namespace AsbCloudInfrastructure.Repository var dateTime = record.Date.ToUtcDateTimeOffset(timezoneHours); foreach (var item in record.Items) { - if (cacheTelemetryItems?.TryGetValue((record.Id, item.Key), out var cacheItem) == true) + if (cacheTelemetryItems?.TryGetValue((record.Id, item.Key), out var cacheItem) == true) if (Math.Abs((dateTime - cacheItem.Date).TotalSeconds) < 1) - continue; - + continue; + if (item.Value.Value is string valueString) { var entity = MakeEntity(record.Id, item.Key, idTelemetry, dateTime, valueString); @@ -362,14 +361,15 @@ namespace AsbCloudInfrastructure.Repository if (ints.Any()) await db.Database.ExecInsertOrIgnoreAsync(db.Set(), ints, token); } - catch(Exception ex) + catch (Exception ex) { Trace.TraceError("Exception while saving GTR Wits data", ex); } cache.AddOrUpdate(idTelemetry, (_) => MakeNewCache(dtos), - (_, oldItemsDictionary) => { + (_, oldItemsDictionary) => + { foreach (var record in dtos) foreach (var item in record.Items) { @@ -398,7 +398,8 @@ namespace AsbCloudInfrastructure.Repository { var items = dtos.SelectMany(record => record.Items.Select( - item => new WitsItemRecordDto { + item => new WitsItemRecordDto + { IdItem = item.Key, IdRecord = record.Id, Date = record.Date, @@ -409,7 +410,7 @@ namespace AsbCloudInfrastructure.Repository .GroupBy(item => (item.IdRecord, item.IdItem)); var pairs = groups.Select(group => new KeyValuePair<(int, int), WitsItemRecordDto>( - group.Key, + group.Key, group.OrderByDescending(item => item.Date).First())); return new ConcurrentDictionary<(int, int), WitsItemRecordDto>(pairs); @@ -439,6 +440,47 @@ namespace AsbCloudInfrastructure.Repository Value = (TValue)dto.Value.Value, }; + private IQueryable BuildQuery(TelemetryPartDeleteRequest request) + where TEntity : WitsItemBase + where TValue : notnull + { + var query = db.Set().Where(i => i.IdTelemetry == request.IdTelemetry); + + if (request.LeDate is not null) + { + var leDate = request.LeDate.Value.ToUniversalTime(); + query = query.Where(o => o.DateTime <= leDate); + } + + if (request.GeDate is not null) + { + var geDate = request.GeDate.Value.ToUniversalTime(); + query = query.Where(o => o.DateTime >= geDate); + } + + return query; + } + + public async Task DeleteAsync(TelemetryPartDeleteRequest request, CancellationToken token) + { + var result = 0; + result += await DeleteAsync(request, token); + result += await DeleteAsync(request, token); + result += await DeleteAsync(request, token); + + return result; + } + + private async Task DeleteAsync(TelemetryPartDeleteRequest request, CancellationToken token) + where TEntity : WitsItemBase + where TType : notnull + { + var query = BuildQuery(request); + db.Set().RemoveRange(query); + return await db.SaveChangesAsync(token); + } + + private class WitsRequest { public int IdTelemetry { get; set; } diff --git a/AsbCloudInfrastructure/Repository/HelpPageRepository.cs b/AsbCloudInfrastructure/Repository/HelpPageRepository.cs index 562844bc..2b20f293 100644 --- a/AsbCloudInfrastructure/Repository/HelpPageRepository.cs +++ b/AsbCloudInfrastructure/Repository/HelpPageRepository.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Repositories; using AsbCloudDb.Model; using Mapster; diff --git a/AsbCloudInfrastructure/Repository/LimitingParameterRepository.cs b/AsbCloudInfrastructure/Repository/LimitingParameterRepository.cs index 67fc5960..858558df 100644 --- a/AsbCloudInfrastructure/Repository/LimitingParameterRepository.cs +++ b/AsbCloudInfrastructure/Repository/LimitingParameterRepository.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Repositories; using AsbCloudApp.Requests; using AsbCloudDb.Model; @@ -17,10 +17,17 @@ namespace AsbCloudInfrastructure.Repository private readonly IAsbCloudDbContext context; public LimitingParameterRepository(IAsbCloudDbContext context) - { + { this.context = context; } + public async Task DeleteAsync(TelemetryPartDeleteRequest request, CancellationToken token) + { + var query = BuildQuery(request); + context.Set().RemoveRange(query); + return await context.SaveChangesAsync(token); + } + public async Task> GetLimitingParametersAsync(LimitingParameterRequest request, WellDto wellDto, CancellationToken token) { var timezoneOffset = wellDto.Timezone.Hours; @@ -74,6 +81,26 @@ namespace AsbCloudInfrastructure.Repository return query; } + + private IQueryable BuildQuery(TelemetryPartDeleteRequest request) + { + var query = context.Set() + .Where(o => o.IdTelemetry == request.IdTelemetry); + + if (request.LeDate is not null) + { + var leDate = request.LeDate.Value.ToUniversalTime(); + query = query.Where(o => o.DateStart <= leDate); + } + + if (request.GeDate is not null) + { + var geDate = request.GeDate.Value.ToUniversalTime(); + query = query.Where(o => o.DateEnd >= geDate); + } + + return query; + } } } diff --git a/AsbCloudInfrastructure/Repository/ManualDirectoryRepository.cs b/AsbCloudInfrastructure/Repository/ManualDirectoryRepository.cs index a5c94944..6627fc75 100644 --- a/AsbCloudInfrastructure/Repository/ManualDirectoryRepository.cs +++ b/AsbCloudInfrastructure/Repository/ManualDirectoryRepository.cs @@ -13,50 +13,50 @@ namespace AsbCloudInfrastructure.Repository; public class ManualDirectoryRepository : CrudRepositoryBase, IManualDirectoryRepository { - public ManualDirectoryRepository(IAsbCloudDbContext context) : base(context) - { - } + public ManualDirectoryRepository(IAsbCloudDbContext context) : base(context) + { + } - public async Task> GetTreeAsync(CancellationToken cancellationToken) - { - var directories = await dbContext.ManualDirectories - .Include(m => m.Manuals) - .Include(m => m.Parent) - .AsNoTracking() - .ToArrayAsync(cancellationToken); + public async Task> GetTreeAsync(CancellationToken cancellationToken) + { + var directories = await dbContext.ManualDirectories + .Include(m => m.Manuals) + .Include(m => m.Parent) + .AsNoTracking() + .ToArrayAsync(cancellationToken); - return BuildTree(directories).Select(x => x.Adapt()); - } + return BuildTree(directories).Select(x => x.Adapt()); + } - public async Task GetOrDefaultAsync(string name, int? idParent, CancellationToken cancellationToken) - { - var entity = await dbContext.ManualDirectories - .AsNoTracking() - .FirstOrDefaultAsync(m => m.Name == name && - m.IdParent == idParent, cancellationToken); + public async Task GetOrDefaultAsync(string name, int? idParent, CancellationToken cancellationToken) + { + var entity = await dbContext.ManualDirectories + .AsNoTracking() + .FirstOrDefaultAsync(m => m.Name == name && + m.IdParent == idParent, cancellationToken); - if (entity is null) - return null; + if (entity is null) + return null; - return Convert(entity); - } + return Convert(entity); + } - public Task IsExistsAsync(int id, CancellationToken cancellationToken) => - dbContext.ManualDirectories.AnyAsync(d => d.Id == id, cancellationToken); + public Task IsExistsAsync(int id, CancellationToken cancellationToken) => + dbContext.ManualDirectories.AnyAsync(d => d.Id == id, cancellationToken); - private static IEnumerable BuildTree(IEnumerable directories) - { - var directoryDict = directories.ToDictionary(f => f.Id); + private static IEnumerable BuildTree(IEnumerable directories) + { + var directoryDict = directories.ToDictionary(f => f.Id); - foreach (var directory in directories) - { - if (directory.IdParent.HasValue && directoryDict.TryGetValue(directory.IdParent.Value, out var parent)) - { - parent.Children ??= new List(); - parent.Children.Add(directory); - } - } + foreach (var directory in directories) + { + if (directory.IdParent.HasValue && directoryDict.TryGetValue(directory.IdParent.Value, out var parent)) + { + parent.Children ??= new List(); + parent.Children.Add(directory); + } + } - return directories.Where(f => f.IdParent == null); - } + return directories.Where(f => f.IdParent == null); + } } \ No newline at end of file diff --git a/AsbCloudInfrastructure/Repository/NotificationRepository.cs b/AsbCloudInfrastructure/Repository/NotificationRepository.cs index 7e184f02..35e71395 100644 --- a/AsbCloudInfrastructure/Repository/NotificationRepository.cs +++ b/AsbCloudInfrastructure/Repository/NotificationRepository.cs @@ -16,137 +16,137 @@ namespace AsbCloudInfrastructure.Repository; public class NotificationRepository : CrudRepositoryBase, INotificationRepository { - private static IQueryable MakeQueryNotification(DbSet dbSet) - => dbSet.Include(n => n.NotificationCategory) - .Include(n => n.User) - .AsNoTracking(); + private static IQueryable MakeQueryNotification(DbSet dbSet) + => dbSet.Include(n => n.NotificationCategory) + .Include(n => n.User) + .AsNoTracking(); - public NotificationRepository(IAsbCloudDbContext context) - : base(context, MakeQueryNotification) - { - } - + public NotificationRepository(IAsbCloudDbContext context) + : base(context, MakeQueryNotification) + { + } + - public async Task> GetNotificationsAsync(int idUser, - NotificationRequest request, - CancellationToken cancellationToken) - { - var skip = request.Skip ?? 0; - var take = request.Take ?? 10; + public async Task> GetNotificationsAsync(int idUser, + NotificationRequest request, + CancellationToken cancellationToken) + { + var skip = request.Skip ?? 0; + var take = request.Take ?? 10; - var query = BuildQuery(idUser, request); + var query = BuildQuery(idUser, request); - var result = new PaginationContainer - { - Skip = skip, - Take = take, - Count = await query.CountAsync(cancellationToken), - }; + var result = new PaginationContainer + { + Skip = skip, + Take = take, + Count = await query.CountAsync(cancellationToken), + }; - if (result.Count < skip) - return result; + if (result.Count < skip) + return result; - result.Items = await query - .SortBy(request.SortFields) - .Skip(skip) - .Take(take) - .AsNoTracking() - .Select(x => x.Adapt()) - .ToArrayAsync(cancellationToken); + result.Items = await query + .SortBy(request.SortFields) + .Skip(skip) + .Take(take) + .AsNoTracking() + .Select(x => x.Adapt()) + .ToArrayAsync(cancellationToken); - return result; - } + return result; + } - public async Task> GetAllAsync(int? idUser, bool? isSent, int? idTransportType, - CancellationToken cancellationToken) - { - var query = dbContext.Notifications.AsQueryable(); + public async Task> GetAllAsync(int? idUser, bool? isSent, int? idTransportType, + CancellationToken cancellationToken) + { + var query = dbContext.Notifications.AsQueryable(); - if (idUser.HasValue) - query = query.Where(n => n.IdUser == idUser); - - if(isSent.HasValue) - query = isSent.Value ? - query.Where(n => n.SentDate != null) - : query.Where(n => n.SentDate == null); + if (idUser.HasValue) + query = query.Where(n => n.IdUser == idUser); + + if(isSent.HasValue) + query = isSent.Value ? + query.Where(n => n.SentDate != null) + : query.Where(n => n.SentDate == null); - if (idTransportType.HasValue) - query = query.Where(n => n.IdTransportType == idTransportType); - - return await query.AsNoTracking().Select(n => n.Adapt()) - .ToArrayAsync(cancellationToken); - } + if (idTransportType.HasValue) + query = query.Where(n => n.IdTransportType == idTransportType); + + return await query.AsNoTracking().Select(n => n.Adapt()) + .ToArrayAsync(cancellationToken); + } - public async Task UpdateRangeAsync(IEnumerable notifications, CancellationToken cancellationToken) - { - if (!notifications.Any()) - return 0; - - var ids = notifications.Select(d => d.Id); - - var existingEntities = await dbSet - .Where(d => ids.Contains(d.Id)) - .AsNoTracking() - .Select(d => d.Id) - .ToArrayAsync(cancellationToken); + public override async Task UpdateRangeAsync(IEnumerable notifications, CancellationToken cancellationToken) + { + if (!notifications.Any()) + return 0; + + var ids = notifications.Select(d => d.Id); + + var existingEntities = await dbSet + .Where(d => ids.Contains(d.Id)) + .AsNoTracking() + .Select(d => d.Id) + .ToArrayAsync(cancellationToken); - if (ids.Count() > existingEntities.Length) - return ICrudRepository.ErrorIdNotFound; + if (ids.Count() > existingEntities.Length) + return ICrudRepository.ErrorIdNotFound; - var entities = notifications.Select(Convert); + var entities = notifications.Select(Convert); - dbContext.Notifications.UpdateRange(entities); + dbContext.Notifications.UpdateRange(entities); - return await dbContext.SaveChangesAsync(cancellationToken); - } + return await dbContext.SaveChangesAsync(cancellationToken); + } - public Task DeleteAsync(NotificationDeleteRequest request, CancellationToken cancellationToken) - { - var query = dbContext.Notifications - .Include(n => n.NotificationCategory) - .AsQueryable(); + public Task DeleteAsync(NotificationDeleteRequest request, CancellationToken cancellationToken) + { + var query = dbContext.Notifications + .Include(n => n.NotificationCategory) + .AsQueryable(); - if (request.IdCategory.HasValue) - query = query.Where(n => n.IdNotificationCategory == request.IdCategory.Value); + if (request.IdCategory.HasValue) + query = query.Where(n => n.IdNotificationCategory == request.IdCategory.Value); - if (request.LtSentDate.HasValue) - query = query.Where(n => n.SentDate <= request.LtSentDate.Value.ToUniversalTime()); - - if (request.LtReadDate.HasValue) - query = query.Where(n => n.ReadDate <= request.LtReadDate.Value.ToUniversalTime()); - - dbContext.Notifications.RemoveRange(query); + if (request.LtSentDate.HasValue) + query = query.Where(n => n.SentDate <= request.LtSentDate.Value.ToUniversalTime()); + + if (request.LtReadDate.HasValue) + query = query.Where(n => n.ReadDate <= request.LtReadDate.Value.ToUniversalTime()); + + dbContext.Notifications.RemoveRange(query); - return dbContext.SaveChangesAsync(cancellationToken); - } + return dbContext.SaveChangesAsync(cancellationToken); + } public Task GetUnreadCountAsync(int idUser, int idTransportType, CancellationToken cancellationToken) { return dbContext.Notifications - .Where(n => !n.ReadDate.HasValue && - n.SentDate.HasValue && - n.IdUser == idUser && - n.IdTransportType == idTransportType) - .CountAsync(cancellationToken); - } + .Where(n => !n.ReadDate.HasValue && + n.SentDate.HasValue && + n.IdUser == idUser && + n.IdTransportType == idTransportType) + .CountAsync(cancellationToken); + } private IQueryable BuildQuery(int idUser, - NotificationRequest request) - { - var query = dbContext.Notifications - .Include(x => x.NotificationCategory) - .Where(n => n.IdUser == idUser); + NotificationRequest request) + { + var query = dbContext.Notifications + .Include(x => x.NotificationCategory) + .Where(n => n.IdUser == idUser); - if (request.IsSent.HasValue) - { - query = request.IsSent.Value ? - query.Where(n => n.SentDate != null) - : query.Where(n => n.SentDate == null); - } + if (request.IsSent.HasValue) + { + query = request.IsSent.Value ? + query.Where(n => n.SentDate != null) + : query.Where(n => n.SentDate == null); + } - if (request.IdTransportType.HasValue) - query = query.Where(n => n.IdTransportType == request.IdTransportType); + if (request.IdTransportType.HasValue) + query = query.Where(n => n.IdTransportType == request.IdTransportType); - return query; - } + return query; + } } \ No newline at end of file diff --git a/AsbCloudInfrastructure/Repository/ProcessMapPlanBaseRepository.cs b/AsbCloudInfrastructure/Repository/ProcessMapPlanBaseRepository.cs index b8662d35..922071e4 100644 --- a/AsbCloudInfrastructure/Repository/ProcessMapPlanBaseRepository.cs +++ b/AsbCloudInfrastructure/Repository/ProcessMapPlanBaseRepository.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps; using AsbCloudApp.Requests; using AsbCloudApp.Services; using AsbCloudDb.Model; @@ -9,45 +9,31 @@ using System.Linq; namespace AsbCloudInfrastructure.Repository; -public class ProcessMapPlanBaseRepository : ChangeLogRepositoryAbstract +public class ProcessMapPlanBaseRepository : ChangeLogRepositoryAbstract where TDto : ProcessMapPlanBaseDto where TEntity : ProcessMapPlanBase { private readonly IWellService wellService; - public ProcessMapPlanBaseRepository(IAsbCloudDbContext context, IWellService wellService) + public ProcessMapPlanBaseRepository(IAsbCloudDbContext context, IWellService wellService) : base(context) { this.wellService = wellService; } - protected override IQueryable BuildQuery(ProcessMapPlanBaseRequestWithWell request) + protected override IQueryable BuildQuery(ProcessMapPlanBaseRequestWithWell request, IQueryable query) { - var query = db - .Set() - .Include(e => e.Author) - .Include(e => e.Editor) + query = query .Include(e => e.Well) .Include(e => e.WellSectionType) .Where(e => e.IdWell == request.IdWell); - if (request.IdWellSectionType.HasValue) - query = query.Where(e => e.IdWellSectionType == request.IdWellSectionType); - if (request.UpdateFrom.HasValue) { var from = request.UpdateFrom.Value.ToUniversalTime(); query = query.Where(e => e.Creation >= from || e.Obsolete >= from); } - if (request.Moment.HasValue) - { - var moment = request.Moment.Value.ToUniversalTime(); - query = query - .Where(e => e.Creation <= moment) - .Where(e => e.Obsolete == null || e.Obsolete >= moment); - } - return query; } @@ -68,8 +54,6 @@ public class ProcessMapPlanBaseRepository : ChangeLogRepositoryAb protected override TEntity Convert(TDto dto) { var entity = base.Convert(dto); - entity.Author = null; - entity.Editor = null; return entity; } } diff --git a/AsbCloudInfrastructure/Repository/QueryContainer.cs b/AsbCloudInfrastructure/Repository/QueryContainer.cs index 2cb27445..a2179e8b 100644 --- a/AsbCloudInfrastructure/Repository/QueryContainer.cs +++ b/AsbCloudInfrastructure/Repository/QueryContainer.cs @@ -1,4 +1,4 @@ -using AsbCloudDb.Model; +using AsbCloudDb.Model; using Microsoft.EntityFrameworkCore; using System; using System.Linq; diff --git a/AsbCloudInfrastructure/Repository/ScheduleRepository.cs b/AsbCloudInfrastructure/Repository/ScheduleRepository.cs index e1fa83b8..cbafa45a 100644 --- a/AsbCloudInfrastructure/Repository/ScheduleRepository.cs +++ b/AsbCloudInfrastructure/Repository/ScheduleRepository.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Services; using AsbCloudDb.Model; using Microsoft.EntityFrameworkCore; diff --git a/AsbCloudInfrastructure/Repository/SetpointsRequestRepository.cs b/AsbCloudInfrastructure/Repository/SetpointsRequestRepository.cs index 2a728bd5..027b2565 100644 --- a/AsbCloudInfrastructure/Repository/SetpointsRequestRepository.cs +++ b/AsbCloudInfrastructure/Repository/SetpointsRequestRepository.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.SAUB; +using AsbCloudApp.Data.SAUB; using AsbCloudApp.Services; using AsbCloudDb.Model; using Microsoft.EntityFrameworkCore; diff --git a/AsbCloudInfrastructure/Repository/TelemetryWirelineRunOutRepository.cs b/AsbCloudInfrastructure/Repository/TelemetryWirelineRunOutRepository.cs index af2b6438..c57fc57c 100644 --- a/AsbCloudInfrastructure/Repository/TelemetryWirelineRunOutRepository.cs +++ b/AsbCloudInfrastructure/Repository/TelemetryWirelineRunOutRepository.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Data.SAUB; using AsbCloudApp.Repositories; using AsbCloudApp.Services; diff --git a/AsbCloudInfrastructure/Repository/TrajectoryEditableRepository.cs b/AsbCloudInfrastructure/Repository/TrajectoryEditableRepository.cs index 6aca2284..6233dfc3 100644 --- a/AsbCloudInfrastructure/Repository/TrajectoryEditableRepository.cs +++ b/AsbCloudInfrastructure/Repository/TrajectoryEditableRepository.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.Trajectory; +using AsbCloudApp.Data.Trajectory; using AsbCloudApp.Exceptions; using AsbCloudApp.Repositories; using AsbCloudApp.Services; diff --git a/AsbCloudInfrastructure/Repository/TrajectoryNnbRepository.cs b/AsbCloudInfrastructure/Repository/TrajectoryNnbRepository.cs index 69c2cccc..1bd3ca2a 100644 --- a/AsbCloudInfrastructure/Repository/TrajectoryNnbRepository.cs +++ b/AsbCloudInfrastructure/Repository/TrajectoryNnbRepository.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.Trajectory; +using AsbCloudApp.Data.Trajectory; using AsbCloudApp.Exceptions; using AsbCloudApp.Repositories; using AsbCloudApp.Requests; diff --git a/AsbCloudInfrastructure/Repository/UserRepository.cs b/AsbCloudInfrastructure/Repository/UserRepository.cs index df58affe..0f40b933 100644 --- a/AsbCloudInfrastructure/Repository/UserRepository.cs +++ b/AsbCloudInfrastructure/Repository/UserRepository.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Exceptions; using AsbCloudApp.Repositories; using AsbCloudDb.Model; diff --git a/AsbCloudInfrastructure/Repository/UserRoleRepository.cs b/AsbCloudInfrastructure/Repository/UserRoleRepository.cs index 427870c0..799fe857 100644 --- a/AsbCloudInfrastructure/Repository/UserRoleRepository.cs +++ b/AsbCloudInfrastructure/Repository/UserRoleRepository.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Comparators; +using AsbCloudApp.Comparators; using AsbCloudApp.Data; using AsbCloudApp.Data.User; using AsbCloudApp.Exceptions; diff --git a/AsbCloudInfrastructure/Repository/UserSettingsRepository.cs b/AsbCloudInfrastructure/Repository/UserSettingsRepository.cs index 7681961b..56b797ca 100644 --- a/AsbCloudInfrastructure/Repository/UserSettingsRepository.cs +++ b/AsbCloudInfrastructure/Repository/UserSettingsRepository.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Services; +using AsbCloudApp.Services; using AsbCloudDb.Model; using Microsoft.EntityFrameworkCore; using System.Linq; diff --git a/AsbCloudInfrastructure/Repository/WellCompositeRepository.cs b/AsbCloudInfrastructure/Repository/WellCompositeRepository.cs index b4c3bae9..dcbfd0f8 100644 --- a/AsbCloudInfrastructure/Repository/WellCompositeRepository.cs +++ b/AsbCloudInfrastructure/Repository/WellCompositeRepository.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Data.ProcessMaps; using AsbCloudApp.Repositories; using AsbCloudApp.Requests; @@ -13,14 +13,15 @@ using System.Threading.Tasks; namespace AsbCloudInfrastructure.Repository; -public class WellCompositeRepository : IWellCompositeRepository +public class WellCompositeRepository : IWellCompositeRepository + where TDto : ProcessMapPlanBaseDto { private readonly IAsbCloudDbContext db; - private readonly IChangeLogRepository processMapPlanDrillingRepository; + private readonly IChangeLogRepository processMapPlanDrillingRepository; public WellCompositeRepository( - IAsbCloudDbContext db, - IChangeLogRepository processMapPlanDrillingRepository) + IAsbCloudDbContext db, + IChangeLogRepository processMapPlanDrillingRepository) { this.db = db; this.processMapPlanDrillingRepository = processMapPlanDrillingRepository; @@ -51,17 +52,9 @@ public class WellCompositeRepository : IWellCompositeRepository } /// - public async Task> GetCompositeProcessMap(int idWell, CancellationToken token) + public Task> GetCompositeProcessMap(int idWell, CancellationToken token) { - var dtos = await GetAsync(idWell, token); - - var requests = dtos.Select(x => new ProcessMapPlanRequest { - IdWell = x.IdWellSrc, - IdWellSectionType = x.IdWellSectionType - }); - - //var result = await processMapPlanDrillingRepository.GetAsync(requests, token); - return Enumerable.Empty(); + throw new NotImplementedException(); } private static WellComposite Convert(int idWell, WellCompositeDto dto) diff --git a/AsbCloudInfrastructure/Repository/WellFinalDocumentsRepository.cs b/AsbCloudInfrastructure/Repository/WellFinalDocumentsRepository.cs index 7160a85e..7729242a 100644 --- a/AsbCloudInfrastructure/Repository/WellFinalDocumentsRepository.cs +++ b/AsbCloudInfrastructure/Repository/WellFinalDocumentsRepository.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Data.User; using AsbCloudApp.Exceptions; using AsbCloudApp.Repositories; diff --git a/AsbCloudInfrastructure/Repository/WellOperationCategoryRepository.cs b/AsbCloudInfrastructure/Repository/WellOperationCategoryRepository.cs index d171dc46..1032fc70 100644 --- a/AsbCloudInfrastructure/Repository/WellOperationCategoryRepository.cs +++ b/AsbCloudInfrastructure/Repository/WellOperationCategoryRepository.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Repositories; +using AsbCloudApp.Repositories; using AsbCloudDb.Model; using Mapster; using Microsoft.Extensions.Caching.Memory; diff --git a/AsbCloudInfrastructure/Repository/WellOperationRepository.cs b/AsbCloudInfrastructure/Repository/WellOperationRepository.cs index 1ab3de01..8fa9433d 100644 --- a/AsbCloudInfrastructure/Repository/WellOperationRepository.cs +++ b/AsbCloudInfrastructure/Repository/WellOperationRepository.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Data.WellOperation; using AsbCloudApp.Exceptions; using AsbCloudApp.Repositories; diff --git a/AsbCloudInfrastructure/Repository/WellSectionPlanRepository.cs b/AsbCloudInfrastructure/Repository/WellSectionPlanRepository.cs index c9963838..0f1b7509 100644 --- a/AsbCloudInfrastructure/Repository/WellSectionPlanRepository.cs +++ b/AsbCloudInfrastructure/Repository/WellSectionPlanRepository.cs @@ -15,72 +15,72 @@ using Npgsql; namespace AsbCloudInfrastructure.Repository; public class WellSectionPlanRepository : CrudWellRelatedRepositoryBase, - IWellSectionPlanRepository + IWellSectionPlanRepository { - public WellSectionPlanRepository(IAsbCloudDbContext context) - : base(context, query => query.Include(w => w.SectionType)) - { - } + public WellSectionPlanRepository(IAsbCloudDbContext context) + : base(context, query => query.Include(w => w.SectionType)) + { + } - public override async Task InsertAsync(WellSectionPlanDto item, CancellationToken token) - { - var id = 0; + public override async Task InsertAsync(WellSectionPlanDto item, CancellationToken token) + { + var id = 0; - try - { - id = await base.InsertAsync(item, token); - } - catch (DbUpdateException ex) - { - if (ex.InnerException is PostgresException pgException) - HandlePostgresException(pgException, item); - else - throw; - } + try + { + id = await base.InsertAsync(item, token); + } + catch (DbUpdateException ex) + { + if (ex.InnerException is PostgresException pgException) + HandlePostgresException(pgException, item); + else + throw; + } - return id; - } + return id; + } - public override async Task UpdateAsync(WellSectionPlanDto item, CancellationToken token) - { - var id = 0; + public override async Task UpdateAsync(WellSectionPlanDto item, CancellationToken token) + { + var id = 0; - try - { - id = await base.UpdateAsync(item, token); - } - catch (DbUpdateException ex) - { - if (ex.InnerException is PostgresException pgException) - HandlePostgresException(pgException, item); - else - throw; - } + try + { + id = await base.UpdateAsync(item, token); + } + catch (DbUpdateException ex) + { + if (ex.InnerException is PostgresException pgException) + HandlePostgresException(pgException, item); + else + throw; + } - return id; - } + return id; + } - public async Task> GetWellSectionTypesAsync(int idWell, CancellationToken cancellationToken) - { - var query = from wellSectionType in dbContext.WellSectionTypes - join wellSectionPlan in dbContext.WellSectionsPlan on wellSectionType.Id equals wellSectionPlan.IdSectionType - where wellSectionPlan.IdWell == idWell - orderby wellSectionType.Order - select wellSectionType; + public async Task> GetWellSectionTypesAsync(int idWell, CancellationToken cancellationToken) + { + var query = from wellSectionType in dbContext.WellSectionTypes + join wellSectionPlan in dbContext.WellSectionsPlan on wellSectionType.Id equals wellSectionPlan.IdSectionType + where wellSectionPlan.IdWell == idWell + orderby wellSectionType.Order + select wellSectionType; - IEnumerable entities = await query.ToArrayAsync(cancellationToken); + IEnumerable entities = await query.ToArrayAsync(cancellationToken); - if (!entities.Any()) - entities = await dbContext.WellSectionTypes.OrderBy(w => w.Order).ToArrayAsync(cancellationToken); + if (!entities.Any()) + entities = await dbContext.WellSectionTypes.OrderBy(w => w.Order).ToArrayAsync(cancellationToken); - return entities.Select(w => w.Adapt()); - } - - private static void HandlePostgresException(PostgresException pgException, WellSectionPlanDto wellSectionPlan) - { - if (pgException.SqlState == PostgresErrorCodes.UniqueViolation) - throw new ArgumentInvalidException($"Секция уже добавлена в конструкцию скважины", - nameof(wellSectionPlan.IdSectionType)); + return entities.Select(w => w.Adapt()); + } + + private static void HandlePostgresException(PostgresException pgException, WellSectionPlanDto wellSectionPlan) + { + if (pgException.SqlState == PostgresErrorCodes.UniqueViolation) + throw new ArgumentInvalidException($"Секция уже добавлена в конструкцию скважины", + nameof(wellSectionPlan.IdSectionType)); - } + } } \ No newline at end of file diff --git a/AsbCloudInfrastructure/Repository/WitsRecordRepository.cs b/AsbCloudInfrastructure/Repository/WitsRecordRepository.cs index 4b0906ec..46ea461a 100644 --- a/AsbCloudInfrastructure/Repository/WitsRecordRepository.cs +++ b/AsbCloudInfrastructure/Repository/WitsRecordRepository.cs @@ -1,4 +1,5 @@ -using AsbCloudApp.Services; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; using AsbCloudDb.Model; using Mapster; using Microsoft.EntityFrameworkCore; @@ -20,7 +21,7 @@ namespace AsbCloudInfrastructure.Repository private readonly IAsbCloudDbContext db; private readonly ITelemetryService telemetryService; - private static readonly ConcurrentDictionary cache = new (); + private static readonly ConcurrentDictionary cache = new(); public WitsRecordRepository(IAsbCloudDbContext db, ITelemetryService telemetryService) { @@ -58,6 +59,33 @@ namespace AsbCloudInfrastructure.Repository return data.Select(d => Convert(d, timezoneHours)); } + private IQueryable BuildQuery(TelemetryPartDeleteRequest request) + { + var query = db.Set() + .Where(o => o.IdTelemetry == request.IdTelemetry); + + if (request.LeDate is not null) + { + var leDate = request.LeDate.Value.ToUniversalTime(); + query = query.Where(o => o.DateTime <= leDate); + } + + if (request.GeDate is not null) + { + var geDate = request.GeDate.Value.ToUniversalTime(); + query = query.Where(o => o.DateTime >= geDate); + } + + return query; + } + + public async Task DeleteAsync(TelemetryPartDeleteRequest request, CancellationToken token) + { + var query = BuildQuery(request); + dbset.RemoveRange(query); + return await db.SaveChangesAsync(token); + } + public TDto? GetLastOrDefault(int idTelemetry) => cache.GetValueOrDefault(idTelemetry); @@ -66,7 +94,7 @@ namespace AsbCloudInfrastructure.Repository if (!dtos.Any()) return; - cache.AddOrUpdate(idTelemetry, dtos.Last(), (_,_) => dtos.OrderBy(r => r.DateTime).Last()); + cache.AddOrUpdate(idTelemetry, dtos.Last(), (_, _) => dtos.OrderBy(r => r.DateTime).Last()); var timezoneHours = telemetryService.GetTimezone(idTelemetry).Hours; var entities = dtos @@ -81,7 +109,7 @@ namespace AsbCloudInfrastructure.Repository .Select(e => e.DateTime) .OrderBy(d => d) .ToArrayAsync(token); - + foreach (var entity in entities) { if (!existingEntities.Any(e => e == entity.DateTime)) @@ -101,9 +129,9 @@ namespace AsbCloudInfrastructure.Repository (dt.Millisecond + random.Next(1, 283)) % 1000, dt.Offset); dbset.Add(entity); - } + } } - + await db.SaveChangesAsync(token); } @@ -126,8 +154,8 @@ namespace AsbCloudInfrastructure.Repository { var entity = dto.Adapt(); entity.Recid = GetRecId(dto); - entity.IdTelemetry = idTelemetry; - entity.DateTime = dto.DateTime.ToUtcDateTimeOffset(timezoneHours); + entity.IdTelemetry = idTelemetry; + entity.DateTime = dto.DateTime.ToUtcDateTimeOffset(timezoneHours); return entity; } diff --git a/AsbCloudInfrastructure/Services/AuthService.cs b/AsbCloudInfrastructure/Services/AuthService.cs index d469ab54..91b6f22b 100644 --- a/AsbCloudInfrastructure/Services/AuthService.cs +++ b/AsbCloudInfrastructure/Services/AuthService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.User; +using AsbCloudApp.Data.User; using AsbCloudApp.Exceptions; using AsbCloudApp.Repositories; using AsbCloudApp.Services; diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportExportService.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportExportService.cs index 05831ab1..52d2c5db 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportExportService.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportExportService.cs @@ -18,238 +18,238 @@ namespace AsbCloudInfrastructure.Services.DailyReport; public class DailyReportExportService : IDailyReportExportService { - private const int rowStartScheduleBlock = 20; - private const int rowStartSubsystemBlock = 26; - private const int rowStartFactWellOperationBlock = 39; - private const int rowStartTimeBalanceBlock = 62; - private const int rowStartProcessMapWellDrillingBlock = 68; + private const int rowStartScheduleBlock = 20; + private const int rowStartSubsystemBlock = 26; + private const int rowStartFactWellOperationBlock = 39; + private const int rowStartTimeBalanceBlock = 62; + private const int rowStartProcessMapWellDrillingBlock = 68; - private const int columnTimeBalanceDurationPlan = 3; - private const int columnTimeBalanceDurationFact = 6; - private const int columnTimeBalanceReasonDeviation = 8; - private const int columnTimeBalanceDrillingDeviationPerSection = 10; - private const int columnTimeBalanceDrillingDeviationPerDay = 11; + private const int columnTimeBalanceDurationPlan = 3; + private const int columnTimeBalanceDurationFact = 6; + private const int columnTimeBalanceReasonDeviation = 8; + private const int columnTimeBalanceDrillingDeviationPerSection = 10; + private const int columnTimeBalanceDrillingDeviationPerDay = 11; - private const int columnSheduleDriller = 3; - private const int columnSheduleShiftStart = 7; - private const int columnSheduleShiftEnd = 8; + private const int columnScheduleDriller = 3; + private const int columnScheduleShiftStart = 7; + private const int columnScheduleShiftEnd = 8; - private const int columnSubsystemName = 2; - private const int columnUseSubsystemPerDayUsedTimeHours = 3; - private const int columnUseSubsystemPerDaySumDepthInterval = 4; - private const int columnUseSubsystemPerDayKUsage = 5; + private const int columnSubsystemName = 2; + private const int columnUseSubsystemPerDayUsedTimeHours = 3; + private const int columnUseSubsystemPerDaySumDepthInterval = 4; + private const int columnUseSubsystemPerDayKUsage = 5; - private const int columnUseSubsystemPerWellUsedTimeHours = 6; - private const int columnUseSubsystemPerWellSumDepthInterval = 7; - private const int columnUseSubsystemPerWellKUsage = 8; + private const int columnUseSubsystemPerWellUsedTimeHours = 6; + private const int columnUseSubsystemPerWellSumDepthInterval = 7; + private const int columnUseSubsystemPerWellKUsage = 8; - private const int columnProcessMapWellDrillingBlockDrillingMode = 2; - private const int columnProcessMapWellDrillingBlockWellBoreDepth = 3; - private const int columnProcessMapWellDrillingBlockMechDrillingHours = 4; - private const int columnProcessMapWellDrillingBlockRopPlan = 5; - private const int columnProcessMapWellDrillingBlockRopFact = 6; + private const int columnProcessMapWellDrillingBlockDrillingMode = 2; + private const int columnProcessMapWellDrillingBlockWellBoreDepth = 3; + private const int columnProcessMapWellDrillingBlockMechDrillingHours = 4; + private const int columnProcessMapWellDrillingBlockRopPlan = 5; + private const int columnProcessMapWellDrillingBlockRopFact = 6; - private const int columnWellOperationCategory = 2; - private const int columnWellOperationDurationHours = 4; + private const int columnWellOperationCategory = 2; + private const int columnWellOperationDurationHours = 4; - private const string cellCustomer = "C2"; - private const string cellContractor = "C3"; - private const string cellDeposit = "C5"; - private const string cellCluster = "C6"; - private const string cellWellCaption = "C7"; - private const string cellWellType = "C8"; - private const string cellDate = "C12"; - private const string cellDepthStart = "C13"; - private const string cellDepthEnd = "D13"; + private const string cellCustomer = "C2"; + private const string cellContractor = "C3"; + private const string cellDeposit = "C5"; + private const string cellCluster = "C6"; + private const string cellWellCaption = "C7"; + private const string cellWellType = "C8"; + private const string cellDate = "C12"; + private const string cellDepthStart = "C13"; + private const string cellDepthEnd = "D13"; - private const string cellTrajectoryBlockWellboreDepth = "B17"; - private const string cellTrajectoryBlockVerticalDepth = "C17"; - private const string cellTrajectoryBlockZenithAngle = "D17"; - private const string cellTrajectoryBlockAzimuthGeo = "E17"; + private const string cellTrajectoryBlockWellboreDepth = "B17"; + private const string cellTrajectoryBlockVerticalDepth = "C17"; + private const string cellTrajectoryBlockZenithAngle = "D17"; + private const string cellTrajectoryBlockAzimuthGeo = "E17"; - private const string cellTimeBalanceBlockSection = "C60"; - private const string cellTimeBalanceBlockWellDepthPlan = "C61"; - private const string cellSectionDrillingHours = "F77"; - private const string cellTimeBalanceBlockWellDepthFact = "F78"; - private const string cellTimeBalanceBlockWellOperationSlipsTimeCount = "F79"; + private const string cellTimeBalanceBlockSection = "C60"; + private const string cellTimeBalanceBlockWellDepthPlan = "C61"; + private const string cellSectionDrillingHours = "F77"; + private const string cellTimeBalanceBlockWellDepthFact = "F78"; + private const string cellTimeBalanceBlockWellOperationSlipsTimeCount = "F79"; - private const string cellSubsystemComment = "D35"; - private const string cellSubsystemTvgLagDays = "F80"; - private const string cellSubsystemMeasurementsPerDay = "F81"; - private const string cellSubsystemWellbore = "C9"; - private const string cellSubsystemTotalRopPlan = "E70"; + private const string cellSubsystemComment = "D35"; + private const string cellSubsystemTvgLagDays = "F80"; + private const string cellSubsystemMeasurementsPerDay = "F81"; + private const string cellSubsystemWellbore = "C9"; + private const string cellSubsystemTotalRopPlan = "E70"; - private const string cellSignDrillingMaster = "C85"; - private const string cellSignSupervisor = "C86"; + private const string cellSignDrillingMaster = "C85"; + private const string cellSignSupervisor = "C86"; - private readonly IDailyReportService dailyReportService; + private readonly IDailyReportService dailyReportService; - public DailyReportExportService(IDailyReportService dailyReportService) + public DailyReportExportService(IDailyReportService dailyReportService) + { + this.dailyReportService = dailyReportService; + } + + public async Task<(string FileName, Stream File)> ExportAsync(int idWell, DateOnly dailyReportDate, CancellationToken cancellationToken) + { + var dailyReport = await dailyReportService.GetAsync(idWell, dailyReportDate, cancellationToken); + + var stream = GenerateFile(dailyReport); + + var fileName = $"Суточный_рапорт_по_скважине_{dailyReport.WellCaption}_куст_{dailyReport.Cluster}_от_{dailyReport.Date:yy-MM-dd}.xlsx"; + + return (fileName, stream); + } + + private static MemoryStream GenerateFile(DailyReportDto dailyReport) { - this.dailyReportService = dailyReportService; - } - - public async Task<(string FileName, Stream File)> ExportAsync(int idWell, DateOnly dailyReportDate, CancellationToken cancellationToken) - { - var dailyReport = await dailyReportService.GetAsync(idWell, dailyReportDate, cancellationToken); - - var stream = await GenerateFileAsync(dailyReport, cancellationToken); - - var fileName = $"Суточный_рапорт_по_скважине_{dailyReport.WellCaption}_куст_{dailyReport.Cluster}_от_{dailyReport.Date:yy-MM-dd}.xlsx"; - - return (fileName, stream); - } - - private static async Task GenerateFileAsync(DailyReportDto dailyReport, CancellationToken cancellationToken) - { - using var excelTemplateStream = await Assembly + using var excelTemplateStream = Assembly .GetExecutingAssembly() - .GetTemplateCopyStreamAsync("DailyReportTemplate.xlsx", cancellationToken); + .GetTemplateCopyStream("DailyReportTemplate.xlsx"); - using var workbook = new XLWorkbook(excelTemplateStream); + using var workbook = new XLWorkbook(excelTemplateStream); - AddDailyReportToWorkBook(workbook, dailyReport); + AddDailyReportToWorkBook(workbook, dailyReport); - var memoryStream = new MemoryStream(); - workbook.SaveAs(memoryStream, new SaveOptions { }); - memoryStream.Seek(0, SeekOrigin.Begin); - return memoryStream; - } + var memoryStream = new MemoryStream(); + workbook.SaveAs(memoryStream, new SaveOptions { }); + memoryStream.Seek(0, SeekOrigin.Begin); + return memoryStream; + } - private static void AddDailyReportToWorkBook(IXLWorkbook workbook, DailyReportDto dailyReport) - { - const string sheetName = "Суточный отчёт"; + private static void AddDailyReportToWorkBook(IXLWorkbook workbook, DailyReportDto dailyReport) + { + const string sheetName = "Суточный отчёт"; - var sheet = workbook.GetWorksheet(sheetName);; + var sheet = workbook.GetWorksheet(sheetName);; - sheet.Cell(cellCustomer).SetCellValue(dailyReport.Customer); - sheet.Cell(cellContractor).SetCellValue(dailyReport.Contractor); - sheet.Cell(cellDeposit).SetCellValue(dailyReport.Deposit); - sheet.Cell(cellCluster).SetCellValue(dailyReport.Cluster); - sheet.Cell(cellWellCaption).SetCellValue(dailyReport.WellCaption); - sheet.Cell(cellWellType).SetCellValue(dailyReport.WellType); - sheet.Cell(cellDate).SetCellValue(dailyReport.Date); - sheet.Cell(cellDepthStart).SetCellValue(dailyReport.DepthStart); - sheet.Cell(cellDepthEnd).SetCellValue(dailyReport.DepthEnd); + sheet.Cell(cellCustomer).SetCellValue(dailyReport.Customer); + sheet.Cell(cellContractor).SetCellValue(dailyReport.Contractor); + sheet.Cell(cellDeposit).SetCellValue(dailyReport.Deposit); + sheet.Cell(cellCluster).SetCellValue(dailyReport.Cluster); + sheet.Cell(cellWellCaption).SetCellValue(dailyReport.WellCaption); + sheet.Cell(cellWellType).SetCellValue(dailyReport.WellType); + sheet.Cell(cellDate).SetCellValue(dailyReport.Date); + sheet.Cell(cellDepthStart).SetCellValue(dailyReport.DepthStart); + sheet.Cell(cellDepthEnd).SetCellValue(dailyReport.DepthEnd); - if (dailyReport.TimeBalanceBlock is not null) - AddTimeBalanceBlockToSheet(sheet, dailyReport.TimeBalanceBlock); + if (dailyReport.TimeBalanceBlock is not null) + AddTimeBalanceBlockToSheet(sheet, dailyReport.TimeBalanceBlock); - if (dailyReport.SubsystemBlock is not null) - AddSubsystemBlockToSheet(sheet, dailyReport.SubsystemBlock); + if (dailyReport.SubsystemBlock is not null) + AddSubsystemBlockToSheet(sheet, dailyReport.SubsystemBlock); - if (dailyReport.SignBlock is not null) - AddSignBlockToSheet(sheet, dailyReport.SignBlock); + if (dailyReport.SignBlock is not null) + AddSignBlockToSheet(sheet, dailyReport.SignBlock); - AddTrajectoryBlockToSheet(sheet, dailyReport.TrajectoryBlock); - AddScheduleBlockToSheet(sheet, dailyReport.ScheduleBlock); - AddProcessMapWellDrillingBlockToSheet(sheet, dailyReport.ProcessMapWellDrillingBlock); - AddFactWellOperationBlockToSheet(sheet, dailyReport.FactWellOperationBlock); - } + AddTrajectoryBlockToSheet(sheet, dailyReport.TrajectoryBlock); + AddScheduleBlockToSheet(sheet, dailyReport.ScheduleBlock); + AddProcessMapWellDrillingBlockToSheet(sheet, dailyReport.ProcessMapWellDrillingBlock); + AddFactWellOperationBlockToSheet(sheet, dailyReport.FactWellOperationBlock); + } - private static void AddTrajectoryBlockToSheet(IXLWorksheet sheet, TrajectoryBlockDto trajectoryBlock) - { - sheet.Cell(cellTrajectoryBlockWellboreDepth).SetCellValue(trajectoryBlock.WellboreDepth); - sheet.Cell(cellTrajectoryBlockVerticalDepth).SetCellValue(trajectoryBlock.VerticalDepth); - sheet.Cell(cellTrajectoryBlockZenithAngle).SetCellValue(trajectoryBlock.ZenithAngle); - sheet.Cell(cellTrajectoryBlockAzimuthGeo).SetCellValue(trajectoryBlock.AzimuthGeo); - } + private static void AddTrajectoryBlockToSheet(IXLWorksheet sheet, TrajectoryBlockDto trajectoryBlock) + { + sheet.Cell(cellTrajectoryBlockWellboreDepth).SetCellValue(trajectoryBlock.WellboreDepth); + sheet.Cell(cellTrajectoryBlockVerticalDepth).SetCellValue(trajectoryBlock.VerticalDepth); + sheet.Cell(cellTrajectoryBlockZenithAngle).SetCellValue(trajectoryBlock.ZenithAngle); + sheet.Cell(cellTrajectoryBlockAzimuthGeo).SetCellValue(trajectoryBlock.AzimuthGeo); + } - private static void AddTimeBalanceBlockToSheet(IXLWorksheet sheet, TimeBalanceBlockDto timeBalanceBlock) - { - var rowCurrent = rowStartTimeBalanceBlock; + private static void AddTimeBalanceBlockToSheet(IXLWorksheet sheet, TimeBalanceBlockDto timeBalanceBlock) + { + var rowCurrent = rowStartTimeBalanceBlock; - foreach (var wellOperation in timeBalanceBlock.WellOperations.OrderBy(w => w.IdWellOperation)) - { - sheet.Cell(rowCurrent, columnTimeBalanceDurationPlan).SetCellValue(wellOperation.DurationHours.Plan); - sheet.Cell(rowCurrent, columnTimeBalanceDurationFact).SetCellValue(wellOperation.DurationHours.Fact); - sheet.Cell(rowCurrent, columnTimeBalanceReasonDeviation).SetCellValue(wellOperation.ReasonDeviation); - sheet.Cell(rowCurrent, columnTimeBalanceDrillingDeviationPerSection).SetCellValue(wellOperation.DrillingDeviationPerSection); - sheet.Cell(rowCurrent, columnTimeBalanceDrillingDeviationPerDay).SetCellValue(wellOperation.DrillingDeviationPerDay); + foreach (var wellOperation in timeBalanceBlock.WellOperations.OrderBy(w => w.IdWellOperation)) + { + sheet.Cell(rowCurrent, columnTimeBalanceDurationPlan).SetCellValue(wellOperation.DurationHours.Plan); + sheet.Cell(rowCurrent, columnTimeBalanceDurationFact).SetCellValue(wellOperation.DurationHours.Fact); + sheet.Cell(rowCurrent, columnTimeBalanceReasonDeviation).SetCellValue(wellOperation.ReasonDeviation); + sheet.Cell(rowCurrent, columnTimeBalanceDrillingDeviationPerSection).SetCellValue(wellOperation.DrillingDeviationPerSection); + sheet.Cell(rowCurrent, columnTimeBalanceDrillingDeviationPerDay).SetCellValue(wellOperation.DrillingDeviationPerDay); - rowCurrent++; - } + rowCurrent++; + } - sheet.Cell(cellTimeBalanceBlockSection).SetCellValue(timeBalanceBlock.SectionName); - sheet.Cell(cellTimeBalanceBlockWellDepthPlan).SetCellValue(timeBalanceBlock.WellDepth.Plan); - sheet.Cell(cellTimeBalanceBlockWellDepthFact).SetCellValue(timeBalanceBlock.WellDepth.Fact); - sheet.Cell(cellTimeBalanceBlockWellOperationSlipsTimeCount).SetCellValue(timeBalanceBlock.WellOperationSlipsTimeCount); - } + sheet.Cell(cellTimeBalanceBlockSection).SetCellValue(timeBalanceBlock.SectionName); + sheet.Cell(cellTimeBalanceBlockWellDepthPlan).SetCellValue(timeBalanceBlock.WellDepth.Plan); + sheet.Cell(cellTimeBalanceBlockWellDepthFact).SetCellValue(timeBalanceBlock.WellDepth.Fact); + sheet.Cell(cellTimeBalanceBlockWellOperationSlipsTimeCount).SetCellValue(timeBalanceBlock.WellOperationSlipsTimeCount); + } private static void AddSubsystemBlockToSheet(IXLWorksheet sheet, SubsystemBlockDto subsystemBlock) { - var rowСurrent = rowStartSubsystemBlock; + var rowCurrent = rowStartSubsystemBlock; foreach (var subsystem in subsystemBlock.Subsystems) { - sheet.Cell(rowСurrent, columnSubsystemName).SetCellValue(subsystem.Name); - sheet.Cell(rowСurrent, columnUseSubsystemPerDayUsedTimeHours).SetCellValue(subsystem.UsagePerDay?.UsedTimeHours); - sheet.Cell(rowСurrent, columnUseSubsystemPerDaySumDepthInterval).SetCellValue(subsystem.UsagePerDay?.SumDepthInterval); - sheet.Cell(rowСurrent, columnUseSubsystemPerDayKUsage).SetCellValue(subsystem.UsagePerDay?.KUsage * 100); + sheet.Cell(rowCurrent, columnSubsystemName).SetCellValue(subsystem.Name); + sheet.Cell(rowCurrent, columnUseSubsystemPerDayUsedTimeHours).SetCellValue(subsystem.UsagePerDay?.UsedTimeHours); + sheet.Cell(rowCurrent, columnUseSubsystemPerDaySumDepthInterval).SetCellValue(subsystem.UsagePerDay?.SumDepthInterval); + sheet.Cell(rowCurrent, columnUseSubsystemPerDayKUsage).SetCellValue(subsystem.UsagePerDay?.KUsage * 100); - sheet.Cell(rowСurrent, columnUseSubsystemPerWellUsedTimeHours).SetCellValue(subsystem.UsagePerWell?.UsedTimeHours); - sheet.Cell(rowСurrent, columnUseSubsystemPerWellSumDepthInterval).SetCellValue(subsystem.UsagePerWell?.SumDepthInterval); - sheet.Cell(rowСurrent, columnUseSubsystemPerWellKUsage).SetCellValue(subsystem.UsagePerWell?.KUsage * 100); + sheet.Cell(rowCurrent, columnUseSubsystemPerWellUsedTimeHours).SetCellValue(subsystem.UsagePerWell?.UsedTimeHours); + sheet.Cell(rowCurrent, columnUseSubsystemPerWellSumDepthInterval).SetCellValue(subsystem.UsagePerWell?.SumDepthInterval); + sheet.Cell(rowCurrent, columnUseSubsystemPerWellKUsage).SetCellValue(subsystem.UsagePerWell?.KUsage * 100); - rowСurrent++; + rowCurrent++; } - sheet.Cell(cellSubsystemComment).SetCellValue(subsystemBlock.Comment); - sheet.Cell(cellSubsystemTvgLagDays).SetCellValue(subsystemBlock.TvgLagDays); - sheet.Cell(cellSubsystemMeasurementsPerDay).SetCellValue(subsystemBlock.MeasurementsPerDay); - sheet.Cell(cellSubsystemWellbore).SetCellValue(subsystemBlock.Wellbore); - sheet.Cell(cellSubsystemTotalRopPlan).SetCellValue(subsystemBlock.TotalRopPlan); - } + sheet.Cell(cellSubsystemComment).SetCellValue(subsystemBlock.Comment); + sheet.Cell(cellSubsystemTvgLagDays).SetCellValue(subsystemBlock.TvgLagDays); + sheet.Cell(cellSubsystemMeasurementsPerDay).SetCellValue(subsystemBlock.MeasurementsPerDay); + sheet.Cell(cellSubsystemWellbore).SetCellValue(subsystemBlock.Wellbore); + sheet.Cell(cellSubsystemTotalRopPlan).SetCellValue(subsystemBlock.TotalRopPlan); + } - private static void AddScheduleBlockToSheet(IXLWorksheet sheet, IEnumerable scheduleBlock) - { - var rowCurrent = rowStartScheduleBlock; + private static void AddScheduleBlockToSheet(IXLWorksheet sheet, IEnumerable scheduleBlock) + { + var rowCurrent = rowStartScheduleBlock; foreach (var schedule in scheduleBlock.OrderBy(s => s.ShiftStart)) { - sheet.Cell(rowCurrent, columnSheduleDriller).SetCellValue($"{schedule.Surname} {schedule.Name} {schedule.Patronymic}"); - sheet.Cell(rowCurrent, columnSheduleShiftStart).SetCellValue(schedule.ShiftStart); - sheet.Cell(rowCurrent, columnSheduleShiftEnd).SetCellValue(schedule.ShiftEnd); + sheet.Cell(rowCurrent, columnScheduleDriller).SetCellValue($"{schedule.Surname} {schedule.Name} {schedule.Patronymic}"); + sheet.Cell(rowCurrent, columnScheduleShiftStart).SetCellValue(schedule.ShiftStart); + sheet.Cell(rowCurrent, columnScheduleShiftEnd).SetCellValue(schedule.ShiftEnd); - rowCurrent++; - } - } + rowCurrent++; + } + } - private static void AddProcessMapWellDrillingBlockToSheet(IXLWorksheet sheet, - IEnumerable processMapWellDrillingBlock) - { - var rowCurrent = rowStartProcessMapWellDrillingBlock; + private static void AddProcessMapWellDrillingBlockToSheet(IXLWorksheet sheet, + IEnumerable processMapWellDrillingBlock) + { + var rowCurrent = rowStartProcessMapWellDrillingBlock; - foreach (var processMapWellDrilling in processMapWellDrillingBlock.OrderBy(p => p.DrillingMode)) - { - sheet.Cell(rowCurrent, columnProcessMapWellDrillingBlockDrillingMode).SetCellValue(processMapWellDrilling.DrillingMode); - sheet.Cell(rowCurrent, columnProcessMapWellDrillingBlockWellBoreDepth).SetCellValue(processMapWellDrilling.WellBoreDepth); - sheet.Cell(rowCurrent, columnProcessMapWellDrillingBlockMechDrillingHours).SetCellValue(processMapWellDrilling.MechDrillingHours); - sheet.Cell(rowCurrent, columnProcessMapWellDrillingBlockRopPlan).SetCellValue(processMapWellDrilling.Rop.Plan); - sheet.Cell(rowCurrent, columnProcessMapWellDrillingBlockRopFact).SetCellValue(processMapWellDrilling.Rop.Fact); + foreach (var processMapWellDrilling in processMapWellDrillingBlock.OrderBy(p => p.DrillingMode)) + { + sheet.Cell(rowCurrent, columnProcessMapWellDrillingBlockDrillingMode).SetCellValue(processMapWellDrilling.DrillingMode); + sheet.Cell(rowCurrent, columnProcessMapWellDrillingBlockWellBoreDepth).SetCellValue(processMapWellDrilling.WellBoreDepth); + sheet.Cell(rowCurrent, columnProcessMapWellDrillingBlockMechDrillingHours).SetCellValue(processMapWellDrilling.MechDrillingHours); + sheet.Cell(rowCurrent, columnProcessMapWellDrillingBlockRopPlan).SetCellValue(processMapWellDrilling.Rop.Plan); + sheet.Cell(rowCurrent, columnProcessMapWellDrillingBlockRopFact).SetCellValue(processMapWellDrilling.Rop.Fact); - rowCurrent++; - } - } + rowCurrent++; + } + } - private static void AddFactWellOperationBlockToSheet(IXLWorksheet sheet, WellOperationBlockDto factWellOperationBlock) - { - var rowCurrent = rowStartFactWellOperationBlock; - - sheet.Cell(cellSectionDrillingHours).SetCellValue(factWellOperationBlock.SectionDrillingHours); - - foreach (var factOperation in factWellOperationBlock.WellOperations.OrderBy(w => w.CategoryName)) - { - sheet.Cell(rowCurrent, columnWellOperationCategory).SetCellValue(factOperation.CategoryName); - sheet.Cell(rowCurrent, columnWellOperationDurationHours).SetCellValue(factOperation.DurationHours); + private static void AddFactWellOperationBlockToSheet(IXLWorksheet sheet, WellOperationBlockDto factWellOperationBlock) + { + var rowCurrent = rowStartFactWellOperationBlock; + + sheet.Cell(cellSectionDrillingHours).SetCellValue(factWellOperationBlock.SectionDrillingHours); + + foreach (var factOperation in factWellOperationBlock.WellOperations.OrderBy(w => w.CategoryName)) + { + sheet.Cell(rowCurrent, columnWellOperationCategory).SetCellValue(factOperation.CategoryName); + sheet.Cell(rowCurrent, columnWellOperationDurationHours).SetCellValue(factOperation.DurationHours); - rowCurrent++; - } - } + rowCurrent++; + } + } - private static void AddSignBlockToSheet(IXLWorksheet sheet, SignBlockDto signBlock) - { - sheet.Cell(cellSignDrillingMaster).SetCellValue(signBlock.DrillingMaster?.ToString()); - sheet.Cell(cellSignSupervisor).SetCellValue(signBlock.Supervisor?.ToString()); - } + private static void AddSignBlockToSheet(IXLWorksheet sheet, SignBlockDto signBlock) + { + sheet.Cell(cellSignDrillingMaster).SetCellValue(signBlock.DrillingMaster?.ToString()); + sheet.Cell(cellSignSupervisor).SetCellValue(signBlock.Supervisor?.ToString()); + } } \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportService.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportService.cs index 3f498ad9..08ac2420 100644 --- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportService.cs +++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.DailyReport; +using AsbCloudApp.Data.DailyReport; using AsbCloudApp.Exceptions; using AsbCloudApp.Repositories; using AsbCloudApp.Services; @@ -24,360 +24,360 @@ namespace AsbCloudInfrastructure.Services.DailyReport; public class DailyReportService : IDailyReportService { - private readonly IWellService wellService; - private readonly ITrajectoryNnbRepository trajectoryFactNnbRepository; - private readonly IDailyReportRepository dailyReportRepository; - private readonly IScheduleRepository scheduleRepository; - private readonly IWellOperationRepository wellOperationRepository; - private readonly ISubsystemService subsystemService; - private readonly IProcessMapReportDrillingService processMapReportDrillingService; - private readonly IDetectedOperationService detectedOperationService; + private readonly IWellService wellService; + private readonly ITrajectoryNnbRepository trajectoryFactNnbRepository; + private readonly IDailyReportRepository dailyReportRepository; + private readonly IScheduleRepository scheduleRepository; + private readonly IWellOperationRepository wellOperationRepository; + private readonly ISubsystemService subsystemService; + private readonly IProcessMapReportDrillingService processMapReportDrillingService; + private readonly IDetectedOperationService detectedOperationService; - public DailyReportService(IWellService wellService, + public DailyReportService(IWellService wellService, ITrajectoryNnbRepository trajectoryFactNnbRepository, - IDailyReportRepository dailyReportRepository, - IScheduleRepository scheduleRepository, - IWellOperationRepository wellOperationRepository, - ISubsystemService subsystemService, + IDailyReportRepository dailyReportRepository, + IScheduleRepository scheduleRepository, + IWellOperationRepository wellOperationRepository, + ISubsystemService subsystemService, IProcessMapReportDrillingService processMapReportDrillingService, - IDetectedOperationService detectedOperationService) - { - this.wellService = wellService; - this.trajectoryFactNnbRepository = trajectoryFactNnbRepository; - this.dailyReportRepository = dailyReportRepository; - this.scheduleRepository = scheduleRepository; - this.wellOperationRepository = wellOperationRepository; - this.subsystemService = subsystemService; - this.processMapReportDrillingService = processMapReportDrillingService; - this.detectedOperationService = detectedOperationService; - } + IDetectedOperationService detectedOperationService) + { + this.wellService = wellService; + this.trajectoryFactNnbRepository = trajectoryFactNnbRepository; + this.dailyReportRepository = dailyReportRepository; + this.scheduleRepository = scheduleRepository; + this.wellOperationRepository = wellOperationRepository; + this.subsystemService = subsystemService; + this.processMapReportDrillingService = processMapReportDrillingService; + this.detectedOperationService = detectedOperationService; + } - public async Task UpdateOrInsertAsync(int idWell, DateOnly dateDailyReport, int idUser, TBlock editableBlock, - CancellationToken cancellationToken) - where TBlock : ItemInfoDto - { - if (!await IsDateDailyReportInRangeAsync(idWell, dateDailyReport, cancellationToken)) - throw new ArgumentInvalidException(nameof(dateDailyReport), "Невозможно обновить суточный отчёт"); - - var dailyReport = await dailyReportRepository.GetOrDefaultAsync(idWell, dateDailyReport, cancellationToken) ?? - new DailyReportDto - { - IdWell = idWell, - Date = dateDailyReport - }; + public async Task UpdateOrInsertAsync(int idWell, DateOnly dateDailyReport, int idUser, TBlock editableBlock, + CancellationToken cancellationToken) + where TBlock : ItemInfoDto + { + if (!await IsDateDailyReportInRangeAsync(idWell, dateDailyReport, cancellationToken)) + throw new ArgumentInvalidException(nameof(dateDailyReport), "Невозможно обновить суточный отчёт"); + + var dailyReport = await dailyReportRepository.GetOrDefaultAsync(idWell, dateDailyReport, cancellationToken) ?? + new DailyReportDto + { + IdWell = idWell, + Date = dateDailyReport + }; - switch (editableBlock) - { - case SubsystemBlockDto subsystemBlock: - dailyReport.SubsystemBlock = subsystemBlock; - break; - case TimeBalanceBlockDto timeBalanceBlock: - dailyReport.TimeBalanceBlock = timeBalanceBlock; - break; - case SignBlockDto signBlock: - dailyReport.SignBlock = signBlock; - break; - default: - throw new InvalidOperationException("Unexpected type of editableBlock"); - } + switch (editableBlock) + { + case SubsystemBlockDto subsystemBlock: + dailyReport.SubsystemBlock = subsystemBlock; + break; + case TimeBalanceBlockDto timeBalanceBlock: + dailyReport.TimeBalanceBlock = timeBalanceBlock; + break; + case SignBlockDto signBlock: + dailyReport.SignBlock = signBlock; + break; + default: + throw new InvalidOperationException("Unexpected type of editableBlock"); + } - editableBlock.IdUser = idUser; - editableBlock.LastUpdateDate = DateTime.UtcNow; + editableBlock.IdUser = idUser; + editableBlock.LastUpdateDate = DateTime.UtcNow; - dailyReport.DateLastUpdate = DateTimeOffset.UtcNow; + dailyReport.DateLastUpdate = DateTimeOffset.UtcNow; - if (dailyReport.Id == 0) - return await dailyReportRepository.InsertAsync(dailyReport, cancellationToken); - - return await dailyReportRepository.UpdateAsync(dailyReport, cancellationToken); - } + if (dailyReport.Id == 0) + return await dailyReportRepository.InsertAsync(dailyReport, cancellationToken); + + return await dailyReportRepository.UpdateAsync(dailyReport, cancellationToken); + } - public async Task GetAsync(int idWell, DateOnly dateDailyReport, CancellationToken cancellationToken) - { - var well = await wellService.GetOrDefaultAsync(idWell, cancellationToken) - ?? throw new ArgumentNullException(nameof(idWell), $"Скважина с Id: {idWell} не найдена"); + public async Task GetAsync(int idWell, DateOnly dateDailyReport, CancellationToken cancellationToken) + { + var well = await wellService.GetOrDefaultAsync(idWell, cancellationToken) + ?? throw new ArgumentNullException(nameof(idWell), $"Скважина с Id: {idWell} не найдена"); if (!await IsDateDailyReportInRangeAsync(idWell, dateDailyReport, cancellationToken)) - throw new ArgumentInvalidException(nameof(dateDailyReport), "Невозможно получить суточный отчёт"); - + throw new ArgumentInvalidException(nameof(dateDailyReport), "Невозможно получить суточный отчёт"); + - var dailyReport = await dailyReportRepository.GetOrDefaultAsync(idWell, dateDailyReport, cancellationToken) ?? new DailyReportDto - { - Date = dateDailyReport, - IdWell = well.Id - }; + var dailyReport = await dailyReportRepository.GetOrDefaultAsync(idWell, dateDailyReport, cancellationToken) ?? new DailyReportDto + { + Date = dateDailyReport, + IdWell = well.Id + }; var offsetHours = wellService.GetTimezone(dailyReport.IdWell).Hours; var geDate = new DateTimeOffset(dailyReport.Date, TimeOnly.MinValue, TimeSpan.FromHours(offsetHours)); - var leDate = new DateTimeOffset(dailyReport.Date.AddDays(1), TimeOnly.MinValue, TimeSpan.FromHours(offsetHours)); + var leDate = new DateTimeOffset(dailyReport.Date.AddDays(1), TimeOnly.MinValue, TimeSpan.FromHours(offsetHours)); - var factOperationRequest = new WellOperationRequest(new []{ idWell }) - { - OperationType = WellOperation.IdOperationTypeFact, - GeDate = geDate, - LeDate = leDate - }; + var factOperationRequest = new WellOperationRequest(new []{ idWell }) + { + OperationType = WellOperation.IdOperationTypeFact, + GeDate = geDate, + LeDate = leDate + }; - var factWellOperations = (await wellOperationRepository.GetAsync(factOperationRequest, cancellationToken)) - .OrderBy(o => o.DateStart) - .ThenBy(o => o.DepthStart); + var factWellOperations = (await wellOperationRepository.GetAsync(factOperationRequest, cancellationToken)) + .OrderBy(o => o.DateStart) + .ThenBy(o => o.DepthStart); - dailyReport.WellCaption = well.Caption; - dailyReport.WellType = well.WellType; - dailyReport.Cluster = well.Cluster; - dailyReport.Deposit = well.Deposit; - dailyReport.Customer = well.Companies.FirstOrDefault(c => c.IdCompanyType == 1)?.Caption; - dailyReport.Contractor = well.Companies.FirstOrDefault(c => c.IdCompanyType == 2)?.Caption; - dailyReport.DepthStart = factWellOperations.FirstOrDefault()?.DepthStart; - dailyReport.DepthEnd = factWellOperations.LastOrDefault()?.DepthEnd; + dailyReport.WellCaption = well.Caption; + dailyReport.WellType = well.WellType; + dailyReport.Cluster = well.Cluster; + dailyReport.Deposit = well.Deposit; + dailyReport.Customer = well.Companies.FirstOrDefault(c => c.IdCompanyType == 1)?.Caption; + dailyReport.Contractor = well.Companies.FirstOrDefault(c => c.IdCompanyType == 2)?.Caption; + dailyReport.DepthStart = factWellOperations.FirstOrDefault()?.DepthStart; + dailyReport.DepthEnd = factWellOperations.LastOrDefault()?.DepthEnd; - await UpdateTimeBalanceBlockAsync(dailyReport, factWellOperations, geDate, leDate, cancellationToken); - await UpdateSubsystemBlockAsync(dailyReport, geDate, leDate, cancellationToken); - - await AddTrajectoryBlockAsync(dailyReport, geDate, leDate, cancellationToken); - await AddScheduleBlockAsync(dailyReport, geDate, cancellationToken); - await AddProcessMapWellDrillingBlockAsync(dailyReport, geDate, leDate, cancellationToken); + await UpdateTimeBalanceBlockAsync(dailyReport, factWellOperations, geDate, leDate, cancellationToken); + await UpdateSubsystemBlockAsync(dailyReport, geDate, leDate, cancellationToken); + + await AddTrajectoryBlockAsync(dailyReport, geDate, leDate, cancellationToken); + await AddScheduleBlockAsync(dailyReport, geDate, cancellationToken); + await AddProcessMapWellDrillingBlockAsync(dailyReport, geDate, leDate, cancellationToken); - AddFactWellOperationBlock(dailyReport, factWellOperations); + AddFactWellOperationBlock(dailyReport, factWellOperations); - return dailyReport; - } + return dailyReport; + } - public async Task> GetAsync(int idWell, FileReportRequest request, - CancellationToken cancellationToken) - { - var result = new PaginationContainer - { - Skip = request.Skip ?? 0, - Take = request.Take ?? 10, - Items = Enumerable.Empty() - }; + public async Task> GetAsync(int idWell, FileReportRequest request, + CancellationToken cancellationToken) + { + var result = new PaginationContainer + { + Skip = request.Skip ?? 0, + Take = request.Take ?? 10, + Items = Enumerable.Empty() + }; - var datesRange = await wellOperationRepository.GetDatesRangeAsync(idWell, WellOperation.IdOperationTypeFact, cancellationToken); + var datesRange = await wellOperationRepository.GetDatesRangeAsync(idWell, WellOperation.IdOperationTypeFact, cancellationToken); - if (datesRange is null) - return result; + if (datesRange is null) + return result; - var dailyReports = new List(); - TimeSpan offset = wellService.GetTimezone(idWell).Offset; + var dailyReports = new List(); + TimeSpan offset = wellService.GetTimezone(idWell).Offset; if (request.GeDate.HasValue) - { - var startDate = new DateTimeOffset(request.GeDate.Value, TimeOnly.MinValue, offset); + { + var startDate = new DateTimeOffset(request.GeDate.Value, TimeOnly.MinValue, offset); - if (startDate >= datesRange.From) - datesRange.From = startDate; - } + if (startDate >= datesRange.From) + datesRange.From = startDate; + } - if (request.LeDate.HasValue) - { - var finishDate = new DateTimeOffset(request.LeDate.Value, TimeOnly.MinValue, offset); + if (request.LeDate.HasValue) + { + var finishDate = new DateTimeOffset(request.LeDate.Value, TimeOnly.MinValue, offset); - if (finishDate <= datesRange.To) - datesRange.To = finishDate; - } + if (finishDate <= datesRange.To) + datesRange.To = finishDate; + } - result.Count = (datesRange.To.Day - DateTimeOffset.UnixEpoch.Day) - (datesRange.From.Day - DateTimeOffset.UnixEpoch.Day); + result.Count = (datesRange.To.Day - DateTimeOffset.UnixEpoch.Day) - (datesRange.From.Day - DateTimeOffset.UnixEpoch.Day); - var existingDailyReports = await dailyReportRepository.GetAsync(idWell, request, cancellationToken); + var existingDailyReports = await dailyReportRepository.GetAsync(idWell, request, cancellationToken); - var geDateFactWellOperation = datesRange.From.AddDays(result.Skip); - var leDateFactWellOperation = geDateFactWellOperation.AddDays(result.Take); - - var factWellOperationRequest = new WellOperationRequest(new[] { idWell }) - { - OperationType = WellOperation.IdOperationTypeFact, - GeDate = geDateFactWellOperation, - LeDate = leDateFactWellOperation - }; + var geDateFactWellOperation = datesRange.From.AddDays(result.Skip); + var leDateFactWellOperation = geDateFactWellOperation.AddDays(result.Take); + + var factWellOperationRequest = new WellOperationRequest(new[] { idWell }) + { + OperationType = WellOperation.IdOperationTypeFact, + GeDate = geDateFactWellOperation, + LeDate = leDateFactWellOperation + }; - var factWellOperations = await wellOperationRepository.GetAsync(factWellOperationRequest, cancellationToken); + var factWellOperations = await wellOperationRepository.GetAsync(factWellOperationRequest, cancellationToken); - if (request.SortFields?.Contains("DateStart desc") == true) - { - for (var day = result.Skip; day - result.Skip < result.Take && datesRange.To.AddDays(-day) >= datesRange.From; day++) - { - var dateDailyReport = DateOnly.FromDateTime(datesRange.To.AddDays(-day).DateTime); + if (request.SortFields?.Contains("DateStart desc") == true) + { + for (var day = result.Skip; day - result.Skip < result.Take && datesRange.To.AddDays(-day) >= datesRange.From; day++) + { + var dateDailyReport = DateOnly.FromDateTime(datesRange.To.AddDays(-day).DateTime); - AddDailyReport(dateDailyReport); - } - } - else - { - for (var day = result.Skip; day - result.Skip < result.Take && datesRange.From.AddDays(day) <= datesRange.To; day++) - { - var dateDailyReport = DateOnly.FromDateTime(datesRange.From.AddDays(day).DateTime); + AddDailyReport(dateDailyReport); + } + } + else + { + for (var day = result.Skip; day - result.Skip < result.Take && datesRange.From.AddDays(day) <= datesRange.To; day++) + { + var dateDailyReport = DateOnly.FromDateTime(datesRange.From.AddDays(day).DateTime); - AddDailyReport(dateDailyReport); - } - } + AddDailyReport(dateDailyReport); + } + } - result.Items = dailyReports; + result.Items = dailyReports; - return result; + return result; - void AddDailyReport(DateOnly date) - { - var dailyReport = existingDailyReports.FirstOrDefault(d => d.IdWell == idWell && d.Date == date) - ?? new DailyReportDto - { - Date = date, - IdWell = idWell - }; + void AddDailyReport(DateOnly date) + { + var dailyReport = existingDailyReports.FirstOrDefault(d => d.IdWell == idWell && d.Date == date) + ?? new DailyReportDto + { + Date = date, + IdWell = idWell + }; var geDate = new DateTimeOffset(date, TimeOnly.MinValue, offset); var leDate = new DateTimeOffset(date.AddDays(1), TimeOnly.MinValue, offset); var factWellOperationPerDay = factWellOperations.Where(o => o.DateStart >= geDate && - o.DateStart <= leDate); - - AddFactWellOperationBlock(dailyReport, factWellOperationPerDay); - - dailyReports.Add(dailyReport); - } - } + o.DateStart <= leDate); + + AddFactWellOperationBlock(dailyReport, factWellOperationPerDay); + + dailyReports.Add(dailyReport); + } + } - private async Task UpdateTimeBalanceBlockAsync(DailyReportDto dailyReport, IEnumerable factWellOperations, - DateTimeOffset geDateStart, DateTimeOffset leDateEnd, CancellationToken cancellationToken) - { - const int idWellOperationSlipsTime = 5011; + private async Task UpdateTimeBalanceBlockAsync(DailyReportDto dailyReport, IEnumerable factWellOperations, + DateTimeOffset geDateStart, DateTimeOffset leDateEnd, CancellationToken cancellationToken) + { + const int idWellOperationSlipsTime = 5011; - if (dailyReport.TimeBalanceBlock is not null) - { - dailyReport.TimeBalanceBlock.SectionName = wellOperationRepository.GetSectionTypes() - .FirstOrDefault(s => s.Id == dailyReport.TimeBalanceBlock.IdSection)?.Caption; + if (dailyReport.TimeBalanceBlock is not null) + { + dailyReport.TimeBalanceBlock.SectionName = wellOperationRepository.GetSectionTypes() + .FirstOrDefault(s => s.Id == dailyReport.TimeBalanceBlock.IdSection)?.Caption; dailyReport.TimeBalanceBlock.WellOperationSlipsTimeCount = (await detectedOperationService.GetAsync( - new DetectedOperationByWellRequest - { - IdsCategories = new[] { idWellOperationSlipsTime }, - IdWell = dailyReport.IdWell, - GeDateStart = geDateStart, - LeDateEnd = leDateEnd - }, cancellationToken))?.Stats.Sum(s => s.Count); + new DetectedOperationByWellRequest + { + IdsCategories = new[] { idWellOperationSlipsTime }, + IdWell = dailyReport.IdWell, + GeDateStart = geDateStart, + LeDateEnd = leDateEnd + }, cancellationToken))?.Stats.Sum(s => s.Count); - dailyReport.TimeBalanceBlock.WellDepth.Fact = factWellOperations - .Where(o => o.IdWellSectionType == dailyReport.TimeBalanceBlock.IdSection) - .Sum(o => o.DepthEnd - o.DepthStart); - } - } + dailyReport.TimeBalanceBlock.WellDepth.Fact = factWellOperations + .Where(o => o.IdWellSectionType == dailyReport.TimeBalanceBlock.IdSection) + .Sum(o => o.DepthEnd - o.DepthStart); + } + } - private async Task AddTrajectoryBlockAsync(DailyReportDto dailyReport, - DateTimeOffset geDate, DateTimeOffset leDate, CancellationToken cancellationToken) - { - var trajectory = (await trajectoryFactNnbRepository.GetByRequestAsync(new TrajectoryRequest - { - IdWell = dailyReport.IdWell, - GeDate = geDate, - LeDate = leDate - }, cancellationToken)).MaxBy(t => t.WellboreDepth); + private async Task AddTrajectoryBlockAsync(DailyReportDto dailyReport, + DateTimeOffset geDate, DateTimeOffset leDate, CancellationToken cancellationToken) + { + var trajectory = (await trajectoryFactNnbRepository.GetByRequestAsync(new TrajectoryRequest + { + IdWell = dailyReport.IdWell, + GeDate = geDate, + LeDate = leDate + }, cancellationToken)).MaxBy(t => t.WellboreDepth); - dailyReport.TrajectoryBlock = new TrajectoryBlockDto - { - WellboreDepth = trajectory?.WellboreDepth, - VerticalDepth = trajectory?.VerticalDepth, - ZenithAngle = trajectory?.ZenithAngle, - AzimuthGeo = trajectory?.AzimuthGeo - }; - } + dailyReport.TrajectoryBlock = new TrajectoryBlockDto + { + WellboreDepth = trajectory?.WellboreDepth, + VerticalDepth = trajectory?.VerticalDepth, + ZenithAngle = trajectory?.ZenithAngle, + AzimuthGeo = trajectory?.AzimuthGeo + }; + } - private async Task AddScheduleBlockAsync(DailyReportDto dailyReport, DateTimeOffset workDate, CancellationToken cancellationToken) - { + private async Task AddScheduleBlockAsync(DailyReportDto dailyReport, DateTimeOffset workDate, CancellationToken cancellationToken) + { dailyReport.ScheduleBlock = (await scheduleRepository.GetAsync(dailyReport.IdWell, workDate, cancellationToken)) - .Select(s => new ScheduleRecordDto - { - ShiftStart = s.ShiftStart, - ShiftEnd = s.ShiftEnd, - Name = s.Driller?.Name, - Surname = s.Driller?.Surname, - Patronymic = s.Driller?.Patronymic - }); - } + .Select(s => new ScheduleRecordDto + { + ShiftStart = s.ShiftStart, + ShiftEnd = s.ShiftEnd, + Name = s.Driller?.Name, + Surname = s.Driller?.Surname, + Patronymic = s.Driller?.Patronymic + }); + } - private async Task UpdateSubsystemBlockAsync(DailyReportDto dailyReport, - DateTimeOffset geDate, DateTimeOffset leDate, CancellationToken cancellationToken) - { - dailyReport.SubsystemBlock ??= new SubsystemBlockDto(); + private async Task UpdateSubsystemBlockAsync(DailyReportDto dailyReport, + DateTimeOffset geDate, DateTimeOffset leDate, CancellationToken cancellationToken) + { + dailyReport.SubsystemBlock ??= new SubsystemBlockDto(); - dailyReport.SubsystemBlock.Subsystems = await GetSubsystemsAsync(); + dailyReport.SubsystemBlock.Subsystems = await GetSubsystemsAsync(); - async Task> GetSubsystemsAsync() - { - var subsystemsStatPerWell = await subsystemService.GetStatAsync(new SubsystemRequest - { - IdWell = dailyReport.IdWell - }, cancellationToken); - - var subsystemsStatPerDay = await subsystemService.GetStatAsync(new SubsystemRequest - { - IdWell = dailyReport.IdWell, - GeDate = geDate, - LeDate = leDate - }, cancellationToken); + async Task> GetSubsystemsAsync() + { + var subsystemsStatPerWell = await subsystemService.GetStatAsync(new SubsystemRequest + { + IdWell = dailyReport.IdWell + }, cancellationToken); + + var subsystemsStatPerDay = await subsystemService.GetStatAsync(new SubsystemRequest + { + IdWell = dailyReport.IdWell, + GeDate = geDate, + LeDate = leDate + }, cancellationToken); - var subsystems = subsystemsStatPerWell - .Select(subsystemStatPerWell => new SubsystemRecordDto - { - Name = subsystemStatPerWell.SubsystemName, - UsagePerDay = subsystemsStatPerDay.FirstOrDefault(s => s.IdSubsystem == subsystemStatPerWell.IdSubsystem)?.Adapt(), - UsagePerWell = subsystemStatPerWell.Adapt() - }).ToList(); + var subsystems = subsystemsStatPerWell + .Select(subsystemStatPerWell => new SubsystemRecordDto + { + Name = subsystemStatPerWell.SubsystemName, + UsagePerDay = subsystemsStatPerDay.FirstOrDefault(s => s.IdSubsystem == subsystemStatPerWell.IdSubsystem)?.Adapt(), + UsagePerWell = subsystemStatPerWell.Adapt() + }).ToList(); - if (dailyReport.SubsystemBlock?.Subsystems != null && dailyReport.SubsystemBlock.Subsystems.Any()) - subsystems.AddRange(dailyReport.SubsystemBlock.Subsystems); + if (dailyReport.SubsystemBlock?.Subsystems != null && dailyReport.SubsystemBlock.Subsystems.Any()) + subsystems.AddRange(dailyReport.SubsystemBlock.Subsystems); - return subsystems.OrderBy(s => s.Name); - } - } + return subsystems.OrderBy(s => s.Name); + } + } - private async Task AddProcessMapWellDrillingBlockAsync(DailyReportDto dailyReport, - DateTimeOffset geDate, DateTimeOffset leDate, CancellationToken cancellationToken) - { - var request = new DataSaubStatRequest(); + private async Task AddProcessMapWellDrillingBlockAsync(DailyReportDto dailyReport, + DateTimeOffset geDate, DateTimeOffset leDate, CancellationToken cancellationToken) + { + var request = new DataSaubStatRequest(); dailyReport.ProcessMapWellDrillingBlock = (await processMapReportDrillingService.GetAsync(dailyReport.IdWell, request, - cancellationToken)).Where(p => p.DateStart >= geDate && p.DateStart <= leDate) - .GroupBy(p => p.DrillingMode) - .Select(g => new ProcessMapWellDrillingRecordDto - { - DrillingMode = g.Key, - WellBoreDepth = g.Sum(p => p.DeltaDepth), - Rop = new PlanFactDto - { - Plan = g.Sum(p => p.Rop.Plan), - Fact = g.Sum(p => p.Rop.Fact) - }, - MechDrillingHours = g.Sum(p => p.DrilledTime) - }); - } + cancellationToken)).Where(p => p.DateStart >= geDate && p.DateStart <= leDate) + .GroupBy(p => p.DrillingMode) + .Select(g => new ProcessMapWellDrillingRecordDto + { + DrillingMode = g.Key, + WellBoreDepth = g.Sum(p => p.DeltaDepth), + Rop = new PlanFactDto + { + Plan = g.Sum(p => p.Rop.Plan), + Fact = g.Sum(p => p.Rop.Fact) + }, + MechDrillingHours = g.Sum(p => p.DrilledTime) + }); + } - private static void AddFactWellOperationBlock(DailyReportDto dailyReport, IEnumerable factWellOperations) - { - const int idWellOperationCategoryDrilling = 4001; + private static void AddFactWellOperationBlock(DailyReportDto dailyReport, IEnumerable factWellOperations) + { + const int idWellOperationCategoryDrilling = 4001; - dailyReport.FactWellOperationBlock = new WellOperationBlockDto - { - WellOperations = factWellOperations.GroupBy(o => o.IdCategory) - .Select(g => new WellOperationRecordDto - { - CategoryName = g.First().OperationCategoryName, - DurationHours = g.Sum(o => o.DurationHours) - }), + dailyReport.FactWellOperationBlock = new WellOperationBlockDto + { + WellOperations = factWellOperations.GroupBy(o => o.IdCategory) + .Select(g => new WellOperationRecordDto + { + CategoryName = g.First().OperationCategoryName, + DurationHours = g.Sum(o => o.DurationHours) + }), - SectionDrillingHours = factWellOperations - .Where(o => o.IdParentCategory is idWellOperationCategoryDrilling) - .Sum(o => o.DurationHours) - }; - } + SectionDrillingHours = factWellOperations + .Where(o => o.IdParentCategory is idWellOperationCategoryDrilling) + .Sum(o => o.DurationHours) + }; + } - private async Task IsDateDailyReportInRangeAsync(int idWell, DateOnly dateDailyReport, CancellationToken cancellationToken) - { - var datesRange = await wellOperationRepository.GetDatesRangeAsync(idWell, WellOperation.IdOperationTypeFact, cancellationToken); + private async Task IsDateDailyReportInRangeAsync(int idWell, DateOnly dateDailyReport, CancellationToken cancellationToken) + { + var datesRange = await wellOperationRepository.GetDatesRangeAsync(idWell, WellOperation.IdOperationTypeFact, cancellationToken); - if (datesRange is null) - return false; - var from = DateOnly.FromDateTime(datesRange.From.DateTime); - var to = DateOnly.FromDateTime(datesRange.To.DateTime); + if (datesRange is null) + return false; + var from = DateOnly.FromDateTime(datesRange.From.DateTime); + var to = DateOnly.FromDateTime(datesRange.To.DateTime); - return dateDailyReport >= from && dateDailyReport <= to; - } + return dateDailyReport >= from && dateDailyReport <= to; + } } \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/DetectOperations/DetectableTelemetry.cs b/AsbCloudInfrastructure/Services/DetectOperations/DetectableTelemetry.cs index 50d6dd14..d8339f93 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/DetectableTelemetry.cs +++ b/AsbCloudInfrastructure/Services/DetectOperations/DetectableTelemetry.cs @@ -1,4 +1,4 @@ -using System; +using System; namespace AsbCloudInfrastructure.Services.DetectOperations; diff --git a/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationExportService.cs b/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationExportService.cs index 00baba7f..daffc4e3 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationExportService.cs +++ b/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationExportService.cs @@ -1,6 +1,5 @@ -using AsbCloudDb.Model; +using AsbCloudDb.Model; using ClosedXML.Excel; -using System; using System.Collections.Generic; using System.IO; using System.Linq; @@ -14,6 +13,7 @@ using AsbCloudApp.Exceptions; using AsbCloudApp.Services; using AsbCloudApp.Data; using AsbCloudApp.Data.WellOperation; +using AsbCloudApp.Requests; using AsbCloudInfrastructure.Services.DetectOperations.Detectors; namespace AsbCloudInfrastructure.Services.DetectOperations; @@ -21,9 +21,9 @@ namespace AsbCloudInfrastructure.Services.DetectOperations; public class DetectedOperationExportService { private readonly IWellService wellService; - private readonly IWellOperationCategoryRepository wellOperationCategoryRepository; - private readonly IDetectedOperationService detectedOperationService; - private const int headerRowsCount = 1; + private readonly IWellOperationCategoryRepository wellOperationCategoryRepository; + private readonly IDetectedOperationRepository detectedOperationRepository; + private const int headerRowsCount = 1; private const string cellDepositName = "B1"; private const string cellClusterName = "B2"; @@ -41,24 +41,24 @@ public class DetectedOperationExportService private const int columnIdReasonOfEnd = 9; private const int columnComment = 10; - public DetectedOperationExportService(IWellService wellService, + public DetectedOperationExportService(IWellService wellService, IWellOperationCategoryRepository wellOperationCategoryRepository, - IDetectedOperationService detectedOperationService) + IDetectedOperationRepository detectedOperationRepository) { this.wellService = wellService; - this.wellOperationCategoryRepository = wellOperationCategoryRepository; - this.detectedOperationService = detectedOperationService; + this.wellOperationCategoryRepository = wellOperationCategoryRepository; + this.detectedOperationRepository = detectedOperationRepository; } - /// - /// Экспорт excel файла с операциями по скважине - /// - /// ключ скважины - /// хост - /// - /// - /// - public async Task ExportAsync(int idWell, string host, CancellationToken token) + /// + /// Экспорт excel файла с операциями по скважине + /// + /// ключ скважины + /// хост + /// + /// + /// + public async Task ExportAsync(int idWell, string host, CancellationToken token) { var well = await wellService.GetOrDefaultAsync(idWell, token); @@ -66,14 +66,21 @@ public class DetectedOperationExportService throw new ArgumentInvalidException(nameof(idWell), $"Well {idWell} does not exist"); if (!well.IdTelemetry.HasValue) - throw new ArgumentInvalidException(nameof(idWell), $"Well {idWell} has no telemetry"); + throw new ArgumentInvalidException(nameof(idWell), $"Well {idWell} has no telemetry"); - var operations = await detectedOperationService.DetectOperationsAsync(well.IdTelemetry.Value, DateTime.UnixEpoch, token); + var request = new DetectedOperationByTelemetryRequest + { + IdTelemetry = well.IdTelemetry.Value + }; + + var operations = await detectedOperationRepository.Get(request, token); return await GenerateExcelFileStreamAsync(well, host, operations, token); } - private async Task GenerateExcelFileStreamAsync(WellDto well, string host, IEnumerable operationDetectorResults, + private async Task GenerateExcelFileStreamAsync(WellDto well, + string host, + IEnumerable operationDetectorResults, CancellationToken cancellationToken) { using var excelTemplateStream = await GetExcelTemplateStreamAsync(cancellationToken); @@ -98,10 +105,10 @@ public class DetectedOperationExportService var sheet = workbook.GetWorksheet(sheetName); var orderedOperations = operations - .OrderBy(x => x.DateStart) - .ThenBy(x => x.DepthStart).ToArray(); + .OrderBy(x => x.DateStart) + .ThenBy(x => x.DepthStart).ToArray(); - AddToSheet(sheet, well, host, orderedOperations); + AddToSheet(sheet, well, host, orderedOperations); } private void AddToSheet(IXLWorksheet sheet, WellDto well, string host, IList operations) @@ -113,7 +120,7 @@ public class DetectedOperationExportService sheet.Cell(cellWellName).SetCellValue(well.Caption); var deltaDate = operations.Max(o => o.DateEnd - o.DateStart); - + sheet.Cell(cellDeltaDate).SetCellValue(deltaDate); for (int i = 0; i < operations.Count; i++) @@ -125,7 +132,7 @@ public class DetectedOperationExportService var row = sheet.Row(5 + i + headerRowsCount); var categoryName = GetCategoryName(wellOperationCategories, current); - + row.Cell(columnDateStart).SetCellValue(dateStart); row.Cell(columnOperationName).SetCellValue(categoryName); row.Cell(columnDateEnd).SetCellValue(dateEnd); @@ -147,9 +154,9 @@ public class DetectedOperationExportService var link = $"{host}/well/{well.Id}/telemetry/monitoring{query}"; row.Cell(columnDateStart).SetHyperlink(link); - + var deltaDepth = i > 0 && i + 1 < operations.Count - ? current.DepthStart - operations[i - 1].DepthEnd + ? current.DepthStart - operations[i - 1].DepthEnd : 0; row.Cell(columnDeltaDepth).SetCellValue(deltaDepth); @@ -159,33 +166,33 @@ public class DetectedOperationExportService } } - private static string GetCategoryName(IEnumerable wellOperationCategories, DetectedOperationDto current) - { + private static string GetCategoryName(IEnumerable wellOperationCategories, DetectedOperationDto current) + { var idCategory = current.IdCategory; if (idCategory == WellOperationCategory.IdSlide && current.EnabledSubsystems.IsAutoOscillation) return "Бурение в слайде с осцилляцией"; - var category = wellOperationCategories.FirstOrDefault(o => o.Id == current.IdCategory); - - if(category is not null) + var category = wellOperationCategories.FirstOrDefault(o => o.Id == current.IdCategory); + + if (category is not null) return category.Name; return $"Операция №{idCategory}"; - } + } - private static string GetIdReasonOfEnd(int idReasonOfEnd) - => idReasonOfEnd switch { - 0 => "Не определена", + private static string GetIdReasonOfEnd(int idReasonOfEnd) + => idReasonOfEnd switch + { + 0 => "Не определена", 1 => "Не определено начало операции", 101 => "Разница глубин забоя и положением долота", 300 => "Низкое давление", 301 => "Высокое давление", 700 => "Изменение глубины долота и осевая нагрузка < веса на крюке", _ => idReasonOfEnd.ToString($"Причина № {idReasonOfEnd}"), + }; - }; - - private async Task GetExcelTemplateStreamAsync(CancellationToken cancellationToken) + private async Task GetExcelTemplateStreamAsync(CancellationToken cancellationToken) { string resourceName = Assembly.GetExecutingAssembly() .GetManifestResourceNames() @@ -200,7 +207,7 @@ public class DetectedOperationExportService return memoryStream; } - + private static string CreateComment(DetectedOperationDto operation) { switch (operation.IdCategory) @@ -211,11 +218,12 @@ public class DetectedOperationExportService if (operation.ExtraData.TryGetValue(DetectorDrilling.ExtraDataKeyAvgRotorSpeed, out object? oAvgRotorSpeed)) comment += $"Средняя скорость оборотов ротора: {oAvgRotorSpeed}\r\n"; - if (operation.ExtraData.TryGetValue(DetectorDrilling.ExtraDataKeyDispersionOfNormalizedRotorSpeed, out object? oDispersionOfNormalizedRotorSpeed)) + if (operation.ExtraData.TryGetValue(DetectorDrilling.ExtraDataKeyDispersionOfNormalizedRotorSpeed, + out object? oDispersionOfNormalizedRotorSpeed)) comment += $"Дисперсия нормированных оборотов ротора: {oDispersionOfNormalizedRotorSpeed}"; - + return comment; - + default: return string.Empty; } diff --git a/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationService.cs b/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationService.cs index 0cac62b2..83fc6526 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationService.cs +++ b/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationService.cs @@ -1,4 +1,4 @@ -using System; +using System; using AsbCloudApp.Data; using AsbCloudApp.Data.DetectedOperation; using AsbCloudApp.Repositories; @@ -32,7 +32,7 @@ public class DetectedOperationService : IDetectedOperationService new DetectorFlashing(), new DetectorConditioning(), }; - + public DetectedOperationService( IDetectedOperationRepository operationRepository, IWellOperationCategoryRepository wellOperationCategoryRepository, @@ -110,7 +110,7 @@ public class DetectedOperationService : IDetectedOperationService private async Task GetIdTelemetryByWell(int idWell, CancellationToken token) { var well = await wellService.GetOrDefaultAsync(idWell, token) ?? - throw new ArgumentInvalidException(nameof(idWell), "Well doesn`t exist"); + throw new ArgumentInvalidException(nameof(idWell), "Well doesn't exist"); var idTelemetry = well.IdTelemetry ?? throw new ArgumentInvalidException(nameof(idWell), "У скважины отсутствует телеметрия"); @@ -177,72 +177,73 @@ public class DetectedOperationService : IDetectedOperationService return dtos; } - public async Task> DetectOperationsAsync(int idTelemetry, DateTimeOffset? beginDate, CancellationToken token) + public async Task<(DateTimeOffset LastDate, IEnumerable Items)> DetectOperationsAsync(int idTelemetry, + TelemetryDataRequest request, + DetectedOperationDto? lastDetectedOperation, + CancellationToken token) { - const int take = 4 * 86_400; - - var detectedOperations = new List(); - DetectedOperationDto? lastDetectedOperation = null; const int minOperationLength = 5; const int maxDetectorsInterpolationFrameLength = 30; const int gap = maxDetectorsInterpolationFrameLength + minOperationLength; - var timezone = telemetryService.GetTimezone(idTelemetry); - while (true) + var telemetries = await telemetryDataSaubService.GetByTelemetryAsync(idTelemetry, request, token); + + var count = telemetries.Count(); + + if (count == 0) + throw new InvalidOperationException("InvalidOperation_EmptyTelemetries"); + + var timeZone = telemetryService.GetTimezone(idTelemetry); + + var detectedOperations = new List(); + + var detectableTelemetries = telemetries + .Where(t => t.BlockPosition >= 0) + .Select(t => new DetectableTelemetry + { + DateTime = new DateTimeOffset(t.DateTime, timeZone.Offset), + IdUser = t.IdUser, + Mode = t.Mode, + WellDepth = t.WellDepth, + Pressure = t.Pressure, + HookWeight = t.HookWeight, + BlockPosition = t.BlockPosition, + BitDepth = t.BitDepth, + RotorSpeed = t.RotorSpeed, + AxialLoad = t.AxialLoad, + }).ToArray(); + + if (detectableTelemetries.Length <= gap) { - var request = new TelemetryDataRequest - { - GeDate = beginDate, - Take = take, - Order = 0 - }; - - var dtos = await telemetryDataSaubService.GetByTelemetryAsync(idTelemetry, request, token); - var detectableTelemetries = dtos - .Where(t => t.BlockPosition >= 0) - .Select(t => new DetectableTelemetry - { - DateTime = new DateTimeOffset(t.DateTime, timezone.Offset), - IdUser = t.IdUser, - Mode = t.Mode, - WellDepth = t.WellDepth, - Pressure = t.Pressure, - HookWeight = t.HookWeight, - BlockPosition = t.BlockPosition, - BitDepth = t.BitDepth, - RotorSpeed = t.RotorSpeed, - AxialLoad = t.AxialLoad, - }).ToArray(); - - if (detectableTelemetries.Length <= gap) - break; - - var isDetected = false; - var positionBegin = 0; - var positionEnd = detectableTelemetries.Length - gap; - while (positionEnd > positionBegin) - { - foreach (var detector in detectors) - { - if (!detector.TryDetect(idTelemetry, detectableTelemetries, positionBegin, positionEnd, lastDetectedOperation, out var result)) - continue; - - detectedOperations.Add(result!.Operation); - lastDetectedOperation = result.Operation; - isDetected = true; - positionBegin = result.TelemetryEnd; - break; - } - - positionBegin += 1; - } - - beginDate = isDetected - ? lastDetectedOperation!.DateEnd - : detectableTelemetries[positionEnd].DateTime; + var lastTelemetry = telemetries.Last(); + var lastDateTelemetry = new DateTimeOffset(lastTelemetry.DateTime, timeZone.Offset); + return (lastDateTelemetry, Enumerable.Empty()); } - return detectedOperations; + var positionBegin = 0; + var positionEnd = detectableTelemetries.Length - gap; + + while (positionEnd > positionBegin) + { + foreach (var detector in detectors) + { + if (!detector.TryDetect(idTelemetry, detectableTelemetries, positionBegin, positionEnd, lastDetectedOperation, + out var result)) + continue; + + detectedOperations.Add(result!.Operation); + lastDetectedOperation = result.Operation; + positionBegin = result.TelemetryEnd; + break; + } + + var point0 = detectableTelemetries[positionBegin]; + + while (positionBegin < positionEnd && IsChangingTelemetryInterval(point0, detectableTelemetries[positionBegin])) + positionBegin++; + } + + return (detectableTelemetries[positionBegin].DateTime, detectedOperations); } public async Task DeleteAsync(DetectedOperationByWellRequest request, CancellationToken token) @@ -256,6 +257,23 @@ public class DetectedOperationService : IDetectedOperationService return result; } + private static bool IsChangingTelemetryInterval(DetectableTelemetry telemetryBegin, DetectableTelemetry telemetryEnd) + { + return telemetryBegin.Mode == telemetryEnd.Mode && + EqualParameter(telemetryBegin.WellDepth, telemetryEnd.WellDepth, 0.01f) && + EqualParameter(telemetryBegin.Pressure, telemetryEnd.Pressure, 0.1f) && + EqualParameter(telemetryBegin.HookWeight, telemetryEnd.HookWeight, 0.1f) && + EqualParameter(telemetryBegin.BlockPosition, telemetryEnd.BlockPosition, 0.01f) && + EqualParameter(telemetryBegin.BitDepth, telemetryEnd.BitDepth, 0.01f) && + EqualParameter(telemetryBegin.RotorSpeed, telemetryEnd.RotorSpeed, 0.01f) && + EqualParameter(telemetryBegin.AxialLoad, telemetryEnd.AxialLoad, 0.1f); + + static bool EqualParameter(float value, float origin, float tolerance) + { + return value <= origin + tolerance && value >= origin - tolerance; + } + } + private static IEnumerable GetOperationsDrillersStat(IEnumerable operations) { var groups = operations.GroupBy(o => o.Driller); @@ -305,7 +323,6 @@ public class DetectedOperationService : IDetectedOperationService }; } - private static DetectedOperationWithDrillerDto Convert(DetectedOperationDto operation, IEnumerable operationValues, IEnumerable schedules) { var dto = operation.Adapt(); diff --git a/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorAbstract.cs b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorAbstract.cs index 44b47554..5f17a248 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorAbstract.cs +++ b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorAbstract.cs @@ -1,411 +1,411 @@ -using System; +using System; using System.Collections.Generic; using AsbCloudApp.Data.DetectedOperation; -namespace AsbCloudInfrastructure.Services.DetectOperations.Detectors +namespace AsbCloudInfrastructure.Services.DetectOperations.Detectors; + +public abstract class DetectorAbstract { - public abstract class DetectorAbstract + protected const int IdReasonOfEnd_NotDetected = 0; + protected const int IdReasonOfEnd_NotDetectBegin = 1; + + protected const int IdReasonOfEnd_DeltaDepthIsLo = 100; + protected const int IdReasonOfEnd_DeltaDepthIsHi = 101; + protected const int IdReasonOfEnd_DeltaDepthOutOfRange = 102; + protected const int IdReasonOfEnd_WellDepthDeviates = 200; + + protected const int IdReasonOfEnd_PressureIsLo = 300; + protected const int IdReasonOfEnd_PressureIsHi = 301; + protected const int IdReasonOfEnd_PressureOutOfRange = 302; + protected const int IdReasonOfEnd_PressureIsRising = 303; + + protected const int IdReasonOfEnd_RotorSpeedIsLo = 400; + protected const int IdReasonOfEnd_RotorSpeedIsHi = 401; + protected const int IdReasonOfEnd_AvgRotorSpeedIsHi = 402; + protected const int IdReasonOfEnd_AvgRotorSpeedIsLo = 403; + + protected const int IdReasonOfEnd_BlockPositionIsLo = 500; + protected const int IdReasonOfEnd_BlockPositionIsHi = 501; + protected const int IdReasonOfEnd_BlockPositionDeviates = 502; + + protected const int IdReasonOfEnd_Drilling = 600; + + protected const int IdReasonOfEnd_ChangeBitDepthAndAxiLoadLessHookWeight = 700; + + protected const int IdReasonOfEnd_DeltaWellDepthAndBitDepthIsLo = 800; + + protected const int IdReasonOfEnd_BitDepthIsLo = 900; + + public bool TryDetect(int idTelemetry, DetectableTelemetry[] telemetry, int begin, int end, DetectedOperationDto? previousOperation, + out OperationDetectorResult? result) { - protected const int IdReasonOfEnd_NotDetected = 0; - protected const int IdReasonOfEnd_NotDetectBegin = 1; - - protected const int IdReasonOfEnd_DeltaDepthIsLo = 100; - protected const int IdReasonOfEnd_DeltaDepthIsHi = 101; - protected const int IdReasonOfEnd_DeltaDepthOutOfRange = 102; - protected const int IdReasonOfEnd_WellDepthDeviates = 200; - - protected const int IdReasonOfEnd_PressureIsLo = 300; - protected const int IdReasonOfEnd_PressureIsHi = 301; - protected const int IdReasonOfEnd_PressureOutOfRange = 302; - protected const int IdReasonOfEnd_PressureIsRising = 303; - - protected const int IdReasonOfEnd_RotorSpeedIsLo = 400; - protected const int IdReasonOfEnd_RotorSpeedIsHi = 401; - protected const int IdReasonOfEnd_AvgRotorSpeedIsHi = 402; - protected const int IdReasonOfEnd_AvgRotorSpeedIsLo = 403; - - protected const int IdReasonOfEnd_BlockPositionIsLo = 500; - protected const int IdReasonOfEnd_BlockPositionIsHi = 501; - protected const int IdReasonOfEnd_BlockPositionDeviates = 502; - - protected const int IdReasonOfEnd_Drilling = 600; - - protected const int IdReasonOfEnd_ChangeBithDepthAndAxiloadLessHookWeight = 700; - - protected const int IdReasonOfEnd_DeltaWellDepthAndBithDepthIsLo = 800; - - protected const int IdReasonOfEnd_BithDepthIsLo = 900; - - public bool TryDetect(int idTelemetry, DetectableTelemetry[] telemetry, int begin, int end, DetectedOperationDto? previousOperation, - out OperationDetectorResult? result) + // Проверка соответствия критерию начала операции + if (DetectBegin(telemetry, begin, previousOperation)) { - // Проверка соответствия критерию начала операции - if (DetectBegin(telemetry, begin, previousOperation)) - { - // Поиск окончания соответствия критерию - int idReasonOfEnd = 0; - var positionEnd = begin; - - while (positionEnd < end) - { - positionEnd += 1; - if (positionEnd > end) - break; - - idReasonOfEnd = DetectEnd(telemetry, positionEnd, previousOperation); - - if (idReasonOfEnd != IdReasonOfEnd_NotDetected) - break; - } - - var (Begin, End) = RefineEdges(telemetry, begin, positionEnd); - - result = MakeOperationDetectorResult(idTelemetry, telemetry, Begin, End, idReasonOfEnd); - - return IsValidOperationDetectorResult(result); - } - - result = null; - return false; - } - - protected virtual (int Begin, int End) RefineEdges(DetectableTelemetry[] telemetry, int begin, int end) - => (begin, end); - - protected virtual bool IsValidOperationDetectorResult(OperationDetectorResult operationDetectorResult) - => operationDetectorResult.Operation.DateEnd - operationDetectorResult.Operation.DateStart > TimeSpan.FromSeconds(3); - - protected abstract bool DetectBegin(DetectableTelemetry[] telemetry, int position, DetectedOperationDto? previousOperation); - - protected virtual int DetectEnd(DetectableTelemetry[] telemetry, int position, DetectedOperationDto? previousOperation) - => DetectBegin(telemetry, position, previousOperation) - ? IdReasonOfEnd_NotDetected - : IdReasonOfEnd_NotDetectBegin; - - private OperationDetectorResult MakeOperationDetectorResult( - int idTelemetry, - DetectableTelemetry[] telemetry, - int begin, - int end, - int idReasonOfEnd) - { - var operation = MakeDetectedOperation(idTelemetry, telemetry, begin, end); - - operation.ExtraData["IdReasonOfEnd"] = idReasonOfEnd; - - var result = new OperationDetectorResult - { - TelemetryBegin = begin, - TelemetryEnd = end, - Operation = operation, - }; - - return result; - } - - private DetectedOperationDto MakeDetectedOperation(int idTelemetry, DetectableTelemetry[] telemetry, int begin, int end) - { - var pBegin = telemetry[begin]; - var pEnd = telemetry[end]; - var (IdCategory, ExtraData) = GetSpecificInformation(telemetry, begin, end); - var operation = new DetectedOperationDto - { - IdCategory = IdCategory, - IdTelemetry = idTelemetry, - IdUserAtStart = pBegin.IdUser ?? -1, - DateStart = pBegin.DateTime, - DateEnd = pEnd.DateTime, - DepthStart = (double)pBegin.WellDepth, - DepthEnd = (double)pEnd.WellDepth, - ExtraData = ExtraData, - Value = CalcValue(telemetry, begin, end), - EnabledSubsystems = DetectEnabledSubsystems(telemetry, begin, end, ExtraData) - }; - - return operation; - } - - /// - /// Получение информации специфичной для конкретного детектора - /// IdCategory - одна из констант WellOperationCategory - /// ExtraData - дополнительная информация для отладки алгоритмов авто определения - /// - /// - protected abstract (int IdCategory, IDictionary ExtraData) GetSpecificInformation(DetectableTelemetry[] telemetry, int begin, int end); - - /// - /// Расчет ключевого параметра операции - /// - /// - /// - /// - /// - protected abstract double CalcValue(DetectableTelemetry[] telemetry, int begin, int end); - - /// - /// Определение включенных подсистем во время выполнения операции - /// - /// - /// - /// - /// - /// - private static int DetectEnabledSubsystems(DetectableTelemetry[] telemetry, int begin, int end, IDictionary extraData) - { - var enabledSubsystems = 0; - - if (extraData.TryGetValue(DetectorDrilling.ExtraDataKeyHasOscillation, out var hasOscillation) - && hasOscillation is true) - enabledSubsystems |= (int)EnabledSubsystemsFlags.AutoOscillation; + // Поиск окончания соответствия критерию + int idReasonOfEnd = 0; + var positionEnd = begin; - for (var i = begin; i < end; i += 2) + while (positionEnd < end) { - var mode = telemetry[i].Mode; + positionEnd += 1; + if (positionEnd > end) + break; + + //TODO: поиск провалов телеметрий. Следует обсудить, так как алгоритмы теряют в точности. - if(mode == 1) - enabledSubsystems |= (int)EnabledSubsystemsFlags.AutoRotor; + idReasonOfEnd = DetectEnd(telemetry, positionEnd, previousOperation); - if (mode == 3) - enabledSubsystems |= (int)EnabledSubsystemsFlags.AutoSlide; - - if (mode == 2) - enabledSubsystems |= (int)EnabledSubsystemsFlags.AutoConditionig; - - if (mode == 4) - enabledSubsystems |= (int)EnabledSubsystemsFlags.AutoSinking; - - if (mode == 5) - enabledSubsystems |= (int)EnabledSubsystemsFlags.AutoLifting; - - if (mode == 6) - enabledSubsystems |= (int)EnabledSubsystemsFlags.AutoLiftingWithConditionig; - - if (mode == 10) - enabledSubsystems |= (int)EnabledSubsystemsFlags.AutoBlocknig; + if (idReasonOfEnd != IdReasonOfEnd_NotDetected) + break; } + + var (Begin, End) = RefineEdges(telemetry, begin, positionEnd); + + result = MakeOperationDetectorResult(idTelemetry, telemetry, Begin, End, idReasonOfEnd); - return enabledSubsystems; + return IsValidOperationDetectorResult(result); } - /// - /// расчет продолжительности операции - /// - /// - /// - /// - /// - protected static double CalcDeltaMinutes(DetectableTelemetry[] telemetry, int begin, int end) + result = null; + return false; + } + + protected virtual (int Begin, int End) RefineEdges(DetectableTelemetry[] telemetry, int begin, int end) + => (begin, end); + + protected virtual bool IsValidOperationDetectorResult(OperationDetectorResult operationDetectorResult) + => operationDetectorResult.Operation.DateEnd - operationDetectorResult.Operation.DateStart > TimeSpan.FromSeconds(3); + + protected abstract bool DetectBegin(DetectableTelemetry[] telemetry, int position, DetectedOperationDto? previousOperation); + + protected virtual int DetectEnd(DetectableTelemetry[] telemetry, int position, DetectedOperationDto? previousOperation) + => DetectBegin(telemetry, position, previousOperation) + ? IdReasonOfEnd_NotDetected + : IdReasonOfEnd_NotDetectBegin; + + private OperationDetectorResult MakeOperationDetectorResult( + int idTelemetry, + DetectableTelemetry[] telemetry, + int begin, + int end, + int idReasonOfEnd) + { + var operation = MakeDetectedOperation(idTelemetry, telemetry, begin, end); + + operation.ExtraData["IdReasonOfEnd"] = idReasonOfEnd; + + var result = new OperationDetectorResult { - var pBegin = telemetry[begin]; - var pEnd = telemetry[end]; - var result = (pEnd.DateTime - pBegin.DateTime).TotalMinutes; - return result; + TelemetryBegin = begin, + TelemetryEnd = end, + Operation = operation, + }; + + return result; + } + + private DetectedOperationDto MakeDetectedOperation(int idTelemetry, DetectableTelemetry[] telemetry, int begin, int end) + { + var pBegin = telemetry[begin]; + var pEnd = telemetry[end]; + var (IdCategory, ExtraData) = GetSpecificInformation(telemetry, begin, end); + var operation = new DetectedOperationDto + { + IdCategory = IdCategory, + IdTelemetry = idTelemetry, + IdUserAtStart = pBegin.IdUser ?? -1, + DateStart = pBegin.DateTime, + DateEnd = pEnd.DateTime, + DepthStart = (double)pBegin.WellDepth, + DepthEnd = (double)pEnd.WellDepth, + ExtraData = ExtraData, + Value = CalcValue(telemetry, begin, end), + EnabledSubsystems = DetectEnabledSubsystems(telemetry, begin, end, ExtraData) + }; + + return operation; + } + + /// + /// Получение информации специфичной для конкретного детектора + /// IdCategory - одна из констант WellOperationCategory + /// ExtraData - дополнительная информация для отладки алгоритмов авто определения + /// + /// + protected abstract (int IdCategory, IDictionary ExtraData) GetSpecificInformation(DetectableTelemetry[] telemetry, int begin, int end); + + /// + /// Расчет ключевого параметра операции + /// + /// + /// + /// + /// + protected abstract double CalcValue(DetectableTelemetry[] telemetry, int begin, int end); + + /// + /// Определение включенных подсистем во время выполнения операции + /// + /// + /// + /// + /// + /// + private static int DetectEnabledSubsystems(DetectableTelemetry[] telemetry, int begin, int end, IDictionary extraData) + { + var enabledSubsystems = 0; + + if (extraData.TryGetValue(DetectorDrilling.ExtraDataKeyHasOscillation, out var hasOscillation) + && hasOscillation is true) + enabledSubsystems |= (int)EnabledSubsystemsFlags.AutoOscillation; + + for (var i = begin; i < end; i += 2) + { + var mode = telemetry[i].Mode; + + if(mode == 1) + enabledSubsystems |= (int)EnabledSubsystemsFlags.AutoRotor; + + if (mode == 3) + enabledSubsystems |= (int)EnabledSubsystemsFlags.AutoSlide; + + if (mode == 2) + enabledSubsystems |= (int)EnabledSubsystemsFlags.AutoConditionig; + + if (mode == 4) + enabledSubsystems |= (int)EnabledSubsystemsFlags.AutoSinking; + + if (mode == 5) + enabledSubsystems |= (int)EnabledSubsystemsFlags.AutoLifting; + + if (mode == 6) + enabledSubsystems |= (int)EnabledSubsystemsFlags.AutoLiftingWithConditionig; + + if (mode == 10) + enabledSubsystems |= (int)EnabledSubsystemsFlags.AutoBlocknig; } - /// - /// часто используемый предикат для определения отсутствия изменения глубины ствола скважины - /// - /// - /// - /// - /// - protected static bool IsValidByWellDepthDoesNotChange(DetectableTelemetry[] telemetry, int begin, int end) - { - var pBegin = telemetry[begin]; - var pEnd = telemetry[end]; - if (Math.Abs((double)(pBegin.WellDepth - pEnd.WellDepth)) > 0.01) - return false; - return true; - } + return enabledSubsystems; + } - protected static bool IsValidByWellDepthIncreasing(DetectableTelemetry[] telemetry, int begin, int end) - { - var pBegin = telemetry[begin]; - var pEnd = telemetry[end]; - if (pBegin.WellDepth >= pEnd.WellDepth) - return false; - return true; - } - - protected static double CalcRop(DetectableTelemetry[] telemetry, int begin, int end) - { - var pBegin = telemetry[begin]; - var pEnd = telemetry[end]; - var result = (double)(pEnd.WellDepth - pBegin.WellDepth) / (pEnd.DateTime - pBegin.DateTime).TotalHours; - return result; - } - - /// - /// Расчет статистики по массиву данных за интервал - /// - /// - /// - /// - /// - /// - protected static (double min, double max, double sum, int count) CalcStat( - DetectableTelemetry[] telemetry, - Func getter, - int begin, - int count) - { - var sum = 0d; - var min = double.MaxValue; - var max = double.MinValue; - var end = begin + count; - end = end < telemetry.Length ? end : telemetry.Length; - - for (var i = begin; i < end; i++) - { - var item = telemetry[i]; - var itemValue = getter(item); - if (min > itemValue) - min = itemValue; - if (max < itemValue) - max = itemValue; - sum += itemValue; - } - - return (min, max, sum, end - begin); - } - - /// - /// Максимальное отклонение от среднего за интервал - /// - /// - /// - /// - /// - /// - protected static double CalcMaxDeviation( - DetectableTelemetry[] telemetry, - Func getter, - int begin, - int count) - { - var stat = CalcStat(telemetry, getter, begin, count); - var avg = stat.sum / stat.count; - var dev1 = avg - stat.min; - var dev2 = stat.max - avg; - var dev = dev1 > dev2 ? dev1 : dev2; - return dev; - } - - /// - /// Определяет наличие разброса значений в интервале большего указанного значения. - /// - /// - /// - /// - /// - /// - /// - protected static bool ContainsDeviation( - DetectableTelemetry[] telemetry, - Func getter, - int begin, - int count, - double deviation) - { - var min = double.MaxValue; - var max = double.MinValue; - var end = begin + count; - end = end < telemetry.Length ? end : telemetry.Length; - - for (var i = begin; i < end; i++) - { - var item = telemetry[i]; - var itemValue = getter(item); - if (min > itemValue) - min = itemValue; - if (max < itemValue) - max = itemValue; - if (max - min > deviation) - return true; - } + /// + /// расчет продолжительности операции + /// + /// + /// + /// + /// + protected static double CalcDeltaMinutes(DetectableTelemetry[] telemetry, int begin, int end) + { + var pBegin = telemetry[begin]; + var pEnd = telemetry[end]; + var result = (pEnd.DateTime - pBegin.DateTime).TotalMinutes; + return result; + } + /// + /// часто используемый предикат для определения отсутствия изменения глубины ствола скважины + /// + /// + /// + /// + /// + protected static bool IsValidByWellDepthDoesNotChange(DetectableTelemetry[] telemetry, int begin, int end) + { + var pBegin = telemetry[begin]; + var pEnd = telemetry[end]; + if (Math.Abs((double)(pBegin.WellDepth - pEnd.WellDepth)) > 0.01) return false; - } - - /// - /// Определяет наличие разброса значений в интервале большего указанного значения. По нескольким значениям из интервала. - /// - /// - /// - /// - /// - /// - /// - protected static bool ContainsDeviationApprox( - DetectableTelemetry[] telemetry, - Func getter, - int begin, - int count, - double deviation) - { - var min = double.MaxValue; - var max = double.MinValue; - var end = begin + count; - end = end < telemetry.Length ? end : telemetry.Length; - var step = count > 15 ? count / 5 : count > 3 ? 3 : 1; - for (var i = begin; i < end; i += step) - { - var item = telemetry[i]; - var itemValue = getter(item); - if (min > itemValue) - min = itemValue; - if (max < itemValue) - max = itemValue; - if (max - min > deviation) - return true; - } + return true; + } + protected static bool IsValidByWellDepthIncreasing(DetectableTelemetry[] telemetry, int begin, int end) + { + var pBegin = telemetry[begin]; + var pEnd = telemetry[end]; + if (pBegin.WellDepth >= pEnd.WellDepth) return false; - } + return true; + } - protected static bool DeviatesFromBegin( - DetectableTelemetry[] telemetry, - Func getter, - int begin, - int count, - double deviation) + protected static double CalcRop(DetectableTelemetry[] telemetry, int begin, int end) + { + var pBegin = telemetry[begin]; + var pEnd = telemetry[end]; + var result = (double)(pEnd.WellDepth - pBegin.WellDepth) / (pEnd.DateTime - pBegin.DateTime).TotalHours; + return result; + } + + /// + /// Расчет статистики по массиву данных за интервал + /// + /// + /// + /// + /// + /// + protected static (double min, double max, double sum, int count) CalcStat( + DetectableTelemetry[] telemetry, + Func getter, + int begin, + int count) + { + var sum = 0d; + var min = double.MaxValue; + var max = double.MinValue; + var end = begin + count; + end = end < telemetry.Length ? end : telemetry.Length; + + for (var i = begin; i < end; i++) { - var beginPointValue = getter(telemetry[begin]); - var end = begin + count; - end = end < telemetry.Length ? end : telemetry.Length; - var step = count > 15 ? count / 5 : count > 3 ? 3 : 1; - for (var i = begin; i < end; i += step) - { - var item = telemetry[i]; - var itemValue = getter(item); - if (Math.Abs(beginPointValue - itemValue) > deviation) - return true; - } - - return false; + var item = telemetry[i]; + var itemValue = getter(item); + if (min > itemValue) + min = itemValue; + if (max < itemValue) + max = itemValue; + sum += itemValue; } - protected static bool RisesFromBegin( - DetectableTelemetry[] telemetry, - Func getter, - int begin, - int count, - double deviation) + return (min, max, sum, end - begin); + } + + /// + /// Максимальное отклонение от среднего за интервал + /// + /// + /// + /// + /// + /// + protected static double CalcMaxDeviation( + DetectableTelemetry[] telemetry, + Func getter, + int begin, + int count) + { + var stat = CalcStat(telemetry, getter, begin, count); + var avg = stat.sum / stat.count; + var dev1 = avg - stat.min; + var dev2 = stat.max - avg; + var dev = dev1 > dev2 ? dev1 : dev2; + return dev; + } + + /// + /// Определяет наличие разброса значений в интервале большего указанного значения. + /// + /// + /// + /// + /// + /// + /// + protected static bool ContainsDeviation( + DetectableTelemetry[] telemetry, + Func getter, + int begin, + int count, + double deviation) + { + var min = double.MaxValue; + var max = double.MinValue; + var end = begin + count; + end = end < telemetry.Length ? end : telemetry.Length; + + for (var i = begin; i < end; i++) { - var beginPointValue = getter(telemetry[begin]); - var end = begin + count; - end = end < telemetry.Length ? end : telemetry.Length; - var step = count > 15 ? count / 5 : count > 3 ? 3 : 1; - for (var i = begin; i < end; i += step) - { - var item = telemetry[i]; - var itemValue = getter(item); - if (itemValue - beginPointValue > deviation) - return true; - } - - return false; + var item = telemetry[i]; + var itemValue = getter(item); + if (min > itemValue) + min = itemValue; + if (max < itemValue) + max = itemValue; + if (max - min > deviation) + return true; } + + return false; + } + + /// + /// Определяет наличие разброса значений в интервале большего указанного значения. По нескольким значениям из интервала. + /// + /// + /// + /// + /// + /// + /// + protected static bool ContainsDeviationApprox( + DetectableTelemetry[] telemetry, + Func getter, + int begin, + int count, + double deviation) + { + var min = double.MaxValue; + var max = double.MinValue; + var end = begin + count; + end = end < telemetry.Length ? end : telemetry.Length; + var step = count > 15 ? count / 5 : count > 3 ? 3 : 1; + for (var i = begin; i < end; i += step) + { + var item = telemetry[i]; + var itemValue = getter(item); + if (min > itemValue) + min = itemValue; + if (max < itemValue) + max = itemValue; + if (max - min > deviation) + return true; + } + + return false; + } + + protected static bool DeviatesFromBegin( + DetectableTelemetry[] telemetry, + Func getter, + int begin, + int count, + double deviation) + { + var beginPointValue = getter(telemetry[begin]); + var end = begin + count; + end = end < telemetry.Length ? end : telemetry.Length; + var step = count > 15 ? count / 5 : count > 3 ? 3 : 1; + for (var i = begin; i < end; i += step) + { + var item = telemetry[i]; + var itemValue = getter(item); + if (Math.Abs(beginPointValue - itemValue) > deviation) + return true; + } + + return false; + } + + protected static bool RisesFromBegin( + DetectableTelemetry[] telemetry, + Func getter, + int begin, + int count, + double deviation) + { + var beginPointValue = getter(telemetry[begin]); + var end = begin + count; + end = end < telemetry.Length ? end : telemetry.Length; + var step = count > 15 ? count / 5 : count > 3 ? 3 : 1; + for (var i = begin; i < end; i += step) + { + var item = telemetry[i]; + var itemValue = getter(item); + if (itemValue - beginPointValue > deviation) + return true; + } + + return false; } } - diff --git a/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorConditioning.cs b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorConditioning.cs index 9336fb27..6ef413ef 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorConditioning.cs +++ b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorConditioning.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.DetectedOperation; +using AsbCloudApp.Data.DetectedOperation; using AsbCloudDb.Model; using System; using System.Collections.Generic; @@ -41,9 +41,9 @@ namespace AsbCloudInfrastructure.Services.DetectOperations.Detectors if (currentPoint.RotorSpeed <=8) return IdReasonOfEnd_RotorSpeedIsHi; if ((currentPoint.WellDepth - currentPoint.BitDepth) < 0.03d) - return IdReasonOfEnd_DeltaWellDepthAndBithDepthIsLo; + return IdReasonOfEnd_DeltaWellDepthAndBitDepthIsLo; if (currentPoint.BitDepth < 150) - return IdReasonOfEnd_BithDepthIsLo; + return IdReasonOfEnd_BitDepthIsLo; return IdReasonOfEnd_NotDetected; } diff --git a/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorDevelopment.cs b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorDevelopment.cs index 13f665e4..c99dcadd 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorDevelopment.cs +++ b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorDevelopment.cs @@ -1,4 +1,4 @@ -// using System; +// using System; // using AsbCloudDb.Model; // // namespace AsbCloudInfrastructure.Services.DetectOperations.Detectors diff --git a/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorDrilling.cs b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorDrilling.cs index 88084bfe..f2ef3dcb 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorDrilling.cs +++ b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorDrilling.cs @@ -14,45 +14,45 @@ public class DetectorDrilling : DetectorAbstract public const string ExtraDataKeyAvgRotorSpeed = "avgRotorSpeed"; protected override bool DetectBegin(DetectableTelemetry[] telemetry, int position, DetectedOperationDto? previousOperation) - { - var point0 = telemetry[position]; - var delta = point0.WellDepth - point0.BitDepth; - if (delta > 0.03d) - return false; + { + var point0 = telemetry[position]; + var delta = point0.WellDepth - point0.BitDepth; + if (delta > 0.03d) + return false; - if (point0.Pressure < 18) - return false; + if (point0.Pressure < 18) + return false; - return true; - } + return true; + } - protected override int DetectEnd(DetectableTelemetry[] telemetry, int position, DetectedOperationDto? previousOperation) - { - var point0 = telemetry[position]; - var delta = point0.WellDepth - point0.BitDepth; - - if (delta > 0.03d) - return IdReasonOfEnd_DeltaDepthIsHi; + protected override int DetectEnd(DetectableTelemetry[] telemetry, int position, DetectedOperationDto? previousOperation) + { + var point0 = telemetry[position]; + var delta = point0.WellDepth - point0.BitDepth; + + if (delta > 0.03d) + return IdReasonOfEnd_DeltaDepthIsHi; - if (point0.Pressure < 18) - return IdReasonOfEnd_PressureIsLo; + if (point0.Pressure < 18) + return IdReasonOfEnd_PressureIsLo; - return IdReasonOfEnd_NotDetected; - } - - protected override double CalcValue(DetectableTelemetry[] telemetry, int begin, int end) - => CalcRop(telemetry, begin, end); + return IdReasonOfEnd_NotDetected; + } + + protected override double CalcValue(DetectableTelemetry[] telemetry, int begin, int end) + => CalcRop(telemetry, begin, end); - protected override bool IsValidOperationDetectorResult(OperationDetectorResult operationDetectorResult) => + protected override bool IsValidOperationDetectorResult(OperationDetectorResult operationDetectorResult) => base.IsValidOperationDetectorResult(operationDetectorResult) && (operationDetectorResult.Operation.DepthEnd - operationDetectorResult.Operation.DepthStart) > 0.01; protected override (int Begin, int End) RefineEdges(DetectableTelemetry[] telemetry, int begin, int end) { var i = end; - for (; i > begin + 1; i--) + for (; i > begin + 1; i--) if (telemetry[i].WellDepth - telemetry[i - 1].WellDepth > 0.001d) - break; + break; return (begin, i); } @@ -61,34 +61,34 @@ public class DetectorDrilling : DetectorAbstract { var (avgRotorSpeed, dispersionOfNormalizedRotorSpeed) = CalcCriteries(telemetry, begin, end); var idCategory = GetIdOperation(avgRotorSpeed, dispersionOfNormalizedRotorSpeed); - var extraData = new Dictionary + var extraData = new Dictionary { [ExtraDataKeyAvgRotorSpeed] = avgRotorSpeed, [ExtraDataKeyDispersionOfNormalizedRotorSpeed] = dispersionOfNormalizedRotorSpeed, [ExtraDataKeyHasOscillation] = avgRotorSpeed > 1 && dispersionOfNormalizedRotorSpeed > dispersionOfNormalizedRotorSpeedThreshold }; - return (idCategory, extraData); + return (idCategory, extraData); } - private static (double avgRotorSpeed, double dispersionOfNormalizedRotorSpeed) CalcCriteries(DetectableTelemetry[] telemetry, int begin, int end) + private static (double avgRotorSpeed, double dispersionOfNormalizedRotorSpeed) CalcCriteries(DetectableTelemetry[] telemetry, int begin, int end) { - var telemetryRange = telemetry[begin..end]; - var avgRotorSpeed = telemetryRange.Average(t => t.RotorSpeed); + var telemetryRange = telemetry[begin..end]; + var avgRotorSpeed = telemetryRange.Average(t => t.RotorSpeed); var dispersion = telemetryRange.Average(t => Math.Pow(t.RotorSpeed / avgRotorSpeed - 1, 2)); return (avgRotorSpeed, dispersion); } private static int GetIdOperation(double avgRotorSpeed, double dispersionOfNormalizedRotorSpeed) - { + { const int idSlideWithOscillation = WellOperationCategory.IdSlide; if (avgRotorSpeed < 5) return WellOperationCategory.IdSlide; - if(dispersionOfNormalizedRotorSpeed < dispersionOfNormalizedRotorSpeedThreshold) - return WellOperationCategory.IdRotor; + if(dispersionOfNormalizedRotorSpeed < dispersionOfNormalizedRotorSpeedThreshold) + return WellOperationCategory.IdRotor; - return idSlideWithOscillation; - } + return idSlideWithOscillation; + } } \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorFlashing.cs b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorFlashing.cs index f5d0add5..f300f1c5 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorFlashing.cs +++ b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorFlashing.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.DetectedOperation; +using AsbCloudApp.Data.DetectedOperation; using AsbCloudDb.Model; using System; using System.Collections.Generic; @@ -48,11 +48,11 @@ namespace AsbCloudInfrastructure.Services.DetectOperations.Detectors if (currentPoint.Pressure < 10) return IdReasonOfEnd_PressureIsLo; if ((currentPoint.WellDepth - currentPoint.BitDepth) < 0.01d) - return IdReasonOfEnd_DeltaWellDepthAndBithDepthIsLo; + return IdReasonOfEnd_DeltaWellDepthAndBitDepthIsLo; if (currentPoint.RotorSpeed > 8) return IdReasonOfEnd_RotorSpeedIsHi; if (currentPoint.BitDepth < 150) - return IdReasonOfEnd_BithDepthIsLo; + return IdReasonOfEnd_BitDepthIsLo; return IdReasonOfEnd_NotDetected; } diff --git a/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorFlashingBeforeConnection.cs b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorFlashingBeforeConnection.cs index ffc74129..3b61181f 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorFlashingBeforeConnection.cs +++ b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorFlashingBeforeConnection.cs @@ -1,4 +1,4 @@ -// using AsbCloudDb.Model; +// using AsbCloudDb.Model; // // namespace AsbCloudInfrastructure.Services.DetectOperations.Detectors // { diff --git a/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorRotor.cs b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorRotor.cs index 9562645d..7237c34c 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorRotor.cs +++ b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorRotor.cs @@ -1,4 +1,4 @@ -// using AsbCloudDb.Model; +// using AsbCloudDb.Model; // using System.Linq; // // namespace AsbCloudInfrastructure.Services.DetectOperations.Detectors diff --git a/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorSlide.cs b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorSlide.cs index 6244b4d6..edf0a9be 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorSlide.cs +++ b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorSlide.cs @@ -1,4 +1,4 @@ -// using AsbCloudDb.Model; +// using AsbCloudDb.Model; // // namespace AsbCloudInfrastructure.Services.DetectOperations.Detectors // { diff --git a/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorSlipsTime.cs b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorSlipsTime.cs index a9996a1b..af2e3db0 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorSlipsTime.cs +++ b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorSlipsTime.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using AsbCloudApp.Data.DetectedOperation; using AsbCloudDb.Model; @@ -7,61 +7,61 @@ namespace AsbCloudInfrastructure.Services.DetectOperations.Detectors; public class DetectorSlipsTime : DetectorAbstract { - protected override double CalcValue(DetectableTelemetry[] telemetry, int begin, int end) - => CalcDeltaMinutes(telemetry, begin, end); + protected override double CalcValue(DetectableTelemetry[] telemetry, int begin, int end) + => CalcDeltaMinutes(telemetry, begin, end); - protected override bool DetectBegin(DetectableTelemetry[] telemetry, int position, DetectedOperationDto? previousOperation) - { - var currentPoint = telemetry[position]; - if (currentPoint.BitDepth < 150) - return false; - - if (currentPoint.Pressure > 20) - return false; + protected override bool DetectBegin(DetectableTelemetry[] telemetry, int position, DetectedOperationDto? previousOperation) + { + var currentPoint = telemetry[position]; + if (currentPoint.BitDepth < 150) + return false; + + if (currentPoint.Pressure > 20) + return false; - var delta = currentPoint.WellDepth - currentPoint.BitDepth; - if (delta < 0.1d) - return false; + var delta = currentPoint.WellDepth - currentPoint.BitDepth; + if (delta < 0.1d) + return false; - var nextIndexPoint = telemetry.Length <= position ? position : position + 1; - var nextPoint = telemetry[nextIndexPoint]; - var deltaBitDepth = Math.Abs(currentPoint.BitDepth - nextPoint.BitDepth); - if (deltaBitDepth > 0.001d) - return false; + var nextIndexPoint = telemetry.Length <= position ? position : position + 1; + var nextPoint = telemetry[nextIndexPoint]; + var deltaBitDepth = Math.Abs(currentPoint.BitDepth - nextPoint.BitDepth); + if (deltaBitDepth > 0.001d) + return false; - var deltaBlockPosition = Math.Abs(currentPoint.BlockPosition - nextPoint.BlockPosition); - if (deltaBlockPosition < 0.001d) - return false; + var deltaBlockPosition = Math.Abs(currentPoint.BlockPosition - nextPoint.BlockPosition); + if (deltaBlockPosition < 0.001d) + return false; - return true; - } + return true; + } - protected override int DetectEnd(DetectableTelemetry[] telemetry, int position, DetectedOperationDto? previousOperation) - { - var currentPoint = telemetry[position]; + protected override int DetectEnd(DetectableTelemetry[] telemetry, int position, DetectedOperationDto? previousOperation) + { + var currentPoint = telemetry[position]; - if (currentPoint.Pressure > 20) - return IdReasonOfEnd_PressureIsHi; + if (currentPoint.Pressure > 20) + return IdReasonOfEnd_PressureIsHi; - var prevPointIndex = position <= 0 ? 0 : position - 1; + var prevPointIndex = position <= 0 ? 0 : position - 1; - var prevPoint = telemetry[prevPointIndex]; + var prevPoint = telemetry[prevPointIndex]; - var deltaBitDepth = Math.Abs(currentPoint.BitDepth - prevPoint.BitDepth); + var deltaBitDepth = Math.Abs(currentPoint.BitDepth - prevPoint.BitDepth); - if (deltaBitDepth > 0.001d && currentPoint.AxialLoad < currentPoint.HookWeight) - return IdReasonOfEnd_ChangeBithDepthAndAxiloadLessHookWeight; + if (deltaBitDepth > 0.001d && currentPoint.AxialLoad < currentPoint.HookWeight) + return IdReasonOfEnd_ChangeBitDepthAndAxiLoadLessHookWeight; - return IdReasonOfEnd_NotDetected; - } + return IdReasonOfEnd_NotDetected; + } - protected override (int IdCategory, IDictionary ExtraData) GetSpecificInformation(DetectableTelemetry[] telemetry, - int begin, - int end) - { - return (WellOperationCategory.IdSlipsTime, new Dictionary()); - } + protected override (int IdCategory, IDictionary ExtraData) GetSpecificInformation(DetectableTelemetry[] telemetry, + int begin, + int end) + { + return (WellOperationCategory.IdSlipsTime, new Dictionary()); + } - protected override bool IsValidOperationDetectorResult(OperationDetectorResult operationDetectorResult) => - Math.Abs((operationDetectorResult.Operation.DateStart - operationDetectorResult.Operation.DateEnd).TotalMinutes) < 30; + protected override bool IsValidOperationDetectorResult(OperationDetectorResult operationDetectorResult) => + Math.Abs((operationDetectorResult.Operation.DateStart - operationDetectorResult.Operation.DateEnd).TotalMinutes) < 30; } \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorStaticSurveying.cs b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorStaticSurveying.cs index 20d411dc..bcd3ab5c 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorStaticSurveying.cs +++ b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorStaticSurveying.cs @@ -1,4 +1,4 @@ -// using AsbCloudDb.Model; +// using AsbCloudDb.Model; // using System.Linq; // using System; // diff --git a/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorTemplating.cs b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorTemplating.cs index 96e11346..66b4f38f 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorTemplating.cs +++ b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorTemplating.cs @@ -1,4 +1,4 @@ -// using AsbCloudDb.Model; +// using AsbCloudDb.Model; // using System.Collections.Generic; // // namespace AsbCloudInfrastructure.Services.DetectOperations.Detectors diff --git a/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorTemplatingWhileDrilling.cs b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorTemplatingWhileDrilling.cs index 656ad29e..dcef9e8a 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorTemplatingWhileDrilling.cs +++ b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/DetectorTemplatingWhileDrilling.cs @@ -1,4 +1,4 @@ -// using AsbCloudDb.Model; +// using AsbCloudDb.Model; // // namespace AsbCloudInfrastructure.Services.DetectOperations.Detectors // { diff --git a/AsbCloudInfrastructure/Services/DetectOperations/Detectors/OperationDetectorResult.cs b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/OperationDetectorResult.cs index 8325d86c..453a7fab 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/Detectors/OperationDetectorResult.cs +++ b/AsbCloudInfrastructure/Services/DetectOperations/Detectors/OperationDetectorResult.cs @@ -1,12 +1,12 @@ -using AsbCloudApp.Data.DetectedOperation; +using AsbCloudApp.Data.DetectedOperation; namespace AsbCloudInfrastructure.Services.DetectOperations.Detectors { - public class OperationDetectorResult - { - public int TelemetryBegin { get; set; } - public int TelemetryEnd { get; set; } - public DetectedOperationDto Operation { get; set; } = null!; - } + public class OperationDetectorResult + { + public int TelemetryBegin { get; set; } + public int TelemetryEnd { get; set; } + public DetectedOperationDto Operation { get; set; } = null!; + } } diff --git a/AsbCloudInfrastructure/Services/DetectOperations/EnabledSubsystemsFlagsExtensions.cs b/AsbCloudInfrastructure/Services/DetectOperations/EnabledSubsystemsFlagsExtensions.cs index 09e0e387..f2626158 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/EnabledSubsystemsFlagsExtensions.cs +++ b/AsbCloudInfrastructure/Services/DetectOperations/EnabledSubsystemsFlagsExtensions.cs @@ -4,12 +4,12 @@ namespace AsbCloudInfrastructure.Services.DetectOperations; public static class EnabledSubsystemsFlagsExtensions { - /// - /// Есть ли флаг подсистемы у операции - /// - /// - /// - /// - public static bool HasEnabledSubsystems(this EnabledSubsystemsFlags flags, int enabledSubsystems) - => (enabledSubsystems & (int)flags) > 0; + /// + /// Есть ли флаг подсистемы у операции + /// + /// + /// + /// + public static bool HasEnabledSubsystems(this EnabledSubsystemsFlags flags, int enabledSubsystems) + => (enabledSubsystems & (int)flags) > 0; } \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/DetectOperations/InterpolationLine.cs b/AsbCloudInfrastructure/Services/DetectOperations/InterpolationLine.cs index 253fadb9..a6880881 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/InterpolationLine.cs +++ b/AsbCloudInfrastructure/Services/DetectOperations/InterpolationLine.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; namespace AsbCloudInfrastructure.Services.DetectOperations { diff --git a/AsbCloudInfrastructure/Services/DetectOperations/Readme.md b/AsbCloudInfrastructure/Services/DetectOperations/Readme.md index 5a7c6528..284f681c 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/Readme.md +++ b/AsbCloudInfrastructure/Services/DetectOperations/Readme.md @@ -1,4 +1,4 @@ -# Сервис определения операций по данным телеметрии +# Сервис определения операций по данным телеметрии Классы: diff --git a/AsbCloudInfrastructure/Services/DetectOperations/Specifications/Промывка перед наращиванием.md b/AsbCloudInfrastructure/Services/DetectOperations/Specifications/Промывка перед наращиванием.md index 093d61fb..75e675c1 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/Specifications/Промывка перед наращиванием.md +++ b/AsbCloudInfrastructure/Services/DetectOperations/Specifications/Промывка перед наращиванием.md @@ -1,8 +1,8 @@ -# Алгоритм определения промывки перед проработкой/ шаблонировкой перед наращиванием +# Алгоритм определения промывки перед проработкой/ шаблонировкой перед наращиванием ## Описание -Промывка перед проработкой/ шаблонировкой перед наращиванием – операция, во время которой после добуривания очередной трубы происходит снижение осевой нагрузки и дифференциального давления, талевый блок остается условно неподвижным. +Промывка перед проработкой/ шаблонировкой перед наращиванием - операция, во время которой после добуривания очередной трубы происходит снижение осевой нагрузки и дифференциального давления, талевый блок остается условно неподвижным. Проработка перед наращиванием определяется как время между: - окончанием операции бурения (ротор/ слайд/ ручное бурение) @@ -10,17 +10,17 @@ ## Метод определения - Признак начала операции = - ( предыдущая операция == бурение в роторе или слайде) - ( расстояние от долота до забоя < 0,05м ) И - ( давление > 15 атм ) И - ( положение блока < 3м ) - - Признак окончания операции = - ( расстояние от долота до забоя > 0.03м ) И - ( давление > 15 атм ) И - ( высота блока изменяется больше чем на 0.03м в течении 60 сек с начала операции); - + Признак начала операции = + ( предыдущая операция == бурение в роторе или слайде) + ( расстояние от долота до забоя < 0,05м ) И + ( давление > 15 атм ) И + ( положение блока < 3м ) + + Признак окончания операции = + ( расстояние от долота до забоя > 0.03м ) И + ( давление > 15 атм ) И + ( высота блока изменяется больше чем на 0.03м в течении 60 сек с начала операции); + ## Ключевой параметр Продолжительность операции. diff --git a/AsbCloudInfrastructure/Services/DetectOperations/Specifications/Промывка.md b/AsbCloudInfrastructure/Services/DetectOperations/Specifications/Промывка.md index 15e56d47..063dda58 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/Specifications/Промывка.md +++ b/AsbCloudInfrastructure/Services/DetectOperations/Specifications/Промывка.md @@ -1,8 +1,8 @@ -# Алгоритм определения промывки +# Алгоритм определения промывки ## Описание -Промывка – операция, во время которой давление условно постоянное, а вращение колонны отсутствует, талевый блок при этом может быть как в движении, так и статичным. +Промывка - операция, во время которой давление условно постоянное, а вращение колонны отсутствует, талевый блок при этом может быть как в движении, так и статичным. Промывка определяется как время между: - окончанием операции бурения или выходом на режим буровых насосов (рост давления) @@ -10,19 +10,19 @@ ## Метод определения - Признак начала операции = - ( давление >= 10 атм ) И - ( обороты ротора <= 8 об/мин) И - ( расстояние от долота до забоя >= 0.01 м) И - ( глубина забоя не изменяется) И - ( глубина долота >= 150 м); + Признак начала операции = + ( давление >= 10 атм ) И + ( обороты ротора <= 8 об/мин) И + ( расстояние от долота до забоя >= 0.01 м) И + ( глубина забоя не изменяется) И + ( глубина долота >= 150 м); - Признак окончания операции = - ( давление < 10 атм ) ИЛИ - ( расстояние от долота до забоя < 0.01 м ) ИЛИ - ( обороты ротора > 8 об/мин) ИЛИ - ( глубина долота < 150 м); - + Признак окончания операции = + ( давление < 10 атм ) ИЛИ + ( расстояние от долота до забоя < 0.01 м ) ИЛИ + ( обороты ротора > 8 об/мин) ИЛИ + ( глубина долота < 150 м); + ## Ключевой параметр Продолжительность операции. diff --git a/AsbCloudInfrastructure/Services/DetectOperations/Specifications/Проработка перед наращиванием.md b/AsbCloudInfrastructure/Services/DetectOperations/Specifications/Проработка перед наращиванием.md index ee2f8154..f0354487 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/Specifications/Проработка перед наращиванием.md +++ b/AsbCloudInfrastructure/Services/DetectOperations/Specifications/Проработка перед наращиванием.md @@ -1,7 +1,7 @@ # Алгоритм определения проработки перед наращиванием ## Описание -Проработка перед наращиванием бурильного инструмента – операция, во время которой после добуривания очередной трубы/ свечи начинается подъем и спуск бурильного инструмента с вращением. Следующей операцией после проработки будет либо шаблонировка (аналогично проработке, но без вращения), либо разгрузка инструмента в клинья (снижение веса на крюке) - наращивание +Проработка перед наращиванием бурильного инструмента - операция, во время которой после добуривания очередной трубы/ свечи начинается подъем и спуск бурильного инструмента с вращением. Следующей операцией после проработки будет либо шаблонировка (аналогично проработке, но без вращения), либо разгрузка инструмента в клинья (снижение веса на крюке) - наращивание Проработка перед наращиванием определяется как время между: - начало подъема/ спуска бурильного инструмента с вращением @@ -11,21 +11,21 @@ ## Метод определения - Признак начала операции = - ( предыдущая операция НЕ удержание в клиньях) И - ( расстояние от долота до забоя > 0.03м ) И - ( расстояние от долота до забоя < 30м ) И - ( давление > 15 атм ) И - ( положение блока < 2.5м ) И - ( обороты ротора > 10 об/м ) И - ( высота блока изменяется больше чем на 0.03м в течении 60 сек с начала операции); - - Признак окончания операции = - ( расстояние от долота до забоя < 0.03м ) ИЛИ - ( расстояние от долота до забоя < 30м ) ИЛИ - ( давление < 15 атм ) ИЛИ - ( положение блока > 31м ) ИЛИ - ( обороты ротора < 10 об/м ); + Признак начала операции = + ( предыдущая операция НЕ удержание в клиньях) И + ( расстояние от долота до забоя > 0.03м ) И + ( расстояние от долота до забоя < 30м ) И + ( давление > 15 атм ) И + ( положение блока < 2.5м ) И + ( обороты ротора > 10 об/м ) И + ( высота блока изменяется больше чем на 0.03м в течении 60 сек с начала операции); + + Признак окончания операции = + ( расстояние от долота до забоя < 0.03м ) ИЛИ + ( расстояние от долота до забоя < 30м ) ИЛИ + ( давление < 15 атм ) ИЛИ + ( положение блока > 31м ) ИЛИ + ( обороты ротора < 10 об/м ); ## Ключевой параметр Продолжительность операции. diff --git a/AsbCloudInfrastructure/Services/DetectOperations/Specifications/Проработка.md b/AsbCloudInfrastructure/Services/DetectOperations/Specifications/Проработка.md index 91ddd293..43858d72 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/Specifications/Проработка.md +++ b/AsbCloudInfrastructure/Services/DetectOperations/Specifications/Проработка.md @@ -1,7 +1,7 @@ # Алгоритм определения проработки ## Описание -Проработка – операция, во время которой производится подъем или спуск бурильного инструмента с вращением и циркуляцией. Следующей операцией после проработки будет либо шаблонировка (аналогично проработке, но БЕЗ вращением и циркуляции), либо разгрузка инструмента в клинья (снижение веса на крюке) – наращивание или отворот бурильного инструмента. +Проработка - операция, во время которой производится подъем или спуск бурильного инструмента с вращением и циркуляцией. Следующей операцией после проработки будет либо шаблонировка (аналогично проработке, но БЕЗ вращением и циркуляции), либо разгрузка инструмента в клинья (снижение веса на крюке) - наращивание или отворот бурильного инструмента. Проработка определяется как время между: - начало подъема/спуска бурильного инструмента с циркуляцией и вращением; @@ -13,17 +13,17 @@ ## Метод определения - Признак начала операции = - ( давление >= 10 атм ) И - ( обороты ротора > 8 об/мин ) И - ( расстояние от долота до забоя >= 0.03м ) И - ( глубина долота >= 150м); - - Признак окончания операции = - ( обороты ротора <= 8 об/мин ) ИЛИ - ( давление < 10 атм ) ИЛИ - ( расстояние от долота до забоя < 0.03м ) ИЛИ - ( глубина долота < 150м); + Признак начала операции = + ( давление >= 10 атм ) И + ( обороты ротора > 8 об/мин ) И + ( расстояние от долота до забоя >= 0.03м ) И + ( глубина долота >= 150м); + + Признак окончания операции = + ( обороты ротора <= 8 об/мин ) ИЛИ + ( давление < 10 атм ) ИЛИ + ( расстояние от долота до забоя < 0.03м ) ИЛИ + ( глубина долота < 150м); ## Ключевой параметр Продолжительность операции. diff --git a/AsbCloudInfrastructure/Services/DetectOperations/Specifications/Удержание в клиньях.md b/AsbCloudInfrastructure/Services/DetectOperations/Specifications/Удержание в клиньях.md index c3bcab51..729b3580 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/Specifications/Удержание в клиньях.md +++ b/AsbCloudInfrastructure/Services/DetectOperations/Specifications/Удержание в клиньях.md @@ -1,22 +1,22 @@ # Алгоритм определения времени в клиньях ## Описание -Наращивание бурильного инструмента – операция, во время которой после добуривания очередной трубы/ свечи циркуляция выключается, инструмент разгружается в клиньях (остается только вес крюкоблока и ВСП), происходит развинчивание трубы от верхнего силового привода, берется очередная труба/ свеча, свинчивается с инструментом в клиньях, свинчивается с верхним силовым приводом, происходит подъем инструмента, вес на крюке увеличивается. Далее включается циркуляция и происходит механическое бурение. +Наращивание бурильного инструмента - операция, во время которой после добуривания очередной трубы/ свечи циркуляция выключается, инструмент разгружается в клиньях (остается только вес крюкоблока и ВСП), происходит развинчивание трубы от верхнего силового привода, берется очередная труба/ свеча, свинчивается с инструментом в клиньях, свинчивается с верхним силовым приводом, происходит подъем инструмента, вес на крюке увеличивается. Далее включается циркуляция и происходит механическое бурение. Наращивание определяется как время между: -- началом разгрузки инструмента на клинья (остается только вес крюкоблока и ВСП). При этом расстояние от долота до забоя в диапазоне от 0.1 до 3м., давление менее 20 атм. В случае Если происходит движение блока без изменения глубины долота—-> идем назад и ищем падение давления ниже 20атм. +- началом разгрузки инструмента на клинья (остается только вес крюкоблока и ВСП). При этом расстояние от долота до забоя в диапазоне от 0.1 до 3м., давление менее 20 атм. В случае Если происходит движение блока без изменения глубины долота--> идем назад и ищем падение давления ниже 20атм. - снятие инструмента с клиньев (вес увеличивается более, чем на 1т). При этом движение талевого блока происходит вверх ИЛИ увеличение давления больше 20 атм. ## Метод определения - Признак начала операции = + Признак начала операции = ( Расстояние от долота до забоя > 0.1 м) И ( давление < 20атм) И ( движение блока без изменения глубины долота) И ( глубина долота > 150 м); - Признак окончания операции = + Признак окончания операции = ( давление > 20атм) ИЛИ ( время продолжительности > 30 мин) ИЛИ ( изменение глубины долота) И diff --git a/AsbCloudInfrastructure/Services/DetectOperations/Specifications/Шаблонировка при бурении.md b/AsbCloudInfrastructure/Services/DetectOperations/Specifications/Шаблонировка при бурении.md index 0463730c..f3ca0960 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/Specifications/Шаблонировка при бурении.md +++ b/AsbCloudInfrastructure/Services/DetectOperations/Specifications/Шаблонировка при бурении.md @@ -1,21 +1,21 @@ -# Алгоритм определения Шаблонировки при бурении +# Алгоритм определения Шаблонировки при бурении ## Описание Шаблонировка при бурении - ## Метод определения - Признак начала операции = - ( предыдущая операция == промывка ) - ( давление > 15 атм ) И - ( положение блока увеличится на 0,5м за следующие 30сек ) И - ( Обороты ротора меньше 1 ) - - Признак окончания операции = + Признак начала операции = + ( предыдущая операция == промывка ) + ( давление > 15 атм ) И + ( положение блока увеличится на 0,5м за следующие 30сек ) И + ( Обороты ротора меньше 1 ) + + Признак окончания операции = ( - ( высота блока не изменяется больше чем на 0.03м в течении 60 сек после окончания операции ) И - ( расстояние от долота до забоя > 0.03м ) И - ( давление > 15 атм ) + ( высота блока не изменяется больше чем на 0.03м в течении 60 сек после окончания операции ) И + ( расстояние от долота до забоя > 0.03м ) И + ( давление > 15 атм ) ) ИЛИ ( давление < 15 атм ) ИЛИ ( Увеличение глубины забоя > 0,01м за 10 секунд) diff --git a/AsbCloudInfrastructure/Services/DetectOperations/Specifications/Шаблонировки перед наращиванием.md b/AsbCloudInfrastructure/Services/DetectOperations/Specifications/Шаблонировки перед наращиванием.md index 60aadb0f..76251652 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/Specifications/Шаблонировки перед наращиванием.md +++ b/AsbCloudInfrastructure/Services/DetectOperations/Specifications/Шаблонировки перед наращиванием.md @@ -1,7 +1,7 @@ # Алгоритм определения шаблонировки перед наращиванием ## Описание -Шаблонировкаперед наращиванием бурильного инструмента – операция, во время которой после добуривания очередной трубы/ свечи начинается подъем и спуск бурильного инструмента БЕЗ вращения. Следующей операцией после шаблонировки будет либо проработка (аналогично шаблонировке, но С вращением), либо разгрузка инструмента в клинья (снижение веса на крюке) - наращивание +Шаблонировкаперед наращиванием бурильного инструмента - операция, во время которой после добуривания очередной трубы/ свечи начинается подъем и спуск бурильного инструмента БЕЗ вращения. Следующей операцией после шаблонировки будет либо проработка (аналогично шаблонировке, но С вращением), либо разгрузка инструмента в клинья (снижение веса на крюке) - наращивание Шаблонировка перед наращиванием определяется как время между: - начало подъема/ спуска бурильного инструмента БЕЗ вращения @@ -11,21 +11,21 @@ ## Метод определения - Признак начала операции = - ( предыдущая операция НЕ удержание в клиньях) И - ( расстояние от долота до забоя > 0.03м ) И - ( расстояние от долота до забоя < 30м ) И - ( давление > 15 атм ) И - ( положение блока < 2.5м ) И - ( обороты ротора < 10 об/м ) И - ( высота блока изменяется больше чем на 0.03м в течении 60 сек с начала операции); - - Признак окончания операции = - ( расстояние от долота до забоя < 0.03м ) ИЛИ - ( расстояние от долота до забоя < 30м ) ИЛИ - ( давление < 15 атм ) ИЛИ - ( положение блока > 31м ) ИЛИ - ( обороты ротора > 10 об/м ); + Признак начала операции = + ( предыдущая операция НЕ удержание в клиньях) И + ( расстояние от долота до забоя > 0.03м ) И + ( расстояние от долота до забоя < 30м ) И + ( давление > 15 атм ) И + ( положение блока < 2.5м ) И + ( обороты ротора < 10 об/м ) И + ( высота блока изменяется больше чем на 0.03м в течении 60 сек с начала операции); + + Признак окончания операции = + ( расстояние от долота до забоя < 0.03м ) ИЛИ + ( расстояние от долота до забоя < 30м ) ИЛИ + ( давление < 15 атм ) ИЛИ + ( положение блока > 31м ) ИЛИ + ( обороты ротора > 10 об/м ); ## Ключевой параметр Продолжительность операции. \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/DetectOperations/WorkOperationDetection.cs b/AsbCloudInfrastructure/Services/DetectOperations/WorkOperationDetection.cs index d001471e..93a8b9c3 100644 --- a/AsbCloudInfrastructure/Services/DetectOperations/WorkOperationDetection.cs +++ b/AsbCloudInfrastructure/Services/DetectOperations/WorkOperationDetection.cs @@ -1,54 +1,91 @@ -using System; +using System; +using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Threading; using System.Threading.Tasks; using AsbCloudApp.Data; +using AsbCloudApp.Data.SAUB; using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; using AsbCloudApp.Services; using AsbCloudInfrastructure.Background; using Microsoft.Extensions.DependencyInjection; namespace AsbCloudInfrastructure.Services.DetectOperations; -public class WorkOperationDetection: Work +public class WorkOperationDetection : Work { + private static readonly IDictionary CacheOfStartDatesByTelemetryId = new Dictionary(); - public WorkOperationDetection() - :base("Operation detection") - { - Timeout = TimeSpan.FromMinutes(20); - OnErrorAsync = (id, exception, token) => - { - var text = $"work {id}, when {CurrentState?.State}, throw error:{exception.Message}"; - Trace.TraceWarning(text); - return Task.CompletedTask; - }; - } + public WorkOperationDetection() + : base("Operation detection") + { + Timeout = TimeSpan.FromMinutes(20); + OnErrorAsync = (id, exception, _) => + { + var text = $"work {id}, when {CurrentState?.State}, throw error:{exception.Message}"; + Trace.TraceWarning(text); + return Task.CompletedTask; + }; + } - protected override async Task Action(string id, IServiceProvider services, Action onProgressCallback, CancellationToken token) - { - var telemetryRepository = services.GetRequiredService>(); - var detectedOperationRepository = services.GetRequiredService(); - var detectedOperationService = services.GetRequiredService(); + protected override async Task Action(string id, + IServiceProvider services, + Action onProgressCallback, + CancellationToken token) + { + var telemetryRepository = services.GetRequiredService>(); + var detectedOperationRepository = services.GetRequiredService(); + var detectedOperationService = services.GetRequiredService(); + var telemetryDataCache = services.GetRequiredService>(); - var telemetryIds = (await telemetryRepository.GetAllAsync(token)) - .Select(t => t.Id) - .ToArray(); + var idsTelemetry = (await telemetryRepository.GetAllAsync(token)) + .Select(t => t.Id) + .ToArray(); - var lastDetectedDates = await detectedOperationRepository.GetLastDetectedDatesAsync(token); + var lastDetectedOperations = await detectedOperationRepository.GetLastDetectedOperationsAsync(token); - for (var i = 0; i < telemetryIds.Length; i++) - { - var telemetryId = telemetryIds[i]; - - var beginDate = lastDetectedDates.TryGetValue(telemetryId, out var date) ? date : (DateTimeOffset?)null; - - onProgressCallback($"Start detecting telemetry: {telemetryId} from {beginDate}", i / telemetryIds.Length); - var detectedOperations = await detectedOperationService.DetectOperationsAsync(telemetryId, beginDate, token); + for (int i = 0; i < idsTelemetry.Length; i++) + { + var idTelemetry = idsTelemetry[i]; - if (detectedOperations.Any()) - await detectedOperationRepository.InsertRangeAsync(detectedOperations, token); - } - } -} + var telemetryDateRange = telemetryDataCache.GetOrDefaultWellDataDateRange(idTelemetry); + + if(telemetryDateRange == null) + continue; + + var dateBegin = telemetryDateRange.From; + var dateEnd = telemetryDateRange.To; + + if (lastDetectedOperations.TryGetValue(idTelemetry, out var lastDetectedOperation)) + dateBegin = lastDetectedOperation.DateEnd; + + if (CacheOfStartDatesByTelemetryId.TryGetValue(idTelemetry, out var dateBeginFromCache)) + dateBegin = dateBeginFromCache; + + onProgressCallback.Invoke($"Start detecting telemetry: {idTelemetry} from {dateBegin}", i / idsTelemetry.Length); + + const int pointsCount = 4 * 86_400; + + while (dateBegin < dateEnd) + { + var request = new TelemetryDataRequest + { + GeDate = dateBegin, + Take = pointsCount, + Order = 0 + }; + + var detectedOperations = + await detectedOperationService.DetectOperationsAsync(idTelemetry, request, lastDetectedOperation, token); + + dateBegin = detectedOperations.LastDate; + + CacheOfStartDatesByTelemetryId[idTelemetry] = dateBegin; + + await detectedOperationRepository.InsertRangeAsync(detectedOperations.Items, token); + } + } + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/DrillTestReport/DrillTestReportMakerService.cs b/AsbCloudInfrastructure/Services/DrillTestReport/DrillTestReportMakerService.cs index d40ab302..f110a2e2 100644 --- a/AsbCloudInfrastructure/Services/DrillTestReport/DrillTestReportMakerService.cs +++ b/AsbCloudInfrastructure/Services/DrillTestReport/DrillTestReportMakerService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.DrillTestReport; +using AsbCloudApp.Data.DrillTestReport; using ClosedXML.Excel; using System; using System.IO; @@ -16,9 +16,9 @@ namespace AsbCloudInfrastructure.Services.DrillTestReport private readonly string sheetName = "Лист1"; private readonly int startRowNumber = 8; - public async Task MakeReportAsync(DrillTestReportDataDto report, CancellationToken cancellationToken) + public Stream MakeReport(DrillTestReportDataDto report) { - using var excelTemplateStream = await Assembly.GetExecutingAssembly().GetTemplateCopyStreamAsync(templateName, cancellationToken); + using var excelTemplateStream = Assembly.GetExecutingAssembly().GetTemplateCopyStream(templateName); using var workbook = new XLWorkbook(excelTemplateStream); diff --git a/AsbCloudInfrastructure/Services/DrillTestReport/DrillTestReportService.cs b/AsbCloudInfrastructure/Services/DrillTestReport/DrillTestReportService.cs index ff29ed0f..c5f43855 100644 --- a/AsbCloudInfrastructure/Services/DrillTestReport/DrillTestReportService.cs +++ b/AsbCloudInfrastructure/Services/DrillTestReport/DrillTestReportService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Data.DrillTestReport; using AsbCloudApp.Exceptions; using AsbCloudApp.Repositories; @@ -53,7 +53,7 @@ namespace AsbCloudInfrastructure.Services.DrillTestReport }; var fileName = string.Format("Drill_test_{0}.xlsx", dto.TimeStampStart.ToString("dd.mm.yyyy_HH_MM_ss")); - var stream = await drillTestReportMakerService.MakeReportAsync(report, cancellationToken); + var stream = drillTestReportMakerService.MakeReport(report); return (fileName, stream); } diff --git a/AsbCloudInfrastructure/Services/DrillingProgram/ContentListSheet.cs b/AsbCloudInfrastructure/Services/DrillingProgram/ContentListSheet.cs index 06da4d48..627cec0c 100644 --- a/AsbCloudInfrastructure/Services/DrillingProgram/ContentListSheet.cs +++ b/AsbCloudInfrastructure/Services/DrillingProgram/ContentListSheet.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using ClosedXML.Excel; using System; using System.Collections.Generic; diff --git a/AsbCloudInfrastructure/Services/DrillingProgram/Convert/ConvertToPdf.cs b/AsbCloudInfrastructure/Services/DrillingProgram/Convert/ConvertToPdf.cs index 07526f5d..4c789698 100644 --- a/AsbCloudInfrastructure/Services/DrillingProgram/Convert/ConvertToPdf.cs +++ b/AsbCloudInfrastructure/Services/DrillingProgram/Convert/ConvertToPdf.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.IO; using System.Linq; using CliWrap; diff --git a/AsbCloudInfrastructure/Services/DrillingProgram/DrillingProgramService.cs b/AsbCloudInfrastructure/Services/DrillingProgram/DrillingProgramService.cs index 18e6acf2..06058d4d 100644 --- a/AsbCloudInfrastructure/Services/DrillingProgram/DrillingProgramService.cs +++ b/AsbCloudInfrastructure/Services/DrillingProgram/DrillingProgramService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Data.User; using AsbCloudApp.Exceptions; using AsbCloudApp.Repositories; diff --git a/AsbCloudInfrastructure/Services/DrillingProgram/ImageInfo.cs b/AsbCloudInfrastructure/Services/DrillingProgram/ImageInfo.cs index d6306919..bbeaa71b 100644 --- a/AsbCloudInfrastructure/Services/DrillingProgram/ImageInfo.cs +++ b/AsbCloudInfrastructure/Services/DrillingProgram/ImageInfo.cs @@ -1,4 +1,4 @@ -using ClosedXML.Excel; +using ClosedXML.Excel; namespace AsbCloudInfrastructure.Services.DrillingProgram { diff --git a/AsbCloudInfrastructure/Services/DrillingProgram/TitleListSheet.cs b/AsbCloudInfrastructure/Services/DrillingProgram/TitleListSheet.cs index 7c9355d8..57e37111 100644 --- a/AsbCloudInfrastructure/Services/DrillingProgram/TitleListSheet.cs +++ b/AsbCloudInfrastructure/Services/DrillingProgram/TitleListSheet.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using ClosedXML.Excel; using System; using System.Collections.Generic; diff --git a/AsbCloudInfrastructure/Services/Email/BaseFactory.cs b/AsbCloudInfrastructure/Services/Email/BaseFactory.cs index 11c8feaa..50570467 100644 --- a/AsbCloudInfrastructure/Services/Email/BaseFactory.cs +++ b/AsbCloudInfrastructure/Services/Email/BaseFactory.cs @@ -1,7 +1,8 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Exceptions; using Microsoft.Extensions.Configuration; using System; +using System.Configuration; using System.IO; namespace AsbCloudInfrastructure.Services.Email @@ -9,17 +10,24 @@ namespace AsbCloudInfrastructure.Services.Email public class BaseFactory { - private readonly string platformName; - private readonly string platformUrl; - private readonly string companyName; - private readonly string supportMail; + protected readonly string platformName; + protected readonly string platformUrl; + protected readonly string companyName; + protected readonly string supportMail; public BaseFactory(IConfiguration configuration) { - platformName = configuration.GetValue("email:platformName", "Цифровое бурение"); - platformUrl = configuration.GetValue("email:platformUrl", "https://cloud.digitaldrilling.ru/"); - companyName = configuration.GetValue("email:companyName", "ООО \"Цифровое бурение\""); - supportMail = configuration.GetValue("email:supportMail", "support@digitaldrilling.ru"); + platformName = configuration.GetValue("email:platformName") + ?? throw new ConfigurationErrorsException("email:platformName не определен"); + + platformUrl = configuration.GetValue("email:platformUrl") + ?? throw new ConfigurationErrorsException("email:platformUrl не определен"); + + companyName = configuration.GetValue("email:companyName") + ?? throw new ConfigurationErrorsException("email:companyName не определен"); + + supportMail = configuration.GetValue("email:supportMail") + ?? throw new ConfigurationErrorsException("email:supportMail не определен"); } public static string GetOrEmptyImageBase64(string resourceFileName) @@ -37,7 +45,7 @@ namespace AsbCloudInfrastructure.Services.Email { System.Diagnostics.Trace.TraceWarning($"GetOrEmptyImageBase64(). File {logoFilePath} not found."); return string.Empty; - } + } var imageBytes = File.ReadAllBytes(logoFilePath); var format = Path.GetExtension(resourceFileName).Trim('.'); diff --git a/AsbCloudInfrastructure/Services/Email/DrillingMailBodyFactory.cs b/AsbCloudInfrastructure/Services/Email/DrillingMailBodyFactory.cs index ba0da560..1501811a 100644 --- a/AsbCloudInfrastructure/Services/Email/DrillingMailBodyFactory.cs +++ b/AsbCloudInfrastructure/Services/Email/DrillingMailBodyFactory.cs @@ -1,86 +1,82 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using Microsoft.Extensions.Configuration; namespace AsbCloudInfrastructure.Services.Email { - class DrillingMailBodyFactory : BaseFactory + class DrillingMailBodyFactory : BaseFactory { - private readonly string platformName; - private readonly string platformUrl; public DrillingMailBodyFactory(IConfiguration configuration) - : base(configuration) + : base(configuration) { - platformName = configuration.GetValue("email:platformName", "Цифровое бурение"); - platformUrl = configuration.GetValue("email:platformUrl", "https://cloud.digitaldrilling.ru/"); - } + } - public override string MakeSubject(WellDto well, string action) + public override string MakeSubject(WellDto well, string action) { - var subj = $"{well.Deposit}, {well.Cluster}, {well.Caption}. Программа бурения. {action}"; - return subj; - } + var subj = $"{well.Deposit}, {well.Cluster}, {well.Caption}. Программа бурения. {action}"; + return subj; + } - public string MakeMailBodyForNewPublisher(WellDto well, string publisherName, string documentCategory) - { - var drillingProgramHref = MakeDrillingProgramHref(well); - - var body = $"

Здравствуйте, {publisherName}.

" + - $"На портале {platformName} началось создание программы бурения скважины {drillingProgramHref}," + - $" куст {well.Cluster}, месторождение {well.Deposit}." + - $"

От вас ожидается загрузка на портал документа «{documentCategory}» в формате excel (*.xlsx)." + - MakeSignatue() + - $""; - return body; - } - - public string MakeMailBodyForApproverNewFile(WellDto well, string approverName, int idFile, string fileName) + public string MakeMailBodyForNewPublisher(WellDto well, string publisherName, string documentCategory) { - var drillingProgramHref = MakeDrillingProgramHref(well); + var drillingProgramHref = MakeDrillingProgramHref(well); - var body = $"

Здравствуйте, {approverName}.

" + - $"На портал {platformName} загружен документ {fileName}" + - $" для согласования при создании программы бурения скважины {drillingProgramHref}, куст ({well.Cluster})" + - $", месторождение ({well.Deposit}).
" + + var body = $"

Здравствуйте, {publisherName}.

" + + $"На портале {platformName} началось создание программы бурения скважины {drillingProgramHref}," + + $" куст {well.Cluster}, месторождение {well.Deposit}." + + $"

От вас ожидается загрузка на портал документа «{documentCategory}» в формате excel (*.xlsx)." + MakeSignatue() + $""; - return body; - } + return body; + } - public string MakeMailBodyForPublisherOnReject(WellDto well, string publisherName, int idFile, string fileName, FileMarkDto fileMark) - { - var drillingProgramHref = MakeDrillingProgramHref(well); - - var body = $"

Здравствуйте, {publisherName}.

" + - $"На портале {platformName} отклонен загруженный вами документ {fileName} " + - $" по программе бурения скважины {drillingProgramHref}," + - $" куст {well.Cluster}, месторождение {well.Deposit}." + - $" Комментарий согласующего ({fileMark.User?.Name} {fileMark.User?.Surname}):
{fileMark.Comment}" + - MakeSignatue() + - $""; - return body; - } - - public string MakeMailBodyForPublisherOnFullAccept(WellDto well, string publisherName, int idFile, string fileName) - { - var drillingProgramHref = MakeDrillingProgramHref(well); - - var body = $"

Здравствуйте, {publisherName}.

" + - $"На портале {platformName} полностью согласован документ {fileName} " + - $" по программе бурения скважины {drillingProgramHref}," + - $" куст {well.Cluster}, месторождение {well.Deposit}." + - MakeSignatue() + - $""; - return body; - } - - private string MakeDrillingProgramHref(WellDto well) + public string MakeMailBodyForApproverNewFile(WellDto well, string approverName, int idFile, string fileName) { - var drillingProgramUrl = $"{platformUrl}/well/{well.Id}/drillingProgram"; - var drillingProgramHref = MakeHref(drillingProgramUrl, well.Caption); - return drillingProgramHref; - } - } + var drillingProgramHref = MakeDrillingProgramHref(well); + + var body = $"

Здравствуйте, {approverName}.

" + + $"На портал {platformName} загружен документ {fileName}" + + $" для согласования при создании программы бурения скважины {drillingProgramHref}, куст ({well.Cluster})" + + $", месторождение ({well.Deposit}).
" + + MakeSignatue() + + $""; + return body; + } + + public string MakeMailBodyForPublisherOnReject(WellDto well, string publisherName, int idFile, string fileName, FileMarkDto fileMark) + { + var drillingProgramHref = MakeDrillingProgramHref(well); + + var body = $"

Здравствуйте, {publisherName}.

" + + $"На портале {platformName} отклонен загруженный вами документ {fileName} " + + $" по программе бурения скважины {drillingProgramHref}," + + $" куст {well.Cluster}, месторождение {well.Deposit}." + + $" Комментарий согласующего ({fileMark.User?.Name} {fileMark.User?.Surname}):
{fileMark.Comment}" + + MakeSignatue() + + $""; + return body; + } + + public string MakeMailBodyForPublisherOnFullAccept(WellDto well, string publisherName, int idFile, string fileName) + { + var drillingProgramHref = MakeDrillingProgramHref(well); + + var body = $"

Здравствуйте, {publisherName}.

" + + $"На портале {platformName} полностью согласован документ {fileName} " + + $" по программе бурения скважины {drillingProgramHref}," + + $" куст {well.Cluster}, месторождение {well.Deposit}." + + MakeSignatue() + + $""; + return body; + } + + private string MakeDrillingProgramHref(WellDto well) + { + var drillingProgramUrl = $"{platformUrl}/well/{well.Id}/drillingProgram"; + var drillingProgramHref = MakeHref(drillingProgramUrl, well.Caption); + return drillingProgramHref; + } + } } diff --git a/AsbCloudInfrastructure/Services/Email/EmailNotificationTransportService.cs b/AsbCloudInfrastructure/Services/Email/EmailNotificationTransportService.cs index 2eec7b27..a52cd0b1 100644 --- a/AsbCloudInfrastructure/Services/Email/EmailNotificationTransportService.cs +++ b/AsbCloudInfrastructure/Services/Email/EmailNotificationTransportService.cs @@ -1,9 +1,10 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Exceptions; using AsbCloudApp.Repositories; using AsbCloudApp.Services.Notifications; using Microsoft.Extensions.Configuration; using System.Collections.Generic; +using System.Configuration; using System.Diagnostics; using System.Linq; using System.Net.Mail; @@ -29,9 +30,14 @@ namespace AsbCloudInfrastructure.Services.Email { this.userRepository = userRepository; - this.sender = configuration.GetValue("email:sender", string.Empty); - this.smtpPassword = configuration.GetValue("email:password", string.Empty); - this.smtpServer = configuration.GetValue("email:smtpServer", string.Empty); + this.sender = configuration.GetValue("email:sender") + ?? throw new ConfigurationErrorsException("email:sender не определен"); + + this.smtpPassword = configuration.GetValue("email:password") + ?? throw new ConfigurationErrorsException("email:password не определен"); + + this.smtpServer = configuration.GetValue("email:smtpServer") + ?? throw new ConfigurationErrorsException("email:smtpServer не определен"); var configError = string.IsNullOrEmpty(this.sender) || string.IsNullOrEmpty(this.smtpPassword) || diff --git a/AsbCloudInfrastructure/Services/Email/WellFinalDocumentMailBodyFactory .cs b/AsbCloudInfrastructure/Services/Email/WellFinalDocumentMailBodyFactory .cs index 751ab042..f9a49329 100644 --- a/AsbCloudInfrastructure/Services/Email/WellFinalDocumentMailBodyFactory .cs +++ b/AsbCloudInfrastructure/Services/Email/WellFinalDocumentMailBodyFactory .cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudInfrastructure.Services.Email; using Microsoft.Extensions.Configuration; using System; @@ -7,28 +7,27 @@ using System.IO; namespace AsbCloudInfrastructure { - class WellFinalDocumentMailBodyFactory : BaseFactory + class WellFinalDocumentMailBodyFactory : BaseFactory { - private readonly string platformName; public WellFinalDocumentMailBodyFactory(IConfiguration configuration) - : base(configuration) + : base(configuration) { - platformName = configuration.GetValue("email:platformName", "Цифровое бурение"); - } + + } - public override string MakeSubject(WellDto well, string action) - => $"{well.Deposit}, {well.Cluster}, {well.Caption}. Дело скважины. {action}"; + public override string MakeSubject(WellDto well, string action) + => $"{well.Deposit}, {well.Cluster}, {well.Caption}. Дело скважины. {action}"; - public string MakeMailBodyForWellFinalDocument(WellDto well, string publisherName, string message) - { - var body = $"

Здравствуйте, {publisherName}.

" + - $"На портале {platformName} {message}," + - $" куст {well.Cluster}, месторождение {well.Deposit}." + - MakeSignatue() + - $""; - return body; - } - } + public string MakeMailBodyForWellFinalDocument(WellDto well, string publisherName, string message) + { + var body = $"

Здравствуйте, {publisherName}.

" + + $"На портале {platformName} {message}," + + $" куст {well.Cluster}, месторождение {well.Deposit}." + + MakeSignatue() + + $""; + return body; + } + } } diff --git a/AsbCloudInfrastructure/Services/ExcelServices/Cell.cs b/AsbCloudInfrastructure/Services/ExcelServices/Cell.cs index a18fb167..1baa3ae7 100644 --- a/AsbCloudInfrastructure/Services/ExcelServices/Cell.cs +++ b/AsbCloudInfrastructure/Services/ExcelServices/Cell.cs @@ -7,88 +7,88 @@ namespace AsbCloudInfrastructure.Services.ExcelServices; public class Cell { - private static IDictionary> converters = new Dictionary>() - { - { typeof(bool), cell => cell.GetBoolean() }, - { typeof(double), cell => cell.GetValue() }, - { typeof(float), cell => cell.GetValue() }, - { typeof(long), cell => cell.GetValue() }, - { typeof(ulong), cell => cell.GetValue() }, - { typeof(int), cell => cell.GetValue() }, - { typeof(uint), cell => cell.GetValue() }, - { typeof(short), cell => cell.GetValue() }, - { typeof(ushort), cell => cell.GetValue() }, - { typeof(string), cell => cell.GetString() }, + private static IDictionary> converters = new Dictionary>() + { + { typeof(bool), cell => cell.GetBoolean() }, + { typeof(double), cell => cell.GetValue() }, + { typeof(float), cell => cell.GetValue() }, + { typeof(long), cell => cell.GetValue() }, + { typeof(ulong), cell => cell.GetValue() }, + { typeof(int), cell => cell.GetValue() }, + { typeof(uint), cell => cell.GetValue() }, + { typeof(short), cell => cell.GetValue() }, + { typeof(ushort), cell => cell.GetValue() }, + { typeof(string), cell => cell.GetString() }, - { - typeof(DateTime), cell => - { - if (cell.DataType == XLDataType.DateTime) - return cell.GetDateTime(); + { + typeof(DateTime), cell => + { + if (cell.DataType == XLDataType.DateTime) + return cell.GetDateTime(); - var stringValue = cell.GetString(); - return DateTime.Parse(stringValue); - } - }, + var stringValue = cell.GetString(); + return DateTime.Parse(stringValue); + } + }, - { - typeof(DateTimeOffset), cell => - { - var stringValue = cell.GetString(); - return DateTimeOffset.Parse(stringValue); - } - }, + { + typeof(DateTimeOffset), cell => + { + var stringValue = cell.GetString(); + return DateTimeOffset.Parse(stringValue); + } + }, - { - typeof(DateOnly), cell => - { - var stringValue = cell.GetString(); - return DateOnly.Parse(stringValue); - } - }, + { + typeof(DateOnly), cell => + { + var stringValue = cell.GetString(); + return DateOnly.Parse(stringValue); + } + }, - { - typeof(TimeOnly), cell => - { - var stringValue = cell.GetString(); - return TimeOnly.Parse(stringValue); - } - }, + { + typeof(TimeOnly), cell => + { + var stringValue = cell.GetString(); + return TimeOnly.Parse(stringValue); + } + }, - { - typeof(TimeSpan), cell => - { - if (cell.DataType == XLDataType.TimeSpan) - return cell.GetTimeSpan(); + { + typeof(TimeSpan), cell => + { + if (cell.DataType == XLDataType.TimeSpan) + return cell.GetTimeSpan(); - var stringValue = cell.GetString(); - return TimeSpan.Parse(stringValue); - } - }, - }; + var stringValue = cell.GetString(); + return TimeSpan.Parse(stringValue); + } + }, + }; - private readonly Type type; + private readonly Type type; - public Cell(int columnNumber, - Type type) - { - ColumnNumber = columnNumber; - this.type = type; - } + public Cell(int columnNumber, + Type type) + { + ColumnNumber = columnNumber; + this.type = type; + } - public int ColumnNumber { get; } + public int ColumnNumber { get; } - public object? GetValueFromCell(IXLCell cell) - { - try - { - return converters[type].Invoke(cell); - } - catch - { - var message = string.Format(XLExtentions.InvalidValueTemplate, cell.Worksheet.Name, cell.Address.RowNumber, - cell.Address.ColumnNumber); - throw new FileFormatException(message); - } - } + public object? GetValueFromCell(IXLCell cell) + { + try + { + return converters[type].Invoke(cell); + } + catch + { + var message = string.Format(XLExtentions.InvalidValueTemplate, cell.Worksheet.Name, cell.Address.RowNumber, + cell.Address.ColumnNumber); + throw new FileFormatException(message); + } + } } \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ExcelServices/ExcelExportService.cs b/AsbCloudInfrastructure/Services/ExcelServices/ExcelExportService.cs index 74e2d5fb..48febc07 100644 --- a/AsbCloudInfrastructure/Services/ExcelServices/ExcelExportService.cs +++ b/AsbCloudInfrastructure/Services/ExcelServices/ExcelExportService.cs @@ -14,63 +14,63 @@ using Mapster; namespace AsbCloudInfrastructure.Services.ExcelServices; public abstract class ExcelExportService : IExportService - where TOptions : IExportOptionsRequest - where TTemplate : class, ITemplateParameters, new() + where TOptions : IExportOptionsRequest + where TTemplate : class, ITemplateParameters, new() { - protected TTemplate TemplateParameters => new(); + protected TTemplate TemplateParameters => new(); - protected abstract Task BuildFileNameAsync(TOptions options, CancellationToken token); + protected abstract Task BuildFileNameAsync(TOptions options, CancellationToken token); - protected abstract Task> GetDtosAsync(TOptions options, CancellationToken token); + protected abstract Task> GetDtosAsync(TOptions options, CancellationToken token); - public async Task<(string FileName, Stream File)> ExportAsync(TOptions options, CancellationToken token) - { - var dtos = await GetDtosAsync(options, token); + public async Task<(string FileName, Stream File)> ExportAsync(TOptions options, CancellationToken token) + { + var dtos = await GetDtosAsync(options, token); - var fileName = await BuildFileNameAsync(options, token); - var file = BuildFile(dtos); - return (fileName, file); - } + var fileName = await BuildFileNameAsync(options, token); + var file = BuildFile(dtos); + return (fileName, file); + } - private Stream BuildFile(IEnumerable dtos) - { - using var template = GetTemplateFile(); - using var workbook = new XLWorkbook(template); - AddDtosToWorkbook(workbook, dtos); + private Stream BuildFile(IEnumerable dtos) + { + using var template = GetTemplateFile(); + using var workbook = new XLWorkbook(template); + AddDtosToWorkbook(workbook, dtos); - var memoryStream = new MemoryStream(); - workbook.SaveAs(memoryStream, new SaveOptions { }); - memoryStream.Seek(0, SeekOrigin.Begin); - return memoryStream; - } + var memoryStream = new MemoryStream(); + workbook.SaveAs(memoryStream, new SaveOptions { }); + memoryStream.Seek(0, SeekOrigin.Begin); + return memoryStream; + } - private void AddDtosToWorkbook(XLWorkbook workbook, IEnumerable dtos) - { - var dtosToArray = dtos.ToArray(); + private void AddDtosToWorkbook(XLWorkbook workbook, IEnumerable dtos) + { + var dtosToArray = dtos.ToArray(); - if (!dtosToArray.Any()) - return; + if (!dtosToArray.Any()) + return; - var sheet = workbook.GetWorksheet(TemplateParameters.SheetName); - for (var i = 0; i < dtosToArray.Length; i++) - { - var row = sheet.Row(1 + i + TemplateParameters.HeaderRowsCount); - AddRow(row, dtosToArray[i]); - } - } + var sheet = workbook.GetWorksheet(TemplateParameters.SheetName); + for (var i = 0; i < dtosToArray.Length; i++) + { + var row = sheet.Row(1 + i + TemplateParameters.HeaderRowsCount); + AddRow(row, dtosToArray[i]); + } + } - private void AddRow(IXLRow xlRow, TDto dto) - { - var properties = dto.Adapt>(); + private void AddRow(IXLRow xlRow, TDto dto) + { + var properties = dto.Adapt>(); - foreach (var (name, cellValue) in properties) - { - if (TemplateParameters.Cells.TryGetValue(name, out var cell)) - xlRow.Cell(cell.ColumnNumber).SetCellValue(cellValue); - } - } + foreach (var (name, cellValue) in properties) + { + if (TemplateParameters.Cells.TryGetValue(name, out var cell)) + xlRow.Cell(cell.ColumnNumber).SetCellValue(cellValue); + } + } - private Stream GetTemplateFile() => - Assembly.GetExecutingAssembly().GetTemplateCopyStream(TemplateParameters.FileName) - ?? throw new ArgumentNullException($"Файл '{TemplateParameters.FileName}' не найден"); + private Stream GetTemplateFile() => + Assembly.GetExecutingAssembly().GetTemplateCopyStream(TemplateParameters.FileName) + ?? throw new ArgumentNullException($"Файл '{TemplateParameters.FileName}' не найден"); } \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ExcelServices/ExcelParser.cs b/AsbCloudInfrastructure/Services/ExcelServices/ExcelParser.cs index 924e7477..0d995be6 100644 --- a/AsbCloudInfrastructure/Services/ExcelServices/ExcelParser.cs +++ b/AsbCloudInfrastructure/Services/ExcelServices/ExcelParser.cs @@ -14,121 +14,121 @@ using Mapster; namespace AsbCloudInfrastructure.Services.ExcelServices; public abstract class ExcelParser : IParserService - where TDto : class, IValidatableObject, IId - where TOptions : IParserOptionsRequest - where TTemplate : class, ITemplateParameters, new() + where TDto : class, IValidatableObject, IId + where TOptions : IParserOptionsRequest + where TTemplate : class, ITemplateParameters, new() { - protected TTemplate TemplateParameters => new(); + protected TTemplate TemplateParameters => new(); - public virtual ParserResultDto Parse(Stream file, TOptions options) - { - using var workbook = new XLWorkbook(file); - var sheet = workbook.GetWorksheet(TemplateParameters.SheetName); - var dtos = ParseExcelSheet(sheet); - return dtos; - } + public virtual ParserResultDto Parse(Stream file, TOptions options) + { + using var workbook = new XLWorkbook(file); + var sheet = workbook.GetWorksheet(TemplateParameters.SheetName); + var dtos = ParseExcelSheet(sheet); + return dtos; + } - public virtual Stream GetTemplateFile() => - Assembly.GetExecutingAssembly().GetTemplateCopyStream(TemplateParameters.FileName) - ?? throw new ArgumentNullException($"Файл '{TemplateParameters.FileName}' не найден"); + public virtual Stream GetTemplateFile() => + Assembly.GetExecutingAssembly().GetTemplateCopyStream(TemplateParameters.FileName) + ?? throw new ArgumentNullException($"Файл '{TemplateParameters.FileName}' не найден"); - protected virtual IDictionary ParseRow(IXLRow xlRow) - { - var cells = TemplateParameters.Cells.ToDictionary(x => x.Key, x => - { - var columnNumber = x.Value.ColumnNumber; - var xlCell = xlRow.Cell(columnNumber); - var cellValue = x.Value.GetValueFromCell(xlCell); - return cellValue; - }); + protected virtual IDictionary ParseRow(IXLRow xlRow) + { + var cells = TemplateParameters.Cells.ToDictionary(x => x.Key, x => + { + var columnNumber = x.Value.ColumnNumber; + var xlCell = xlRow.Cell(columnNumber); + var cellValue = x.Value.GetValueFromCell(xlCell); + return cellValue; + }); - return cells; - } + return cells; + } - protected virtual TDto BuildDto(IDictionary row, int rowNumber) - { - var dto = row.Adapt(); - return dto; - } + protected virtual TDto BuildDto(IDictionary row, int rowNumber) + { + var dto = row.Adapt(); + return dto; + } - private ValidationResultDto Validate(TDto dto, int rowNumber) - { - var validationResults = new List(); + private ValidationResultDto Validate(TDto dto, int rowNumber) + { + var validationResults = new List(); - var isValid = dto.Validate(validationResults); + var isValid = dto.Validate(validationResults); - if (isValid) - { - var validDto = new ValidationResultDto - { - Item = dto - }; + if (isValid) + { + var validDto = new ValidationResultDto + { + Item = dto + }; - return validDto; - } + return validDto; + } - var columnsDict = TemplateParameters.Cells.ToDictionary(x => x.Key, x => x.Value.ColumnNumber); + var columnsDict = TemplateParameters.Cells.ToDictionary(x => x.Key, x => x.Value.ColumnNumber); - var invalidDto = new ValidationResultDto - { - Item = dto, - Warnings = validationResults - .SelectMany(v => v.MemberNames - .Where(columnsDict.ContainsKey) - .Select(m => - { - var columnNumber = columnsDict[m]; - var errorMessage = v.ErrorMessage; - var warningMessage = string.Format(XLExtentions.ProblemDetailsTemplate, - TemplateParameters.SheetName, - rowNumber, - columnNumber, - errorMessage); - var warning = new ValidationResult(warningMessage, new[] { m }); - return warning; - })) - }; + var invalidDto = new ValidationResultDto + { + Item = dto, + Warnings = validationResults + .SelectMany(v => v.MemberNames + .Where(columnsDict.ContainsKey) + .Select(m => + { + var columnNumber = columnsDict[m]; + var errorMessage = v.ErrorMessage; + var warningMessage = string.Format(XLExtentions.ProblemDetailsTemplate, + TemplateParameters.SheetName, + rowNumber, + columnNumber, + errorMessage); + var warning = new ValidationResult(warningMessage, new[] { m }); + return warning; + })) + }; - return invalidDto; - } + return invalidDto; + } - protected virtual ParserResultDto ParseExcelSheet(IXLWorksheet sheet) - { - var count = sheet.RowsUsed().Count() - TemplateParameters.HeaderRowsCount; - if (count <= 0) - return new ParserResultDto(); + protected virtual ParserResultDto ParseExcelSheet(IXLWorksheet sheet) + { + var count = sheet.RowsUsed().Count() - TemplateParameters.HeaderRowsCount; + if (count <= 0) + return new ParserResultDto(); - var valiationResults = new List>(count); - var warnings = new List(); + var valiationResults = new List>(count); + var warnings = new List(); - for (var i = 0; i < count; i++) - { - var xlRow = sheet.Row(1 + i + TemplateParameters.HeaderRowsCount); - var rowNumber = xlRow.RowNumber(); + for (var i = 0; i < count; i++) + { + var xlRow = sheet.Row(1 + i + TemplateParameters.HeaderRowsCount); + var rowNumber = xlRow.RowNumber(); - try - { - var row = ParseRow(xlRow); - var dto = BuildDto(row, rowNumber); - var validationResult = Validate(dto, rowNumber); - valiationResults.Add(validationResult); - } - catch (FileFormatException ex) - { - var warning = new ValidationResult(ex.Message); - warnings.Add(warning); - } - } + try + { + var row = ParseRow(xlRow); + var dto = BuildDto(row, rowNumber); + var validationResult = Validate(dto, rowNumber); + valiationResults.Add(validationResult); + } + catch (FileFormatException ex) + { + var warning = new ValidationResult(ex.Message); + warnings.Add(warning); + } + } - var parserResult = new ParserResultDto - { - Item = valiationResults - }; + var parserResult = new ParserResultDto + { + Item = valiationResults + }; - if (warnings.Any()) - parserResult.Warnings = warnings; + if (warnings.Any()) + parserResult.Warnings = warnings; - return parserResult; - } + return parserResult; + } } \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ExcelServices/ExcelWellRelatedParser.cs b/AsbCloudInfrastructure/Services/ExcelServices/ExcelWellRelatedParser.cs index 55485f77..0bc18e32 100644 --- a/AsbCloudInfrastructure/Services/ExcelServices/ExcelWellRelatedParser.cs +++ b/AsbCloudInfrastructure/Services/ExcelServices/ExcelWellRelatedParser.cs @@ -7,17 +7,17 @@ using AsbCloudInfrastructure.Services.ExcelServices.Templates; namespace AsbCloudInfrastructure.Services.ExcelServices; public abstract class ExcelWellRelatedParser : ExcelParser - where TDto : class, IValidatableObject, IId, IWellRelated - where TOptions : WellRelatedParserRequest - where TTemplate : class, ITemplateParameters, new() + where TDto : class, IValidatableObject, IId, IWellRelated + where TOptions : WellRelatedParserRequest + where TTemplate : class, ITemplateParameters, new() { - public override ParserResultDto Parse(Stream file, TOptions options) - { - var result = base.Parse(file, options); + public override ParserResultDto Parse(Stream file, TOptions options) + { + var result = base.Parse(file, options); - foreach (var dto in result.Item) - dto.Item.IdWell = options.IdWell; + foreach (var dto in result.Item) + dto.Item.IdWell = options.IdWell; - return result; - } + return result; + } } \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ExcelServices/ExportExcelService.cs b/AsbCloudInfrastructure/Services/ExcelServices/ExportExcelService.cs index cc068ba0..d74b151e 100644 --- a/AsbCloudInfrastructure/Services/ExcelServices/ExportExcelService.cs +++ b/AsbCloudInfrastructure/Services/ExcelServices/ExportExcelService.cs @@ -15,62 +15,62 @@ namespace AsbCloudInfrastructure.Services.ExcelServices; [Obsolete] public abstract class ExportExcelService : IExportService - where TOptions : IExportOptionsRequest + where TOptions : IExportOptionsRequest { - protected abstract ITemplateParameters TemplateParameters { get; } + protected abstract ITemplateParameters TemplateParameters { get; } - protected abstract Task BuildFileNameAsync(TOptions options, CancellationToken token); + protected abstract Task BuildFileNameAsync(TOptions options, CancellationToken token); - protected abstract Task> GetDtosAsync(TOptions options, CancellationToken token); + protected abstract Task> GetDtosAsync(TOptions options, CancellationToken token); - public async Task<(string FileName, Stream File)> ExportAsync(TOptions options, CancellationToken token) - { - var dtos = await GetDtosAsync(options, token); + public async Task<(string FileName, Stream File)> ExportAsync(TOptions options, CancellationToken token) + { + var dtos = await GetDtosAsync(options, token); - var fileName = await BuildFileNameAsync(options, token); - var file = BuildFile(dtos); - return (fileName, file); - } + var fileName = await BuildFileNameAsync(options, token); + var file = BuildFile(dtos); + return (fileName, file); + } - private Stream BuildFile(IEnumerable dtos) - { - using var template = GetTemplateFile(); - using var workbook = new XLWorkbook(template); - AddDtosToWorkbook(workbook, dtos); + private Stream BuildFile(IEnumerable dtos) + { + using var template = GetTemplateFile(); + using var workbook = new XLWorkbook(template); + AddDtosToWorkbook(workbook, dtos); - var memoryStream = new MemoryStream(); - workbook.SaveAs(memoryStream, new SaveOptions { }); - memoryStream.Seek(0, SeekOrigin.Begin); - return memoryStream; - } + var memoryStream = new MemoryStream(); + workbook.SaveAs(memoryStream, new SaveOptions { }); + memoryStream.Seek(0, SeekOrigin.Begin); + return memoryStream; + } - private void AddDtosToWorkbook(XLWorkbook workbook, IEnumerable dtos) - { - var dtosToArray = dtos.ToArray(); + private void AddDtosToWorkbook(XLWorkbook workbook, IEnumerable dtos) + { + var dtosToArray = dtos.ToArray(); - if (!dtosToArray.Any()) - return; + if (!dtosToArray.Any()) + return; - var sheet = workbook.GetWorksheet(TemplateParameters.SheetName); - for (var i = 0; i < dtosToArray.Length; i++) - { - var row = sheet.Row(1 + i + TemplateParameters.HeaderRowsCount); - AddRow(row, dtosToArray[i]); - } - } + var sheet = workbook.GetWorksheet(TemplateParameters.SheetName); + for (var i = 0; i < dtosToArray.Length; i++) + { + var row = sheet.Row(1 + i + TemplateParameters.HeaderRowsCount); + AddRow(row, dtosToArray[i]); + } + } - private void AddRow(IXLRow xlRow, TDto dto) - { - var properties = dto.Adapt>(); + private void AddRow(IXLRow xlRow, TDto dto) + { + var properties = dto.Adapt>(); - foreach (var (name, cellValue) in properties) - { - if (TemplateParameters.Cells.TryGetValue(name, out var cell)) - xlRow.Cell(cell.ColumnNumber).SetCellValue(cellValue); - } - } + foreach (var (name, cellValue) in properties) + { + if (TemplateParameters.Cells.TryGetValue(name, out var cell)) + xlRow.Cell(cell.ColumnNumber).SetCellValue(cellValue); + } + } - private Stream GetTemplateFile() => - Assembly.GetExecutingAssembly().GetTemplateCopyStream(TemplateParameters.FileName) - ?? throw new ArgumentNullException($"Файл '{TemplateParameters.FileName}' не найден"); + private Stream GetTemplateFile() => + Assembly.GetExecutingAssembly().GetTemplateCopyStream(TemplateParameters.FileName) + ?? throw new ArgumentNullException($"Файл '{TemplateParameters.FileName}' не найден"); } \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ExcelServices/ParserExcelService.cs b/AsbCloudInfrastructure/Services/ExcelServices/ParserExcelService.cs index a74cab70..7063689e 100644 --- a/AsbCloudInfrastructure/Services/ExcelServices/ParserExcelService.cs +++ b/AsbCloudInfrastructure/Services/ExcelServices/ParserExcelService.cs @@ -15,120 +15,120 @@ namespace AsbCloudInfrastructure.Services.ExcelServices; [Obsolete] public abstract class ParserExcelService : IParserService - where TDto : class, IValidatableObject, IId - where TOptions : IParserOptionsRequest + where TDto : class, IValidatableObject, IId + where TOptions : IParserOptionsRequest { - protected abstract ITemplateParameters TemplateParameters { get; } + protected abstract ITemplateParameters TemplateParameters { get; } - public virtual ParserResultDto Parse(Stream file, TOptions options) - { - using var workbook = new XLWorkbook(file); - var sheet = workbook.GetWorksheet(TemplateParameters.SheetName); - var dtos = ParseExcelSheet(sheet); - return dtos; - } + public virtual ParserResultDto Parse(Stream file, TOptions options) + { + using var workbook = new XLWorkbook(file); + var sheet = workbook.GetWorksheet(TemplateParameters.SheetName); + var dtos = ParseExcelSheet(sheet); + return dtos; + } - public virtual Stream GetTemplateFile() => - Assembly.GetExecutingAssembly().GetTemplateCopyStream(TemplateParameters.FileName) - ?? throw new ArgumentNullException($"Файл '{TemplateParameters.FileName}' не найден"); + public virtual Stream GetTemplateFile() => + Assembly.GetExecutingAssembly().GetTemplateCopyStream(TemplateParameters.FileName) + ?? throw new ArgumentNullException($"Файл '{TemplateParameters.FileName}' не найден"); - protected virtual IDictionary ParseRow(IXLRow xlRow) - { - var cells = TemplateParameters.Cells.ToDictionary(x => x.Key, x => - { - var columnNumber = x.Value.ColumnNumber; - var xlCell = xlRow.Cell(columnNumber); - var cellValue = x.Value.GetValueFromCell(xlCell); - return cellValue; - }); + protected virtual IDictionary ParseRow(IXLRow xlRow) + { + var cells = TemplateParameters.Cells.ToDictionary(x => x.Key, x => + { + var columnNumber = x.Value.ColumnNumber; + var xlCell = xlRow.Cell(columnNumber); + var cellValue = x.Value.GetValueFromCell(xlCell); + return cellValue; + }); - return cells; - } + return cells; + } - protected virtual TDto BuildDto(IDictionary row, int rowNumber) - { - var dto = row.Adapt(); - return dto; - } + protected virtual TDto BuildDto(IDictionary row, int rowNumber) + { + var dto = row.Adapt(); + return dto; + } - private ValidationResultDto Validate(TDto dto, int rowNumber) - { - var validationResults = new List(); + private ValidationResultDto Validate(TDto dto, int rowNumber) + { + var validationResults = new List(); - var isValid = dto.Validate(validationResults); + var isValid = dto.Validate(validationResults); - if (isValid) - { - var validDto = new ValidationResultDto - { - Item = dto - }; + if (isValid) + { + var validDto = new ValidationResultDto + { + Item = dto + }; - return validDto; - } + return validDto; + } - var columnsDict = TemplateParameters.Cells.ToDictionary(x => x.Key, x => x.Value.ColumnNumber); + var columnsDict = TemplateParameters.Cells.ToDictionary(x => x.Key, x => x.Value.ColumnNumber); - var invalidDto = new ValidationResultDto - { - Item = dto, - Warnings = validationResults - .SelectMany(v => v.MemberNames - .Where(columnsDict.ContainsKey) - .Select(m => - { - var columnNumber = columnsDict[m]; - var errorMessage = v.ErrorMessage; - var warningMessage = string.Format(XLExtentions.ProblemDetailsTemplate, - TemplateParameters.SheetName, - rowNumber, - columnNumber, - errorMessage); - var warning = new ValidationResult(warningMessage, new[] { m }); - return warning; - })) - }; + var invalidDto = new ValidationResultDto + { + Item = dto, + Warnings = validationResults + .SelectMany(v => v.MemberNames + .Where(columnsDict.ContainsKey) + .Select(m => + { + var columnNumber = columnsDict[m]; + var errorMessage = v.ErrorMessage; + var warningMessage = string.Format(XLExtentions.ProblemDetailsTemplate, + TemplateParameters.SheetName, + rowNumber, + columnNumber, + errorMessage); + var warning = new ValidationResult(warningMessage, new[] { m }); + return warning; + })) + }; - return invalidDto; - } + return invalidDto; + } - protected virtual ParserResultDto ParseExcelSheet(IXLWorksheet sheet) - { - var count = sheet.RowsUsed().Count() - TemplateParameters.HeaderRowsCount; - if (count <= 0) - return new ParserResultDto(); + protected virtual ParserResultDto ParseExcelSheet(IXLWorksheet sheet) + { + var count = sheet.RowsUsed().Count() - TemplateParameters.HeaderRowsCount; + if (count <= 0) + return new ParserResultDto(); - var valiationResults = new List>(count); - var warnings = new List(); + var valiationResults = new List>(count); + var warnings = new List(); - for (var i = 0; i < count; i++) - { - var xlRow = sheet.Row(1 + i + TemplateParameters.HeaderRowsCount); - var rowNumber = xlRow.RowNumber(); + for (var i = 0; i < count; i++) + { + var xlRow = sheet.Row(1 + i + TemplateParameters.HeaderRowsCount); + var rowNumber = xlRow.RowNumber(); - try - { - var row = ParseRow(xlRow); - var dto = BuildDto(row, rowNumber); - var validationResult = Validate(dto, rowNumber); - valiationResults.Add(validationResult); - } - catch (FileFormatException ex) - { - var warning = new ValidationResult(ex.Message); - warnings.Add(warning); - } - } + try + { + var row = ParseRow(xlRow); + var dto = BuildDto(row, rowNumber); + var validationResult = Validate(dto, rowNumber); + valiationResults.Add(validationResult); + } + catch (FileFormatException ex) + { + var warning = new ValidationResult(ex.Message); + warnings.Add(warning); + } + } - var parserResult = new ParserResultDto - { - Item = valiationResults - }; + var parserResult = new ParserResultDto + { + Item = valiationResults + }; - if (warnings.Any()) - parserResult.Warnings = warnings; + if (warnings.Any()) + parserResult.Warnings = warnings; - return parserResult; - } + return parserResult; + } } \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ExcelServices/Templates/ITemplateParameters.cs b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ITemplateParameters.cs index eeb1076c..a203968e 100644 --- a/AsbCloudInfrastructure/Services/ExcelServices/Templates/ITemplateParameters.cs +++ b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ITemplateParameters.cs @@ -4,11 +4,11 @@ namespace AsbCloudInfrastructure.Services.ExcelServices.Templates; public interface ITemplateParameters { - string SheetName { get; } + string SheetName { get; } - int HeaderRowsCount { get; } + int HeaderRowsCount { get; } - string FileName { get; } + string FileName { get; } - IDictionary Cells { get; } + IDictionary Cells { get; } } \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanAntiCrashRotationTemplate.cs b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanAntiCrashRotationTemplate.cs new file mode 100644 index 00000000..e87ac784 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanAntiCrashRotationTemplate.cs @@ -0,0 +1,25 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Data.ProcessMaps.Operations; +using System.Collections.Generic; + +namespace AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +public class ProcessMapPlanAntiCrashRotationTemplate : ITemplateParameters +{ + public string SheetName => "Противоаварийное вращение"; + + public int HeaderRowsCount => 2; + + public string FileName => "ProcessMapPlanAnticrashRotation.xlsx"; + + public IDictionary Cells => new Dictionary + { + { nameof(ProcessMapPlanAntiCrashRotationDto.Section), new Cell(1, typeof(string)) }, + { nameof(ProcessMapPlanAntiCrashRotationDto.DepthStart), new Cell(2, typeof(double)) }, + { nameof(ProcessMapPlanAntiCrashRotationDto.DepthEnd), new Cell(3, typeof(double)) }, + { nameof(ProcessMapPlanAntiCrashRotationDto.TopDriveRpmMin), new Cell(4, typeof(double)) }, + { nameof(ProcessMapPlanAntiCrashRotationDto.TopDriveStartMinFlowRate), new Cell(5, typeof(double)) }, + { nameof(ProcessMapPlanAntiCrashRotationDto.TopDriveTorqueMax), new Cell(6, typeof(double)) }, + { nameof(ProcessMapPlanAntiCrashRotationDto.Note), new Cell(7, typeof(string)) }, + }; +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanAutoHoldTFTemplate.cs b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanAutoHoldTFTemplate.cs new file mode 100644 index 00000000..a17b2397 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanAutoHoldTFTemplate.cs @@ -0,0 +1,24 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using System.Collections.Generic; + +namespace AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +public class ProcessMapPlanAutoHoldTFTemplate : ITemplateParameters +{ + public string SheetName => "Автоудержание TF"; + + public int HeaderRowsCount => 2; + + public string FileName => "ProcessMapPlanAutoHoldTF.xlsx"; + + public IDictionary Cells => new Dictionary + { + { nameof(ProcessMapPlanAutoHoldTFDto.Section), new Cell(1, typeof(string)) }, + { nameof(ProcessMapPlanAutoHoldTFDto.DepthStart), new Cell(2, typeof(double)) }, + { nameof(ProcessMapPlanAutoHoldTFDto.DepthEnd), new Cell(3, typeof(double)) }, + + { nameof(ProcessMapPlanAutoHoldTFDto.ZenithAngle), new Cell(4, typeof(double)) }, + + { nameof(ProcessMapPlanAutoHoldTFDto.Note), new Cell(5, typeof(string)) }, + }; +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanDamperTemplate.cs b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanDamperTemplate.cs new file mode 100644 index 00000000..9466ed87 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanDamperTemplate.cs @@ -0,0 +1,24 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using System.Collections.Generic; + +namespace AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +public class ProcessMapPlanDamperTemplate : ITemplateParameters +{ + public string SheetName => "Демпфер"; + + public int HeaderRowsCount => 2; + + public string FileName => "ProcessMapPlanDamper.xlsx"; + + public IDictionary Cells => new Dictionary + { + { nameof(ProcessMapPlanDamperDto.Section), new Cell(1, typeof(string)) }, + { nameof(ProcessMapPlanDamperDto.DepthStart), new Cell(2, typeof(double)) }, + { nameof(ProcessMapPlanDamperDto.DepthEnd), new Cell(3, typeof(double)) }, + + { nameof(ProcessMapPlanDamperDto.StickSlip), new Cell(4, typeof(double)) }, + + { nameof(ProcessMapPlanDamperDto.Note), new Cell(5, typeof(string)) }, + }; +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanDrillTestTemplate.cs b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanDrillTestTemplate.cs new file mode 100644 index 00000000..1d755a3e --- /dev/null +++ b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanDrillTestTemplate.cs @@ -0,0 +1,28 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using System.Collections.Generic; + +namespace AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +public class ProcessMapPlanDrillTestTemplate : ITemplateParameters +{ + public string SheetName => "DrillTest"; + + public int HeaderRowsCount => 2; + + public string FileName => "ProcessMapPlanDrillTest.xlsx"; + + public IDictionary Cells => new Dictionary + { + { nameof(ProcessMapPlanDrillTestDto.Section), new Cell(1, typeof(string)) }, + { nameof(ProcessMapPlanDrillTestDto.DepthStart), new Cell(2, typeof(double)) }, + { nameof(ProcessMapPlanDrillTestDto.DepthEnd), new Cell(3, typeof(double)) }, + + { nameof(ProcessMapPlanDrillTestDto.WeightOnBitMin), new Cell(4, typeof(double)) }, + { nameof(ProcessMapPlanDrillTestDto.WeightOnBitStepsCount), new Cell(5, typeof(double)) }, + { nameof(ProcessMapPlanDrillTestDto.RpmMin), new Cell(6, typeof(double)) }, + { nameof(ProcessMapPlanDrillTestDto.RpmStepsCount), new Cell(7, typeof(double)) }, + { nameof(ProcessMapPlanDrillTestDto.LengthStep), new Cell(8, typeof(double)) }, + + { nameof(ProcessMapPlanDrillTestDto.Note), new Cell(9, typeof(string)) }, + }; +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanDrillingTemplate.cs b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanDrillingTemplate.cs deleted file mode 100644 index dff24dcf..00000000 --- a/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanDrillingTemplate.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System.Collections.Generic; -using AsbCloudApp.Data.ProcessMaps; - -namespace AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; - -public class ProcessMapPlanDrillingTemplate : ITemplateParameters -{ - public string SheetName => "План"; - - public int HeaderRowsCount => 2; - - public string FileName => "ProcessMapPlanDrillingTemplate.xlsx"; - - public IDictionary Cells => new Dictionary - { - { nameof(ProcessMapPlanDrillingDto.Section), new Cell(1, typeof(string)) }, - { nameof(ProcessMapPlanDrillingDto.Mode), new Cell(2, typeof(string)) }, - { nameof(ProcessMapPlanDrillingDto.DepthStart), new Cell(3, typeof(double)) }, - { nameof(ProcessMapPlanDrillingDto.DepthEnd), new Cell(4, typeof(double)) }, - { nameof(ProcessMapPlanDrillingDto.DeltaPressurePlan), new Cell(5, typeof(double)) }, - { nameof(ProcessMapPlanDrillingDto.DeltaPressureLimitMax), new Cell(6, typeof(double)) }, - { nameof(ProcessMapPlanDrillingDto.AxialLoadPlan), new Cell(7, typeof(double)) }, - { nameof(ProcessMapPlanDrillingDto.AxialLoadLimitMax), new Cell(8, typeof(double)) }, - { nameof(ProcessMapPlanDrillingDto.TopDriveTorquePlan), new Cell(9, typeof(double)) }, - { nameof(ProcessMapPlanDrillingDto.TopDriveTorqueLimitMax), new Cell(10, typeof(double)) }, - { nameof(ProcessMapPlanDrillingDto.TopDriveSpeedPlan), new Cell(11, typeof(double)) }, - { nameof(ProcessMapPlanDrillingDto.TopDriveSpeedLimitMax), new Cell(12, typeof(double)) }, - { nameof(ProcessMapPlanDrillingDto.FlowPlan), new Cell(13, typeof(double)) }, - { nameof(ProcessMapPlanDrillingDto.FlowLimitMax), new Cell(14, typeof(double)) }, - { nameof(ProcessMapPlanDrillingDto.RopPlan), new Cell(15, typeof(double)) }, - { nameof(ProcessMapPlanDrillingDto.UsageSaub), new Cell(16, typeof(double)) }, - { nameof(ProcessMapPlanDrillingDto.UsageSpin), new Cell(17, typeof(double)) }, - { nameof(ProcessMapPlanDrillingDto.Comment), new Cell(18, typeof(string)) } - }; -} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanLoadCapacityTemplate.cs b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanLoadCapacityTemplate.cs new file mode 100644 index 00000000..da574b8a --- /dev/null +++ b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanLoadCapacityTemplate.cs @@ -0,0 +1,24 @@ +using AsbCloudApp.Data.ProcessMaps.Operations; +using System.Collections.Generic; + +namespace AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +public class ProcessMapPlanLoadCapacityTemplate : ITemplateParameters +{ + public string SheetName => "Выработка нагрузки"; + + public int HeaderRowsCount => 2; + + public string FileName => "ProcessMapPlanLoadCapacity.xlsx"; + + public IDictionary Cells => new Dictionary + { + { nameof(ProcessMapPlanLoadCapacityDto.Section), new Cell(1, typeof(string)) }, + { nameof(ProcessMapPlanLoadCapacityDto.DepthStart), new Cell(2, typeof(double)) }, + { nameof(ProcessMapPlanLoadCapacityDto.DepthEnd), new Cell(3, typeof(double)) }, + { nameof(ProcessMapPlanLoadCapacityDto.TimeLoadCapacityMin), new Cell(4, typeof(double)) }, + { nameof(ProcessMapPlanLoadCapacityDto.DifferentialPressureMin), new Cell(5, typeof(double)) }, + { nameof(ProcessMapPlanLoadCapacityDto.WeightOnBitMin), new Cell(6, typeof(double)) }, + { nameof(ProcessMapPlanLoadCapacityDto.Note), new Cell(7, typeof(string)) }, + }; +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanOscillationAnglesTemplate.cs b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanOscillationAnglesTemplate.cs new file mode 100644 index 00000000..be5cfec0 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanOscillationAnglesTemplate.cs @@ -0,0 +1,28 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Data.ProcessMaps.Operations; +using System.Collections.Generic; + +namespace AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +public class ProcessMapPlanOscillationAnglesTemplate : ITemplateParameters +{ + public string SheetName => "Определение углов осцилляции"; + + public int HeaderRowsCount => 3; + + public string FileName => "ProcessMapPlanOscillationAngles.xlsx"; + + public IDictionary Cells => new Dictionary + { + { nameof(ProcessMapPlanOscillationAnglesDto.Section), new Cell(1, typeof(string)) }, + { nameof(ProcessMapPlanOscillationAnglesDto.DepthStart), new Cell(2, typeof(double)) }, + { nameof(ProcessMapPlanOscillationAnglesDto.DepthEnd), new Cell(3, typeof(double)) }, + + { nameof(ProcessMapPlanOscillationAnglesDto.TopDriveTorque), new Cell(4, typeof(double)) }, + { nameof(ProcessMapPlanOscillationAnglesDto.TopDriveTorqueMax), new Cell(5, typeof(double)) }, + { nameof(ProcessMapPlanOscillationAnglesDto.Rpm), new Cell(6, typeof(double)) }, + { nameof(ProcessMapPlanOscillationAnglesDto.RpmMax), new Cell(7, typeof(double)) }, + + { nameof(ProcessMapPlanOscillationAnglesDto.Note), new Cell(8, typeof(string)) }, + }; +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanOscillationTemplate.cs b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanOscillationTemplate.cs new file mode 100644 index 00000000..99f2af0e --- /dev/null +++ b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanOscillationTemplate.cs @@ -0,0 +1,27 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using System.Collections.Generic; + +namespace AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +public class ProcessMapPlanOscillationTemplate : ITemplateParameters +{ + public string SheetName => "Осцилляция"; + + public int HeaderRowsCount => 2; + + public string FileName => "ProcessMapPlanOscillation.xlsx"; + + public IDictionary Cells => new Dictionary + { + { nameof(ProcessMapPlanOscillationDto.Section), new Cell(1, typeof(string)) }, + { nameof(ProcessMapPlanOscillationDto.DepthStart), new Cell(2, typeof(double)) }, + { nameof(ProcessMapPlanOscillationDto.DepthEnd), new Cell(3, typeof(double)) }, + { nameof(ProcessMapPlanOscillationDto.OptimalOscillationAngle), new Cell(4, typeof(double)) }, + { nameof(ProcessMapPlanOscillationDto.RpmRight), new Cell(5, typeof(double)) }, + { nameof(ProcessMapPlanOscillationDto.RpmLeft), new Cell(6, typeof(double)) }, + { nameof(ProcessMapPlanOscillationDto.TorqueMaxRight), new Cell(7, typeof(double)) }, + { nameof(ProcessMapPlanOscillationDto.TorqueMaxLeft), new Cell(8, typeof(double)) }, + { nameof(ProcessMapPlanOscillationDto.Mode), new Cell(9, typeof(int)) }, + { nameof(ProcessMapPlanOscillationDto.Note), new Cell(10, typeof(string)) }, + }; +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanPositioningOffTheBottomTemplate.cs b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanPositioningOffTheBottomTemplate.cs new file mode 100644 index 00000000..3b73b6dc --- /dev/null +++ b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanPositioningOffTheBottomTemplate.cs @@ -0,0 +1,36 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Data.ProcessMaps.Operations; +using System.Collections.Generic; + +namespace AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +public class ProcessMapPlanPositioningOffTheBottomTemplate : ITemplateParameters +{ + public string SheetName => "Позиционирование над забоем"; + + public int HeaderRowsCount => 2; + + public string FileName => "ProcessMapPlanPositioningOffTheBottom.xlsx"; + + public IDictionary Cells => new Dictionary + { + { nameof(ProcessMapPlanPositioningOffTheBottomDto.Section), new Cell(1, typeof(string)) }, + { nameof(ProcessMapPlanPositioningOffTheBottomDto.DepthStart), new Cell(2, typeof(double)) }, + { nameof(ProcessMapPlanPositioningOffTheBottomDto.DepthEnd), new Cell(3, typeof(double)) }, + + { nameof(ProcessMapPlanPositioningOffTheBottomDto.StopOffTheBottom), new Cell(4, typeof(double)) }, + { nameof(ProcessMapPlanPositioningOffTheBottomDto.PressureMax), new Cell(5, typeof(double)) }, + { nameof(ProcessMapPlanPositioningOffTheBottomDto.DifferentialPressure), new Cell(6, typeof(double)) }, + { nameof(ProcessMapPlanPositioningOffTheBottomDto.Tight), new Cell(7, typeof(double)) }, + { nameof(ProcessMapPlanPositioningOffTheBottomDto.SlackingOff), new Cell(8, typeof(double)) }, + { nameof(ProcessMapPlanPositioningOffTheBottomDto.TorqueMax), new Cell(9, typeof(double)) }, + { nameof(ProcessMapPlanPositioningOffTheBottomDto.RopUp), new Cell(10, typeof(double)) }, + { nameof(ProcessMapPlanPositioningOffTheBottomDto.RopDown), new Cell(11, typeof(double)) }, + { nameof(ProcessMapPlanPositioningOffTheBottomDto.RpmUp), new Cell(12, typeof(double)) }, + { nameof(ProcessMapPlanPositioningOffTheBottomDto.RpmDown), new Cell(13, typeof(double)) }, + { nameof(ProcessMapPlanPositioningOffTheBottomDto.FlowRateUp), new Cell(14, typeof(double)) }, + { nameof(ProcessMapPlanPositioningOffTheBottomDto.FlowRateDown), new Cell(15, typeof(double)) }, + + { nameof(ProcessMapPlanPositioningOffTheBottomDto.Note), new Cell(16, typeof(string)) }, + }; +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanReamTemplate.cs b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanReamTemplate.cs deleted file mode 100644 index 5c454d7b..00000000 --- a/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanReamTemplate.cs +++ /dev/null @@ -1,29 +0,0 @@ -using System.Collections.Generic; -using AsbCloudApp.Data.ProcessMaps; - -namespace AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; - -public class ProcessMapPlanReamTemplate : ITemplateParameters -{ - public string SheetName => "План"; - - public int HeaderRowsCount => 1; - - public string FileName => "ProcessMapPlanReamTemplate.xlsx"; - - public IDictionary Cells => new Dictionary - { - { nameof(ProcessMapPlanReamDto.Section), new Cell(1, typeof(string)) }, - { nameof(ProcessMapPlanReamDto.DepthStart), new Cell(2, typeof(double)) }, - { nameof(ProcessMapPlanReamDto.DepthEnd), new Cell(3, typeof(double)) }, - { nameof(ProcessMapPlanReamDto.Repeats), new Cell(4, typeof(double)) }, - { nameof(ProcessMapPlanReamDto.SpinUpward), new Cell(5, typeof(double)) }, - { nameof(ProcessMapPlanReamDto.SpinDownward), new Cell(6, typeof(double)) }, - { nameof(ProcessMapPlanReamDto.SpeedUpward), new Cell(7, typeof(double)) }, - { nameof(ProcessMapPlanReamDto.SpeedDownward), new Cell(8, typeof(double)) }, - { nameof(ProcessMapPlanReamDto.SetpointDrag), new Cell(9, typeof(double)) }, - { nameof(ProcessMapPlanReamDto.SetpointTight), new Cell(10, typeof(double)) }, - { nameof(ProcessMapPlanReamDto.Pressure), new Cell(11, typeof(double)) }, - { nameof(ProcessMapPlanReamDto.Torque), new Cell(12, typeof(double)) }, - }; -} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanReamingRotorTemplate.cs b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanReamingRotorTemplate.cs new file mode 100644 index 00000000..cf396fa8 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanReamingRotorTemplate.cs @@ -0,0 +1,55 @@ +using System.Collections.Generic; +using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Operations; + +namespace AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +public class ProcessMapPlanReamingRotorTemplate : ITemplateParameters +{ + public string SheetName => "Проработка для ротора"; + + public int HeaderRowsCount => 3; + + public string FileName => "ProcessMapPlanReamingRotor.xlsx"; + + public IDictionary Cells => new Dictionary + { + { nameof(ProcessMapPlanReamingRotorDto.Section), new Cell(1, typeof(string)) }, + { nameof(ProcessMapPlanReamingRotorDto.DepthStart), new Cell(2, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.DepthEnd), new Cell(3, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.PressureMax), new Cell(4, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.DifferentialPressure), new Cell(5, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Tight), new Cell(6, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.SlackingOff), new Cell(7, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.TorqueMax), new Cell(8, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming1RepetitionsCount), new Cell(9, typeof(int)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming1RopUp), new Cell(10, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming1RopDown), new Cell(11, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming1RpmUp), new Cell(12, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming1RpmDown), new Cell(13, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming1FlowRateUp), new Cell(14, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming1FlowRateDown), new Cell(15, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming1Interval), new Cell(16, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming1StopPointOffBottom), new Cell(17, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming2RepetitionsCount), new Cell(18, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming2RopUp), new Cell(19, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming2RopDown), new Cell(20, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming2RpmUp), new Cell(21, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming2RpmDown), new Cell(22, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming2FlowRateUp), new Cell(23, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming2FlowRateDown), new Cell(24, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming2Interval), new Cell(25, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming2StopPointOffBottom), new Cell(26, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming3RepetitionsCount), new Cell(27, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming3RopUp), new Cell(28, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming3RopDown), new Cell(29, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming3RpmUp), new Cell(30, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming3RpmDown), new Cell(31, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming3FlowRateUp), new Cell(32, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming3FlowRateDown), new Cell(33, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming3Interval), new Cell(34, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming3StopPointOffBottom), new Cell(35, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Note), new Cell(36, typeof(string)) }, + + }; +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanReamingSlideTemplate.cs b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanReamingSlideTemplate.cs new file mode 100644 index 00000000..90827fd2 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanReamingSlideTemplate.cs @@ -0,0 +1,53 @@ +using AsbCloudApp.Data.ProcessMaps.Operations; +using System.Collections.Generic; + +namespace AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +public class ProcessMapPlanReamingSlideTemplate : ITemplateParameters +{ + public string SheetName => "Проработка для слайда"; + + public int HeaderRowsCount => 3; + + public string FileName => "ProcessMapPlanReamingSlide.xlsx"; + + public IDictionary Cells => new Dictionary + { + { nameof(ProcessMapPlanReamingSlideDto.Section), new Cell(1, typeof(string)) }, + { nameof(ProcessMapPlanReamingSlideDto.DepthStart), new Cell(2, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.DepthEnd), new Cell(3, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.PressureMax), new Cell(4, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.DifferentialPressure), new Cell(5, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Tight), new Cell(6, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.SlackingOff), new Cell(7, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.TorqueMax), new Cell(8, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming1RepetitionsCount), new Cell(9, typeof(int)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming1RopUp), new Cell(10, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming1RopDown), new Cell(11, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming1RpmUp), new Cell(12, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming1RpmDown), new Cell(13, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming1FlowRateUp), new Cell(14, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming1FlowRateDown), new Cell(15, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming1Interval), new Cell(16, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming1StopPointOffBottom), new Cell(17, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming2RepetitionsCount), new Cell(18, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming2RopUp), new Cell(19, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming2RopDown), new Cell(20, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming2RpmUp), new Cell(21, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming2RpmDown), new Cell(22, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming2FlowRateUp), new Cell(23, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming2FlowRateDown), new Cell(24, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming2Interval), new Cell(25, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming2StopPointOffBottom), new Cell(26, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming3RepetitionsCount), new Cell(27, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming3RopUp), new Cell(28, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming3RopDown), new Cell(29, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming3RpmUp), new Cell(30, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming3RpmDown), new Cell(31, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming3FlowRateUp), new Cell(32, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming3FlowRateDown), new Cell(33, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming3Interval), new Cell(34, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming3StopPointOffBottom), new Cell(35, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Note), new Cell(36, typeof(string)) }, + }; +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanRecordingStaticMeasurementTemplate.cs b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanRecordingStaticMeasurementTemplate.cs new file mode 100644 index 00000000..f32be54c --- /dev/null +++ b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanRecordingStaticMeasurementTemplate.cs @@ -0,0 +1,25 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Data.ProcessMaps.Operations; +using System.Collections.Generic; + +namespace AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +public class ProcessMapPlanRecordingStaticMeasurementTemplate : ITemplateParameters +{ + public string SheetName => "Запись статического замера"; + + public int HeaderRowsCount => 2; + + public string FileName => "ProcessMapPlanRecordingStaticMeasurement.xlsx"; + + public IDictionary Cells => new Dictionary + { + { nameof(ProcessMapPlanRecordingStaticMeasurementDto.Section), new Cell(1, typeof(string)) }, + { nameof(ProcessMapPlanRecordingStaticMeasurementDto.DepthStart), new Cell(2, typeof(double)) }, + { nameof(ProcessMapPlanRecordingStaticMeasurementDto.DepthEnd), new Cell(3, typeof(double)) }, + + { nameof(ProcessMapPlanRecordingStaticMeasurementDto.MeasurementRecordingTime), new Cell(4, typeof(double)) }, + + { nameof(ProcessMapPlanRecordingStaticMeasurementDto.Note), new Cell(5, typeof(string)) }, + }; +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanRotorTemplate.cs b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanRotorTemplate.cs new file mode 100644 index 00000000..2104e152 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanRotorTemplate.cs @@ -0,0 +1,33 @@ +using System.Collections.Generic; +using AsbCloudApp.Data.ProcessMaps.Operations; + +namespace AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +public class ProcessMapPlanRotorTemplate : ITemplateParameters +{ + public string SheetName => "Бурение ротор"; + + public int HeaderRowsCount => 2; + + public string FileName => "ProcessMapPlanRotor.xlsx"; + + public IDictionary Cells => new Dictionary + { + { nameof(ProcessMapPlanRotorDto.Section), new Cell(1, typeof(string)) }, + { nameof(ProcessMapPlanRotorDto.DepthStart), new Cell(2, typeof(double)) }, + { nameof(ProcessMapPlanRotorDto.DepthEnd), new Cell(3, typeof(double)) }, + { nameof(ProcessMapPlanRotorDto.RopMax), new Cell(4, typeof(double)) }, + { nameof(ProcessMapPlanRotorDto.PressureMax), new Cell(5, typeof(double)) }, + { nameof(ProcessMapPlanRotorDto.DifferentialPressure), new Cell(6, typeof(double)) }, + { nameof(ProcessMapPlanRotorDto.DifferentialPressureMax), new Cell(7, typeof(double)) }, + { nameof(ProcessMapPlanRotorDto.WeightOnBit), new Cell(8, typeof(double)) }, + { nameof(ProcessMapPlanRotorDto.WeightOnBitMax), new Cell(9, typeof(double)) }, + { nameof(ProcessMapPlanRotorDto.TopDriveTorque), new Cell(10, typeof(double)) }, + { nameof(ProcessMapPlanRotorDto.TopDriveTorqueMax), new Cell(11, typeof(double)) }, + { nameof(ProcessMapPlanRotorDto.Rpm), new Cell(12, typeof(double)) }, + { nameof(ProcessMapPlanRotorDto.RpmMax), new Cell(13, typeof(double)) }, + { nameof(ProcessMapPlanRotorDto.FlowRate), new Cell(14, typeof(double)) }, + { nameof(ProcessMapPlanRotorDto.FlowRateMax), new Cell(15, typeof(double)) }, + { nameof(ProcessMapPlanRotorDto.Note), new Cell(16, typeof(string)) }, + }; +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanShockTestTemplate.cs b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanShockTestTemplate.cs new file mode 100644 index 00000000..cf63e415 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanShockTestTemplate.cs @@ -0,0 +1,29 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using System.Collections.Generic; + +namespace AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +public class ProcessMapPlanShockTestTemplate : ITemplateParameters +{ + public string SheetName => "ShockTest"; + + public int HeaderRowsCount => 2; + + public string FileName => "ProcessMapPlanShockTest.xlsx"; + + public IDictionary Cells => new Dictionary + { + { nameof(ProcessMapPlanShockTestDto.Section), new Cell(1, typeof(string)) }, + { nameof(ProcessMapPlanShockTestDto.DepthStart), new Cell(2, typeof(double)) }, + { nameof(ProcessMapPlanShockTestDto.DepthEnd), new Cell(3, typeof(double)) }, + + { nameof(ProcessMapPlanShockTestDto.StickSlip), new Cell(4, typeof(double)) }, + { nameof(ProcessMapPlanShockTestDto.Whirl), new Cell(5, typeof(double)) }, + { nameof(ProcessMapPlanShockTestDto.AxialVibrations), new Cell(6, typeof(double)) }, + { nameof(ProcessMapPlanShockTestDto.CombinedVibrations), new Cell(7, typeof(double)) }, + { nameof(ProcessMapPlanShockTestDto.WeightOnBitMin), new Cell(8, typeof(double)) }, + { nameof(ProcessMapPlanShockTestDto.RpmMin), new Cell(9, typeof(double)) }, + + { nameof(ProcessMapPlanShockTestDto.Note), new Cell(10, typeof(string)) }, + }; +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanSlideTemplate.cs b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanSlideTemplate.cs new file mode 100644 index 00000000..a81b4873 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanSlideTemplate.cs @@ -0,0 +1,31 @@ +using System.Collections.Generic; +using AsbCloudApp.Data.ProcessMaps.Operations; + +namespace AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +public class ProcessMapPlanSlideTemplate : ITemplateParameters +{ + public string SheetName => "Бурение слайд"; + + public int HeaderRowsCount => 2; + + public string FileName => "ProcessMapPlanSlide.xlsx"; + + public IDictionary Cells => new Dictionary + { + { nameof(ProcessMapPlanSlideDto.Section), new Cell(1, typeof(string)) }, + { nameof(ProcessMapPlanSlideDto.DepthStart), new Cell(2, typeof(double)) }, + { nameof(ProcessMapPlanSlideDto.DepthEnd), new Cell(3, typeof(double)) }, + { nameof(ProcessMapPlanSlideDto.RopMax), new Cell(4, typeof(double)) }, + { nameof(ProcessMapPlanSlideDto.PressureMax), new Cell(5, typeof(double)) }, + { nameof(ProcessMapPlanSlideDto.DifferentialPressure), new Cell(6, typeof(double)) }, + { nameof(ProcessMapPlanSlideDto.DifferentialPressureMax), new Cell(7, typeof(double)) }, + { nameof(ProcessMapPlanSlideDto.WeightOnBit), new Cell(8, typeof(double)) }, + { nameof(ProcessMapPlanSlideDto.WeightOnBitMax), new Cell(9, typeof(double)) }, + { nameof(ProcessMapPlanSlideDto.FlowRate), new Cell(10, typeof(double)) }, + { nameof(ProcessMapPlanSlideDto.FlowRateMax), new Cell(11, typeof(double)) }, + { nameof(ProcessMapPlanSlideDto.Spring), new Cell(12, typeof(double)) }, + { nameof(ProcessMapPlanSlideDto.Buckling), new Cell(13, typeof(double)) }, + { nameof(ProcessMapPlanSlideDto.Note), new Cell(14, typeof(string)) } + }; +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanStaticMeasurementOutputTemplate.cs b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanStaticMeasurementOutputTemplate.cs new file mode 100644 index 00000000..bf372be5 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanStaticMeasurementOutputTemplate.cs @@ -0,0 +1,24 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using System.Collections.Generic; + +namespace AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +public class ProcessMapPlanStaticMeasurementOutputTemplate : ITemplateParameters +{ + public string SheetName => "Выход статического замера"; + + public int HeaderRowsCount => 2; + + public string FileName => "ProcessMapPlanStaticMeasurementOutput.xlsx"; + + public IDictionary Cells => new Dictionary + { + { nameof(ProcessMapPlanStaticMeasurementOutputDto.Section), new Cell(1, typeof(string)) }, + { nameof(ProcessMapPlanStaticMeasurementOutputDto.DepthStart), new Cell(2, typeof(double)) }, + { nameof(ProcessMapPlanStaticMeasurementOutputDto.DepthEnd), new Cell(3, typeof(double)) }, + + { nameof(ProcessMapPlanStaticMeasurementOutputDto.SignalWaitingTime), new Cell(4, typeof(double)) }, + + { nameof(ProcessMapPlanStaticMeasurementOutputDto.Note), new Cell(5, typeof(string)) }, + }; +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanSwitchingOffThePumpTemplate.cs b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanSwitchingOffThePumpTemplate.cs new file mode 100644 index 00000000..6fb38ca9 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanSwitchingOffThePumpTemplate.cs @@ -0,0 +1,24 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Data.ProcessMaps.Operations; +using System.Collections.Generic; + +namespace AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +public class ProcessMapPlanSwitchingOffThePumpTemplate : ITemplateParameters +{ + public string SheetName => "Выключение насоса"; + + public int HeaderRowsCount => 2; + + public string FileName => "ProcessMapPlanSwitchingOffThePump.xlsx"; + + public IDictionary Cells => new Dictionary + { + { nameof(ProcessMapPlanSwitchingOffThePumpDto.Section), new Cell(1, typeof(string)) }, + { nameof(ProcessMapPlanSwitchingOffThePumpDto.DepthStart), new Cell(2, typeof(double)) }, + { nameof(ProcessMapPlanSwitchingOffThePumpDto.DepthEnd), new Cell(3, typeof(double)) }, + { nameof(ProcessMapPlanSwitchingOffThePumpDto.Duration), new Cell(4, typeof(double)) }, + { nameof(ProcessMapPlanSwitchingOffThePumpDto.ResidualPressureLimit), new Cell(5, typeof(double)) }, + { nameof(ProcessMapPlanSwitchingOffThePumpDto.Note), new Cell(6, typeof(string)) }, + }; +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanSwitchingToTheModeTemplate.cs b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanSwitchingToTheModeTemplate.cs new file mode 100644 index 00000000..a50e5c90 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanSwitchingToTheModeTemplate.cs @@ -0,0 +1,26 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudDb.Model.ProcessMapPlan.Operations; +using System.Collections.Generic; + +namespace AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +public class ProcessMapPlanSwitchingToTheModeTemplate : ITemplateParameters +{ + public string SheetName => "Выход на плановый расход"; + + public int HeaderRowsCount => 2; + + public string FileName => "ProcessMapPlanSwitchingToTheMode.xlsx"; + + public IDictionary Cells => new Dictionary + { + { nameof(ProcessMapPlanSwitchingToTheModeDto.Section), new Cell(1, typeof(string)) }, + { nameof(ProcessMapPlanSwitchingToTheModeDto.DepthStart), new Cell(2, typeof(double)) }, + { nameof(ProcessMapPlanSwitchingToTheModeDto.DepthEnd), new Cell(3, typeof(double)) }, + { nameof(ProcessMapPlanSwitchingToTheModeDto.RampTime), new Cell(4, typeof(double)) }, + { nameof(ProcessMapPlanSwitchingToTheModeDto.FlowRate), new Cell(5, typeof(double)) }, + { nameof(ProcessMapPlanSwitchingToTheModeDto.PressureMax), new Cell(6, typeof(double)) }, + { nameof(ProcessMapPlanAntiCrashRotationDto.Note), new Cell(7, typeof(string)) }, + }; +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanTFOrientationTemplate.cs b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanTFOrientationTemplate.cs new file mode 100644 index 00000000..40fb9ac4 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanTFOrientationTemplate.cs @@ -0,0 +1,38 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Data.ProcessMaps.Operations; +using System.Collections.Generic; + +namespace AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +public class ProcessMapPlanTFOrientationTemplate : ITemplateParameters +{ + public string SheetName => "Выставление"; + + public int HeaderRowsCount => 2; + + public string FileName => "ProcessMapPlanTFOrientation.xlsx"; + + public IDictionary Cells => new Dictionary + { + { nameof(ProcessMapPlanTFOrientationDto.Section), new Cell(1, typeof(string)) }, + { nameof(ProcessMapPlanTFOrientationDto.DepthStart), new Cell(2, typeof(double)) }, + { nameof(ProcessMapPlanTFOrientationDto.DepthEnd), new Cell(3, typeof(double)) }, + + { nameof(ProcessMapPlanTFOrientationDto.TFSetpoint), new Cell(4, typeof(double)) }, + { nameof(ProcessMapPlanTFOrientationDto.Spring), new Cell(5, typeof(double)) }, + { nameof(ProcessMapPlanTFOrientationDto.PressureMax), new Cell(6, typeof(double)) }, + { nameof(ProcessMapPlanTFOrientationDto.DifferentialPressure), new Cell(7, typeof(double)) }, + { nameof(ProcessMapPlanTFOrientationDto.Tight), new Cell(8, typeof(double)) }, + { nameof(ProcessMapPlanTFOrientationDto.SlackingOff), new Cell(9, typeof(double)) }, + { nameof(ProcessMapPlanTFOrientationDto.TorqueMax), new Cell(10, typeof(double)) }, + { nameof(ProcessMapPlanTFOrientationDto.RepetitionsCount), new Cell(11, typeof(double)) }, + { nameof(ProcessMapPlanTFOrientationDto.RopUp), new Cell(12, typeof(double)) }, + { nameof(ProcessMapPlanTFOrientationDto.RopDown), new Cell(13, typeof(double)) }, + { nameof(ProcessMapPlanTFOrientationDto.FlowRateUp), new Cell(14, typeof(double)) }, + { nameof(ProcessMapPlanTFOrientationDto.FlowRateDown), new Cell(15, typeof(double)) }, + { nameof(ProcessMapPlanTFOrientationDto.Interval), new Cell(16, typeof(double)) }, + { nameof(ProcessMapPlanTFOrientationDto.StopPointOffBottom), new Cell(17, typeof(double)) }, + + { nameof(ProcessMapPlanTFOrientationDto.Note), new Cell(18, typeof(string)) }, + }; +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ExcelServices/Templates/TrajectoryTemplates/TrajectoryFactManualTemplate.cs b/AsbCloudInfrastructure/Services/ExcelServices/Templates/TrajectoryTemplates/TrajectoryFactManualTemplate.cs index 8e604e1e..920307b9 100644 --- a/AsbCloudInfrastructure/Services/ExcelServices/Templates/TrajectoryTemplates/TrajectoryFactManualTemplate.cs +++ b/AsbCloudInfrastructure/Services/ExcelServices/Templates/TrajectoryTemplates/TrajectoryFactManualTemplate.cs @@ -5,19 +5,19 @@ namespace AsbCloudInfrastructure.Services.ExcelServices.Templates.TrajectoryTemp public class TrajectoryFactManualTemplate : ITemplateParameters { - public string SheetName => "Фактическая траектория"; + public string SheetName => "Фактическая траектория"; - public int HeaderRowsCount => 2; + public int HeaderRowsCount => 2; - public string FileName => "TrajectoryFactManualTemplate.xlsx"; + public string FileName => "TrajectoryFactManualTemplate.xlsx"; - public IDictionary Cells => new Dictionary - { - { nameof(TrajectoryGeoFactDto.WellboreDepth), new Cell(1, typeof(double)) }, - { nameof(TrajectoryGeoFactDto.ZenithAngle), new Cell(2, typeof(double)) }, - { nameof(TrajectoryGeoFactDto.AzimuthGeo), new Cell(3, typeof(double)) }, - { nameof(TrajectoryGeoFactDto.AzimuthMagnetic), new Cell(4, typeof(double)) }, - { nameof(TrajectoryGeoFactDto.VerticalDepth), new Cell(5, typeof(double)) }, - { nameof(TrajectoryGeoFactDto.Comment), new Cell(6, typeof(string)) } - }; + public IDictionary Cells => new Dictionary + { + { nameof(TrajectoryGeoFactDto.WellboreDepth), new Cell(1, typeof(double)) }, + { nameof(TrajectoryGeoFactDto.ZenithAngle), new Cell(2, typeof(double)) }, + { nameof(TrajectoryGeoFactDto.AzimuthGeo), new Cell(3, typeof(double)) }, + { nameof(TrajectoryGeoFactDto.AzimuthMagnetic), new Cell(4, typeof(double)) }, + { nameof(TrajectoryGeoFactDto.VerticalDepth), new Cell(5, typeof(double)) }, + { nameof(TrajectoryGeoFactDto.Comment), new Cell(6, typeof(string)) } + }; } \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ExcelServices/Templates/TrajectoryTemplates/TrajectoryFactNnbTemplate.cs b/AsbCloudInfrastructure/Services/ExcelServices/Templates/TrajectoryTemplates/TrajectoryFactNnbTemplate.cs index 87489d7c..c7aa8819 100644 --- a/AsbCloudInfrastructure/Services/ExcelServices/Templates/TrajectoryTemplates/TrajectoryFactNnbTemplate.cs +++ b/AsbCloudInfrastructure/Services/ExcelServices/Templates/TrajectoryTemplates/TrajectoryFactNnbTemplate.cs @@ -5,19 +5,19 @@ namespace AsbCloudInfrastructure.Services.ExcelServices.Templates.TrajectoryTemp public class TrajectoryFactNnbTemplate : ITemplateParameters { - public string SheetName => "Фактическая ннб-траектория"; + public string SheetName => "Фактическая ннб-траектория"; - public int HeaderRowsCount => 2; + public int HeaderRowsCount => 2; - public string FileName => "TrajectoryFactNnbTemplate.xlsx"; + public string FileName => "TrajectoryFactNnbTemplate.xlsx"; - public IDictionary Cells => new Dictionary - { - { nameof(TrajectoryGeoFactDto.WellboreDepth), new Cell(1, typeof(double)) }, - { nameof(TrajectoryGeoFactDto.ZenithAngle), new Cell(2, typeof(double)) }, - { nameof(TrajectoryGeoFactDto.AzimuthGeo), new Cell(3, typeof(double)) }, - { nameof(TrajectoryGeoFactDto.AzimuthMagnetic), new Cell(4, typeof(double)) }, - { nameof(TrajectoryGeoFactDto.VerticalDepth), new Cell(5, typeof(double)) }, - { nameof(TrajectoryGeoFactDto.Comment), new Cell(6, typeof(string)) } - }; + public IDictionary Cells => new Dictionary + { + { nameof(TrajectoryGeoFactDto.WellboreDepth), new Cell(1, typeof(double)) }, + { nameof(TrajectoryGeoFactDto.ZenithAngle), new Cell(2, typeof(double)) }, + { nameof(TrajectoryGeoFactDto.AzimuthGeo), new Cell(3, typeof(double)) }, + { nameof(TrajectoryGeoFactDto.AzimuthMagnetic), new Cell(4, typeof(double)) }, + { nameof(TrajectoryGeoFactDto.VerticalDepth), new Cell(5, typeof(double)) }, + { nameof(TrajectoryGeoFactDto.Comment), new Cell(6, typeof(string)) } + }; } \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ExcelServices/Templates/TrajectoryTemplates/TrajectoryPlanTemplate.cs b/AsbCloudInfrastructure/Services/ExcelServices/Templates/TrajectoryTemplates/TrajectoryPlanTemplate.cs index d98c1d89..ef5c0497 100644 --- a/AsbCloudInfrastructure/Services/ExcelServices/Templates/TrajectoryTemplates/TrajectoryPlanTemplate.cs +++ b/AsbCloudInfrastructure/Services/ExcelServices/Templates/TrajectoryTemplates/TrajectoryPlanTemplate.cs @@ -5,17 +5,17 @@ namespace AsbCloudInfrastructure.Services.ExcelServices.Templates.TrajectoryTemp public class TrajectoryPlanTemplate : ITemplateParameters { - public string SheetName => "Плановая траектория"; - public int HeaderRowsCount => 2; - public string FileName => "TrajectoryPlanTemplate.xlsx"; - public IDictionary Cells => new Dictionary - { - { nameof(TrajectoryGeoPlanDto.WellboreDepth), new Cell(1, typeof(double)) }, - { nameof(TrajectoryGeoPlanDto.ZenithAngle), new Cell(2, typeof(double)) }, - { nameof(TrajectoryGeoPlanDto.AzimuthGeo), new Cell(3, typeof(double)) }, - { nameof(TrajectoryGeoPlanDto.AzimuthMagnetic), new Cell(4, typeof(double)) }, - { nameof(TrajectoryGeoPlanDto.VerticalDepth), new Cell(5, typeof(double)) }, - { nameof(TrajectoryGeoPlanDto.Radius), new Cell(6, typeof(double)) }, - { nameof(TrajectoryGeoPlanDto.Comment), new Cell(7, typeof(string)) } - }; + public string SheetName => "Плановая траектория"; + public int HeaderRowsCount => 2; + public string FileName => "TrajectoryPlanTemplate.xlsx"; + public IDictionary Cells => new Dictionary + { + { nameof(TrajectoryGeoPlanDto.WellboreDepth), new Cell(1, typeof(double)) }, + { nameof(TrajectoryGeoPlanDto.ZenithAngle), new Cell(2, typeof(double)) }, + { nameof(TrajectoryGeoPlanDto.AzimuthGeo), new Cell(3, typeof(double)) }, + { nameof(TrajectoryGeoPlanDto.AzimuthMagnetic), new Cell(4, typeof(double)) }, + { nameof(TrajectoryGeoPlanDto.VerticalDepth), new Cell(5, typeof(double)) }, + { nameof(TrajectoryGeoPlanDto.Radius), new Cell(6, typeof(double)) }, + { nameof(TrajectoryGeoPlanDto.Comment), new Cell(7, typeof(string)) } + }; } \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ExcelServices/Templates/WellOperations/WellOperationFactTemplate.cs b/AsbCloudInfrastructure/Services/ExcelServices/Templates/WellOperations/WellOperationFactTemplate.cs index afb5fe19..a28a2c7a 100644 --- a/AsbCloudInfrastructure/Services/ExcelServices/Templates/WellOperations/WellOperationFactTemplate.cs +++ b/AsbCloudInfrastructure/Services/ExcelServices/Templates/WellOperations/WellOperationFactTemplate.cs @@ -6,21 +6,21 @@ namespace AsbCloudInfrastructure.Services.ExcelServices.Templates.WellOperations public class WellOperationFactTemplate : ITemplateParameters { - public string SheetName => "Факт"; + public string SheetName => "Факт"; - public int HeaderRowsCount => 1; + public int HeaderRowsCount => 1; - public string FileName => "WellOperationFactTemplate.xlsx"; + public string FileName => "WellOperationFactTemplate.xlsx"; - public IDictionary Cells => new Dictionary - { - { nameof(WellOperationDto.WellSectionTypeCaption), new Cell(1, typeof(string)) }, - { nameof(WellOperationDto.OperationCategoryName), new Cell(2, typeof(string)) }, - { nameof(WellOperationDto.CategoryInfo), new Cell(3, typeof(string)) }, - { nameof(WellOperationDto.DepthStart), new Cell(4, typeof(double)) }, - { nameof(WellOperationDto.DepthEnd), new Cell(5, typeof(double)) }, - { nameof(WellOperationDto.DateStart), new Cell(6, typeof(DateTime)) }, - { nameof(WellOperationDto.DurationHours), new Cell(7, typeof(double)) }, - { nameof(WellOperationDto.Comment), new Cell(8, typeof(string)) } - }; + public IDictionary Cells => new Dictionary + { + { nameof(WellOperationDto.WellSectionTypeCaption), new Cell(1, typeof(string)) }, + { nameof(WellOperationDto.OperationCategoryName), new Cell(2, typeof(string)) }, + { nameof(WellOperationDto.CategoryInfo), new Cell(3, typeof(string)) }, + { nameof(WellOperationDto.DepthStart), new Cell(4, typeof(double)) }, + { nameof(WellOperationDto.DepthEnd), new Cell(5, typeof(double)) }, + { nameof(WellOperationDto.DateStart), new Cell(6, typeof(DateTime)) }, + { nameof(WellOperationDto.DurationHours), new Cell(7, typeof(double)) }, + { nameof(WellOperationDto.Comment), new Cell(8, typeof(string)) } + }; } \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ExcelServices/Templates/WellOperations/WellOperationPlanTemplate.cs b/AsbCloudInfrastructure/Services/ExcelServices/Templates/WellOperations/WellOperationPlanTemplate.cs index 85e88db7..a5f2150a 100644 --- a/AsbCloudInfrastructure/Services/ExcelServices/Templates/WellOperations/WellOperationPlanTemplate.cs +++ b/AsbCloudInfrastructure/Services/ExcelServices/Templates/WellOperations/WellOperationPlanTemplate.cs @@ -6,21 +6,21 @@ namespace AsbCloudInfrastructure.Services.ExcelServices.Templates.WellOperations public class WellOperationPlanTemplate : ITemplateParameters { - public string SheetName => "План"; + public string SheetName => "План"; - public int HeaderRowsCount => 1; + public int HeaderRowsCount => 1; - public string FileName => "WellOperationPlanTemplate.xlsx"; + public string FileName => "WellOperationPlanTemplate.xlsx"; - public IDictionary Cells => new Dictionary() - { - { nameof(WellOperationDto.WellSectionTypeCaption), new Cell(1, typeof(string)) }, - { nameof(WellOperationDto.OperationCategoryName), new Cell(2, typeof(string)) }, - { nameof(WellOperationDto.CategoryInfo), new Cell(3, typeof(string)) }, - { nameof(WellOperationDto.DepthStart), new Cell(4, typeof(double)) }, - { nameof(WellOperationDto.DepthEnd), new Cell(5, typeof(double)) }, - { nameof(WellOperationDto.DateStart), new Cell(6, typeof(DateTime)) }, - { nameof(WellOperationDto.DurationHours), new Cell(7, typeof(double)) }, - { nameof(WellOperationDto.Comment), new Cell(8, typeof(string)) } - }; + public IDictionary Cells => new Dictionary() + { + { nameof(WellOperationDto.WellSectionTypeCaption), new Cell(1, typeof(string)) }, + { nameof(WellOperationDto.OperationCategoryName), new Cell(2, typeof(string)) }, + { nameof(WellOperationDto.CategoryInfo), new Cell(3, typeof(string)) }, + { nameof(WellOperationDto.DepthStart), new Cell(4, typeof(double)) }, + { nameof(WellOperationDto.DepthEnd), new Cell(5, typeof(double)) }, + { nameof(WellOperationDto.DateStart), new Cell(6, typeof(DateTime)) }, + { nameof(WellOperationDto.DurationHours), new Cell(7, typeof(double)) }, + { nameof(WellOperationDto.Comment), new Cell(8, typeof(string)) } + }; } \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/FileCategoryService.cs b/AsbCloudInfrastructure/Services/FileCategoryService.cs index b4fbaf3d..02d8be83 100644 --- a/AsbCloudInfrastructure/Services/FileCategoryService.cs +++ b/AsbCloudInfrastructure/Services/FileCategoryService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Services; using AsbCloudDb.Model; using AsbCloudInfrastructure.Repository; diff --git a/AsbCloudInfrastructure/Services/HelpPageService.cs b/AsbCloudInfrastructure/Services/HelpPageService.cs index 396ca595..4acff8bd 100644 --- a/AsbCloudInfrastructure/Services/HelpPageService.cs +++ b/AsbCloudInfrastructure/Services/HelpPageService.cs @@ -1,11 +1,11 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Repositories; using AsbCloudApp.Services; +using Microsoft.Extensions.Configuration; using System.IO; using System.Net; using System.Threading; using System.Threading.Tasks; -using Microsoft.Extensions.Configuration; namespace AsbCloudInfrastructure.Services; @@ -14,7 +14,7 @@ namespace AsbCloudInfrastructure.Services; ///
public class HelpPageService : IHelpPageService { - private readonly string directoryNameHelpPageFiles; + private readonly string directoryNameHelpPageFiles; private readonly IHelpPageRepository helpPageRepository; private readonly IFileStorageRepository fileStorageRepository; @@ -27,13 +27,10 @@ public class HelpPageService : IHelpPageService public HelpPageService(IHelpPageRepository helpPageRepository, IFileStorageRepository fileStorageRepository, IConfiguration configuration) - { + { this.helpPageRepository = helpPageRepository; this.fileStorageRepository = fileStorageRepository; - directoryNameHelpPageFiles = configuration.GetValue("DirectoryNameHelpPageFiles"); - - if (string.IsNullOrWhiteSpace(directoryNameHelpPageFiles)) - directoryNameHelpPageFiles = "helpPages"; + directoryNameHelpPageFiles = configuration.GetValue("DirectoryNameHelpPageFiles", "helpPages")!; } /// @@ -45,17 +42,17 @@ public class HelpPageService : IHelpPageService /// /// /// - public async Task AddOrUpdateAsync(string urlPage, - int idCategory, - string fileName, - Stream fileStream, + public async Task AddOrUpdateAsync(string urlPage, + int idCategory, + string fileName, + Stream fileStream, CancellationToken cancellationToken) { var helpPage = await helpPageRepository.GetOrDefaultByUrlPageAndIdCategoryAsync(urlPage, idCategory, cancellationToken); - if(helpPage is not null) + if (helpPage is not null) { await UpdateFileAsync(helpPage, idCategory, @@ -86,12 +83,12 @@ public class HelpPageService : IHelpPageService CancellationToken cancellationToken) { pageKey = WebUtility.UrlDecode(pageKey); - + var helpPage = await helpPageRepository.GetOrDefaultByUrlPageAndIdCategoryAsync(pageKey, idCategory, cancellationToken); - - if(helpPage is null) + + if (helpPage is null) return null; string filePath = fileStorageRepository.GetFilePath(directoryNameHelpPageFiles, diff --git a/AsbCloudInfrastructure/Services/LimitingParameterService.cs b/AsbCloudInfrastructure/Services/LimitingParameterService.cs index 808df22f..da86efd9 100644 --- a/AsbCloudInfrastructure/Services/LimitingParameterService.cs +++ b/AsbCloudInfrastructure/Services/LimitingParameterService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Repositories; using AsbCloudApp.Requests; using AsbCloudApp.Services; diff --git a/AsbCloudInfrastructure/Services/ManualCatalogService.cs b/AsbCloudInfrastructure/Services/ManualCatalogService.cs index 8c779bc7..b95e4ec6 100644 --- a/AsbCloudInfrastructure/Services/ManualCatalogService.cs +++ b/AsbCloudInfrastructure/Services/ManualCatalogService.cs @@ -14,166 +14,163 @@ namespace AsbCloudInfrastructure.Services; public class ManualCatalogService : IManualCatalogService { - private const int IdFileCategory = 30000; + private const int IdFileCategory = 30000; - private readonly IEnumerable validExtensions = new[] - { - ".pdf", - ".mp4" - }; + private readonly IEnumerable validExtensions = new[] + { + ".pdf", + ".mp4" + }; - private readonly string directoryFiles; - private readonly IFileStorageRepository fileStorageRepository; - private readonly IManualDirectoryRepository manualDirectoryRepository; - private readonly ICrudRepository manualRepository; + private readonly string directoryFiles; + private readonly IFileStorageRepository fileStorageRepository; + private readonly IManualDirectoryRepository manualDirectoryRepository; + private readonly ICrudRepository manualRepository; - public ManualCatalogService(IFileStorageRepository fileStorageRepository, - IManualDirectoryRepository manualDirectoryRepository, - ICrudRepository manualRepository, - IConfiguration configuration) - { - this.fileStorageRepository = fileStorageRepository; - this.manualDirectoryRepository = manualDirectoryRepository; - this.manualRepository = manualRepository; - directoryFiles = configuration.GetValue("DirectoryManualFiles"); + public ManualCatalogService(IFileStorageRepository fileStorageRepository, + IManualDirectoryRepository manualDirectoryRepository, + ICrudRepository manualRepository, + IConfiguration configuration) + { + this.fileStorageRepository = fileStorageRepository; + this.manualDirectoryRepository = manualDirectoryRepository; + this.manualRepository = manualRepository; + directoryFiles = configuration.GetValue("DirectoryManualFiles", "manuals")!; + } - if (string.IsNullOrWhiteSpace(directoryFiles)) - directoryFiles = "manuals"; - } + public async Task SaveFileAsync(int idDirectory, int idAuthor, string name, Stream stream, CancellationToken cancellationToken) + { + var extension = Path.GetExtension(name); - public async Task SaveFileAsync(int idDirectory, int idAuthor, string name, Stream stream, CancellationToken cancellationToken) - { - var extension = Path.GetExtension(name); - - if (!validExtensions.Contains(extension)) - throw new ArgumentInvalidException( + if (!validExtensions.Contains(extension)) + throw new ArgumentInvalidException( nameof(name), $"Невозможно загрузить файл с расширением '{extension}'. Допустимые форматы файлов: {string.Join(", ", validExtensions)}"); - var path = await BuildFilePathAsync(idDirectory, name, cancellationToken); + var path = await BuildFilePathAsync(idDirectory, name, cancellationToken); - await fileStorageRepository.SaveFileAsync(path, stream, cancellationToken); + await fileStorageRepository.SaveFileAsync(path, stream, cancellationToken); - var manual = new ManualDto - { - Name = name, - DateDownload = DateTimeOffset.UtcNow, - IdDirectory = idDirectory, - IdCategory = IdFileCategory, - IdAuthor = idAuthor - }; + var manual = new ManualDto + { + Name = name, + DateDownload = DateTimeOffset.UtcNow, + IdDirectory = idDirectory, + IdCategory = IdFileCategory, + IdAuthor = idAuthor + }; - return await manualRepository.InsertAsync(manual, cancellationToken); - } + return await manualRepository.InsertAsync(manual, cancellationToken); + } - public async Task AddDirectoryAsync(string name, int? idParent, CancellationToken cancellationToken) - { - if (idParent.HasValue && !await manualDirectoryRepository.IsExistsAsync(idParent.Value, cancellationToken)) - throw new ArgumentInvalidException(nameof(idParent), "Родительской директории не существует"); + public async Task AddDirectoryAsync(string name, int? idParent, CancellationToken cancellationToken) + { + if (idParent.HasValue && !await manualDirectoryRepository.IsExistsAsync(idParent.Value, cancellationToken)) + throw new ArgumentInvalidException(nameof(idParent), "Родительской директории не существует"); - var directory = new ManualDirectoryDto - { - Name = name, - IdParent = idParent, - }; + var directory = new ManualDirectoryDto + { + Name = name, + IdParent = idParent, + }; - if (await IsExistDirectoryAsync(directory, cancellationToken)) - throw new ArgumentInvalidException(name, "Директория с таким названием уже существует"); - - return await manualDirectoryRepository.InsertAsync(directory, cancellationToken); - } + if (await IsExistDirectoryAsync(directory, cancellationToken)) + throw new ArgumentInvalidException(name, "Директория с таким названием уже существует"); + + return await manualDirectoryRepository.InsertAsync(directory, cancellationToken); + } - public async Task UpdateDirectoryAsync(int id, string name, CancellationToken cancellationToken) - { - var directory = await manualDirectoryRepository.GetOrDefaultAsync(id, cancellationToken) - ?? throw new ArgumentInvalidException(nameof(id), $"Директории с Id: {id} не существует"); + public async Task UpdateDirectoryAsync(int id, string name, CancellationToken cancellationToken) + { + var directory = await manualDirectoryRepository.GetOrDefaultAsync(id, cancellationToken) + ?? throw new ArgumentInvalidException(nameof(id), $"Директории с Id: {id} не существует"); - directory.Name = name; + directory.Name = name; - if (await IsExistDirectoryAsync(directory, cancellationToken)) - throw new ArgumentInvalidException(name, "Директория с таким названием уже существует"); + if (await IsExistDirectoryAsync(directory, cancellationToken)) + throw new ArgumentInvalidException(name, "Директория с таким названием уже существует"); - await manualDirectoryRepository.UpdateAsync(directory, cancellationToken); - } + await manualDirectoryRepository.UpdateAsync(directory, cancellationToken); + } - public async Task DeleteDirectoryAsync(int id, CancellationToken cancellationToken) - { - var directory = await manualDirectoryRepository.GetOrDefaultAsync(id, cancellationToken); + public async Task DeleteDirectoryAsync(int id, CancellationToken cancellationToken) + { + var directory = await manualDirectoryRepository.GetOrDefaultAsync(id, cancellationToken); - if (directory is null) - return 0; + if (directory is null) + return 0; - var path = fileStorageRepository.MakeFilePath(directoryFiles, IdFileCategory.ToString(), - await BuildDirectoryPathAsync(id, cancellationToken)); + var path = fileStorageRepository.MakeFilePath(directoryFiles, IdFileCategory.ToString(), + await BuildDirectoryPathAsync(id, cancellationToken)); - try - { - fileStorageRepository.DeleteDirectory(path, true); - } - catch (InvalidOperationException ex) - { - throw new ArgumentInvalidException(nameof(id), ex.Message); - } - - return await manualDirectoryRepository.DeleteAsync(directory.Id, cancellationToken); - } + try + { + fileStorageRepository.DeleteDirectory(path, true); + } + catch (InvalidOperationException ex) + { + throw new ArgumentInvalidException(nameof(id), ex.Message); + } + + return await manualDirectoryRepository.DeleteAsync(directory.Id, cancellationToken); + } - public async Task DeleteFileAsync(int id, CancellationToken cancellationToken) - { - var manual = await manualRepository.GetOrDefaultAsync(id, cancellationToken); + public async Task DeleteFileAsync(int id, CancellationToken cancellationToken) + { + var manual = await manualRepository.GetOrDefaultAsync(id, cancellationToken); - if (manual is null) - return 0; + if (manual is null) + return 0; - var filePath = await BuildFilePathAsync(manual.IdDirectory, manual.Name, cancellationToken); - - fileStorageRepository.DeleteFile(filePath); + var filePath = await BuildFilePathAsync(manual.IdDirectory, manual.Name, cancellationToken); + + fileStorageRepository.DeleteFile(filePath); - return await manualRepository.DeleteAsync(manual.Id, cancellationToken); - } + return await manualRepository.DeleteAsync(manual.Id, cancellationToken); + } - public async Task<(Stream stream, string fileName)?> GetFileAsync(int id, CancellationToken cancellationToken) - { - var manual = await manualRepository.GetOrDefaultAsync(id, cancellationToken); + public async Task<(Stream stream, string fileName)?> GetFileAsync(int id, CancellationToken cancellationToken) + { + var manual = await manualRepository.GetOrDefaultAsync(id, cancellationToken); - if (manual is null) - return null; + if (manual is null) + return null; - var path = await BuildFilePathAsync(manual.IdDirectory, manual.Name, cancellationToken); - var fileStream = new FileStream(path, FileMode.Open); - return (fileStream, manual.Name); - } + var path = await BuildFilePathAsync(manual.IdDirectory, manual.Name, cancellationToken); + var fileStream = new FileStream(path, FileMode.Open); + return (fileStream, manual.Name); + } - private async Task IsExistDirectoryAsync(ManualDirectoryDto directory, CancellationToken cancellationToken) - { - var existingDirectory = await manualDirectoryRepository.GetOrDefaultAsync(directory.Name, directory.IdParent, - cancellationToken); + private async Task IsExistDirectoryAsync(ManualDirectoryDto directory, CancellationToken cancellationToken) + { + var existingDirectory = await manualDirectoryRepository.GetOrDefaultAsync(directory.Name, directory.IdParent, + cancellationToken); - return existingDirectory is not null && directory.Id != existingDirectory.Id; - } + return existingDirectory is not null && directory.Id != existingDirectory.Id; + } - private async Task BuildDirectoryPathAsync(int idDirectory, CancellationToken cancellationToken) - { - var directiories = await manualDirectoryRepository.GetAllAsync(cancellationToken); + private async Task BuildDirectoryPathAsync(int idDirectory, CancellationToken cancellationToken) + { + var directiories = await manualDirectoryRepository.GetAllAsync(cancellationToken); - var directory = directiories.FirstOrDefault(d => d.Id == idDirectory) - ?? throw new ArgumentInvalidException(nameof(idDirectory), $"Директории с Id: {idDirectory} не существует"); + var directory = directiories.FirstOrDefault(d => d.Id == idDirectory) + ?? throw new ArgumentInvalidException(nameof(idDirectory), $"Директории с Id: {idDirectory} не существует"); - var pathSegments = new List { directory.Id }; + var pathSegments = new List { directory.Id }; - while (directory.IdParent.HasValue) - { - directory = directiories.FirstOrDefault(d => d.Id == directory.IdParent.Value); - pathSegments.Insert(0, directory!.Id); - } + while (directory.IdParent.HasValue) + { + directory = directiories.FirstOrDefault(d => d.Id == directory.IdParent.Value); + pathSegments.Insert(0, directory!.Id); + } - return string.Join("/", pathSegments); - } + return string.Join("/", pathSegments); + } - private async Task BuildFilePathAsync(int idDirectory, string name, CancellationToken cancellationToken) - { - var directoryPath = await BuildDirectoryPathAsync(idDirectory, cancellationToken); + private async Task BuildFilePathAsync(int idDirectory, string name, CancellationToken cancellationToken) + { + var directoryPath = await BuildDirectoryPathAsync(idDirectory, cancellationToken); - return fileStorageRepository.MakeFilePath(directoryFiles, IdFileCategory.ToString(), Path.Combine(directoryPath, name)); - } + return fileStorageRepository.MakeFilePath(directoryFiles, IdFileCategory.ToString(), Path.Combine(directoryPath, name)); + } } \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/MeasureService.cs b/AsbCloudInfrastructure/Services/MeasureService.cs index 7a349450..5413390d 100644 --- a/AsbCloudInfrastructure/Services/MeasureService.cs +++ b/AsbCloudInfrastructure/Services/MeasureService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Exceptions; using AsbCloudApp.Services; using AsbCloudDb.Model; @@ -38,7 +38,7 @@ namespace AsbCloudInfrastructure.Services .ToDictionaryAsync(e => e.Id, e => e.Name, token); return entities; }); - return cache; + return cache!; } public async Task GetLastOrDefaultAsync(int idWell, int idCategory, CancellationToken token) diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanAntiCrashRotationExportService.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanAntiCrashRotationExportService.cs new file mode 100644 index 00000000..d87c40e0 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanAntiCrashRotationExportService.cs @@ -0,0 +1,30 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Requests.ExportOptions; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; +using System.Threading; +using System.Threading.Tasks; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Export; + +public class ProcessMapPlanAntiCrashRotationExportService : ProcessMapPlanExportService +{ + public ProcessMapPlanAntiCrashRotationExportService( + IChangeLogRepository processMapPlanRepository, + IWellService wellService) + : base(processMapPlanRepository, wellService) + { + } + + protected override ITemplateParameters TemplateParameters { get; } = new ProcessMapPlanAntiCrashRotationTemplate(); + + protected override async Task BuildFileNameAsync(WellRelatedExportRequest options, CancellationToken token) + { + var caption = await wellService.GetWellCaptionByIdAsync(options.IdWell, token); + + return $"{caption}_РТК_План_противоаварийное вращение.xlsx"; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanAutoHoldTFExportService.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanAutoHoldTFExportService.cs new file mode 100644 index 00000000..84567d4f --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanAutoHoldTFExportService.cs @@ -0,0 +1,30 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Requests.ExportOptions; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; +using System.Threading; +using System.Threading.Tasks; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Export; + +public class ProcessMapPlanAutoHoldTFExportService : ProcessMapPlanExportService +{ + public ProcessMapPlanAutoHoldTFExportService( + IChangeLogRepository processMapPlanRepository, + IWellService wellService) + : base(processMapPlanRepository, wellService) + { + } + + protected override ITemplateParameters TemplateParameters { get; } = new ProcessMapPlanAutoHoldTFTemplate(); + + protected override async Task BuildFileNameAsync(WellRelatedExportRequest options, CancellationToken token) + { + var caption = await wellService.GetWellCaptionByIdAsync(options.IdWell, token); + + return $"{caption}_РТК_План_автоудержание_tf.xlsx"; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanDamperExportService.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanDamperExportService.cs new file mode 100644 index 00000000..9feaf815 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanDamperExportService.cs @@ -0,0 +1,30 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Requests.ExportOptions; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; +using System.Threading; +using System.Threading.Tasks; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Export; + +public class ProcessMapPlanDamperExportService : ProcessMapPlanExportService +{ + public ProcessMapPlanDamperExportService( + IChangeLogRepository processMapPlanRepository, + IWellService wellService) + : base(processMapPlanRepository, wellService) + { + } + + protected override ITemplateParameters TemplateParameters { get; } = new ProcessMapPlanDamperTemplate(); + + protected override async Task BuildFileNameAsync(WellRelatedExportRequest options, CancellationToken token) + { + var caption = await wellService.GetWellCaptionByIdAsync(options.IdWell, token); + + return $"{caption}_РТК_План_демпфер.xlsx"; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanDrillTestExportService.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanDrillTestExportService.cs new file mode 100644 index 00000000..6a8a9555 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanDrillTestExportService.cs @@ -0,0 +1,30 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Requests.ExportOptions; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; +using System.Threading; +using System.Threading.Tasks; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Export; + +public class ProcessMapPlanDrillTestExportService : ProcessMapPlanExportService +{ + public ProcessMapPlanDrillTestExportService( + IChangeLogRepository processMapPlanRepository, + IWellService wellService) + : base(processMapPlanRepository, wellService) + { + } + + protected override ITemplateParameters TemplateParameters { get; } = new ProcessMapPlanDrillTestTemplate(); + + protected override async Task BuildFileNameAsync(WellRelatedExportRequest options, CancellationToken token) + { + var caption = await wellService.GetWellCaptionByIdAsync(options.IdWell, token); + + return $"{caption}_РТК_План_дрилтест.xlsx"; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanDrillingExportService.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanDrillingExportService.cs deleted file mode 100644 index 5b0935d2..00000000 --- a/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanDrillingExportService.cs +++ /dev/null @@ -1,52 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading; -using System.Threading.Tasks; -using AsbCloudApp.Data.ProcessMaps; -using AsbCloudApp.Repositories; -using AsbCloudApp.Requests; -using AsbCloudApp.Requests.ExportOptions; -using AsbCloudApp.Services; -using AsbCloudInfrastructure.Services.ExcelServices.Templates; -using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; - -namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Export; - -public class ProcessMapPlanDrillingExportService : ProcessMapPlanExportService -{ - public ProcessMapPlanDrillingExportService( - IChangeLogRepository processMapPlanRepository, - IWellService wellService) - : base(processMapPlanRepository, wellService) - { - } - - protected override ITemplateParameters TemplateParameters => new ProcessMapPlanDrillingTemplate(); - - protected override async Task BuildFileNameAsync(WellRelatedExportRequest options, CancellationToken token) - { - var caption = await wellService.GetWellCaptionByIdAsync(options.IdWell, token); - - return $"{caption}_РТК_План_бурение.xlsx"; - } - - protected override async Task> GetDtosAsync(WellRelatedExportRequest options, - CancellationToken token) - { - var dtos = await base.GetDtosAsync(options, token); - var dtosWithMode = dtos.Select(dto => - { - dto.Mode = dto.IdMode switch - { - 1 => "Ротор", - 2 => "Слайд", - _ => throw new ArgumentOutOfRangeException() - }; - - return dto; - }); - - return dtosWithMode; - } -} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanExportService.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanExportService.cs index 07cc6a13..2b4de002 100644 --- a/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanExportService.cs +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanExportService.cs @@ -1,38 +1,34 @@ -using System; -using System.Collections.Generic; -using System.Threading; -using System.Threading.Tasks; -using AsbCloudApp.Data; +using AsbCloudApp.Data.ProcessMaps; using AsbCloudApp.Repositories; using AsbCloudApp.Requests; using AsbCloudApp.Requests.ExportOptions; using AsbCloudApp.Services; using AsbCloudInfrastructure.Services.ExcelServices; +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Export; public abstract class ProcessMapPlanExportService : ExportExcelService - where TDto : ChangeLogAbstract + where TDto : ProcessMapPlanBaseDto { - protected readonly IWellService wellService; + protected readonly IWellService wellService; - private readonly IChangeLogRepository processMapPlanRepository; + private readonly IChangeLogRepository processMapPlanRepository; - protected ProcessMapPlanExportService(IChangeLogRepository processMapPlanRepository, - IWellService wellService) - { - this.processMapPlanRepository = processMapPlanRepository; - this.wellService = wellService; - } - - protected override async Task> GetDtosAsync(WellRelatedExportRequest options, CancellationToken token) - { - var request = new ProcessMapPlanBaseRequestWithWell(options.IdWell) - { - Moment = DateTimeOffset.UtcNow - }; - - var dtos = await processMapPlanRepository.Get(request, token); - return dtos; - } + protected ProcessMapPlanExportService(IChangeLogRepository processMapPlanRepository, + IWellService wellService) + { + this.processMapPlanRepository = processMapPlanRepository; + this.wellService = wellService; + } + + protected override async Task> GetDtosAsync(WellRelatedExportRequest options, CancellationToken token) + { + var request = new ProcessMapPlanBaseRequestWithWell(options.IdWell); + + var dtos = await processMapPlanRepository.GetCurrent(request, token); + return dtos; + } } \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanLoadCapacityExportService.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanLoadCapacityExportService.cs new file mode 100644 index 00000000..ae4fa8ac --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanLoadCapacityExportService.cs @@ -0,0 +1,30 @@ +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Requests.ExportOptions; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; +using System.Threading; +using System.Threading.Tasks; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Export; + +public class ProcessMapPlanLoadCapacityExportService : ProcessMapPlanExportService +{ + public ProcessMapPlanLoadCapacityExportService( + IChangeLogRepository processMapPlanRepository, + IWellService wellService) + : base(processMapPlanRepository, wellService) + { + } + + protected override ITemplateParameters TemplateParameters { get; } = new ProcessMapPlanLoadCapacityTemplate(); + + protected override async Task BuildFileNameAsync(WellRelatedExportRequest options, CancellationToken token) + { + var caption = await wellService.GetWellCaptionByIdAsync(options.IdWell, token); + + return $"{caption}_РТК_План_выработка_нагрузки.xlsx"; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanOscillationAnglesExportService.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanOscillationAnglesExportService.cs new file mode 100644 index 00000000..c70779ff --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanOscillationAnglesExportService.cs @@ -0,0 +1,30 @@ +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Requests.ExportOptions; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; +using System.Threading; +using System.Threading.Tasks; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Export; + +public class ProcessMapPlanOscillationAnglesExportService : ProcessMapPlanExportService +{ + public ProcessMapPlanOscillationAnglesExportService( + IChangeLogRepository processMapPlanRepository, + IWellService wellService) + : base(processMapPlanRepository, wellService) + { + } + + protected override ITemplateParameters TemplateParameters { get; } = new ProcessMapPlanOscillationAnglesTemplate(); + + protected override async Task BuildFileNameAsync(WellRelatedExportRequest options, CancellationToken token) + { + var caption = await wellService.GetWellCaptionByIdAsync(options.IdWell, token); + + return $"{caption}_РТК_План_определения_углов_осцилляции.xlsx"; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanOscillationExportService.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanOscillationExportService.cs new file mode 100644 index 00000000..a9488a7e --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanOscillationExportService.cs @@ -0,0 +1,30 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Requests.ExportOptions; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; +using System.Threading; +using System.Threading.Tasks; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Export; + +public class ProcessMapPlanOscillationExportService : ProcessMapPlanExportService +{ + public ProcessMapPlanOscillationExportService( + IChangeLogRepository processMapPlanRepository, + IWellService wellService) + : base(processMapPlanRepository, wellService) + { + } + + protected override ITemplateParameters TemplateParameters { get; } = new ProcessMapPlanOscillationTemplate(); + + protected override async Task BuildFileNameAsync(WellRelatedExportRequest options, CancellationToken token) + { + var caption = await wellService.GetWellCaptionByIdAsync(options.IdWell, token); + + return $"{caption}_РТК_План_осцилляция.xlsx"; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanPositioningOffTheBottomExportService.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanPositioningOffTheBottomExportService.cs new file mode 100644 index 00000000..1da78da4 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanPositioningOffTheBottomExportService.cs @@ -0,0 +1,30 @@ +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Requests.ExportOptions; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; +using System.Threading; +using System.Threading.Tasks; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Export; + +public class ProcessMapPlanPositioningOffTheBottomExportService : ProcessMapPlanExportService +{ + public ProcessMapPlanPositioningOffTheBottomExportService( + IChangeLogRepository processMapPlanRepository, + IWellService wellService) + : base(processMapPlanRepository, wellService) + { + } + + protected override ITemplateParameters TemplateParameters { get; } = new ProcessMapPlanPositioningOffTheBottomTemplate(); + + protected override async Task BuildFileNameAsync(WellRelatedExportRequest options, CancellationToken token) + { + var caption = await wellService.GetWellCaptionByIdAsync(options.IdWell, token); + + return $"{caption}_РТК_План_позиционирование_над_забоем.xlsx"; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanReamExportService.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanReamExportService.cs deleted file mode 100644 index c3dc5d69..00000000 --- a/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanReamExportService.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System.Threading; -using System.Threading.Tasks; -using AsbCloudApp.Data.ProcessMaps; -using AsbCloudApp.Repositories; -using AsbCloudApp.Requests; -using AsbCloudApp.Requests.ExportOptions; -using AsbCloudApp.Services; -using AsbCloudInfrastructure.Services.ExcelServices.Templates; -using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; - -namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Export; - -public class ProcessMapPlanReamExportService : ProcessMapPlanExportService -{ - protected override ITemplateParameters TemplateParameters => new ProcessMapPlanReamTemplate(); - - public ProcessMapPlanReamExportService( - IChangeLogRepository processMapPlanRepository, - IWellService wellService) - : base(processMapPlanRepository, wellService) - { - } - - protected override async Task BuildFileNameAsync(WellRelatedExportRequest options, CancellationToken token) - { - var caption = await wellService.GetWellCaptionByIdAsync(options.IdWell, token); - - return $"{caption}_РТК_План_проработка.xlsx"; - } -} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanReamingRotorExportService.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanReamingRotorExportService.cs new file mode 100644 index 00000000..352e6df0 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanReamingRotorExportService.cs @@ -0,0 +1,30 @@ +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Requests.ExportOptions; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; +using System.Threading; +using System.Threading.Tasks; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Export; + +public class ProcessMapPlanReamingRotorExportService : ProcessMapPlanExportService +{ + public ProcessMapPlanReamingRotorExportService( + IChangeLogRepository processMapPlanRepository, + IWellService wellService) + : base(processMapPlanRepository, wellService) + { + } + + protected override ITemplateParameters TemplateParameters { get; } = new ProcessMapPlanReamingRotorTemplate(); + + protected override async Task BuildFileNameAsync(WellRelatedExportRequest options, CancellationToken token) + { + var caption = await wellService.GetWellCaptionByIdAsync(options.IdWell, token); + + return $"{caption}_РТК_План_проработка_ротор.xlsx"; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanReamingSlideExportService.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanReamingSlideExportService.cs new file mode 100644 index 00000000..f556cb65 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanReamingSlideExportService.cs @@ -0,0 +1,30 @@ +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Requests.ExportOptions; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; +using System.Threading; +using System.Threading.Tasks; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Export; + +public class ProcessMapPlanReamingSlideExportService : ProcessMapPlanExportService +{ + public ProcessMapPlanReamingSlideExportService( + IChangeLogRepository processMapPlanRepository, + IWellService wellService) + : base(processMapPlanRepository, wellService) + { + } + + protected override ITemplateParameters TemplateParameters { get; } = new ProcessMapPlanReamingSlideTemplate(); + + protected override async Task BuildFileNameAsync(WellRelatedExportRequest options, CancellationToken token) + { + var caption = await wellService.GetWellCaptionByIdAsync(options.IdWell, token); + + return $"{caption}_РТК_План_проработка_слайд.xlsx"; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanRecordingStaticMeasurementExportService.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanRecordingStaticMeasurementExportService.cs new file mode 100644 index 00000000..5f9471eb --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanRecordingStaticMeasurementExportService.cs @@ -0,0 +1,30 @@ +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Requests.ExportOptions; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; +using System.Threading; +using System.Threading.Tasks; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Export; + +public class ProcessMapPlanRecordingStaticMeasurementExportService : ProcessMapPlanExportService +{ + public ProcessMapPlanRecordingStaticMeasurementExportService( + IChangeLogRepository processMapPlanRepository, + IWellService wellService) + : base(processMapPlanRepository, wellService) + { + } + + protected override ITemplateParameters TemplateParameters { get; } = new ProcessMapPlanRecordingStaticMeasurementTemplate(); + + protected override async Task BuildFileNameAsync(WellRelatedExportRequest options, CancellationToken token) + { + var caption = await wellService.GetWellCaptionByIdAsync(options.IdWell, token); + + return $"{caption}_РТК_План_запись_статического_замера.xlsx"; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanRotorExportService.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanRotorExportService.cs new file mode 100644 index 00000000..e16620ef --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanRotorExportService.cs @@ -0,0 +1,30 @@ +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Requests.ExportOptions; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; +using System.Threading; +using System.Threading.Tasks; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Export; + +public class ProcessMapPlanRotorExportService : ProcessMapPlanExportService +{ + public ProcessMapPlanRotorExportService( + IChangeLogRepository processMapPlanRepository, + IWellService wellService) + : base(processMapPlanRepository, wellService) + { + } + + protected override ITemplateParameters TemplateParameters { get; } = new ProcessMapPlanRotorTemplate(); + + protected override async Task BuildFileNameAsync(WellRelatedExportRequest options, CancellationToken token) + { + var caption = await wellService.GetWellCaptionByIdAsync(options.IdWell, token); + + return $"{caption}_РТК_План_бурение_ротор.xlsx"; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanShockTestExportService.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanShockTestExportService.cs new file mode 100644 index 00000000..6035a610 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanShockTestExportService.cs @@ -0,0 +1,30 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Requests.ExportOptions; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; +using System.Threading; +using System.Threading.Tasks; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Export; + +public class ProcessMapPlanShockTestExportService : ProcessMapPlanExportService +{ + public ProcessMapPlanShockTestExportService( + IChangeLogRepository processMapPlanRepository, + IWellService wellService) + : base(processMapPlanRepository, wellService) + { + } + + protected override ITemplateParameters TemplateParameters { get; } = new ProcessMapPlanShockTestTemplate(); + + protected override async Task BuildFileNameAsync(WellRelatedExportRequest options, CancellationToken token) + { + var caption = await wellService.GetWellCaptionByIdAsync(options.IdWell, token); + + return $"{caption}_РТК_План_shock_test.xlsx"; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanSlideExportService.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanSlideExportService.cs new file mode 100644 index 00000000..0d263beb --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanSlideExportService.cs @@ -0,0 +1,30 @@ +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Requests.ExportOptions; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; +using System.Threading; +using System.Threading.Tasks; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Export; + +public class ProcessMapPlanSlideExportService : ProcessMapPlanExportService +{ + public ProcessMapPlanSlideExportService( + IChangeLogRepository processMapPlanRepository, + IWellService wellService) + : base(processMapPlanRepository, wellService) + { + } + + protected override ITemplateParameters TemplateParameters { get; } = new ProcessMapPlanSlideTemplate(); + + protected override async Task BuildFileNameAsync(WellRelatedExportRequest options, CancellationToken token) + { + var caption = await wellService.GetWellCaptionByIdAsync(options.IdWell, token); + + return $"{caption}_РТК_План_бурение_слайд.xlsx"; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanStaticMeasurementOutputExportService.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanStaticMeasurementOutputExportService.cs new file mode 100644 index 00000000..f41d2a81 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanStaticMeasurementOutputExportService.cs @@ -0,0 +1,30 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Requests.ExportOptions; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; +using System.Threading; +using System.Threading.Tasks; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Export; + +public class ProcessMapPlanStaticMeasurementOutputExportService : ProcessMapPlanExportService +{ + public ProcessMapPlanStaticMeasurementOutputExportService( + IChangeLogRepository processMapPlanRepository, + IWellService wellService) + : base(processMapPlanRepository, wellService) + { + } + + protected override ITemplateParameters TemplateParameters { get; } = new ProcessMapPlanStaticMeasurementOutputTemplate(); + + protected override async Task BuildFileNameAsync(WellRelatedExportRequest options, CancellationToken token) + { + var caption = await wellService.GetWellCaptionByIdAsync(options.IdWell, token); + + return $"{caption}_РТК_План_выход_статического_замера.xlsx"; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanSwitchingOffThePumpExportService.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanSwitchingOffThePumpExportService.cs new file mode 100644 index 00000000..e1ae6e19 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanSwitchingOffThePumpExportService.cs @@ -0,0 +1,30 @@ +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Requests.ExportOptions; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; +using System.Threading; +using System.Threading.Tasks; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Export; + +public class ProcessMapPlanSwitchingOffThePumpExportService : ProcessMapPlanExportService +{ + public ProcessMapPlanSwitchingOffThePumpExportService( + IChangeLogRepository processMapPlanRepository, + IWellService wellService) + : base(processMapPlanRepository, wellService) + { + } + + protected override ITemplateParameters TemplateParameters { get; } = new ProcessMapPlanSwitchingOffThePumpTemplate(); + + protected override async Task BuildFileNameAsync(WellRelatedExportRequest options, CancellationToken token) + { + var caption = await wellService.GetWellCaptionByIdAsync(options.IdWell, token); + + return $"{caption}_РТК_План_выключение_насоса.xlsx"; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanSwitchingToTheModeExportService.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanSwitchingToTheModeExportService.cs new file mode 100644 index 00000000..ba0461fb --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanSwitchingToTheModeExportService.cs @@ -0,0 +1,30 @@ +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Requests.ExportOptions; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; +using System.Threading; +using System.Threading.Tasks; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Export; + +public class ProcessMapPlanSwitchingToTheModeExportService : ProcessMapPlanExportService +{ + public ProcessMapPlanSwitchingToTheModeExportService( + IChangeLogRepository processMapPlanRepository, + IWellService wellService) + : base(processMapPlanRepository, wellService) + { + } + + protected override ITemplateParameters TemplateParameters { get; } = new ProcessMapPlanSwitchingToTheModeTemplate(); + + protected override async Task BuildFileNameAsync(WellRelatedExportRequest options, CancellationToken token) + { + var caption = await wellService.GetWellCaptionByIdAsync(options.IdWell, token); + + return $"{caption}_РТК_План_выход_на_плановый_расход.xlsx"; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanTFOrientationExportService.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanTFOrientationExportService.cs new file mode 100644 index 00000000..495437c1 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanTFOrientationExportService.cs @@ -0,0 +1,30 @@ +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Requests.ExportOptions; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; +using System.Threading; +using System.Threading.Tasks; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Export; + +public class ProcessMapPlanTFOrientationExportService : ProcessMapPlanExportService +{ + public ProcessMapPlanTFOrientationExportService( + IChangeLogRepository processMapPlanRepository, + IWellService wellService) + : base(processMapPlanRepository, wellService) + { + } + + protected override ITemplateParameters TemplateParameters { get; } = new ProcessMapPlanTFOrientationTemplate(); + + protected override async Task BuildFileNameAsync(WellRelatedExportRequest options, CancellationToken token) + { + var caption = await wellService.GetWellCaptionByIdAsync(options.IdWell, token); + + return $"{caption}_РТК_План_выставление.xlsx"; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanAntiCrashRotationParser.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanAntiCrashRotationParser.cs new file mode 100644 index 00000000..99fdc752 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanAntiCrashRotationParser.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Repositories; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +public class ProcessMapPlanAntiCrashRotationParser : ProcessMapPlanParser +{ + public ProcessMapPlanAntiCrashRotationParser(IWellOperationRepository wellOperationRepository) + : base(wellOperationRepository) + { + } + + protected override ITemplateParameters TemplateParameters => new ProcessMapPlanAntiCrashRotationTemplate(); + + protected override ProcessMapPlanAntiCrashRotationDto BuildDto(IDictionary row, int rowNumber) + { + var dto = base.BuildDto(row, rowNumber); + + var section = sections.FirstOrDefault(s => + string.Equals(s.Caption.Trim(), dto.Section?.Trim(), StringComparison.CurrentCultureIgnoreCase)); + + if (section is null) + { + var message = string.Format(XLExtentions.ProblemDetailsTemplate, + TemplateParameters.SheetName, + rowNumber, + TemplateParameters.Cells[nameof(ProcessMapPlanBaseDto.Section)], + "Указана некорректная секция"); + throw new FileFormatException(message); + } + + dto.IdWellSectionType = section.Id; + + return dto; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanAutoHoldTFParser.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanAutoHoldTFParser.cs new file mode 100644 index 00000000..93eb321f --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanAutoHoldTFParser.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Repositories; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +public class ProcessMapPlanAutoHoldTFParser : ProcessMapPlanParser +{ + public ProcessMapPlanAutoHoldTFParser(IWellOperationRepository wellOperationRepository) + : base(wellOperationRepository) + { + } + + protected override ITemplateParameters TemplateParameters => new ProcessMapPlanAutoHoldTFTemplate(); + + protected override ProcessMapPlanAutoHoldTFDto BuildDto(IDictionary row, int rowNumber) + { + var dto = base.BuildDto(row, rowNumber); + + var section = sections.FirstOrDefault(s => + string.Equals(s.Caption.Trim(), dto.Section?.Trim(), StringComparison.CurrentCultureIgnoreCase)); + + if (section is null) + { + var message = string.Format(XLExtentions.ProblemDetailsTemplate, + TemplateParameters.SheetName, + rowNumber, + TemplateParameters.Cells[nameof(ProcessMapPlanBaseDto.Section)], + "Указана некорректная секция"); + throw new FileFormatException(message); + } + + dto.IdWellSectionType = section.Id; + + return dto; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanDamperParser.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanDamperParser.cs new file mode 100644 index 00000000..a889ef29 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanDamperParser.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Repositories; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +public class ProcessMapPlanDamperParser : ProcessMapPlanParser +{ + public ProcessMapPlanDamperParser(IWellOperationRepository wellOperationRepository) + : base(wellOperationRepository) + { + } + + protected override ITemplateParameters TemplateParameters => new ProcessMapPlanDamperTemplate(); + + protected override ProcessMapPlanDamperDto BuildDto(IDictionary row, int rowNumber) + { + var dto = base.BuildDto(row, rowNumber); + + var section = sections.FirstOrDefault(s => + string.Equals(s.Caption.Trim(), dto.Section?.Trim(), StringComparison.CurrentCultureIgnoreCase)); + + if (section is null) + { + var message = string.Format(XLExtentions.ProblemDetailsTemplate, + TemplateParameters.SheetName, + rowNumber, + TemplateParameters.Cells[nameof(ProcessMapPlanBaseDto.Section)], + "Указана некорректная секция"); + throw new FileFormatException(message); + } + + dto.IdWellSectionType = section.Id; + + return dto; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanDrillTestParser.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanDrillTestParser.cs new file mode 100644 index 00000000..d9acc4ed --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanDrillTestParser.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Repositories; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +public class ProcessMapPlanDrillTestParser : ProcessMapPlanParser +{ + public ProcessMapPlanDrillTestParser(IWellOperationRepository wellOperationRepository) + : base(wellOperationRepository) + { + } + + protected override ITemplateParameters TemplateParameters => new ProcessMapPlanDrillTestTemplate(); + + protected override ProcessMapPlanDrillTestDto BuildDto(IDictionary row, int rowNumber) + { + var dto = base.BuildDto(row, rowNumber); + + var section = sections.FirstOrDefault(s => + string.Equals(s.Caption.Trim(), dto.Section?.Trim(), StringComparison.CurrentCultureIgnoreCase)); + + if (section is null) + { + var message = string.Format(XLExtentions.ProblemDetailsTemplate, + TemplateParameters.SheetName, + rowNumber, + TemplateParameters.Cells[nameof(ProcessMapPlanBaseDto.Section)], + "Указана некорректная секция"); + throw new FileFormatException(message); + } + + dto.IdWellSectionType = section.Id; + + return dto; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanDrillingParser.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanDrillingParser.cs deleted file mode 100644 index fccffe3e..00000000 --- a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanDrillingParser.cs +++ /dev/null @@ -1,55 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using AsbCloudApp.Data.ProcessMaps; -using AsbCloudApp.Repositories; -using AsbCloudInfrastructure.Services.ExcelServices.Templates; -using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; - -namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; - -public class ProcessMapPlanDrillingParser : ProcessMapPlanParser -{ - public ProcessMapPlanDrillingParser(IWellOperationRepository wellOperationRepository) - : base(wellOperationRepository) - { - } - - protected override ITemplateParameters TemplateParameters => new ProcessMapPlanDrillingTemplate(); - - protected override ProcessMapPlanDrillingDto BuildDto(IDictionary row, int rowNumber) - { - var dto = base.BuildDto(row, rowNumber); - - var section = sections.FirstOrDefault(s => - string.Equals(s.Caption.Trim(), dto.Section?.Trim(), StringComparison.CurrentCultureIgnoreCase)); - - if (section is null) - { - var message = string.Format(XLExtentions.ProblemDetailsTemplate, - TemplateParameters.SheetName, - rowNumber, - TemplateParameters.Cells[nameof(ProcessMapPlanDrillingDto.Section)], - "Указана некорректная секция"); - throw new FileFormatException(message); - } - - var idMode = GetIdMode(dto.Mode); - - if (idMode is null) - { - var message = string.Format(XLExtentions.ProblemDetailsTemplate, - TemplateParameters.SheetName, - rowNumber, - TemplateParameters.Cells[nameof(ProcessMapPlanDrillingDto.Mode)], - "Указан некорректный режим бурения"); - throw new FileFormatException(message); - } - - dto.IdWellSectionType = section.Id; - dto.IdMode = idMode.Value; - - return dto; - } -} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanLoadCapacityParser.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanLoadCapacityParser.cs new file mode 100644 index 00000000..16d0091d --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanLoadCapacityParser.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +public class ProcessMapPlanLoadCapacityParser : ProcessMapPlanParser +{ + public ProcessMapPlanLoadCapacityParser(IWellOperationRepository wellOperationRepository) + : base(wellOperationRepository) + { + } + + protected override ITemplateParameters TemplateParameters => new ProcessMapPlanLoadCapacityTemplate(); + + protected override ProcessMapPlanLoadCapacityDto BuildDto(IDictionary row, int rowNumber) + { + var dto = base.BuildDto(row, rowNumber); + + var section = sections.FirstOrDefault(s => + string.Equals(s.Caption.Trim(), dto.Section?.Trim(), StringComparison.CurrentCultureIgnoreCase)); + + if (section is null) + { + var message = string.Format(XLExtentions.ProblemDetailsTemplate, + TemplateParameters.SheetName, + rowNumber, + TemplateParameters.Cells[nameof(ProcessMapPlanBaseDto.Section)], + "Указана некорректная секция"); + throw new FileFormatException(message); + } + + dto.IdWellSectionType = section.Id; + + return dto; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanOscillationAnglesParser.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanOscillationAnglesParser.cs new file mode 100644 index 00000000..8aeee5d9 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanOscillationAnglesParser.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +public class ProcessMapPlanOscillationAnglesParser : ProcessMapPlanParser +{ + public ProcessMapPlanOscillationAnglesParser(IWellOperationRepository wellOperationRepository) + : base(wellOperationRepository) + { + } + + protected override ITemplateParameters TemplateParameters => new ProcessMapPlanOscillationAnglesTemplate(); + + protected override ProcessMapPlanOscillationAnglesDto BuildDto(IDictionary row, int rowNumber) + { + var dto = base.BuildDto(row, rowNumber); + + var section = sections.FirstOrDefault(s => + string.Equals(s.Caption.Trim(), dto.Section?.Trim(), StringComparison.CurrentCultureIgnoreCase)); + + if (section is null) + { + var message = string.Format(XLExtentions.ProblemDetailsTemplate, + TemplateParameters.SheetName, + rowNumber, + TemplateParameters.Cells[nameof(ProcessMapPlanBaseDto.Section)], + "Указана некорректная секция"); + throw new FileFormatException(message); + } + + dto.IdWellSectionType = section.Id; + + return dto; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanOscillationParser.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanOscillationParser.cs new file mode 100644 index 00000000..36564c78 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanOscillationParser.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Repositories; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +public class ProcessMapPlanOscillationParser : ProcessMapPlanParser +{ + public ProcessMapPlanOscillationParser(IWellOperationRepository wellOperationRepository) + : base(wellOperationRepository) + { + } + + protected override ITemplateParameters TemplateParameters => new ProcessMapPlanOscillationTemplate(); + + protected override ProcessMapPlanOscillationDto BuildDto(IDictionary row, int rowNumber) + { + var dto = base.BuildDto(row, rowNumber); + + var section = sections.FirstOrDefault(s => + string.Equals(s.Caption.Trim(), dto.Section?.Trim(), StringComparison.CurrentCultureIgnoreCase)); + + if (section is null) + { + var message = string.Format(XLExtentions.ProblemDetailsTemplate, + TemplateParameters.SheetName, + rowNumber, + TemplateParameters.Cells[nameof(ProcessMapPlanBaseDto.Section)], + "Указана некорректная секция"); + throw new FileFormatException(message); + } + + dto.IdWellSectionType = section.Id; + + return dto; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanParser.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanParser.cs index 333e39a2..a01f9c53 100644 --- a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanParser.cs +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanParser.cs @@ -9,30 +9,22 @@ using AsbCloudInfrastructure.Services.ExcelServices; namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; public abstract class ProcessMapPlanParser : ParserExcelService - where TDto : ProcessMapPlanBaseDto + where TDto : ProcessMapPlanBaseDto { - protected readonly IEnumerable sections; - - protected ProcessMapPlanParser(IWellOperationRepository wellOperationRepository) - { - sections = wellOperationRepository.GetSectionTypes(); - } - - public override ParserResultDto Parse(Stream file, WellRelatedParserRequest options) - { - var result = base.Parse(file, options); + protected readonly IEnumerable sections; + + protected ProcessMapPlanParser(IWellOperationRepository wellOperationRepository) + { + sections = wellOperationRepository.GetSectionTypes(); + } + + public override ParserResultDto Parse(Stream file, WellRelatedParserRequest options) + { + var result = base.Parse(file, options); - foreach (var item in result.Item) - item.Item.IdWell = options.IdWell; + foreach (var item in result.Item) + item.Item.IdWell = options.IdWell; - return result; - } - - protected static int? GetIdMode(string? modeName) => - modeName?.Trim().ToLower() switch - { - "ротор" => 1, - "слайд" => 2, - _ => null - }; + return result; + } } \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanPositioningOffTheBottomParser.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanPositioningOffTheBottomParser.cs new file mode 100644 index 00000000..6e369d18 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanPositioningOffTheBottomParser.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +public class ProcessMapPlanPositioningOffTheBottomParser : ProcessMapPlanParser +{ + public ProcessMapPlanPositioningOffTheBottomParser(IWellOperationRepository wellOperationRepository) + : base(wellOperationRepository) + { + } + + protected override ITemplateParameters TemplateParameters => new ProcessMapPlanPositioningOffTheBottomTemplate(); + + protected override ProcessMapPlanPositioningOffTheBottomDto BuildDto(IDictionary row, int rowNumber) + { + var dto = base.BuildDto(row, rowNumber); + + var section = sections.FirstOrDefault(s => + string.Equals(s.Caption.Trim(), dto.Section?.Trim(), StringComparison.CurrentCultureIgnoreCase)); + + if (section is null) + { + var message = string.Format(XLExtentions.ProblemDetailsTemplate, + TemplateParameters.SheetName, + rowNumber, + TemplateParameters.Cells[nameof(ProcessMapPlanBaseDto.Section)], + "Указана некорректная секция"); + throw new FileFormatException(message); + } + + dto.IdWellSectionType = section.Id; + + return dto; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanReamParser.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanReamParser.cs deleted file mode 100644 index 7bfaa880..00000000 --- a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanReamParser.cs +++ /dev/null @@ -1,41 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using AsbCloudApp.Data.ProcessMaps; -using AsbCloudApp.Repositories; -using AsbCloudInfrastructure.Services.ExcelServices.Templates; -using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; - -namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; - -public class ProcessMapPlanReamParser : ProcessMapPlanParser -{ - public ProcessMapPlanReamParser(IWellOperationRepository wellOperationRepository) - : base(wellOperationRepository) - { - } - - protected override ITemplateParameters TemplateParameters => new ProcessMapPlanReamTemplate(); - - protected override ProcessMapPlanReamDto BuildDto(IDictionary row, int rowNumber) - { - var dto = base.BuildDto(row, rowNumber); - - var section = sections.FirstOrDefault(s => - string.Equals(s.Caption.Trim(), dto.Section?.Trim(), StringComparison.CurrentCultureIgnoreCase)); - - if (section is null) - { - var message = string.Format(XLExtentions.ProblemDetailsTemplate, - TemplateParameters.SheetName, rowNumber, - TemplateParameters.Cells[nameof(ProcessMapPlanReamDto.Section)], - "Указана некорректная секция"); - throw new FileFormatException(message); - } - - dto.IdWellSectionType = section.Id; - - return dto; - } -} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanReamingRotorParser.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanReamingRotorParser.cs new file mode 100644 index 00000000..85d1711f --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanReamingRotorParser.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +public class ProcessMapPlanReamingRotorParser : ProcessMapPlanParser +{ + public ProcessMapPlanReamingRotorParser(IWellOperationRepository wellOperationRepository) + : base(wellOperationRepository) + { + } + + protected override ITemplateParameters TemplateParameters => new ProcessMapPlanReamingRotorTemplate(); + + protected override ProcessMapPlanReamingRotorDto BuildDto(IDictionary row, int rowNumber) + { + var dto = base.BuildDto(row, rowNumber); + + var section = sections.FirstOrDefault(s => + string.Equals(s.Caption.Trim(), dto.Section?.Trim(), StringComparison.CurrentCultureIgnoreCase)); + + if (section is null) + { + var message = string.Format(XLExtentions.ProblemDetailsTemplate, + TemplateParameters.SheetName, + rowNumber, + TemplateParameters.Cells[nameof(ProcessMapPlanBaseDto.Section)], + "Указана некорректная секция"); + throw new FileFormatException(message); + } + + dto.IdWellSectionType = section.Id; + + return dto; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanReamingSlideParser.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanReamingSlideParser.cs new file mode 100644 index 00000000..a65bfaf0 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanReamingSlideParser.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +public class ProcessMapPlanReamingSlideParser : ProcessMapPlanParser +{ + public ProcessMapPlanReamingSlideParser(IWellOperationRepository wellOperationRepository) + : base(wellOperationRepository) + { + } + + protected override ITemplateParameters TemplateParameters => new ProcessMapPlanReamingSlideTemplate(); + + protected override ProcessMapPlanReamingSlideDto BuildDto(IDictionary row, int rowNumber) + { + var dto = base.BuildDto(row, rowNumber); + + var section = sections.FirstOrDefault(s => + string.Equals(s.Caption.Trim(), dto.Section?.Trim(), StringComparison.CurrentCultureIgnoreCase)); + + if (section is null) + { + var message = string.Format(XLExtentions.ProblemDetailsTemplate, + TemplateParameters.SheetName, + rowNumber, + TemplateParameters.Cells[nameof(ProcessMapPlanBaseDto.Section)], + "Указана некорректная секция"); + throw new FileFormatException(message); + } + + dto.IdWellSectionType = section.Id; + + return dto; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanRecordingStaticMeasurementParser.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanRecordingStaticMeasurementParser.cs new file mode 100644 index 00000000..dba0e90f --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanRecordingStaticMeasurementParser.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +public class ProcessMapPlanRecordingStaticMeasurementParser : ProcessMapPlanParser +{ + public ProcessMapPlanRecordingStaticMeasurementParser(IWellOperationRepository wellOperationRepository) + : base(wellOperationRepository) + { + } + + protected override ITemplateParameters TemplateParameters => new ProcessMapPlanRecordingStaticMeasurementTemplate(); + + protected override ProcessMapPlanRecordingStaticMeasurementDto BuildDto(IDictionary row, int rowNumber) + { + var dto = base.BuildDto(row, rowNumber); + + var section = sections.FirstOrDefault(s => + string.Equals(s.Caption.Trim(), dto.Section?.Trim(), StringComparison.CurrentCultureIgnoreCase)); + + if (section is null) + { + var message = string.Format(XLExtentions.ProblemDetailsTemplate, + TemplateParameters.SheetName, + rowNumber, + TemplateParameters.Cells[nameof(ProcessMapPlanBaseDto.Section)], + "Указана некорректная секция"); + throw new FileFormatException(message); + } + + dto.IdWellSectionType = section.Id; + + return dto; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanRotorParser.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanRotorParser.cs new file mode 100644 index 00000000..df5c8d1c --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanRotorParser.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +public class ProcessMapPlanRotorParser : ProcessMapPlanParser +{ + public ProcessMapPlanRotorParser(IWellOperationRepository wellOperationRepository) + : base(wellOperationRepository) + { + } + + protected override ITemplateParameters TemplateParameters => new ProcessMapPlanRotorTemplate(); + + protected override ProcessMapPlanRotorDto BuildDto(IDictionary row, int rowNumber) + { + var dto = base.BuildDto(row, rowNumber); + + var section = sections.FirstOrDefault(s => + string.Equals(s.Caption.Trim(), dto.Section?.Trim(), StringComparison.CurrentCultureIgnoreCase)); + + if (section is null) + { + var message = string.Format(XLExtentions.ProblemDetailsTemplate, + TemplateParameters.SheetName, + rowNumber, + TemplateParameters.Cells[nameof(ProcessMapPlanBaseDto.Section)], + "Указана некорректная секция"); + throw new FileFormatException(message); + } + + dto.IdWellSectionType = section.Id; + + return dto; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanShockTestParser.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanShockTestParser.cs new file mode 100644 index 00000000..e8352d06 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanShockTestParser.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Repositories; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +public class ProcessMapPlanShockTestParser : ProcessMapPlanParser +{ + public ProcessMapPlanShockTestParser(IWellOperationRepository wellOperationRepository) + : base(wellOperationRepository) + { + } + + protected override ITemplateParameters TemplateParameters => new ProcessMapPlanShockTestTemplate(); + + protected override ProcessMapPlanShockTestDto BuildDto(IDictionary row, int rowNumber) + { + var dto = base.BuildDto(row, rowNumber); + + var section = sections.FirstOrDefault(s => + string.Equals(s.Caption.Trim(), dto.Section?.Trim(), StringComparison.CurrentCultureIgnoreCase)); + + if (section is null) + { + var message = string.Format(XLExtentions.ProblemDetailsTemplate, + TemplateParameters.SheetName, + rowNumber, + TemplateParameters.Cells[nameof(ProcessMapPlanBaseDto.Section)], + "Указана некорректная секция"); + throw new FileFormatException(message); + } + + dto.IdWellSectionType = section.Id; + + return dto; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanSlideParser.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanSlideParser.cs new file mode 100644 index 00000000..5bef6848 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanSlideParser.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +public class ProcessMapPlanSlideParser : ProcessMapPlanParser +{ + public ProcessMapPlanSlideParser(IWellOperationRepository wellOperationRepository) + : base(wellOperationRepository) + { + } + + protected override ITemplateParameters TemplateParameters => new ProcessMapPlanSlideTemplate(); + + protected override ProcessMapPlanSlideDto BuildDto(IDictionary row, int rowNumber) + { + var dto = base.BuildDto(row, rowNumber); + + var section = sections.FirstOrDefault(s => + string.Equals(s.Caption.Trim(), dto.Section?.Trim(), StringComparison.CurrentCultureIgnoreCase)); + + if (section is null) + { + var message = string.Format(XLExtentions.ProblemDetailsTemplate, + TemplateParameters.SheetName, + rowNumber, + TemplateParameters.Cells[nameof(ProcessMapPlanBaseDto.Section)], + "Указана некорректная секция"); + throw new FileFormatException(message); + } + + dto.IdWellSectionType = section.Id; + + return dto; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanStaticMeasurementOutputParser.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanStaticMeasurementOutputParser.cs new file mode 100644 index 00000000..bb289c4c --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanStaticMeasurementOutputParser.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Repositories; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +public class ProcessMapPlanStaticMeasurementOutputParser : ProcessMapPlanParser +{ + public ProcessMapPlanStaticMeasurementOutputParser(IWellOperationRepository wellOperationRepository) + : base(wellOperationRepository) + { + } + + protected override ITemplateParameters TemplateParameters => new ProcessMapPlanStaticMeasurementOutputTemplate(); + + protected override ProcessMapPlanStaticMeasurementOutputDto BuildDto(IDictionary row, int rowNumber) + { + var dto = base.BuildDto(row, rowNumber); + + var section = sections.FirstOrDefault(s => + string.Equals(s.Caption.Trim(), dto.Section?.Trim(), StringComparison.CurrentCultureIgnoreCase)); + + if (section is null) + { + var message = string.Format(XLExtentions.ProblemDetailsTemplate, + TemplateParameters.SheetName, + rowNumber, + TemplateParameters.Cells[nameof(ProcessMapPlanBaseDto.Section)], + "Указана некорректная секция"); + throw new FileFormatException(message); + } + + dto.IdWellSectionType = section.Id; + + return dto; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanSwitchingOffThePumpParser.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanSwitchingOffThePumpParser.cs new file mode 100644 index 00000000..0524480a --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanSwitchingOffThePumpParser.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +public class ProcessMapPlanSwitchingOffThePumpParser : ProcessMapPlanParser +{ + public ProcessMapPlanSwitchingOffThePumpParser(IWellOperationRepository wellOperationRepository) + : base(wellOperationRepository) + { + } + + protected override ITemplateParameters TemplateParameters => new ProcessMapPlanSwitchingOffThePumpTemplate(); + + protected override ProcessMapPlanSwitchingOffThePumpDto BuildDto(IDictionary row, int rowNumber) + { + var dto = base.BuildDto(row, rowNumber); + + var section = sections.FirstOrDefault(s => + string.Equals(s.Caption.Trim(), dto.Section?.Trim(), StringComparison.CurrentCultureIgnoreCase)); + + if (section is null) + { + var message = string.Format(XLExtentions.ProblemDetailsTemplate, + TemplateParameters.SheetName, + rowNumber, + TemplateParameters.Cells[nameof(ProcessMapPlanBaseDto.Section)], + "Указана некорректная секция"); + throw new FileFormatException(message); + } + + dto.IdWellSectionType = section.Id; + + return dto; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanSwitchingToTheModeParser.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanSwitchingToTheModeParser.cs new file mode 100644 index 00000000..46d563c3 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanSwitchingToTheModeParser.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +public class ProcessMapPlanSwitchingToTheModeParser : ProcessMapPlanParser +{ + public ProcessMapPlanSwitchingToTheModeParser(IWellOperationRepository wellOperationRepository) + : base(wellOperationRepository) + { + } + + protected override ITemplateParameters TemplateParameters => new ProcessMapPlanSwitchingToTheModeTemplate(); + + protected override ProcessMapPlanSwitchingToTheModeDto BuildDto(IDictionary row, int rowNumber) + { + var dto = base.BuildDto(row, rowNumber); + + var section = sections.FirstOrDefault(s => + string.Equals(s.Caption.Trim(), dto.Section?.Trim(), StringComparison.CurrentCultureIgnoreCase)); + + if (section is null) + { + var message = string.Format(XLExtentions.ProblemDetailsTemplate, + TemplateParameters.SheetName, + rowNumber, + TemplateParameters.Cells[nameof(ProcessMapPlanBaseDto.Section)], + "Указана некорректная секция"); + throw new FileFormatException(message); + } + + dto.IdWellSectionType = section.Id; + + return dto; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanTFOrientationParser.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanTFOrientationParser.cs new file mode 100644 index 00000000..fda4a4a1 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanTFOrientationParser.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +public class ProcessMapPlanTFOrientationParser : ProcessMapPlanParser +{ + public ProcessMapPlanTFOrientationParser(IWellOperationRepository wellOperationRepository) + : base(wellOperationRepository) + { + } + + protected override ITemplateParameters TemplateParameters => new ProcessMapPlanTFOrientationTemplate(); + + protected override ProcessMapPlanTFOrientationDto BuildDto(IDictionary row, int rowNumber) + { + var dto = base.BuildDto(row, rowNumber); + + var section = sections.FirstOrDefault(s => + string.Equals(s.Caption.Trim(), dto.Section?.Trim(), StringComparison.CurrentCultureIgnoreCase)); + + if (section is null) + { + var message = string.Format(XLExtentions.ProblemDetailsTemplate, + TemplateParameters.SheetName, + rowNumber, + TemplateParameters.Cells[nameof(ProcessMapPlanBaseDto.Section)], + "Указана некорректная секция"); + throw new FileFormatException(message); + } + + dto.IdWellSectionType = section.Id; + + return dto; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanAnticrashRotation.xlsx b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanAnticrashRotation.xlsx new file mode 100644 index 00000000..63d1e72f Binary files /dev/null and b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanAnticrashRotation.xlsx differ diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanAutoHoldTF.xlsx b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanAutoHoldTF.xlsx new file mode 100644 index 00000000..e45f34c7 Binary files /dev/null and b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanAutoHoldTF.xlsx differ diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanDamper.xlsx b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanDamper.xlsx new file mode 100644 index 00000000..1a191de9 Binary files /dev/null and b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanDamper.xlsx differ diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanDrillTest.xlsx b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanDrillTest.xlsx new file mode 100644 index 00000000..3e4a023c Binary files /dev/null and b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanDrillTest.xlsx differ diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanDrillingTemplate.xlsx b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanDrillingTemplate.xlsx deleted file mode 100644 index bdf13143..00000000 Binary files a/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanDrillingTemplate.xlsx and /dev/null differ diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanLoadCapacity.xlsx b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanLoadCapacity.xlsx new file mode 100644 index 00000000..47117445 Binary files /dev/null and b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanLoadCapacity.xlsx differ diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanOscillation.xlsx b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanOscillation.xlsx new file mode 100644 index 00000000..b193887a Binary files /dev/null and b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanOscillation.xlsx differ diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanOscillationAngles.xlsx b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanOscillationAngles.xlsx new file mode 100644 index 00000000..32932044 Binary files /dev/null and b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanOscillationAngles.xlsx differ diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanPositioningOffTheBottom.xlsx b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanPositioningOffTheBottom.xlsx new file mode 100644 index 00000000..94edea2b Binary files /dev/null and b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanPositioningOffTheBottom.xlsx differ diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanReamTemplate.xlsx b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanReamTemplate.xlsx deleted file mode 100644 index 5f5be35b..00000000 Binary files a/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanReamTemplate.xlsx and /dev/null differ diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanReamingRotor.xlsx b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanReamingRotor.xlsx new file mode 100644 index 00000000..596deb44 Binary files /dev/null and b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanReamingRotor.xlsx differ diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanReamingSlide.xlsx b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanReamingSlide.xlsx new file mode 100644 index 00000000..79140681 Binary files /dev/null and b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanReamingSlide.xlsx differ diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanRecordingStaticMeasurement.xlsx b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanRecordingStaticMeasurement.xlsx new file mode 100644 index 00000000..8952e35a Binary files /dev/null and b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanRecordingStaticMeasurement.xlsx differ diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanRotor.xlsx b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanRotor.xlsx new file mode 100644 index 00000000..c6afa71a Binary files /dev/null and b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanRotor.xlsx differ diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanShockTest.xlsx b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanShockTest.xlsx new file mode 100644 index 00000000..3b2f1ce0 Binary files /dev/null and b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanShockTest.xlsx differ diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanSlide.xlsx b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanSlide.xlsx new file mode 100644 index 00000000..69794325 Binary files /dev/null and b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanSlide.xlsx differ diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanStaticMeasurementOutput.xlsx b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanStaticMeasurementOutput.xlsx new file mode 100644 index 00000000..019d4cb9 Binary files /dev/null and b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanStaticMeasurementOutput.xlsx differ diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanSwitchingOffThePump.xlsx b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanSwitchingOffThePump.xlsx new file mode 100644 index 00000000..4d9cac8f Binary files /dev/null and b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanSwitchingOffThePump.xlsx differ diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanSwitchingToTheMode.xlsx b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanSwitchingToTheMode.xlsx new file mode 100644 index 00000000..9ee3552d Binary files /dev/null and b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanSwitchingToTheMode.xlsx differ diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanTFOrientation.xlsx b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanTFOrientation.xlsx new file mode 100644 index 00000000..e6b5a96d Binary files /dev/null and b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanTFOrientation.xlsx differ diff --git a/AsbCloudInfrastructure/Services/ProcessMaps/Report/Data/ParamStat.cs b/AsbCloudInfrastructure/Services/ProcessMaps/Report/Data/ParamStat.cs index 90559ca1..837dea4a 100644 --- a/AsbCloudInfrastructure/Services/ProcessMaps/Report/Data/ParamStat.cs +++ b/AsbCloudInfrastructure/Services/ProcessMaps/Report/Data/ParamStat.cs @@ -1,4 +1,4 @@ -using System; +using System; using AsbCloudApp.Data.ProcessMaps.Report; using AsbCloudApp.Data.SAUB; diff --git a/AsbCloudInfrastructure/Services/ProcessMaps/Report/Data/TelemetryStat.cs b/AsbCloudInfrastructure/Services/ProcessMaps/Report/Data/TelemetryStat.cs index 89fe6291..7d252cbe 100644 --- a/AsbCloudInfrastructure/Services/ProcessMaps/Report/Data/TelemetryStat.cs +++ b/AsbCloudInfrastructure/Services/ProcessMaps/Report/Data/TelemetryStat.cs @@ -1,4 +1,4 @@ -using System; +using System; using AsbCloudApp.Data.SAUB; namespace AsbCloudInfrastructure.Services.ProcessMaps.Report.Data; diff --git a/AsbCloudInfrastructure/Services/ProcessMaps/Report/ProcessMapReportDataSaubStatExportService.cs b/AsbCloudInfrastructure/Services/ProcessMaps/Report/ProcessMapReportDataSaubStatExportService.cs index ef6748e6..d20619dc 100644 --- a/AsbCloudInfrastructure/Services/ProcessMaps/Report/ProcessMapReportDataSaubStatExportService.cs +++ b/AsbCloudInfrastructure/Services/ProcessMaps/Report/ProcessMapReportDataSaubStatExportService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.ProcessMaps.Report; +using AsbCloudApp.Data.ProcessMaps.Report; using AsbCloudApp.Requests; using AsbCloudApp.Services; using AsbCloudApp.Services.ProcessMaps.WellDrilling; diff --git a/AsbCloudInfrastructure/Services/ProcessMaps/Report/ProcessMapReportDrillingService.cs b/AsbCloudInfrastructure/Services/ProcessMaps/Report/ProcessMapReportDrillingService.cs index 313f76e7..e0d1287d 100644 --- a/AsbCloudInfrastructure/Services/ProcessMaps/Report/ProcessMapReportDrillingService.cs +++ b/AsbCloudInfrastructure/Services/ProcessMaps/Report/ProcessMapReportDrillingService.cs @@ -1,6 +1,8 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Operations; using AsbCloudApp.Data.ProcessMaps.Report; +using AsbCloudApp.Data.WellOperation; using AsbCloudApp.Exceptions; using AsbCloudApp.Extensions; using AsbCloudApp.Repositories; @@ -13,27 +15,29 @@ using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; -using AsbCloudApp.Data.WellOperation; namespace AsbCloudInfrastructure.Services.ProcessMaps.Report; public class ProcessMapReportDrillingService : IProcessMapReportDrillingService { private readonly IWellService wellService; - private readonly IChangeLogRepository processMapPlanBaseRepository; + private readonly IChangeLogRepository processMapPlanRotorRepository; + private readonly IChangeLogRepository processMapPlanSlideRepository; private readonly IDataSaubStatRepository dataSaubStatRepository; private readonly IWellOperationRepository wellOperationRepository; private readonly IWellOperationCategoryRepository wellOperationCategoryRepository; public ProcessMapReportDrillingService(IWellService wellService, - IChangeLogRepository processMapPlanBaseRepository, + IChangeLogRepository processMapPlanRotorRepository, + IChangeLogRepository processMapPlanSlideRepository, IDataSaubStatRepository dataSaubStatRepository, IWellOperationRepository wellOperationRepository, IWellOperationCategoryRepository wellOperationCategoryRepository ) { this.wellService = wellService; - this.processMapPlanBaseRepository = processMapPlanBaseRepository; + this.processMapPlanRotorRepository = processMapPlanRotorRepository; + this.processMapPlanSlideRepository = processMapPlanSlideRepository; this.dataSaubStatRepository = dataSaubStatRepository; this.wellOperationRepository = wellOperationRepository; this.wellOperationCategoryRepository = wellOperationCategoryRepository; @@ -48,13 +52,19 @@ public class ProcessMapReportDrillingService : IProcessMapReportDrillingService return Enumerable.Empty(); var requestProcessMapPlan = new ProcessMapPlanBaseRequestWithWell(idWell); - var processMapPlanWellDrillings = await processMapPlanBaseRepository.Get(requestProcessMapPlan, token); - if (!processMapPlanWellDrillings.Any()) + var changeLogProcessMapsRotor = await processMapPlanRotorRepository.GetChangeLogForDate(requestProcessMapPlan, null, token); + var changeLogProcessMapsSlide = await processMapPlanSlideRepository.GetChangeLogForDate(requestProcessMapPlan, null, token); + + var changeLogProcessMaps = changeLogProcessMapsRotor + .Select(p => ConvertToChangeLogDtoWithProcessMapPlanBase(p)) + .Union(changeLogProcessMapsSlide.Select(p => ConvertToChangeLogDtoWithProcessMapPlanBase(p))); + + if (!changeLogProcessMaps.Any()) return Enumerable.Empty(); - var geDepth = processMapPlanWellDrillings.Min(p => p.DepthStart); - var leDepth = processMapPlanWellDrillings.Max(p => p.DepthEnd); + var geDepth = changeLogProcessMaps.Min(p => p.Item.DepthStart); + var leDepth = changeLogProcessMaps.Max(p => p.Item.DepthEnd); var requestWellOperationFact = new WellOperationRequest(new[] { idWell }) { @@ -85,19 +95,34 @@ public class ProcessMapReportDrillingService : IProcessMapReportDrillingService var wellSectionTypes = wellOperationRepository.GetSectionTypes(); var result = CalcByIntervals( - request, - processMapPlanWellDrillings, + request, + changeLogProcessMaps, dataSaubStats, - orderedWellOperations, + orderedWellOperations, wellOperationCategories, wellSectionTypes); return result; } + private ChangeLogDto ConvertToChangeLogDtoWithProcessMapPlanBase(ChangeLogDto p) + where T: ProcessMapPlanBaseDto + { + return new ChangeLogDto() + { + Item = p.Item, + Author = p.Author, + Creation = p.Creation, + Editor = p.Editor, + IdPrevious = p.IdPrevious, + IdState = p.IdState, + Obsolete = p.Obsolete, + }; + } + private static IEnumerable CalcByIntervals( DataSaubStatRequest request, - IEnumerable processMapPlanWellDrillings, + IEnumerable> changeLogProcessMaps, Span dataSaubStats, IEnumerable wellOperations, IEnumerable wellOperationCategories, @@ -115,24 +140,25 @@ public class ProcessMapReportDrillingService : IProcessMapReportDrillingService int GetSection(DataSaubStatDto data) { - if(lastFoundIndex < orderedWellOperations.Length - 1) + if (lastFoundIndex < orderedWellOperations.Length - 1) { lastFoundIndex = Array.FindIndex(orderedWellOperations, lastFoundIndex, o => o.DateStart > data.DateStart) - 1; lastFoundIndex = lastFoundIndex < 0 ? orderedWellOperations.Length - 1 : lastFoundIndex; } - + var operation = orderedWellOperations[lastFoundIndex]; return operation.IdWellSectionType; - } + } - ProcessMapPlanDrillingDto? GetProcessMapPlan(int idWellSectionType, DataSaubStatDto data) - => processMapPlanWellDrillings - .Where(p => p.IdWellSectionType == idWellSectionType) - .Where(p => p.DepthStart <= data.DepthStart) - .Where(p => p.DepthEnd >= data.DepthStart) - .Where(p => IsModeMatchOperationCategory(p.IdMode, data.IdCategory)) - .WhereActualAtMoment(data.DateStart) - .FirstOrDefault(); + ProcessMapPlanBaseDto? GetProcessMapPlan(int idWellSectionType, DataSaubStatDto data) + => changeLogProcessMaps + .Where(p => p.Item.IdWellSectionType == idWellSectionType) + .Where(p => p.Item.DepthStart <= data.DepthStart) + .Where(p => p.Item.DepthEnd >= data.DepthStart) + .Where(p => IsModeMatchOperationCategory(p.Item, data.IdCategory)) + .WhereActualAtMoment(data.DateStart) + .Select(p => p.Item) + .FirstOrDefault(); var idWellSectionType = GetSection(firstElemInInterval); var prevProcessMapPlan = GetProcessMapPlan(idWellSectionType, firstElemInInterval); @@ -168,19 +194,19 @@ public class ProcessMapReportDrillingService : IProcessMapReportDrillingService var elem = CalcStat(processMapPlan, span, wellOperationCategoryName, wellSectionType); if (elem is not null) - list.Add(elem); + list.Add(elem); } } return list; } - private static bool IsModeMatchOperationCategory(int idMode, int idCategory) + private static bool IsModeMatchOperationCategory(ProcessMapPlanBaseDto dto, int idCategory) { - return (idMode == 1 && idCategory == 5003) || (idMode == 2 && idCategory == 5002); + return (dto is ProcessMapPlanRotorDto && idCategory == 5003) || (dto is ProcessMapPlanSlideDto && idCategory == 5002); } private static ProcessMapReportDataSaubStatDto? CalcStat( - ProcessMapPlanDrillingDto? processMapPlanFilteredByDepth, + ProcessMapPlanBaseDto? processMapPlanFilteredByDepth, Span span, string wellOperationCategoryName, WellSectionTypeDto wellSectionType @@ -205,54 +231,70 @@ public class ProcessMapReportDrillingService : IProcessMapReportDrillingService DrillingMode = wellOperationCategoryName, PressureDiff = new ProcessMapReportDataSaubStatParamsDto() { - SetpointPlan = processMapPlanFilteredByDepth?.DeltaPressurePlan, SetpointFact = firstElemInInterval.PressureSp - firstElemInInterval.PressureIdle, FactWavg = aggregatedValues.Pressure, - Limit = processMapPlanFilteredByDepth?.DeltaPressureLimitMax, SetpointUsage = aggregatedValues.SetpointUsagePressure }, AxialLoad = new ProcessMapReportDataSaubStatParamsDto() { - SetpointPlan = processMapPlanFilteredByDepth?.AxialLoadPlan, SetpointFact = aggregatedValues.AxialLoadSp, FactWavg = aggregatedValues.AxialLoad, - Limit = processMapPlanFilteredByDepth?.AxialLoadLimitMax, SetpointUsage = aggregatedValues.SetpointUsageAxialLoad }, TopDriveTorque = new ProcessMapReportDataSaubStatParamsDto() { - SetpointPlan = processMapPlanFilteredByDepth?.TopDriveTorquePlan, SetpointFact = aggregatedValues.RotorTorqueSp, FactWavg = aggregatedValues.RotorTorque, FactMax = aggregatedValues.RotorTorqueMax, - Limit = processMapPlanFilteredByDepth?.TopDriveTorqueLimitMax, SetpointUsage = aggregatedValues.SetpointUsageRotorTorque }, SpeedLimit = new ProcessMapReportDataSaubStatParamsDto { - SetpointPlan = processMapPlanFilteredByDepth?.RopPlan, SetpointFact = aggregatedValues.BlockSpeedSp, FactWavg = deltaDepth / aggregatedValues.DrilledTime, SetpointUsage = aggregatedValues.SetpointUsageRopPlan }, TopDriveSpeed = new ProcessMapReportDataSaubStatParamsDto { - SetpointPlan = processMapPlanFilteredByDepth?.TopDriveSpeedPlan, FactWavg = aggregatedValues.RotorSpeed, FactMax = aggregatedValues.RotorSpeedMax }, Flow = new ProcessMapReportDataSaubStatParamsDto { - SetpointPlan = processMapPlanFilteredByDepth?.FlowPlan, FactWavg = aggregatedValues.MaxFlow, - Limit = processMapPlanFilteredByDepth?.FlowLimitMax, }, Rop = new PlanFactDto { - Plan = processMapPlanFilteredByDepth?.RopPlan, Fact = deltaDepth / aggregatedValues.DrilledTime }, }; + + if(processMapPlanFilteredByDepth is ProcessMapPlanRotorDto processMapPlanRotorFilteredByDepth) + { + result.PressureDiff.SetpointPlan = processMapPlanRotorFilteredByDepth.DifferentialPressure; + result.PressureDiff.Limit = processMapPlanRotorFilteredByDepth.DifferentialPressureMax; + result.AxialLoad.SetpointPlan = processMapPlanRotorFilteredByDepth.WeightOnBit; + result.AxialLoad.Limit = processMapPlanRotorFilteredByDepth.WeightOnBitMax; + result.TopDriveTorque.SetpointPlan = processMapPlanRotorFilteredByDepth.TopDriveTorque; + result.TopDriveTorque.Limit = processMapPlanRotorFilteredByDepth.TopDriveTorqueMax; + result.SpeedLimit.SetpointPlan = processMapPlanRotorFilteredByDepth.RopMax; + result.TopDriveSpeed.SetpointPlan = processMapPlanRotorFilteredByDepth.Rpm; + result.Flow.SetpointPlan = processMapPlanRotorFilteredByDepth.FlowRate; + result.Flow.Limit = processMapPlanRotorFilteredByDepth.FlowRateMax; + result.Rop.Plan = processMapPlanRotorFilteredByDepth.RopMax; + } + if (processMapPlanFilteredByDepth is ProcessMapPlanSlideDto processMapPlanSlideFilteredByDepth) + { + result.PressureDiff.SetpointPlan = processMapPlanSlideFilteredByDepth.DifferentialPressure; + result.PressureDiff.Limit = processMapPlanSlideFilteredByDepth.DifferentialPressureMax; + result.AxialLoad.SetpointPlan = processMapPlanSlideFilteredByDepth.WeightOnBit; + result.AxialLoad.Limit = processMapPlanSlideFilteredByDepth.WeightOnBitMax; + result.SpeedLimit.SetpointPlan = processMapPlanSlideFilteredByDepth.RopMax; + result.Flow.SetpointPlan = processMapPlanSlideFilteredByDepth.FlowRate; + result.Flow.Limit = processMapPlanSlideFilteredByDepth.FlowRateMax; + result.Rop.Plan = processMapPlanSlideFilteredByDepth.RopMax; + } + return result; } @@ -333,7 +375,7 @@ public class ProcessMapReportDrillingService : IProcessMapReportDrillingService SetpointUsagePressure: sumDiffDepthByPressure * 100 / diffDepthTotal, SetpointUsageAxialLoad: sumDiffDepthByAxialLoad * 100 / diffDepthTotal, SetpointUsageRotorTorque: sumDiffDepthByRotorTorque * 100 / diffDepthTotal, - SetpointUsageRopPlan: sumDiffDepthByRopPlan * 100/ diffDepthTotal, + SetpointUsageRopPlan: sumDiffDepthByRopPlan * 100 / diffDepthTotal, DrilledTime: drilledTime ); } diff --git a/AsbCloudInfrastructure/Services/ReduceSamplingService.cs b/AsbCloudInfrastructure/Services/ReduceSamplingService.cs index b7581ad9..6db845a5 100644 --- a/AsbCloudInfrastructure/Services/ReduceSamplingService.cs +++ b/AsbCloudInfrastructure/Services/ReduceSamplingService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Services; using AsbCloudDb; using AsbCloudDb.Model; @@ -6,6 +6,7 @@ using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using System; using System.Collections.Generic; +using System.Configuration; using System.Diagnostics; using System.Linq; using System.Threading; @@ -36,7 +37,8 @@ namespace AsbCloudInfrastructure.Services private ReduceSamplingService(IConfiguration configuration) { - connectionString = configuration.GetConnectionString("DefaultConnection"); + connectionString = configuration.GetConnectionString("DefaultConnection") + ?? throw new ConfigurationErrorsException("DefaultConnection не определен"); } ~ReduceSamplingService() diff --git a/AsbCloudInfrastructure/Services/ReportService.cs b/AsbCloudInfrastructure/Services/ReportService.cs index 4d321525..f98ea5be 100644 --- a/AsbCloudInfrastructure/Services/ReportService.cs +++ b/AsbCloudInfrastructure/Services/ReportService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Data.Progress; using AsbCloudApp.Requests; using AsbCloudApp.Services; @@ -54,13 +54,14 @@ public class ReportService : IReportService progressHandler.Invoke(state, work.Id); }, token); - backgroundWorkerService.Enqueue(work); - progressHandler.Invoke(new ReportProgressDto { Operation = "Ожидает начала в очереди.", Progress = 0f, }, work.Id); + + backgroundWorkerService.Enqueue(work); + return work.Id; } @@ -153,6 +154,20 @@ public class ReportService : IReportService var fileInfo = (await fileService.MoveAsync(idWell, idUser, ReportCategoryId, reportFileName, reportFileName, token))!; + if (fileInfo == null) + { + var state = new ProgressExceptionDto + { + Operation = "error", + Progress = 100f, + Message = "Не удалось сгенерировать файл отчёта", + Exception = new FileNotFoundException(), + }; + progressHandler(state, workId); + + return; + } + progressHandler(new ReportProgressFinalDto() { Operation = "done", diff --git a/AsbCloudInfrastructure/Services/RequestTrackerService.cs b/AsbCloudInfrastructure/Services/RequestTrackerService.cs index 72606103..2a9ad660 100644 --- a/AsbCloudInfrastructure/Services/RequestTrackerService.cs +++ b/AsbCloudInfrastructure/Services/RequestTrackerService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Services; using System; using System.Collections.Concurrent; diff --git a/AsbCloudInfrastructure/Services/SAUB/CsvSerializer.cs b/AsbCloudInfrastructure/Services/SAUB/CsvSerializer.cs index a73a1edf..71091099 100644 --- a/AsbCloudInfrastructure/Services/SAUB/CsvSerializer.cs +++ b/AsbCloudInfrastructure/Services/SAUB/CsvSerializer.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.IO; using System.Linq; using System.Reflection; diff --git a/AsbCloudInfrastructure/Services/SAUB/EventService.cs b/AsbCloudInfrastructure/Services/SAUB/EventService.cs index 2d861562..c01b92c9 100644 --- a/AsbCloudInfrastructure/Services/SAUB/EventService.cs +++ b/AsbCloudInfrastructure/Services/SAUB/EventService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.SAUB; +using AsbCloudApp.Data.SAUB; using AsbCloudApp.Services; using AsbCloudDb; using AsbCloudDb.Model; diff --git a/AsbCloudInfrastructure/Services/SAUB/MessageService.cs b/AsbCloudInfrastructure/Services/SAUB/MessageService.cs index ea6cc79e..e19e6a54 100644 --- a/AsbCloudInfrastructure/Services/SAUB/MessageService.cs +++ b/AsbCloudInfrastructure/Services/SAUB/MessageService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Data.SAUB; using AsbCloudApp.Requests; using AsbCloudApp.Services; @@ -96,7 +96,7 @@ namespace AsbCloudInfrastructure.Services.SAUB var allUsers = await memoryCache.GetOrCreateBasicAsync(db.Set(), token); var users = allUsers.Where(u => u.IdTelemetry == telemetry.Id); - var eventsDict = events.ToDictionary(x=>x.IdEvent, x => x); + var eventsDict = events.ToDictionary(x => x.IdEvent, x => x); var usersDict = users.ToDictionary(x => x.IdUser, x => x); var messagesDtoList = new List(); @@ -142,7 +142,7 @@ namespace AsbCloudInfrastructure.Services.SAUB return Task.CompletedTask; var telemetry = telemetryService.GetOrCreateTelemetryByUid(uid); - + foreach (var dto in dtos) { var entity = dto.Adapt(); @@ -154,6 +154,33 @@ namespace AsbCloudInfrastructure.Services.SAUB return db.SaveChangesAsync(token); } + + private IQueryable BuildQuery(TelemetryPartDeleteRequest request) + { + var query = db.Set() + .Where(o => o.IdTelemetry == request.IdTelemetry); + + if (request.GeDate is not null) + { + var geDate = request.GeDate.Value.ToUniversalTime(); + query = query.Where(o => o.DateTime <= geDate); + } + + if (request.LeDate is not null) + { + var leDate = request.LeDate.Value.ToUniversalTime(); + query = query.Where(o => o.DateTime >= leDate); + } + + return query; + } + + public async Task DeleteAsync(TelemetryPartDeleteRequest request, CancellationToken token) + { + var query = BuildQuery(request); + db.Set().RemoveRange(query); + return await db.SaveChangesAsync(token); + } } } diff --git a/AsbCloudInfrastructure/Services/SAUB/Readme.md b/AsbCloudInfrastructure/Services/SAUB/Readme.md index af2e3df0..4ee08dac 100644 --- a/AsbCloudInfrastructure/Services/SAUB/Readme.md +++ b/AsbCloudInfrastructure/Services/SAUB/Readme.md @@ -1 +1 @@ -Папка содержит services для получаемых от панели оператора САУБ запросов. \ No newline at end of file +Папка содержит services для получаемых от панели оператора САУБ запросов. \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/SAUB/SetpointsService.cs b/AsbCloudInfrastructure/Services/SAUB/SetpointsService.cs index d91c893d..2584554c 100644 --- a/AsbCloudInfrastructure/Services/SAUB/SetpointsService.cs +++ b/AsbCloudInfrastructure/Services/SAUB/SetpointsService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.SAUB; +using AsbCloudApp.Data.SAUB; using AsbCloudApp.Services; using AsbCloudDb.Model; using AsbCloudInfrastructure.Repository; diff --git a/AsbCloudInfrastructure/Services/SAUB/TelemetryDataBaseService.cs b/AsbCloudInfrastructure/Services/SAUB/TelemetryDataBaseService.cs index 0e07ee09..31bf9a3f 100644 --- a/AsbCloudInfrastructure/Services/SAUB/TelemetryDataBaseService.cs +++ b/AsbCloudInfrastructure/Services/SAUB/TelemetryDataBaseService.cs @@ -1,6 +1,7 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Exceptions; using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; using AsbCloudApp.Services; using AsbCloudDb; using AsbCloudDb.Model; @@ -11,275 +12,299 @@ using System.Diagnostics; using System.Linq; using System.Threading; using System.Threading.Tasks; -using AsbCloudApp.Requests; -namespace AsbCloudInfrastructure.Services.SAUB +namespace AsbCloudInfrastructure.Services.SAUB; + +public abstract class TelemetryDataBaseService : ITelemetryDataService + where TDto : AsbCloudApp.Data.ITelemetryData + where TEntity : class, AsbCloudDb.Model.ITelemetryData { - public abstract class TelemetryDataBaseService : ITelemetryDataService - where TDto : AsbCloudApp.Data.ITelemetryData - where TEntity : class, AsbCloudDb.Model.ITelemetryData - { - protected readonly IAsbCloudDbContext db; - protected readonly ITelemetryService telemetryService; - protected readonly ITelemetryDataCache telemetryDataCache; + protected readonly IAsbCloudDbContext db; + protected readonly ITelemetryService telemetryService; + protected readonly ITelemetryDataCache telemetryDataCache; - protected TelemetryDataBaseService( - IAsbCloudDbContext db, - ITelemetryService telemetryService, - ITelemetryDataCache telemetryDataCache) + protected TelemetryDataBaseService( + IAsbCloudDbContext db, + ITelemetryService telemetryService, + ITelemetryDataCache telemetryDataCache) + { + this.db = db; + this.telemetryService = telemetryService; + this.telemetryDataCache = telemetryDataCache; + } + + /// + public virtual async Task UpdateDataAsync(string uid, IEnumerable dtos, CancellationToken token = default) + { + if (dtos == default || !dtos.Any()) + return 0; + + var dtosList = dtos.OrderBy(d => d.DateTime).ToList(); + + var dtoMinDate = dtosList.First().DateTime; + var dtoMaxDate = dtosList.Last().DateTime; + + if (dtosList.Count > 1) { - this.db = db; - this.telemetryService = telemetryService; - this.telemetryDataCache = telemetryDataCache; + var duplicates = new List(8); + for (int i = 1; i < dtosList.Count; i++) + if (dtosList[i].DateTime - dtosList[i - 1].DateTime < TimeSpan.FromMilliseconds(100)) + duplicates.Add(dtosList[i - 1]); + foreach (var duplicate in duplicates) + dtosList.Remove(duplicate); } - /// - public virtual async Task UpdateDataAsync(string uid, IEnumerable dtos, CancellationToken token = default) + var telemetry = telemetryService.GetOrCreateTelemetryByUid(uid); + var timeZone = telemetryService.GetTimezone(telemetry.Id); + + telemetryDataCache.AddRange(telemetry.Id, dtos); + + var entities = dtosList.Select(dto => { - if (dtos == default || !dtos.Any()) - return 0; + var entity = Convert(dto, timeZone.Hours); + entity.IdTelemetry = telemetry.Id; + return entity; + }); - var dtosList = dtos.OrderBy(d => d.DateTime).ToList(); + var stopwatch = Stopwatch.StartNew(); + var dbSet = db.Set(); + try + { + return await db.Database.ExecInsertOrUpdateAsync(dbSet, entities, token).ConfigureAwait(false); + } + catch (Exception ex) + { + stopwatch.Stop(); + Trace.WriteLine($"Fail to save data telemetry " + + $"uid: {uid}, " + + $"idTelemetry {telemetry.Id}, " + + $"count: {entities.Count()}, " + + $"dataDate: {entities.FirstOrDefault()?.DateTime}, " + + $"dbSaveDurationTime:{stopwatch.ElapsedMilliseconds}ms. " + + $"Message: {ex.Message}"); + return 0; + } + } - var dtoMinDate = dtosList.First().DateTime; - var dtoMaxDate = dtosList.Last().DateTime; + /// + public virtual async Task> GetByWellAsync(int idWell, + DateTime dateBegin = default, double intervalSec = 600d, + int approxPointsCount = 1024, CancellationToken token = default) + { + var telemetry = telemetryService.GetOrDefaultTelemetryByIdWell(idWell); + if (telemetry is null) + return Enumerable.Empty(); - if (dtosList.Count > 1) + var timezone = telemetryService.GetTimezone(telemetry.Id); + + var filterByDateEnd = dateBegin != default; + DateTimeOffset dateBeginUtc; + if (dateBegin == default) + { + var dateRange = telemetryDataCache.GetOrDefaultWellDataDateRange(telemetry.Id); + dateBeginUtc = (dateRange?.To.ToUniversalTime() ?? DateTimeOffset.UtcNow) + .AddSeconds(-intervalSec); + } + else + { + dateBeginUtc = dateBegin.ToUtcDateTimeOffset(timezone.Hours); + } + + var cacheData = telemetryDataCache.GetOrDefault(telemetry.Id, dateBeginUtc.ToRemoteDateTime(timezone.Hours), intervalSec, approxPointsCount); + if (cacheData is not null) + return cacheData; + + var dateEnd = dateBeginUtc.AddSeconds(intervalSec); + var dbSet = db.Set(); + + var query = dbSet + .Where(d => d.IdTelemetry == telemetry.Id + && d.DateTime >= dateBeginUtc); + + if (filterByDateEnd) + query = query.Where(d => d.DateTime <= dateEnd); + + var fullDataCount = await query.CountAsync(token) + .ConfigureAwait(false); + + if (fullDataCount == 0) + return Enumerable.Empty(); + + if (fullDataCount > 1.75 * approxPointsCount) + { + var m = (int)Math.Round(1d * fullDataCount / approxPointsCount); + if (m > 1) + query = query.Where((d) => (((d.DateTime.DayOfYear * 24 + d.DateTime.Hour) * 60 + d.DateTime.Minute) * 60 + d.DateTime.Second) % m == 0); + } + + var entities = await query + .AsNoTracking() + .ToArrayAsync(token); + + var dtos = entities.Select(e => Convert(e, timezone.Hours)); + + return dtos; + } + + /// + public virtual async Task> GetByWellAsync(int idWell, TelemetryDataRequest request, CancellationToken token) + { + var telemetry = telemetryService.GetOrDefaultTelemetryByIdWell(idWell); + if (telemetry is null) + return Enumerable.Empty(); + + return await GetByTelemetryAsync(telemetry.Id, request, token); + } + + public async Task> GetByTelemetryAsync(int idTelemetry, TelemetryDataRequest request, CancellationToken token) + { + var timeZone = telemetryService.GetTimezone(idTelemetry); + + var cache = telemetryDataCache.GetOrDefault(idTelemetry, request); + + if (cache is not null) + return cache; + + var query = BuildQuery(idTelemetry, request); + + var entities = await query + .AsNoTracking() + .ToArrayAsync(token); + + var dtos = entities.Select(e => Convert(e, timeZone.Hours)); + + return dtos; + } + + private IQueryable BuildQuery(int idTelemetry, TelemetryDataRequest request) + { + var dbSet = db.Set(); + + var query = dbSet + .Where(d => d.IdTelemetry == idTelemetry); + + if (request.GeDate.HasValue) + { + var geDate = request.GeDate.Value.UtcDateTime; + query = query.Where(d => d.DateTime >= geDate); + } + + if (request.LeDate.HasValue) + { + var leDate = request.LeDate.Value.UtcDateTime; + query = query.Where(d => d.DateTime <= leDate); + } + + if (request.Divider > 1) + query = query.Where((d) => (((d.DateTime.DayOfYear * 24 + d.DateTime.Hour) * 60 + d.DateTime.Minute) * 60 + d.DateTime.Second) % request.Divider == 0); + + switch (request.Order) + { + case 1:// Поздние вперед + query = query + .OrderByDescending(d => d.DateTime) + .Skip(request.Skip) + .Take(request.Take) + .OrderBy(d => d.DateTime); + break; + default:// Ранние вперед + query = query + .OrderBy(d => d.DateTime) + .Skip(request.Skip) + .Take(request.Take); + break; + } + + return query; + } + + private IQueryable BuildQuery(TelemetryPartDeleteRequest request) + { + var query = db.Set() + .Where(o => o.IdTelemetry == request.IdTelemetry); + + if (request.GeDate is not null) + { + var geDate = request.GeDate.Value.ToUniversalTime(); + query = query.Where(o => o.DateTime <= geDate); + } + + if (request.LeDate is not null) + { + var leDate = request.LeDate.Value.ToUniversalTime(); + query = query.Where(o => o.DateTime >= leDate); + } + + return query; + } + + /// + public async Task GetRangeAsync(int idWell, DateTimeOffset geDate, DateTimeOffset? leDate, CancellationToken token) + { + var telemetry = telemetryService.GetOrDefaultTelemetryByIdWell(idWell) + ?? throw new ArgumentInvalidException(nameof(idWell), $"По скважине id:{idWell} нет телеметрии"); + + if ((DateTimeOffset.UtcNow - geDate) < TimeSpan.FromHours(12)) + { + // пробуем обойтись кэшем + var cachedRange = telemetryDataCache.GetOrDefaultCachedDataDateRange(telemetry.Id); + if (cachedRange is not null) { - var duplicates = new List(8); - for (int i = 1; i < dtosList.Count; i++) - if (dtosList[i].DateTime - dtosList[i - 1].DateTime < TimeSpan.FromMilliseconds(100)) - duplicates.Add(dtosList[i - 1]); - foreach (var duplicate in duplicates) - dtosList.Remove(duplicate); + var datesRange = new DatesRangeDto { From = cachedRange.From, To = cachedRange.To }; + if (geDate >= cachedRange.From) + datesRange.From = geDate.ToOffset(cachedRange.From.Offset); + + if (leDate.HasValue && leDate <= cachedRange.To) + datesRange.To = leDate.Value.ToOffset(cachedRange.To.Offset); + + return datesRange; } + } - var telemetry = telemetryService.GetOrCreateTelemetryByUid(uid); - var timezone = telemetryService.GetTimezone(telemetry.Id); + var query = db.Set() + .Where(entity => entity.IdTelemetry == telemetry.Id) + .Where(entity => entity.DateTime >= geDate.ToUniversalTime()); - telemetryDataCache.AddRange(telemetry.Id, dtos); + if (leDate.HasValue) + query = query.Where(entity => entity.DateTime <= leDate.Value.ToUniversalTime()); - var entities = dtosList.Select(dto => + var groupQuery = query + .GroupBy(entity => entity.IdTelemetry) + .Select(group => new { - var entity = Convert(dto, timezone.Hours); - entity.IdTelemetry = telemetry.Id; - return entity; + MinDate = group.Min(entity => entity.DateTime), + MaxDate = group.Max(entity => entity.DateTime), }); - var stopwatch = Stopwatch.StartNew(); - var dbset = db.Set(); - try - { - return await db.Database.ExecInsertOrUpdateAsync(dbset, entities, token).ConfigureAwait(false); - } - catch (Exception ex) - { - stopwatch.Stop(); - Trace.WriteLine($"Fail to save data telemetry " + - $"uid: {uid}, " + - $"idTelemetry {telemetry.Id}, " + - $"count: {entities.Count()}, " + - $"dataDate: {entities.FirstOrDefault()?.DateTime}, " + - $"dbSaveDurationTime:{stopwatch.ElapsedMilliseconds}ms. " + - $"Message: {ex.Message}"); - return 0; - } - } + var result = await groupQuery.FirstOrDefaultAsync(token); + if (result is null) + return null; - /// - public virtual async Task> GetByWellAsync(int idWell, - DateTime dateBegin = default, double intervalSec = 600d, - int approxPointsCount = 1024, CancellationToken token = default) + var range = new DatesRangeDto { - var telemetry = telemetryService.GetOrDefaultTelemetryByIdWell(idWell); - if (telemetry is null) - return Enumerable.Empty(); + From = result.MinDate.ToOffset(telemetry.TimeZone!.Offset), + To = result.MaxDate.ToOffset(telemetry.TimeZone!.Offset), + }; + return range; + } - var timezone = telemetryService.GetTimezone(telemetry.Id); + public DatesRangeDto? GetRange(int idWell) + { + var telemetry = telemetryService.GetOrDefaultTelemetryByIdWell(idWell); + if (telemetry is null) + return default; - var filterByDateEnd = dateBegin != default; - DateTimeOffset dateBeginUtc; - if (dateBegin == default) - { - var dateRange = telemetryDataCache.GetOrDefaultDataDateRange(telemetry.Id); - dateBeginUtc = (dateRange?.To.ToUniversalTime() ?? DateTimeOffset.UtcNow) - .AddSeconds(-intervalSec); - } - else - { - dateBeginUtc = dateBegin.ToUtcDateTimeOffset(timezone.Hours); - } + return telemetryDataCache.GetOrDefaultWellDataDateRange(telemetry.Id); + } - var cacheData = telemetryDataCache.GetOrDefault(telemetry.Id, dateBeginUtc.ToRemoteDateTime(timezone.Hours), intervalSec, approxPointsCount); - if (cacheData is not null) - return cacheData; + protected abstract TDto Convert(TEntity src, double timeZoneOffset); - var dateEnd = dateBeginUtc.AddSeconds(intervalSec); - var dbSet = db.Set(); - - var query = dbSet - .Where(d => d.IdTelemetry == telemetry.Id - && d.DateTime >= dateBeginUtc); - - if (filterByDateEnd) - query = query.Where(d => d.DateTime <= dateEnd); - - var fullDataCount = await query.CountAsync(token) - .ConfigureAwait(false); - - if (fullDataCount == 0) - return Enumerable.Empty(); - - if (fullDataCount > 1.75 * approxPointsCount) - { - var m = (int)Math.Round(1d * fullDataCount / approxPointsCount); - if (m > 1) - query = query.Where((d) => (((d.DateTime.DayOfYear * 24 + d.DateTime.Hour) * 60 + d.DateTime.Minute) * 60 + d.DateTime.Second) % m == 0); - } - - var entities = await query - .AsNoTracking() - .ToArrayAsync(token); - - var dtos = entities.Select(e => Convert(e, timezone.Hours)); - - return dtos; - } - - /// - public virtual async Task> GetByWellAsync(int idWell, TelemetryDataRequest request, CancellationToken token) - { - var telemetry = telemetryService.GetOrDefaultTelemetryByIdWell(idWell); - if (telemetry is null) - return Enumerable.Empty(); - - return await GetByTelemetryAsync(telemetry.Id, request, token); - } - - public async Task> GetByTelemetryAsync(int idTelemetry, TelemetryDataRequest request, CancellationToken token) - { - var timezone = telemetryService.GetTimezone(idTelemetry); - - var cache = telemetryDataCache.GetOrDefault(idTelemetry, request); - - if(cache is not null) - return cache; - - var query = BuildQuery(idTelemetry, request); - - var entities = await query - .AsNoTracking() - .ToArrayAsync(token); - - var dtos = entities.Select(e => Convert(e, timezone.Hours)); - - return dtos; - } - - private IQueryable BuildQuery(int idTelemetry, TelemetryDataRequest request) - { - var dbSet = db.Set(); - - var query = dbSet - .Where(d => d.IdTelemetry == idTelemetry); - - if (request.GeDate.HasValue) - { - var geDate = request.GeDate.Value.UtcDateTime; - query = query.Where(d => d.DateTime >= geDate); - } - - if (request.LeDate.HasValue) - { - var leDate = request.LeDate.Value.UtcDateTime; - query = query.Where(d => d.DateTime <= leDate); - } - - if (request.Divider > 1) - query = query.Where((d) => (((d.DateTime.DayOfYear * 24 + d.DateTime.Hour) * 60 + d.DateTime.Minute) * 60 + d.DateTime.Second) % request.Divider == 0); - - switch (request.Order) - { - case 1:// Поздние вперед - query = query - .OrderByDescending(d => d.DateTime) - .Skip(request.Skip) - .Take(request.Take) - .OrderBy(d => d.DateTime); - break; - default:// Ранние вперед - query = query - .OrderBy(d => d.DateTime) - .Skip(request.Skip) - .Take(request.Take); - break; - } - - return query; - } - - /// - public async Task GetRangeAsync(int idWell, DateTimeOffset geDate, DateTimeOffset? leDate, CancellationToken token) - { - var telemetry = telemetryService.GetOrDefaultTelemetryByIdWell(idWell) - ?? throw new ArgumentInvalidException(nameof(idWell), $"По скважине id:{idWell} нет телеметрии"); - - if ((DateTimeOffset.UtcNow - geDate) < TimeSpan.FromHours(12)) - { - // пробуем обойтись кешем - var cechedRange = telemetryDataCache.GetOrDefaultCachedDateRange(telemetry.Id); - if (cechedRange?.From <= geDate) - { - var datesRange = new DatesRangeDto - { - From = geDate.DateTime, - To = cechedRange.To - }; - if (leDate.HasValue && leDate > geDate) - datesRange.To = leDate.Value.Date; - return datesRange; - } - } - - var query = db.Set() - .Where(entity => entity.IdTelemetry == telemetry.Id) - .Where(entity => entity.DateTime >= geDate.ToUniversalTime()); - - if(leDate.HasValue) - query = query.Where(entity => entity.DateTime <= leDate.Value.ToUniversalTime()); - - var gquery = query - .GroupBy(entity => entity.IdTelemetry) - .Select(group => new - { - MinDate = group.Min(entity => entity.DateTime), - MaxDate = group.Max(entity => entity.DateTime), - }); - - var result = await gquery.FirstOrDefaultAsync(token); - if (result is null) - return null; - - var range = new DatesRangeDto - { - From = result.MinDate.ToOffset(TimeSpan.FromHours(telemetry.TimeZone!.Hours)).DateTime, - To = result.MaxDate.ToOffset(TimeSpan.FromHours(telemetry.TimeZone!.Hours)).DateTime, - }; - return range; - } - - public DatesRangeDto? GetRange(int idWell) - { - var telemetry = telemetryService.GetOrDefaultTelemetryByIdWell(idWell); - if (telemetry is null) - return default; - - return telemetryDataCache.GetOrDefaultDataDateRange(telemetry.Id); - } - - protected abstract TDto Convert(TEntity src, double timezoneOffset); - - protected abstract TEntity Convert(TDto src, double timezoneOffset); + protected abstract TEntity Convert(TDto src, double timeZoneOffset); + public async Task DeleteAsync(TelemetryPartDeleteRequest request, CancellationToken token) + { + var query = BuildQuery(request); + db.Set().RemoveRange(query); + return await db.SaveChangesAsync(token); } } diff --git a/AsbCloudInfrastructure/Services/SAUB/TelemetryDataCache.cs b/AsbCloudInfrastructure/Services/SAUB/TelemetryDataCache.cs index 9d99c700..da0a9486 100644 --- a/AsbCloudInfrastructure/Services/SAUB/TelemetryDataCache.cs +++ b/AsbCloudInfrastructure/Services/SAUB/TelemetryDataCache.cs @@ -1,4 +1,4 @@ -using AsbCloudDb.Model; +using AsbCloudDb.Model; using System.Collections.Concurrent; using System.Collections.Generic; using System; @@ -13,347 +13,350 @@ using AsbCloudApp.Data; using AsbCloudApp.Requests; using AsbCloudApp.Repositories; -namespace AsbCloudInfrastructure.Services.SAUB +namespace AsbCloudInfrastructure.Services.SAUB; + +public class TelemetryDataCache : ITelemetryDataCache where TDto : AsbCloudApp.Data.ITelemetryData { - public class TelemetryDataCache : ITelemetryDataCache where TDto : AsbCloudApp.Data.ITelemetryData + class TelemetryDataCacheItem { - class TelemetryDataCacheItem + public TDto FirstByDate { get; init; } = default!; + public CyclicArray LastData { get; init; } = null!; + public double TimezoneHours { get; init; } = 5; + public TimeSpan TimezoneOffset => TimeSpan.FromHours(TimezoneHours); + } + + private const int activeWellCapacity = 12 * 60 * 60; + private const int doneWellCapacity = 65 * 60; + + // key == idTelemetry + private readonly ConcurrentDictionary caches; + private bool isLoading = false; + + private TelemetryDataCache() + { + caches = new(); + } + + private static TelemetryDataCache? instance; + + public static TelemetryDataCache GetInstance(IServiceProvider provider) + where TEntity : class, AsbCloudDb.Model.ITelemetryData + { + if (instance is null) { - public TDto FirstByDate { get; init; } = default!; - public CyclicArray LastData { get; init; } = null!; - public double TimezoneHours { get; init; } = 5; + instance = new TelemetryDataCache(); + var worker = provider.GetRequiredService(); + var workId = $"Telemetry cache loading from DB {typeof(TEntity).Name}"; + var work = Work.CreateByDelegate(workId, async (workId, provider, onProgress, token) => + { + var db = provider.GetRequiredService(); + await instance.InitializeCacheFromDBAsync(db, onProgress, token); + }); + work.Timeout = TimeSpan.FromMinutes(15); + worker.Enqueue(work); + } + return instance; + } + + /// + /// Добавить новые элементы в кеш + /// + /// + /// + public void AddRange(int idTelemetry, IEnumerable range) + { + if (!range.Any()) + return; + + range = range.OrderBy(x => x.DateTime); + + foreach (var item in range) + item.IdTelemetry = idTelemetry; + + TelemetryDataCacheItem cacheItem; + if (isLoading) + { + if (caches.TryGetValue(idTelemetry, out TelemetryDataCacheItem? localCacheItem)) + cacheItem = localCacheItem; + else + return; + } + else + { + cacheItem = caches.GetOrAdd(idTelemetry, _ => new TelemetryDataCacheItem() + { + FirstByDate = range.ElementAt(0), + LastData = new CyclicArray(activeWellCapacity) + }); } - private const int activeWellCapacity = 12 * 60 * 60; - private const int doneWellCapacity = 65 * 60; + cacheItem.LastData.AddRange(range); + } - // key == idTelemetry - private readonly ConcurrentDictionary caches; - private bool isLoading = false; + /// + /// Получить данные из кеша.
+ /// Если dateBegin меньше минимального элемента в кеше, то вернется null. + /// Даже если intervalSec частично перекрыт данными из кеша. + ///
+ /// + /// + /// + /// кол-во элементов до которых эти данные прореживаются + /// + public IEnumerable? GetOrDefault(int idTelemetry, DateTime dateBegin, double intervalSec = 600d, int approxPointsCount = 1024) + { + if (!caches.TryGetValue(idTelemetry, out TelemetryDataCacheItem? cacheItem)) + return null; - private TelemetryDataCache() + var cacheLastData = cacheItem.LastData; + + if (cacheLastData.Count == 0 || cacheLastData[0].DateTime > dateBegin) + return null; + + var dateEnd = dateBegin.AddSeconds(intervalSec); + var items = cacheLastData + .Where(i => i.DateTime >= dateBegin && i.DateTime <= dateEnd); + + var ratio = items.Count() / approxPointsCount; + if (ratio > 1) + items = items + .Where((_, index) => index % ratio == 0); + + return items; + } + + public IEnumerable GetStat() + { + var result = caches.Select(cacheItem => new TelemetryDataStatDto { - caches = new(); - } + IdTelemetry = cacheItem.Key, + DateFirst = cacheItem.Value.FirstByDate.DateTime, + DateLast = cacheItem.Value.LastData[^1].DateTime, + TimezoneOffsetHours = cacheItem.Value.TimezoneHours, + }); + return result; + } - private static TelemetryDataCache? instance; + public virtual TDto? GetLastOrDefault(int idTelemetry) + { + if (!caches.TryGetValue(idTelemetry, out TelemetryDataCacheItem? cacheItem)) + return default; - public static TelemetryDataCache GetInstance(IServiceProvider provider) - where TEntity : class, AsbCloudDb.Model.ITelemetryData - { - if (instance is null) - { - instance = new TelemetryDataCache(); - var worker = provider.GetRequiredService(); - var workId = $"Telemetry cache loading from DB {typeof(TEntity).Name}"; - var work = Work.CreateByDelegate(workId, async (workId, provider, onProgress, token) => - { - var db = provider.GetRequiredService(); - await instance.InitializeCacheFromDBAsync(db, onProgress, token); - }); - work.Timeout = TimeSpan.FromMinutes(15); - worker.Enqueue(work); - } - return instance; - } + return cacheItem.LastData.LastOrDefault(); + } - /// - /// Добавить новые элементы в кеш - /// - /// - /// - public void AddRange(int idTelemetry, IEnumerable range) - { - if (!range.Any()) - return; + public DatesRangeDto? GetOrDefaultWellDataDateRange(int idTelemetry) + { + if (!caches.TryGetValue(idTelemetry, out TelemetryDataCacheItem? cacheItem)) + return null; + + if (cacheItem.LastData.Count == 0) + return null; + + var to = FromDate(cacheItem.LastData[^1].DateTime, cacheItem.TimezoneOffset); + var from = FromDate(cacheItem.FirstByDate.DateTime, cacheItem.TimezoneOffset); - range = range.OrderBy(x => x.DateTime); + return new DatesRangeDto { From = from, To = to }; + } - foreach (var item in range) - item.IdTelemetry = idTelemetry; + public DatesRangeDto? GetOrDefaultCachedDataDateRange(int idTelemetry) + { + if (!caches.TryGetValue(idTelemetry, out TelemetryDataCacheItem? cacheItem)) + return null; - TelemetryDataCacheItem cacheItem; - if (isLoading) - { - if (caches.TryGetValue(idTelemetry, out TelemetryDataCacheItem? localCacheItem)) - cacheItem = localCacheItem; - else - return; - } - else - { - cacheItem = caches.GetOrAdd(idTelemetry, _ => new TelemetryDataCacheItem() - { - FirstByDate = range.ElementAt(0), - LastData = new CyclicArray(activeWellCapacity) - }); - } - - cacheItem.LastData.AddRange(range); - } + if (cacheItem.LastData.Count < 2) + return null; - /// - /// Получить данные из кеша.
- /// Если dateBegin меньше минимального элемента в кеше, то вернется null. - /// Даже если intervalSec частично перекрыт данными из кеша. - ///
- /// - /// - /// - /// кол-во элементов до которых эти данные прореживаются - /// - public IEnumerable? GetOrDefault(int idTelemetry, DateTime dateBegin, double intervalSec = 600d, int approxPointsCount = 1024) - { - if (!caches.TryGetValue(idTelemetry, out TelemetryDataCacheItem? cacheItem)) - return null; + var to = FromDate(cacheItem.LastData[^1].DateTime, cacheItem.TimezoneOffset); + var from = FromDate(cacheItem.LastData[0].DateTime, cacheItem.TimezoneOffset); - var cacheLastData = cacheItem.LastData; + return new DatesRangeDto { From = from, To = to }; + } - if (!cacheLastData.Any() || cacheLastData[0].DateTime > dateBegin) - return null; + public (TDto First, TDto Last)? GetOrDefaultFirstLast(int idTelemetry) + { + if (!caches.TryGetValue(idTelemetry, out TelemetryDataCacheItem? cacheItem)) + return null; - var dateEnd = dateBegin.AddSeconds(intervalSec); - var items = cacheLastData - .Where(i => i.DateTime >= dateBegin && i.DateTime <= dateEnd); + if (cacheItem.LastData.Count == 0) + return null; - var ratio = items.Count() / approxPointsCount; - if (ratio > 1) - items = items - .Where((_, index) => index % ratio == 0); + var last = cacheItem.LastData[^1]; + var first = cacheItem.FirstByDate; + return (first, last); + } - return items; - } + private async Task InitializeCacheFromDBAsync(IAsbCloudDbContext db, Action onProgress, CancellationToken token) + where TEntity : class, AsbCloudDb.Model.ITelemetryData + { + var defaultTimeout = db.Database.GetCommandTimeout(); + db.Database.SetCommandTimeout(TimeSpan.FromMinutes(5)); - public IEnumerable GetStat() - { - var result = caches.Select(cacheItem => new TelemetryDataStatDto - { - IdTelemetry = cacheItem.Key, - DateFirst = cacheItem.Value.FirstByDate.DateTime, - DateLast = cacheItem.Value.LastData[^1].DateTime, - TimezoneOffsetHours = cacheItem.Value.TimezoneHours, - }); - return result; - } + if (isLoading) + throw new Exception("Multiple cache loading detected."); - public virtual TDto? GetLastOrDefault(int idTelemetry) - { - if (!caches.TryGetValue(idTelemetry, out TelemetryDataCacheItem? cacheItem)) - return default; - - return cacheItem.LastData.LastOrDefault(); - } - - public DatesRangeDto? GetOrDefaultDataDateRange(int idTelemetry) - { - if (!caches.TryGetValue(idTelemetry, out TelemetryDataCacheItem? cacheItem)) - return null; - - if (!cacheItem.LastData.Any()) - return null; - - var from = DateTime.SpecifyKind(cacheItem.FirstByDate.DateTime, DateTimeKind.Unspecified); - var to = DateTime.SpecifyKind(cacheItem.LastData[^1].DateTime, DateTimeKind.Unspecified); - - return new DatesRangeDto - { - From = new DateTimeOffset(from, TimeSpan.FromHours(cacheItem.TimezoneHours)), - To = new DateTimeOffset(to, TimeSpan.FromHours(cacheItem.TimezoneHours)) - }; - } - - public DatesRangeDto? GetOrDefaultCachedDateRange(int idTelemetry) - { - if (!caches.TryGetValue(idTelemetry, out TelemetryDataCacheItem? cacheItem)) - return null; - - if (cacheItem.LastData.Count < 2) - return null; - - var to = cacheItem.LastData[^1].DateTime; - var from = cacheItem.LastData[0].DateTime; - - return new DatesRangeDto { From = from, To = to }; - } - - public (TDto First, TDto Last)? GetOrDefaultFirstLast(int idTelemetry) - { - if (!caches.TryGetValue(idTelemetry, out TelemetryDataCacheItem? cacheItem)) - return null; - - if (!cacheItem.LastData.Any()) - return null; - - var last = cacheItem.LastData[^1]; - var first = cacheItem.FirstByDate; - return (first, last); - } - - private async Task InitializeCacheFromDBAsync(IAsbCloudDbContext db, Action onProgress, CancellationToken token) - where TEntity : class, AsbCloudDb.Model.ITelemetryData - { - var defaultTimeout = db.Database.GetCommandTimeout(); - db.Database.SetCommandTimeout(TimeSpan.FromMinutes(5)); - - if (isLoading) - throw new Exception("Multiple cache loading detected."); - - try - { - isLoading = true; - - Well[] wells = await db.Set() - .Include(well => well.Telemetry) - .Include(well => well.Cluster) - .Where(well => well.IdTelemetry != null) - .ToArrayAsync(token); - - var count = wells.Length; - var i = 0d; - foreach (Well well in wells) - { - var capacity = well.IdState == 1 - ? activeWellCapacity - : doneWellCapacity; - - var idTelemetry = well.IdTelemetry!.Value; - var hoursOffset = well.Timezone.Hours; - - onProgress($"Loading for well: {well.Cluster?.Caption}/{well.Caption} (capacity:{capacity}) idTelemetry:{idTelemetry}", i++ / count); - var cacheItem = await GetOrDefaultCacheDataFromDbAsync(db, idTelemetry, capacity, hoursOffset, token); - if (cacheItem is not null) - caches.TryAdd(idTelemetry, cacheItem); - } - } - finally - { - isLoading = false; - db.Database.SetCommandTimeout(defaultTimeout); - } - } - - private static async Task GetOrDefaultCacheDataFromDbAsync(IAsbCloudDbContext db, int idTelemetry, int capacity, double hoursOffset, CancellationToken token) - where TEntity : class, AsbCloudDb.Model.ITelemetryData - { - var query = db.Set() - .Where(i => i.IdTelemetry == idTelemetry); - - var firstDbEntity = await query - .OrderBy(i => i.DateTime) - .FirstOrDefaultAsync(token); - - if (firstDbEntity is null) - return default; - - var first = firstDbEntity.Adapt(); - first.DateTime = firstDbEntity.DateTime.ToRemoteDateTime(hoursOffset); - - var entities = await query - .OrderByDescending(i => i.DateTime) - .Take(capacity) + try + { + isLoading = true; + + Well[] wells = await db.Set() + .Include(well => well.Telemetry) + .Include(well => well.Cluster) + .Where(well => well.IdTelemetry != null) .ToArrayAsync(token); - var dtos = entities - .AsEnumerable() - .Reverse() - .Select(entity => - { - var dto = entity.Adapt(); - dto.DateTime = entity.DateTime.ToRemoteDateTime(hoursOffset); - return dto; - }); - - var cacheItem = new CyclicArray(capacity); - cacheItem.AddRange(dtos); - - var item = new TelemetryDataCacheItem + var count = wells.Length; + var i = 0d; + foreach (Well well in wells) { - FirstByDate = first, - LastData = cacheItem, - TimezoneHours = hoursOffset, - }; - return item; + var capacity = well.IdState == 1 + ? activeWellCapacity + : doneWellCapacity; + + var idTelemetry = well.IdTelemetry!.Value; + var hoursOffset = well.Timezone.Hours; + + onProgress($"Loading for well: {well.Cluster?.Caption}/{well.Caption} (capacity:{capacity}) idTelemetry:{idTelemetry}", i++ / count); + var cacheItem = await GetOrDefaultCacheDataFromDbAsync(db, idTelemetry, capacity, hoursOffset, token); + if (cacheItem is not null) + caches.TryAdd(idTelemetry, cacheItem); + } } - - public IEnumerable? GetOrDefault(int idTelemetry, TelemetryDataRequest request) + finally { - if (!caches.TryGetValue(idTelemetry, out TelemetryDataCacheItem? cacheItem)) - return null; - - IEnumerable data = cacheItem.LastData; - - if (!data.Any()) - return null; - - if (request.GeDate.HasValue) - { - var geDate = request.GeDate.Value.ToRemoteDateTime(cacheItem.TimezoneHours); - if (data.First().DateTime > geDate) - return null; - - data = data.Where(d => d.DateTime >= geDate); - } - else - { - if (request.Order == 0) - return null; - } - - if (request.LeDate.HasValue) - { - var leDate = request.LeDate.Value.ToRemoteDateTime(cacheItem.TimezoneHours); - data = data.Where(d => d.DateTime <= request.LeDate); - } - - if (request.Divider > 1) - data = data.Where((d) => (((d.DateTime.DayOfYear * 24 + d.DateTime.Hour) * 60 + d.DateTime.Minute) * 60 + d.DateTime.Second) % request.Divider == 0); - - switch (request.Order) - { - case 1: // Поздние вперед - data = data - .OrderByDescending(d => d.DateTime) - .Skip(request.Skip) - .Take(request.Take) - .OrderBy(d => d.DateTime); - break; - default: // Ранние вперед - data = data - .OrderBy(d => d.DateTime) - .Skip(request.Skip) - .Take(request.Take); - break; - } - - return data; - } - - public IEnumerable GetIds(TelemetryDataRequest request) - { - var data = caches.Where(i => i.Value.LastData.Count > 0); - - if (request.GeDate.HasValue) - { - data = data - .Where(item => { - var lastItem = item.Value.LastData.Last(); - var geDate = request.GeDate.Value.ToOffset(TimeSpan.FromHours(item.Value.TimezoneHours)); - return lastItem.DateTime >= geDate; - }); - } - - if (request.LeDate.HasValue) - { - data = data - .Where(item => { - var firstItem = item.Value.LastData.First(); - var leDate = request.LeDate.Value.ToOffset(TimeSpan.FromHours(item.Value.TimezoneHours)); - return firstItem.DateTime <= leDate; - }); - } - - var telemetryIds = data.Select(item => item.Key); - return telemetryIds; + isLoading = false; + db.Database.SetCommandTimeout(defaultTimeout); } } + + private static async Task GetOrDefaultCacheDataFromDbAsync(IAsbCloudDbContext db, int idTelemetry, int capacity, double hoursOffset, CancellationToken token) + where TEntity : class, AsbCloudDb.Model.ITelemetryData + { + var query = db.Set() + .Where(i => i.IdTelemetry == idTelemetry); + + var firstDbEntity = await query + .OrderBy(i => i.DateTime) + .FirstOrDefaultAsync(token); + + if (firstDbEntity is null) + return default; + + var first = firstDbEntity.Adapt(); + first.DateTime = firstDbEntity.DateTime.ToRemoteDateTime(hoursOffset); + + var entities = await query + .OrderByDescending(i => i.DateTime) + .Take(capacity) + .ToArrayAsync(token); + + var dtos = entities + .AsEnumerable() + .Reverse() + .Select(entity => + { + var dto = entity.Adapt(); + dto.DateTime = entity.DateTime.ToRemoteDateTime(hoursOffset); + return dto; + }); + + var cacheItem = new CyclicArray(capacity); + cacheItem.AddRange(dtos); + + var item = new TelemetryDataCacheItem + { + FirstByDate = first, + LastData = cacheItem, + TimezoneHours = hoursOffset, + }; + return item; + } + + public IEnumerable? GetOrDefault(int idTelemetry, TelemetryDataRequest request) + { + if (!caches.TryGetValue(idTelemetry, out TelemetryDataCacheItem? cacheItem)) + return null; + + IEnumerable data = cacheItem.LastData; + + if (!data.Any()) + return null; + + if (request.GeDate.HasValue) + { + var geDate = request.GeDate.Value.ToRemoteDateTime(cacheItem.TimezoneHours); + if (data.First().DateTime > geDate) + return null; + + data = data.Where(d => d.DateTime >= geDate); + } + else + { + if (request.Order == 0) + return null; + } + + if (request.LeDate.HasValue) + { + var leDate = request.LeDate.Value.ToRemoteDateTime(cacheItem.TimezoneHours); + data = data.Where(d => d.DateTime <= request.LeDate); + } + + if (request.Divider > 1) + data = data.Where((d) => (((d.DateTime.DayOfYear * 24 + d.DateTime.Hour) * 60 + d.DateTime.Minute) * 60 + d.DateTime.Second) % request.Divider == 0); + + switch (request.Order) + { + case 1: // Поздние вперед + data = data + .OrderByDescending(d => d.DateTime) + .Skip(request.Skip) + .Take(request.Take) + .OrderBy(d => d.DateTime); + break; + default: // Ранние вперед + data = data + .OrderBy(d => d.DateTime) + .Skip(request.Skip) + .Take(request.Take); + break; + } + + return data; + } + + public IEnumerable GetIds(TelemetryDataRequest request) + { + var data = caches.Where(i => i.Value.LastData.Count > 0); + + if (request.GeDate.HasValue) + { + data = data + .Where(item => { + var lastItem = item.Value.LastData.Last(); + var geDate = request.GeDate.Value.ToOffset(TimeSpan.FromHours(item.Value.TimezoneHours)); + return lastItem.DateTime >= geDate; + }); + } + + if (request.LeDate.HasValue) + { + data = data + .Where(item => { + var firstItem = item.Value.LastData.First(); + var leDate = request.LeDate.Value.ToOffset(TimeSpan.FromHours(item.Value.TimezoneHours)); + return firstItem.DateTime <= leDate; + }); + } + + var telemetryIds = data.Select(item => item.Key); + return telemetryIds; + } + + private static DateTimeOffset FromDate(DateTime dateTime, TimeSpan timezoneOffset) + { + var dateTimeNoKind = DateTime.SpecifyKind(dateTime, DateTimeKind.Unspecified); + var dateTimeOffset = new DateTimeOffset(dateTimeNoKind, timezoneOffset); + return dateTimeOffset; + } } diff --git a/AsbCloudInfrastructure/Services/SAUB/TelemetryDataEditorService.cs b/AsbCloudInfrastructure/Services/SAUB/TelemetryDataEditorService.cs new file mode 100644 index 00000000..bcbf4c67 --- /dev/null +++ b/AsbCloudInfrastructure/Services/SAUB/TelemetryDataEditorService.cs @@ -0,0 +1,82 @@ +using AsbCloudApp.Data.SAUB; +using AsbCloudApp.Data.WITS; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using System.Threading; +using System.Threading.Tasks; + +namespace AsbCloudInfrastructure.Services.SAUB +{ + /// + /// Сервис по работе с данными телеметрии + /// + public class TelemetryDataEditorService : ITelemetryDataEditorService + { + private readonly ITelemetryDataEditorService[] repositories; + + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + public TelemetryDataEditorService( + ITelemetryDataSaubService dataSaubService, + ITelemetryDataService dataSpinService, + IDataSaubStatRepository dataSaubStatRepository, + IMessageService messageService, + IDrillTestRepository drillTestRepository, + ILimitingParameterRepository limitingParameterRepository, + IDetectedOperationRepository detectedOperationRepository, + IWitsRecordRepository witsRecord1Repository, + IWitsRecordRepository witsRecord7Repository, + IWitsRecordRepository witsRecord8Repository, + IWitsRecordRepository witsRecord50Repository, + IWitsRecordRepository witsRecord60Repository, + IWitsRecordRepository witsRecord61Repository, + IGtrRepository gtrRepository + ) + { + repositories = + [ + dataSaubService, + dataSpinService, + dataSaubStatRepository, + messageService, + drillTestRepository, + limitingParameterRepository, + detectedOperationRepository, + witsRecord1Repository, + witsRecord7Repository, + witsRecord8Repository, + witsRecord50Repository, + witsRecord60Repository, + witsRecord61Repository, + gtrRepository, + ]; + } + + public async Task DeleteAsync(TelemetryPartDeleteRequest request, CancellationToken token) + { + var result = 0; + foreach (var repository in repositories) + { + result += await repository.DeleteAsync(request, token); + } + + return result; + } + } +} diff --git a/AsbCloudInfrastructure/Services/SAUB/TelemetryDataSaubService.cs b/AsbCloudInfrastructure/Services/SAUB/TelemetryDataSaubService.cs index 9bca69bd..2516bd65 100644 --- a/AsbCloudInfrastructure/Services/SAUB/TelemetryDataSaubService.cs +++ b/AsbCloudInfrastructure/Services/SAUB/TelemetryDataSaubService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.SAUB; +using AsbCloudApp.Data.SAUB; using AsbCloudApp.Exceptions; using AsbCloudApp.Repositories; using AsbCloudApp.Services; @@ -13,6 +13,8 @@ using System.Linq; using System.Text.Csv; using System.Threading; using System.Threading.Tasks; +using AsbCloudApp.Data; +using AsbCloudApp.Requests; namespace AsbCloudInfrastructure.Services.SAUB; @@ -174,4 +176,4 @@ public class TelemetryDataSaubService : TelemetryDataBaseService().ToArray(); return entities; }); - return cache; + return cache!; } private void DropCache() diff --git a/AsbCloudInfrastructure/Services/SAUB/TelemetryWithSoftwareVersionsDto.cs b/AsbCloudInfrastructure/Services/SAUB/TelemetryWithSoftwareVersionsDto.cs index 024e534b..75d3c95e 100644 --- a/AsbCloudInfrastructure/Services/SAUB/TelemetryWithSoftwareVersionsDto.cs +++ b/AsbCloudInfrastructure/Services/SAUB/TelemetryWithSoftwareVersionsDto.cs @@ -1,4 +1,4 @@ -using System; +using System; namespace AsbCloudInfrastructure.Services.SAUB; diff --git a/AsbCloudInfrastructure/Services/SlipsStatService.cs b/AsbCloudInfrastructure/Services/SlipsStatService.cs index 2bc87c68..954b2c75 100644 --- a/AsbCloudInfrastructure/Services/SlipsStatService.cs +++ b/AsbCloudInfrastructure/Services/SlipsStatService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Requests; using AsbCloudApp.Services; using AsbCloudDb.Model; diff --git a/AsbCloudInfrastructure/Services/Subsystems/DepthInterpolation.cs b/AsbCloudInfrastructure/Services/Subsystems/DepthInterpolation.cs index 71718cce..532377ef 100644 --- a/AsbCloudInfrastructure/Services/Subsystems/DepthInterpolation.cs +++ b/AsbCloudInfrastructure/Services/Subsystems/DepthInterpolation.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; namespace AsbCloudInfrastructure.Services.Subsystems.Utils diff --git a/AsbCloudInfrastructure/Services/Subsystems/SubsystemService.cs b/AsbCloudInfrastructure/Services/Subsystems/SubsystemService.cs index d2400ba3..e2ab1e13 100644 --- a/AsbCloudInfrastructure/Services/Subsystems/SubsystemService.cs +++ b/AsbCloudInfrastructure/Services/Subsystems/SubsystemService.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Threading; @@ -42,14 +42,14 @@ internal class SubsystemService : ISubsystemService // получить расписания бурильщиков по скважинам // ScheduleRepository добавить новый метод // [ - // get telemetryId by idWell // IWellService.GetOrDefaultStatAsync - // получить detectedOperation by telemetry //detectedOperationService.GetOperationsAsync - // сгруппировать по бурильщикам - // [ - // рассчитать статистику // CalcStatAsync - // join driller from group - // ] - // join well (cluster, deposit) + // get telemetryId by idWell // IWellService.GetOrDefaultStatAsync + // получить detectedOperation by telemetry //detectedOperationService.GetOperationsAsync + // сгруппировать по бурильщикам + // [ + // рассчитать статистику // CalcStatAsync + // join driller from group + // ] + // join well (cluster, deposit) // ] public async Task> GetByWellsAsync(GetStatRequest request, CancellationToken token) diff --git a/AsbCloudInfrastructure/Services/TimeZoneService.cs b/AsbCloudInfrastructure/Services/TimeZoneService.cs index 083e8d52..b22edfc0 100644 --- a/AsbCloudInfrastructure/Services/TimeZoneService.cs +++ b/AsbCloudInfrastructure/Services/TimeZoneService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Services; using System.Net.Http; using System.Text.Json; diff --git a/AsbCloudInfrastructure/Services/Trajectory/Export/TrajectoryExportService.cs b/AsbCloudInfrastructure/Services/Trajectory/Export/TrajectoryExportService.cs index fe78b6b5..2a08556a 100644 --- a/AsbCloudInfrastructure/Services/Trajectory/Export/TrajectoryExportService.cs +++ b/AsbCloudInfrastructure/Services/Trajectory/Export/TrajectoryExportService.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using AsbCloudApp.Data.Trajectory; using AsbCloudApp.Repositories; using AsbCloudApp.Services; @@ -10,18 +10,18 @@ using AsbCloudInfrastructure.Services.ExcelServices; namespace AsbCloudInfrastructure.Services.Trajectory.Export; public abstract class TrajectoryExportService : ExportExcelService - where TDto : TrajectoryGeoDto + where TDto : TrajectoryGeoDto { - protected readonly IWellService wellService; + protected readonly IWellService wellService; - private readonly ITrajectoryRepository trajectoryRepository; + private readonly ITrajectoryRepository trajectoryRepository; - protected TrajectoryExportService(IWellService wellService, ITrajectoryRepository trajectoryRepository) - { - this.wellService = wellService; - this.trajectoryRepository = trajectoryRepository; - } + protected TrajectoryExportService(IWellService wellService, ITrajectoryRepository trajectoryRepository) + { + this.wellService = wellService; + this.trajectoryRepository = trajectoryRepository; + } - protected override Task> GetDtosAsync(WellRelatedExportRequest options, CancellationToken token) => - trajectoryRepository.GetAsync(options.IdWell, token); + protected override Task> GetDtosAsync(WellRelatedExportRequest options, CancellationToken token) => + trajectoryRepository.GetAsync(options.IdWell, token); } \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/Trajectory/Export/TrajectoryFactManualExportService.cs b/AsbCloudInfrastructure/Services/Trajectory/Export/TrajectoryFactManualExportService.cs index 40b7d1c8..58acc8ff 100644 --- a/AsbCloudInfrastructure/Services/Trajectory/Export/TrajectoryFactManualExportService.cs +++ b/AsbCloudInfrastructure/Services/Trajectory/Export/TrajectoryFactManualExportService.cs @@ -1,4 +1,4 @@ -using System.Threading; +using System.Threading; using System.Threading.Tasks; using AsbCloudApp.Data.Trajectory; using AsbCloudApp.Repositories; @@ -11,18 +11,18 @@ namespace AsbCloudInfrastructure.Services.Trajectory.Export; public class TrajectoryFactManualExportService : TrajectoryExportService { - public TrajectoryFactManualExportService(IWellService wellService, - ITrajectoryEditableRepository trajectoryRepository) - : base(wellService, trajectoryRepository) - { - } + public TrajectoryFactManualExportService(IWellService wellService, + ITrajectoryEditableRepository trajectoryRepository) + : base(wellService, trajectoryRepository) + { + } - protected override ITemplateParameters TemplateParameters => new TrajectoryFactManualTemplate(); - - protected override async Task BuildFileNameAsync(WellRelatedExportRequest options, CancellationToken token) - { - var caption = await wellService.GetWellCaptionByIdAsync(options.IdWell, token); + protected override ITemplateParameters TemplateParameters => new TrajectoryFactManualTemplate(); + + protected override async Task BuildFileNameAsync(WellRelatedExportRequest options, CancellationToken token) + { + var caption = await wellService.GetWellCaptionByIdAsync(options.IdWell, token); - return $"{caption}_Фактическая_траектория.xlsx"; - } + return $"{caption}_Фактическая_траектория.xlsx"; + } } \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/Trajectory/Export/TrajectoryFactNnbExportService.cs b/AsbCloudInfrastructure/Services/Trajectory/Export/TrajectoryFactNnbExportService.cs index 3b3206f5..7567f445 100644 --- a/AsbCloudInfrastructure/Services/Trajectory/Export/TrajectoryFactNnbExportService.cs +++ b/AsbCloudInfrastructure/Services/Trajectory/Export/TrajectoryFactNnbExportService.cs @@ -1,4 +1,4 @@ -using System.Threading; +using System.Threading; using System.Threading.Tasks; using AsbCloudApp.Data.Trajectory; using AsbCloudApp.Repositories; @@ -11,18 +11,18 @@ namespace AsbCloudInfrastructure.Services.Trajectory.Export; public class TrajectoryFactNnbExportService : TrajectoryExportService { - public TrajectoryFactNnbExportService(IWellService wellService, - ITrajectoryNnbRepository trajectoryRepository) - : base(wellService, trajectoryRepository) - { - } + public TrajectoryFactNnbExportService(IWellService wellService, + ITrajectoryNnbRepository trajectoryRepository) + : base(wellService, trajectoryRepository) + { + } - protected override ITemplateParameters TemplateParameters => new TrajectoryFactNnbTemplate(); + protected override ITemplateParameters TemplateParameters => new TrajectoryFactNnbTemplate(); - protected override async Task BuildFileNameAsync(WellRelatedExportRequest options, CancellationToken token) - { - var caption = await wellService.GetWellCaptionByIdAsync(options.IdWell, token); + protected override async Task BuildFileNameAsync(WellRelatedExportRequest options, CancellationToken token) + { + var caption = await wellService.GetWellCaptionByIdAsync(options.IdWell, token); - return $"{caption}_Траектория_ННБ.xlsx"; - } + return $"{caption}_Траектория_ННБ.xlsx"; + } } \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/Trajectory/Export/TrajectoryPlanExportService.cs b/AsbCloudInfrastructure/Services/Trajectory/Export/TrajectoryPlanExportService.cs index 37bce068..311dc95c 100644 --- a/AsbCloudInfrastructure/Services/Trajectory/Export/TrajectoryPlanExportService.cs +++ b/AsbCloudInfrastructure/Services/Trajectory/Export/TrajectoryPlanExportService.cs @@ -1,4 +1,4 @@ -using System.Threading; +using System.Threading; using System.Threading.Tasks; using AsbCloudApp.Data.Trajectory; using AsbCloudApp.Repositories; @@ -11,18 +11,18 @@ namespace AsbCloudInfrastructure.Services.Trajectory.Export; public class TrajectoryPlanExportService : TrajectoryExportService { - public TrajectoryPlanExportService(IWellService wellService, - ITrajectoryEditableRepository trajectoryRepository) - : base(wellService, trajectoryRepository) - { - } + public TrajectoryPlanExportService(IWellService wellService, + ITrajectoryEditableRepository trajectoryRepository) + : base(wellService, trajectoryRepository) + { + } - protected override ITemplateParameters TemplateParameters => new TrajectoryPlanTemplate(); + protected override ITemplateParameters TemplateParameters => new TrajectoryPlanTemplate(); - protected override async Task BuildFileNameAsync(WellRelatedExportRequest options, CancellationToken token) - { - var caption = await wellService.GetWellCaptionByIdAsync(options.IdWell, token); + protected override async Task BuildFileNameAsync(WellRelatedExportRequest options, CancellationToken token) + { + var caption = await wellService.GetWellCaptionByIdAsync(options.IdWell, token); - return $"{caption}_Плановая_Траектория.xlsx"; - } + return $"{caption}_Плановая_Траектория.xlsx"; + } } \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/Trajectory/Parser/TrajectoryFactManualParser.cs b/AsbCloudInfrastructure/Services/Trajectory/Parser/TrajectoryFactManualParser.cs index 19b2ebed..edfff48b 100644 --- a/AsbCloudInfrastructure/Services/Trajectory/Parser/TrajectoryFactManualParser.cs +++ b/AsbCloudInfrastructure/Services/Trajectory/Parser/TrajectoryFactManualParser.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.Trajectory; +using AsbCloudApp.Data.Trajectory; using AsbCloudInfrastructure.Services.ExcelServices.Templates; using AsbCloudInfrastructure.Services.ExcelServices.Templates.TrajectoryTemplates; @@ -6,5 +6,5 @@ namespace AsbCloudInfrastructure.Services.Trajectory.Parser; public class TrajectoryFactManualParser : TrajectoryParser { - protected override ITemplateParameters TemplateParameters => new TrajectoryFactManualTemplate(); + protected override ITemplateParameters TemplateParameters => new TrajectoryFactManualTemplate(); } \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/Trajectory/Parser/TrajectoryParser.cs b/AsbCloudInfrastructure/Services/Trajectory/Parser/TrajectoryParser.cs index f2aca93d..fa792a36 100644 --- a/AsbCloudInfrastructure/Services/Trajectory/Parser/TrajectoryParser.cs +++ b/AsbCloudInfrastructure/Services/Trajectory/Parser/TrajectoryParser.cs @@ -7,15 +7,15 @@ using AsbCloudInfrastructure.Services.ExcelServices; namespace AsbCloudInfrastructure.Services.Trajectory.Parser; public abstract class TrajectoryParser : ParserExcelService - where TDto : TrajectoryGeoDto + where TDto : TrajectoryGeoDto { - public override ParserResultDto Parse(Stream file, WellRelatedParserRequest options) - { - var result = base.Parse(file, options); + public override ParserResultDto Parse(Stream file, WellRelatedParserRequest options) + { + var result = base.Parse(file, options); - foreach (var item in result.Item) - item.Item.IdWell = options.IdWell; + foreach (var item in result.Item) + item.Item.IdWell = options.IdWell; - return result; - } + return result; + } } \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/Trajectory/Parser/TrajectoryPlanParser.cs b/AsbCloudInfrastructure/Services/Trajectory/Parser/TrajectoryPlanParser.cs index d99f0b9f..79548af8 100644 --- a/AsbCloudInfrastructure/Services/Trajectory/Parser/TrajectoryPlanParser.cs +++ b/AsbCloudInfrastructure/Services/Trajectory/Parser/TrajectoryPlanParser.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.Trajectory; +using AsbCloudApp.Data.Trajectory; using AsbCloudInfrastructure.Services.ExcelServices.Templates; using AsbCloudInfrastructure.Services.ExcelServices.Templates.TrajectoryTemplates; @@ -6,5 +6,5 @@ namespace AsbCloudInfrastructure.Services.Trajectory.Parser; public class TrajectoryPlanParser : TrajectoryParser { - protected override ITemplateParameters TemplateParameters => new TrajectoryPlanTemplate(); + protected override ITemplateParameters TemplateParameters => new TrajectoryPlanTemplate(); } \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/Trajectory/Templates/password.md b/AsbCloudInfrastructure/Services/Trajectory/Templates/password.md index 74caf50b..08c37605 100644 --- a/AsbCloudInfrastructure/Services/Trajectory/Templates/password.md +++ b/AsbCloudInfrastructure/Services/Trajectory/Templates/password.md @@ -1 +1 @@ -password for PlannedTrajectoryTemplate.xlsx is Drill2022 \ No newline at end of file +password for PlannedTrajectoryTemplate.xlsx is Drill2022 \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/Trajectory/TrajectoryService.cs b/AsbCloudInfrastructure/Services/Trajectory/TrajectoryService.cs index 6f16b193..9161efd1 100644 --- a/AsbCloudInfrastructure/Services/Trajectory/TrajectoryService.cs +++ b/AsbCloudInfrastructure/Services/Trajectory/TrajectoryService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.Trajectory; +using AsbCloudApp.Data.Trajectory; using AsbCloudApp.Repositories; using AsbCloudApp.Requests; using System; diff --git a/AsbCloudInfrastructure/Services/WellCompositeOperationService.cs b/AsbCloudInfrastructure/Services/WellCompositeOperationService.cs index 735a80a0..34665720 100644 --- a/AsbCloudInfrastructure/Services/WellCompositeOperationService.cs +++ b/AsbCloudInfrastructure/Services/WellCompositeOperationService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Data.WellOperation; using AsbCloudApp.Repositories; using AsbCloudApp.Requests; diff --git a/AsbCloudInfrastructure/Services/WellContactService.cs b/AsbCloudInfrastructure/Services/WellContactService.cs index baf96ad9..1bb45b77 100644 --- a/AsbCloudInfrastructure/Services/WellContactService.cs +++ b/AsbCloudInfrastructure/Services/WellContactService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Data.User; using AsbCloudApp.Exceptions; using AsbCloudApp.Services; @@ -90,6 +90,26 @@ namespace AsbCloudInfrastructure.Services return await db.SaveChangesAsync(token); } + public async Task CopyAsync(int idWell, int idWellTarget, IEnumerable contactIds, CancellationToken token) + { + var contacts = await GetContacts(idWell, contactIds, token); + if (!contacts.Any()) + return 0; + + var newContacts = contacts.Select(contact => + { + var newContact = contact.Adapt(); + newContact.IdWell = idWellTarget; + newContact.Id = default; + + return newContact; + }); + + db.Contacts.AddRange(newContacts); + + return await db.SaveChangesAsync(token); + } + private async Task GetContact(int idWell, int idContact, CancellationToken token) { var contact = await db.Contacts @@ -100,5 +120,16 @@ namespace AsbCloudInfrastructure.Services return contact; } + + private async Task GetContacts(int idWell, IEnumerable contactIds, CancellationToken token) + { + var contacts = await db.Contacts + .Where(c => c.IdWell == idWell) + .Where(c => contactIds.Contains(c.Id)) + .AsNoTracking() + .ToArrayAsync(token); + + return contacts; + } } } diff --git a/AsbCloudInfrastructure/Services/WellFinalDocumentsService.cs b/AsbCloudInfrastructure/Services/WellFinalDocumentsService.cs index 7a736ba9..6e9a9e41 100644 --- a/AsbCloudInfrastructure/Services/WellFinalDocumentsService.cs +++ b/AsbCloudInfrastructure/Services/WellFinalDocumentsService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Data.User; using AsbCloudApp.Exceptions; using AsbCloudApp.Repositories; diff --git a/AsbCloudInfrastructure/Services/WellInfoService.cs b/AsbCloudInfrastructure/Services/WellInfoService.cs index 9c407490..483eb6f3 100644 --- a/AsbCloudInfrastructure/Services/WellInfoService.cs +++ b/AsbCloudInfrastructure/Services/WellInfoService.cs @@ -1,5 +1,6 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Operations; using AsbCloudApp.Data.SAUB; using AsbCloudApp.Data.WITS; using AsbCloudApp.IntegrationEvents; @@ -32,7 +33,8 @@ public class WellInfoService { var wellService = services.GetRequiredService(); var operationsStatService = services.GetRequiredService(); - var processMapPlanWellDrillingRepository = services.GetRequiredService>(); + var processMapPlanRotorRepository = services.GetRequiredService>(); + var processMapPlanSlideRepository = services.GetRequiredService>(); var subsystemService = services.GetRequiredService(); var telemetryDataSaubCache = services.GetRequiredService>(); var messageHub = services.GetRequiredService>(); @@ -43,15 +45,15 @@ public class WellInfoService var wellsIds = activeWells.Select(w => w.Id); - var processMapPlanWellDrillingRequests = wellsIds.Select(id => new ProcessMapPlanBaseRequestWithWell(id) - { - Moment = DateTimeOffset.UtcNow.AddDays(1) - }); - var processMapPlanWellDrillings = new List(); + var processMapPlanWellDrillingRequests = wellsIds.Select(id => new ProcessMapPlanBaseRequestWithWell(id)); + var processMapPlanWellDrillings = new List(); foreach (var processMapPlanWellDrillingRequest in processMapPlanWellDrillingRequests) { - var processMaps = await processMapPlanWellDrillingRepository.Get(processMapPlanWellDrillingRequest, token); - processMapPlanWellDrillings.AddRange(processMaps); + var processMapsRotor = await processMapPlanRotorRepository.GetCurrent(processMapPlanWellDrillingRequest, token); + var processMapsSlide = await processMapPlanSlideRepository.GetCurrent(processMapPlanWellDrillingRequest, token); + + processMapPlanWellDrillings.AddRange(processMapsRotor); + processMapPlanWellDrillings.AddRange(processMapsSlide); } var wellDepthByProcessMap = processMapPlanWellDrillings @@ -72,7 +74,7 @@ public class WellInfoService var i = 0d; WellMapInfo = activeWells.Select(well => { - var wellMapInfo = well.Adapt(); + var wellMapInfo = well.Adapt(); wellMapInfo.IdState = well.IdState; onProgressCallback($"Start updating info by well({well.Id}): {well.Caption}", i++ / count); double? currentDepth = null; @@ -98,16 +100,16 @@ public class WellInfoService .OrderBy(p => p.DepthEnd); int? idSection = wellLastFactSection?.Id; - ProcessMapPlanDrillingDto? processMapPlanWellDrilling = null; + ProcessMapPlanBaseDto? processMapPlanWellDrilling = null; - if(idSection.HasValue && currentDepth.HasValue) + if (idSection.HasValue && currentDepth.HasValue) { processMapPlanWellDrilling = wellProcessMaps .Where(p => p.IdWellSectionType == idSection) .Where(p => p.DepthStart <= currentDepth.Value && p.DepthEnd >= currentDepth.Value) .FirstOrDefault(); - } - else if(currentDepth.HasValue) + } + else if (currentDepth.HasValue) { processMapPlanWellDrilling = wellProcessMaps.FirstOrDefault(p => p.DepthStart <= currentDepth.Value && p.DepthEnd >= currentDepth.Value); } @@ -129,25 +131,21 @@ public class WellInfoService wellMapInfo.AxialLoad = new() { - Plan = processMapPlanWellDrilling?.AxialLoadPlan, Fact = lastSaubTelemetry?.AxialLoad }; wellMapInfo.TopDriveSpeed = new() { - Plan = processMapPlanWellDrilling?.TopDriveSpeedPlan, Fact = lastSaubTelemetry?.RotorSpeed }; wellMapInfo.TopDriveTorque = new() { - Plan = processMapPlanWellDrilling?.TopDriveTorquePlan, Fact = lastSaubTelemetry?.RotorTorque }; wellMapInfo.Pressure = new() { - Plan = processMapPlanWellDrilling?.DeltaPressurePlan, Fact = lastSaubTelemetry?.Pressure }; @@ -161,7 +159,6 @@ public class WellInfoService wellMapInfo.ROP = new() { - Plan = processMapPlanWellDrilling?.RopPlan, Fact = wellOperationsStat?.Total.Fact?.Rop, }; @@ -171,6 +168,28 @@ public class WellInfoService Fact = wellOperationsStat?.Total.Fact?.RouteSpeed, }; + if(processMapPlanWellDrilling is ProcessMapPlanRotorDto processMapPlanRotor) + { + wellMapInfo.AxialLoad.Plan = processMapPlanRotor?.WeightOnBit; + + wellMapInfo.TopDriveSpeed.Plan = processMapPlanRotor?.Rpm; + + wellMapInfo.TopDriveTorque.Plan = processMapPlanRotor?.TopDriveTorque; + + wellMapInfo.Pressure.Plan = processMapPlanRotor?.DifferentialPressure; + + wellMapInfo.ROP.Plan = processMapPlanRotor?.RopMax; + } + + if (processMapPlanWellDrilling is ProcessMapPlanSlideDto processMapPlanSlide) + { + wellMapInfo.AxialLoad.Plan = processMapPlanSlide?.WeightOnBit; + + wellMapInfo.Pressure.Plan = processMapPlanSlide?.DifferentialPressure; + + wellMapInfo.ROP.Plan = processMapPlanSlide?.RopMax; + } + var wellSubsystemStat = subsystemStat.FirstOrDefault(s => s.Well.Id == well.Id); wellMapInfo.SaubUsage = wellSubsystemStat?.SubsystemAPD?.KUsage ?? 0d; wellMapInfo.SpinUsage = wellSubsystemStat?.SubsystemOscillation?.KUsage ?? 0d; @@ -189,7 +208,7 @@ public class WellInfoService } } - class WellMapInfoWithComanies : WellMapInfoDto + class WellMapInfoWithCompanies : WellMapInfoDto { public int? IdTelemetry { get; set; } public IEnumerable IdsCompanies { get; set; } = null!; @@ -200,7 +219,7 @@ public class WellInfoService private readonly IWitsRecordRepository witsRecord7Repository; private readonly IWitsRecordRepository witsRecord1Repository; private readonly IGtrRepository gtrRepository; - private static IEnumerable WellMapInfo = Enumerable.Empty(); + private static IEnumerable WellMapInfo = []; public WellInfoService( ITelemetryDataCache telemetryDataSaubCache, @@ -217,7 +236,7 @@ public class WellInfoService this.gtrRepository = gtrRepository; } - private WellMapInfoWithTelemetryStat Convert(WellMapInfoWithComanies wellInfo) + private WellMapInfoWithTelemetryStat Convert(WellMapInfoWithCompanies wellInfo) { var result = wellInfo.Adapt(); if (wellInfo.IdTelemetry.HasValue) @@ -252,8 +271,8 @@ public class WellInfoService public WellMapInfoWithTelemetryStat? FirstOrDefault(Func predicate) { var first = WellMapInfo.FirstOrDefault(predicate); - if (first is WellMapInfoWithComanies wellMapInfoWithComanies) - return Convert(wellMapInfoWithComanies); + if (first is WellMapInfoWithCompanies wellMapInfoWithCompanies) + return Convert(wellMapInfoWithCompanies); return null; } diff --git a/AsbCloudInfrastructure/Services/WellOperationService/OperationsStatService.cs b/AsbCloudInfrastructure/Services/WellOperationService/OperationsStatService.cs index 87fdc3a2..07146882 100644 --- a/AsbCloudInfrastructure/Services/WellOperationService/OperationsStatService.cs +++ b/AsbCloudInfrastructure/Services/WellOperationService/OperationsStatService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Services; using AsbCloudDb.Model; using Mapster; @@ -20,16 +20,16 @@ public class OperationsStatService : IOperationsStatService private readonly IAsbCloudDbContext db; private readonly IMemoryCache memoryCache; private readonly IWellService wellService; - private readonly ITelemetryDataCache telemetryDataCache; + private readonly ITelemetryDataCache telemetryDataCache; - public OperationsStatService(IAsbCloudDbContext db, IMemoryCache memoryCache, IWellService wellService, - ITelemetryDataCache telemetryDataCache) + public OperationsStatService(IAsbCloudDbContext db, IMemoryCache memoryCache, IWellService wellService, + ITelemetryDataCache telemetryDataCache) { this.db = db; this.memoryCache = memoryCache; this.wellService = wellService; - this.telemetryDataCache = telemetryDataCache; - } + this.telemetryDataCache = telemetryDataCache; + } public async Task GetOrDefaultStatClusterAsync(int idCluster, int idCompany, CancellationToken token) { diff --git a/AsbCloudInfrastructure/Services/WellOperationService/Race.cs b/AsbCloudInfrastructure/Services/WellOperationService/Race.cs index f868db6f..e50ef9a9 100644 --- a/AsbCloudInfrastructure/Services/WellOperationService/Race.cs +++ b/AsbCloudInfrastructure/Services/WellOperationService/Race.cs @@ -1,4 +1,4 @@ -using AsbCloudDb.Model; +using AsbCloudDb.Model; using System; using System.Collections.Generic; using System.Linq; diff --git a/AsbCloudInfrastructure/Services/WellOperationService/ScheduleReportService.cs b/AsbCloudInfrastructure/Services/WellOperationService/ScheduleReportService.cs index 96ef7b85..dc6495e0 100644 --- a/AsbCloudInfrastructure/Services/WellOperationService/ScheduleReportService.cs +++ b/AsbCloudInfrastructure/Services/WellOperationService/ScheduleReportService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Exceptions; using AsbCloudApp.Services; using AsbCloudDb.Model; @@ -308,7 +308,7 @@ namespace AsbCloudInfrastructure.Services.WellOperationService SetCell(sheet.Row(rowTopStatTitle + 1), colTopStatvalue - 1, "+") .Style.Font.SetFontColor(XLColor.Green); else - SetCell(sheet.Row(rowTopStatTitle + 1), colTopStatvalue - 1, "—") + SetCell(sheet.Row(rowTopStatTitle + 1), colTopStatvalue - 1, "-") .Style.Font.SetFontColor(XLColor.Red); } } diff --git a/AsbCloudInfrastructure/Services/WellOperations/Factories/WellOperationExportServiceFactory.cs b/AsbCloudInfrastructure/Services/WellOperations/Factories/WellOperationExportServiceFactory.cs index 1dc1d2a7..40768e86 100644 --- a/AsbCloudInfrastructure/Services/WellOperations/Factories/WellOperationExportServiceFactory.cs +++ b/AsbCloudInfrastructure/Services/WellOperations/Factories/WellOperationExportServiceFactory.cs @@ -12,32 +12,32 @@ namespace AsbCloudInfrastructure.Services.WellOperations.Factories; public class WellOperationExportServiceFactory : IExportServiceFactory { - private readonly IDictionary> exportServices; + private readonly IDictionary> exportServices; - public WellOperationExportServiceFactory(IServiceProvider serviceProvider) - { - var wellOperationRepository = serviceProvider.GetRequiredService(); - var wellService = serviceProvider.GetRequiredService(); + public WellOperationExportServiceFactory(IServiceProvider serviceProvider) + { + var wellOperationRepository = serviceProvider.GetRequiredService(); + var wellService = serviceProvider.GetRequiredService(); - exportServices = new Dictionary> - { - { - WellOperation.IdOperationTypeFact, - () => new WellOperationExport(wellOperationRepository, wellService) - }, - { - WellOperation.IdOperationTypePlan, - () => new WellOperationExport(wellOperationRepository, wellService) - } - }; - } + exportServices = new Dictionary> + { + { + WellOperation.IdOperationTypeFact, + () => new WellOperationExport(wellOperationRepository, wellService) + }, + { + WellOperation.IdOperationTypePlan, + () => new WellOperationExport(wellOperationRepository, wellService) + } + }; + } - public IExportService CreateExportService(int id) - where TOptions : IExportOptionsRequest - { - var parser = exportServices[id].Invoke(); + public IExportService CreateExportService(int id) + where TOptions : IExportOptionsRequest + { + var parser = exportServices[id].Invoke(); - return parser as IExportService - ?? throw new ArgumentNullException(nameof(id), "Не удалось экспортировать файл"); - } + return parser as IExportService + ?? throw new ArgumentNullException(nameof(id), "Не удалось экспортировать файл"); + } } \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/WellOperations/Factories/WellOperationParserFactory.cs b/AsbCloudInfrastructure/Services/WellOperations/Factories/WellOperationParserFactory.cs index 4107a7dd..32930755 100644 --- a/AsbCloudInfrastructure/Services/WellOperations/Factories/WellOperationParserFactory.cs +++ b/AsbCloudInfrastructure/Services/WellOperations/Factories/WellOperationParserFactory.cs @@ -12,32 +12,32 @@ namespace AsbCloudInfrastructure.Services.WellOperations.Factories; public class WellOperationParserFactory : IParserFactory { - private readonly IDictionary> parsers; + private readonly IDictionary> parsers; - public WellOperationParserFactory(IServiceProvider serviceProvider) - { - var wellOperationRepository = serviceProvider.GetRequiredService(); - var categoryRepository = serviceProvider.GetRequiredService(); + public WellOperationParserFactory(IServiceProvider serviceProvider) + { + var wellOperationRepository = serviceProvider.GetRequiredService(); + var categoryRepository = serviceProvider.GetRequiredService(); - parsers = new Dictionary> - { - { - WellOperation.IdOperationTypeFact, - () => new WellOperationParser(wellOperationRepository, categoryRepository) - }, - { - WellOperation.IdOperationTypePlan, - () => new WellOperationParser(wellOperationRepository, categoryRepository) - } - }; - } + parsers = new Dictionary> + { + { + WellOperation.IdOperationTypeFact, + () => new WellOperationParser(wellOperationRepository, categoryRepository) + }, + { + WellOperation.IdOperationTypePlan, + () => new WellOperationParser(wellOperationRepository, categoryRepository) + } + }; + } - public IParserService CreateParser(int id) - where TOptions : IParserOptionsRequest - { - var parser = parsers[id].Invoke(); + public IParserService CreateParser(int id) + where TOptions : IParserOptionsRequest + { + var parser = parsers[id].Invoke(); - return parser as IParserService - ?? throw new ArgumentNullException(nameof(id), "Не удалось распознать файл"); - } + return parser as IParserService + ?? throw new ArgumentNullException(nameof(id), "Не удалось распознать файл"); + } } \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/WellOperations/WellOperationExport.cs b/AsbCloudInfrastructure/Services/WellOperations/WellOperationExport.cs index 66e52fd8..cdb58cc6 100644 --- a/AsbCloudInfrastructure/Services/WellOperations/WellOperationExport.cs +++ b/AsbCloudInfrastructure/Services/WellOperations/WellOperationExport.cs @@ -14,37 +14,37 @@ using AsbCloudInfrastructure.Services.ExcelServices.Templates; namespace AsbCloudInfrastructure.Services.WellOperations; public class WellOperationExport : ExcelExportService - where TTemplate : class, ITemplateParameters, new() + where TTemplate : class, ITemplateParameters, new() { - private readonly IWellService wellService; - private readonly IWellOperationRepository wellOperationRepository; + private readonly IWellService wellService; + private readonly IWellOperationRepository wellOperationRepository; - public WellOperationExport(IWellOperationRepository wellOperationRepository, - IWellService wellService) - { - this.wellOperationRepository = wellOperationRepository; - this.wellService = wellService; - } + public WellOperationExport(IWellOperationRepository wellOperationRepository, + IWellService wellService) + { + this.wellOperationRepository = wellOperationRepository; + this.wellService = wellService; + } - protected override async Task BuildFileNameAsync(WellOperationExportRequest options, CancellationToken token) - { - var caption = await wellService.GetWellCaptionByIdAsync(options.IdWell, token); + protected override async Task BuildFileNameAsync(WellOperationExportRequest options, CancellationToken token) + { + var caption = await wellService.GetWellCaptionByIdAsync(options.IdWell, token); - return options.IdType switch - { - WellOperation.IdOperationTypeFact => $"{caption}_Фактические_операции.xlsx", - WellOperation.IdOperationTypePlan => $"{caption}_Плановые_операции.xlsx", - _ => throw new ArgumentOutOfRangeException(nameof(options.IdType)) - }; - } + return options.IdType switch + { + WellOperation.IdOperationTypeFact => $"{caption}_Фактические_операции.xlsx", + WellOperation.IdOperationTypePlan => $"{caption}_Плановые_операции.xlsx", + _ => throw new ArgumentOutOfRangeException(nameof(options.IdType)) + }; + } - protected override Task> GetDtosAsync(WellOperationExportRequest options, CancellationToken token) - { - var request = new WellOperationRequest(new[] { options.IdWell }) - { - OperationType = options.IdType, - }; - - return wellOperationRepository.GetAsync(request, token); - } + protected override Task> GetDtosAsync(WellOperationExportRequest options, CancellationToken token) + { + var request = new WellOperationRequest(new[] { options.IdWell }) + { + OperationType = options.IdType, + }; + + return wellOperationRepository.GetAsync(request, token); + } } \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/WellOperations/WellOperationParser.cs b/AsbCloudInfrastructure/Services/WellOperations/WellOperationParser.cs index 519b252a..a66f19ad 100644 --- a/AsbCloudInfrastructure/Services/WellOperations/WellOperationParser.cs +++ b/AsbCloudInfrastructure/Services/WellOperations/WellOperationParser.cs @@ -12,66 +12,66 @@ using AsbCloudInfrastructure.Services.ExcelServices.Templates; namespace AsbCloudInfrastructure.Services.WellOperations; public class WellOperationParser : ExcelWellRelatedParser - where TTemplateParameters : class, ITemplateParameters, new() + where TTemplateParameters : class, ITemplateParameters, new() { - private readonly IEnumerable sectionTypes; - private readonly IEnumerable categories; + private readonly IEnumerable sectionTypes; + private readonly IEnumerable categories; - public WellOperationParser(IWellOperationRepository wellOperationRepository, - IWellOperationCategoryRepository categoryRepository) - { - categories = categoryRepository.Get(false); - sectionTypes = wellOperationRepository.GetSectionTypes(); - } + public WellOperationParser(IWellOperationRepository wellOperationRepository, + IWellOperationCategoryRepository categoryRepository) + { + categories = categoryRepository.Get(false); + sectionTypes = wellOperationRepository.GetSectionTypes(); + } - public override ParserResultDto Parse(Stream file, WellOperationParserRequest options) - { - var result = base.Parse(file, options); + public override ParserResultDto Parse(Stream file, WellOperationParserRequest options) + { + var result = base.Parse(file, options); - foreach (var dto in result.Item) - { - dto.Item.IdWell = options.IdWell; - dto.Item.IdType = options.IdType; - dto.Item.DateStart = new DateTimeOffset(dto.Item.DateStart.DateTime, options.WellTimezone.Offset); - } + foreach (var dto in result.Item) + { + dto.Item.IdWell = options.IdWell; + dto.Item.IdType = options.IdType; + dto.Item.DateStart = new DateTimeOffset(dto.Item.DateStart.DateTime, options.WellTimezone.Offset); + } - return result; - } + return result; + } - protected override WellOperationDto BuildDto(IDictionary row, int rowNumber) - { - var dto = base.BuildDto(row, rowNumber); + protected override WellOperationDto BuildDto(IDictionary row, int rowNumber) + { + var dto = base.BuildDto(row, rowNumber); - var sectionType = sectionTypes.FirstOrDefault(s => - string.Equals(s.Caption.Trim(), dto.WellSectionTypeCaption?.Trim(), StringComparison.CurrentCultureIgnoreCase)); + var sectionType = sectionTypes.FirstOrDefault(s => + string.Equals(s.Caption.Trim(), dto.WellSectionTypeCaption?.Trim(), StringComparison.CurrentCultureIgnoreCase)); - if (sectionType is null) - { - var message = string.Format(XLExtentions.ProblemDetailsTemplate, - TemplateParameters.SheetName, - rowNumber, - TemplateParameters.Cells[nameof(WellOperationDto.WellSectionTypeCaption)].ColumnNumber, - "Указана некорректная секция"); - throw new FileFormatException(message); - } + if (sectionType is null) + { + var message = string.Format(XLExtentions.ProblemDetailsTemplate, + TemplateParameters.SheetName, + rowNumber, + TemplateParameters.Cells[nameof(WellOperationDto.WellSectionTypeCaption)].ColumnNumber, + "Указана некорректная секция"); + throw new FileFormatException(message); + } - var category = categories.FirstOrDefault(c => - string.Equals(c.Name.Trim(), dto.OperationCategoryName?.Trim(), StringComparison.CurrentCultureIgnoreCase)); + var category = categories.FirstOrDefault(c => + string.Equals(c.Name.Trim(), dto.OperationCategoryName?.Trim(), StringComparison.CurrentCultureIgnoreCase)); - if (category is null) - { - var message = string.Format(XLExtentions.ProblemDetailsTemplate, - TemplateParameters.SheetName, - rowNumber, - TemplateParameters.Cells[nameof(WellOperationDto.OperationCategoryName)].ColumnNumber, - "Указана некорректная операция"); - throw new FileFormatException(message); - } + if (category is null) + { + var message = string.Format(XLExtentions.ProblemDetailsTemplate, + TemplateParameters.SheetName, + rowNumber, + TemplateParameters.Cells[nameof(WellOperationDto.OperationCategoryName)].ColumnNumber, + "Указана некорректная операция"); + throw new FileFormatException(message); + } - dto.IdWellSectionType = sectionType.Id; - dto.IdCategory = category.Id; - dto.IdParentCategory = category.IdParent; - - return dto; - } + dto.IdWellSectionType = sectionType.Id; + dto.IdCategory = category.Id; + dto.IdParentCategory = category.IdParent; + + return dto; + } } \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/WellService.cs b/AsbCloudInfrastructure/Services/WellService.cs index 2c361e38..baa51b14 100644 --- a/AsbCloudInfrastructure/Services/WellService.cs +++ b/AsbCloudInfrastructure/Services/WellService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Exceptions; using AsbCloudApp.Repositories; using AsbCloudApp.Requests; diff --git a/AsbCloudInfrastructure/Services/WellboreService.cs b/AsbCloudInfrastructure/Services/WellboreService.cs index 92a94b5d..ffb9cb75 100644 --- a/AsbCloudInfrastructure/Services/WellboreService.cs +++ b/AsbCloudInfrastructure/Services/WellboreService.cs @@ -12,84 +12,84 @@ namespace AsbCloudInfrastructure.Services; public class WellboreService : IWellboreService { - const string WellboreNameFormat = "Ствол {0}"; - private readonly IWellService wellService; - private readonly IWellOperationRepository wellOperationRepository; + const string WellboreNameFormat = "Ствол {0}"; + private readonly IWellService wellService; + private readonly IWellOperationRepository wellOperationRepository; private readonly ITelemetryDataCache telemetryDataCache; public WellboreService( - IWellService wellService, - IWellOperationRepository wellOperationRepository, - ITelemetryDataCache telemetryDataCache) - { - this.wellService = wellService; - this.wellOperationRepository = wellOperationRepository; + IWellService wellService, + IWellOperationRepository wellOperationRepository, + ITelemetryDataCache telemetryDataCache) + { + this.wellService = wellService; + this.wellOperationRepository = wellOperationRepository; this.telemetryDataCache = telemetryDataCache; } - public async Task> GetWellboresAsync(IEnumerable idsWells, - CancellationToken token) - { - var wellRequest = new WellRequest { Ids = idsWells }; - var wells = await wellService.GetAsync(wellRequest, token); + public async Task> GetWellboresAsync(IEnumerable idsWells, + CancellationToken token) + { + var wellRequest = new WellRequest { Ids = idsWells }; + var wells = await wellService.GetAsync(wellRequest, token); var rowSections = await wellOperationRepository.GetSectionsAsync(idsWells, token); - var groupedSections = rowSections - .Where(section => section.IdType == 1) - .GroupBy(s => s.IdWell); + var groupedSections = rowSections + .Where(section => section.IdType == 1) + .GroupBy(s => s.IdWell); - var wellbores = wells + var wellbores = wells .SelectMany(well => { - var wellSections = groupedSections.FirstOrDefault(group => group.Key == well.Id); - if (wellSections is not null) - return MakeWellboreBySections(wellSections, well); - else - return MakeWellboreDefault(well); + var wellSections = groupedSections.FirstOrDefault(group => group.Key == well.Id); + if (wellSections is not null) + return MakeWellboreBySections(wellSections, well); + else + return MakeWellboreDefault(well); }) - .OrderBy(w => w.Well.Id) - .ThenBy(w => w.Id); + .OrderBy(w => w.Well.Id) + .ThenBy(w => w.Id); - return wellbores; + return wellbores; } private IEnumerable MakeWellboreDefault(WellDto well) { - var wellbore = new WellboreDto { - Id = 1, - Name = string.Format(WellboreNameFormat, 1), - Well = well, + var wellbore = new WellboreDto { + Id = 1, + Name = string.Format(WellboreNameFormat, 1), + Well = well, }; - //if(well.) + //if(well.) - if(well.IdTelemetry is not null) - { - var dataCache = telemetryDataCache.GetOrDefaultFirstLast(well.IdTelemetry.Value); - if (dataCache is not null) - { - wellbore.DateStart = dataCache.Value.First.DateTime; - wellbore.DepthStart = dataCache.Value.First.WellDepth; + if(well.IdTelemetry is not null) + { + var dataCache = telemetryDataCache.GetOrDefaultFirstLast(well.IdTelemetry.Value); + if (dataCache is not null) + { + wellbore.DateStart = dataCache.Value.First.DateTime; + wellbore.DepthStart = dataCache.Value.First.WellDepth; wellbore.DateEnd = dataCache.Value.Last.DateTime; wellbore.DepthEnd = dataCache.Value.Last.WellDepth; } - } + } return new[] { wellbore }; } private IEnumerable MakeWellboreBySections(IEnumerable sections, WellDto well) { - var orderedSections = sections.OrderBy(s => s.DateStart); - var wellbores = new List(); - int wellboreId = 1; + var orderedSections = sections.OrderBy(s => s.DateStart); + var wellbores = new List(); + int wellboreId = 1; - SectionByOperationsDto? preSection = null; - WellboreDto? wellbore = null; + SectionByOperationsDto? preSection = null; + WellboreDto? wellbore = null; foreach (var section in orderedSections) - { - if (wellbore is null || wellbore.DepthEnd > section.DepthStart) - { + { + if (wellbore is null || wellbore.DepthEnd > section.DepthStart) + { wellbore = new WellboreDto { Name = string.Format(WellboreNameFormat, wellboreId), @@ -106,17 +106,17 @@ public class WellboreService : IWellboreService wellboreId++; } - else - { - wellbore.DepthEnd = section.DepthEnd; - wellbore.DateEnd = section.DateEnd; - } + else + { + wellbore.DepthEnd = section.DepthEnd; + wellbore.DateEnd = section.DateEnd; + } preSection = section; } if (wellbore is not null) - { + { if (well.IdTelemetry is not null) { var dataCache = telemetryDataCache.GetOrDefaultFirstLast(well.IdTelemetry.Value); diff --git a/AsbCloudInfrastructure/Services/WitsInfoService.cs b/AsbCloudInfrastructure/Services/WitsInfoService.cs index 12ce6c9c..7e8ac40a 100644 --- a/AsbCloudInfrastructure/Services/WitsInfoService.cs +++ b/AsbCloudInfrastructure/Services/WitsInfoService.cs @@ -1,4 +1,4 @@ -using AsbWitsInfo; +using AsbWitsInfo; using System.Collections.Generic; namespace AsbCloudInfrastructure.Services diff --git a/AsbCloudInfrastructure/Services/_Readme.md b/AsbCloudInfrastructure/Services/_Readme.md index d05ae29e..3e5f15ab 100644 --- a/AsbCloudInfrastructure/Services/_Readme.md +++ b/AsbCloudInfrastructure/Services/_Readme.md @@ -1,4 +1,4 @@ -# Создание репозитория для сервися +# Создание репозитория для сервися 1. Создать интерфейс репозитория в AsbCloudApp.Services 2. Создать репозиторий в AsbCloudInfrastructure.Repository, наследоваться от созданного интерфейса, в нем добавить работу с БД diff --git a/AsbCloudInfrastructure/Startup.cs b/AsbCloudInfrastructure/Startup.cs index 68c0d5b7..c6a83d17 100644 --- a/AsbCloudInfrastructure/Startup.cs +++ b/AsbCloudInfrastructure/Startup.cs @@ -1,4 +1,4 @@ -using AsbCloudDb.Model; +using AsbCloudDb.Model; using AsbCloudInfrastructure.Services.DetectOperations; using AsbCloudInfrastructure.Services; using Microsoft.Extensions.DependencyInjection; @@ -31,10 +31,10 @@ namespace AsbCloudInfrastructure var backgroundWorker = provider.GetRequiredService(); backgroundWorker.Add(TimeSpan.FromDays(1)); backgroundWorker.Add(TimeSpan.FromMinutes(30)); - backgroundWorker.Add(TimeSpan.FromMinutes(15)); - backgroundWorker.Add(TimeSpan.FromMinutes(15)); - backgroundWorker.Add(TimeSpan.FromMinutes(30)); - backgroundWorker.Add(MakeMemoryMonitoringWork(), TimeSpan.FromMinutes(1)); + backgroundWorker.Add(TimeSpan.FromMinutes(0)); + backgroundWorker.Add(TimeSpan.FromMinutes(0)); + backgroundWorker.Add(TimeSpan.FromMinutes(0)); + backgroundWorker.Add(MakeMemoryMonitoringWork(), TimeSpan.FromMinutes(0)); var notificationBackgroundWorker = provider.GetRequiredService(); } diff --git a/AsbCloudInfrastructure/ValidationExtensions.cs b/AsbCloudInfrastructure/ValidationExtensions.cs index feb9c06b..be78a4fa 100644 --- a/AsbCloudInfrastructure/ValidationExtensions.cs +++ b/AsbCloudInfrastructure/ValidationExtensions.cs @@ -5,13 +5,13 @@ namespace AsbCloudInfrastructure; public static class ValidationExtensions { - public static bool Validate(this IValidatableObject validatableObject, ICollection validationResults) - { - var validationContext = new ValidationContext(validatableObject, serviceProvider: null, items: null); - - foreach (var validationResult in validatableObject.Validate(validationContext)) - validationResults.Add(validationResult); + public static bool Validate(this IValidatableObject validatableObject, ICollection validationResults) + { + var validationContext = new ValidationContext(validatableObject, serviceProvider: null, items: null); + + foreach (var validationResult in validatableObject.Validate(validationContext)) + validationResults.Add(validationResult); - return Validator.TryValidateObject(validatableObject, validationContext, validationResults, true); - } + return Validator.TryValidateObject(validatableObject, validationContext, validationResults, true); + } } \ No newline at end of file diff --git a/AsbCloudInfrastructure/XLExtentions.cs b/AsbCloudInfrastructure/XLExtentions.cs index b542c1d1..7c85c0a6 100644 --- a/AsbCloudInfrastructure/XLExtentions.cs +++ b/AsbCloudInfrastructure/XLExtentions.cs @@ -1,4 +1,4 @@ -using ClosedXML.Excel; +using ClosedXML.Excel; using System; using System.IO; using System.Linq; @@ -7,13 +7,13 @@ namespace AsbCloudInfrastructure; public static class XLExtentions { - public const string ProblemDetailsTemplate = "Лист: {0}, Строка: {1}, Столбец: {2}. {3}"; - public const string NotFoundSheetTemplate = "Книга excel не содержит листа {0}"; - public const string InvalidValueTemplate = "Лист: {0}, Строка: {1}, Столбец: {2}. Содержит некорректное значение"; - - public static IXLWorksheet GetWorksheet(this IXLWorkbook workbook, string sheetName) => - workbook.Worksheets.FirstOrDefault(ws => string.Equals(ws.Name.Trim(), sheetName.Trim(), StringComparison.CurrentCultureIgnoreCase)) - ?? throw new FileFormatException(string.Format(NotFoundSheetTemplate, sheetName)); + public const string ProblemDetailsTemplate = "Лист: {0}, Строка: {1}, Столбец: {2}. {3}"; + public const string NotFoundSheetTemplate = "Книга excel не содержит листа {0}"; + public const string InvalidValueTemplate = "Лист: {0}, Строка: {1}, Столбец: {2}. Содержит некорректное значение"; + + public static IXLWorksheet GetWorksheet(this IXLWorkbook workbook, string sheetName) => + workbook.Worksheets.FirstOrDefault(ws => string.Equals(ws.Name.Trim(), sheetName.Trim(), StringComparison.CurrentCultureIgnoreCase)) + ?? throw new FileFormatException(string.Format(NotFoundSheetTemplate, sheetName)); public static IXLCell SetCellValue(this IXLCell cell, T value, string? format = null) { @@ -21,12 +21,12 @@ public static class XLExtentions { cell.Style.DateFormat.Format = format ?? "DD.MM.YYYY HH:MM:SS"; - if (value is DateTimeOffset dateTimeOffset) - { - cell.Value = XLCellValue.FromObject(dateTimeOffset.DateTime); - return cell; - } - } + if (value is DateTimeOffset dateTimeOffset) + { + cell.Value = XLCellValue.FromObject(dateTimeOffset.DateTime); + return cell; + } + } cell.Value = XLCellValue.FromObject(value); @@ -47,12 +47,12 @@ public static class XLExtentions if (cell.IsEmpty() && default(T) == null) return default; - return cell.GetValue(); - } - catch - { - var message = string.Format(InvalidValueTemplate, cell.Worksheet.Name, cell.Address.RowNumber, cell.Address.ColumnNumber); - throw new FileFormatException(message); - } - } + return cell.GetValue(); + } + catch + { + var message = string.Format(InvalidValueTemplate, cell.Worksheet.Name, cell.Address.RowNumber, cell.Address.ColumnNumber); + throw new FileFormatException(message); + } + } } \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/ApiTokenHelper.cs b/AsbCloudWebApi.IntegrationTests/ApiTokenHelper.cs index 2e4e5dc0..ad66a5ee 100644 --- a/AsbCloudWebApi.IntegrationTests/ApiTokenHelper.cs +++ b/AsbCloudWebApi.IntegrationTests/ApiTokenHelper.cs @@ -8,43 +8,43 @@ namespace AsbCloudWebApi.IntegrationTests; public static class ApiTokenHelper { - public static string GetAdminUserToken() - { - var user = new User() - { - Id = 1, - IdCompany = 1, - Login = "test_user" - }; - var roles = new[] { "root" }; + public static string GetAdminUserToken() + { + var user = new User() + { + Id = 1, + IdCompany = 1, + Login = "test_user" + }; + var roles = new[] { "root" }; - return CreateToken(user, roles); - } + return CreateToken(user, roles); + } - private static string CreateToken(User user, IEnumerable roles) - { - var claims = new List - { - new("id", user.Id.ToString()), - new(ClaimsIdentity.DefaultNameClaimType, user.Login), - new("idCompany", user.IdCompany.ToString()), - }; + private static string CreateToken(User user, IEnumerable roles) + { + var claims = new List + { + new("id", user.Id.ToString()), + new(ClaimsIdentity.DefaultNameClaimType, user.Login), + new("idCompany", user.IdCompany.ToString()), + }; - claims.AddRange(roles.Select(role => new Claim(ClaimTypes.Role, role))); + claims.AddRange(roles.Select(role => new Claim(ClaimTypes.Role, role))); - const string secret = "супер секретный ключ для шифрования"; + const string secret = "супер секретный ключ для шифрования"; - var key = Encoding.ASCII.GetBytes(secret); - var tokenDescriptor = new SecurityTokenDescriptor - { - Issuer = "a", - Audience = "a", - Subject = new ClaimsIdentity(claims), - Expires = DateTime.UtcNow.AddHours(1), - SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature) - }; - var tokenHandler = new JwtSecurityTokenHandler(); - var token = tokenHandler.CreateToken(tokenDescriptor); - return tokenHandler.WriteToken(token); - } + var key = Encoding.ASCII.GetBytes(secret); + var tokenDescriptor = new SecurityTokenDescriptor + { + Issuer = "a", + Audience = "a", + Subject = new ClaimsIdentity(claims), + Expires = DateTime.UtcNow.AddHours(1), + SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature) + }; + var tokenHandler = new JwtSecurityTokenHandler(); + var token = tokenHandler.CreateToken(tokenDescriptor); + return tokenHandler.WriteToken(token); + } } \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/AsbCloudWebApi.IntegrationTests.csproj b/AsbCloudWebApi.IntegrationTests/AsbCloudWebApi.IntegrationTests.csproj index b23176e3..3b2c58cf 100644 --- a/AsbCloudWebApi.IntegrationTests/AsbCloudWebApi.IntegrationTests.csproj +++ b/AsbCloudWebApi.IntegrationTests/AsbCloudWebApi.IntegrationTests.csproj @@ -8,21 +8,29 @@ - - - - - + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive all + + + + + + + + @@ -32,9 +40,4 @@ - - - - - diff --git a/AsbCloudWebApi.IntegrationTests/AssemblyExtensions.cs b/AsbCloudWebApi.IntegrationTests/AssemblyExtensions.cs index d4013aa1..cf2b7803 100644 --- a/AsbCloudWebApi.IntegrationTests/AssemblyExtensions.cs +++ b/AsbCloudWebApi.IntegrationTests/AssemblyExtensions.cs @@ -4,22 +4,22 @@ namespace AsbCloudWebApi.IntegrationTests; internal static class AssemblyExtensions { - internal static Stream GetFileCopyStream(this Assembly assembly, string templateName) - { - var resourceName = assembly - .GetManifestResourceNames() - .FirstOrDefault(n => n.EndsWith(templateName)); + internal static Stream GetFileCopyStream(this Assembly assembly, string templateName) + { + var resourceName = assembly + .GetManifestResourceNames() + .FirstOrDefault(n => n.EndsWith(templateName)); - if (string.IsNullOrWhiteSpace(resourceName)) - throw new ArgumentNullException(nameof(resourceName)); + if (string.IsNullOrWhiteSpace(resourceName)) + throw new ArgumentNullException(nameof(resourceName)); - using var stream = Assembly.GetExecutingAssembly() - .GetManifestResourceStream(resourceName); + using var stream = Assembly.GetExecutingAssembly() + .GetManifestResourceStream(resourceName); - var memoryStream = new MemoryStream(); - stream?.CopyTo(memoryStream); - memoryStream.Position = 0; + var memoryStream = new MemoryStream(); + stream?.CopyTo(memoryStream); + memoryStream.Position = 0; - return memoryStream; - } + return memoryStream; + } } \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/BaseIntegrationTest.cs b/AsbCloudWebApi.IntegrationTests/BaseIntegrationTest.cs index aeaab07f..43166ea7 100644 --- a/AsbCloudWebApi.IntegrationTests/BaseIntegrationTest.cs +++ b/AsbCloudWebApi.IntegrationTests/BaseIntegrationTest.cs @@ -5,22 +5,22 @@ using Xunit; namespace AsbCloudWebApi.IntegrationTests; public abstract class BaseIntegrationTest : IClassFixture, - IDisposable + IDisposable { - protected readonly IServiceScope scope; + protected readonly IServiceScope scope; - protected readonly AsbCloudDbContext dbContext; + protected readonly AsbCloudDbContext dbContext; - protected BaseIntegrationTest(WebAppFactoryFixture factory) - { - scope = factory.Services.CreateScope(); - - dbContext = scope.ServiceProvider.GetRequiredService(); - } + protected BaseIntegrationTest(WebAppFactoryFixture factory) + { + scope = factory.Services.CreateScope(); + + dbContext = scope.ServiceProvider.GetRequiredService(); + } - public void Dispose() - { - scope.Dispose(); - dbContext.Dispose(); - } + public void Dispose() + { + scope.Dispose(); + dbContext.Dispose(); + } } \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/Clients/IAdminDepositClient.cs b/AsbCloudWebApi.IntegrationTests/Clients/IAdminDepositClient.cs index bd47235b..7cb21cc6 100644 --- a/AsbCloudWebApi.IntegrationTests/Clients/IAdminDepositClient.cs +++ b/AsbCloudWebApi.IntegrationTests/Clients/IAdminDepositClient.cs @@ -5,23 +5,23 @@ namespace AsbCloudWebApi.IntegrationTests.Clients; public interface IAdminDepositClient { - private const string BaseRoute = "/api/admin/deposit"; + private const string BaseRoute = "/api/admin/deposit"; - [Post(BaseRoute)] - Task> InsertAsync([Body] DepositBaseDto deposit); + [Post(BaseRoute)] + Task> InsertAsync([Body] DepositBaseDto deposit); - [Post($"{BaseRoute}/range")] - Task> InsertRangeAsync([Body] IEnumerable deposits); + [Post($"{BaseRoute}/range")] + Task> InsertRangeAsync([Body] IEnumerable deposits); - [Put($"{BaseRoute}")] - Task> UpdateAsync([Body] DepositBaseDto deposit); + [Put($"{BaseRoute}")] + Task> UpdateAsync([Body] DepositBaseDto deposit); - [Get(BaseRoute + "/{id}")] - Task> GetOrDefaultAsync(int id); + [Get(BaseRoute + "/{id}")] + Task> GetOrDefaultAsync(int id); - [Get(BaseRoute)] - Task>> GetAllAsync(); - - [Delete(BaseRoute + "/{id}")] - Task> DeleteAsync(int id); + [Get(BaseRoute)] + Task>> GetAllAsync(); + + [Delete(BaseRoute + "/{id}")] + Task> DeleteAsync(int id); } diff --git a/AsbCloudWebApi.IntegrationTests/Clients/ICrudWellRelatedClient.cs b/AsbCloudWebApi.IntegrationTests/Clients/ICrudWellRelatedClient.cs index 7f99ba5f..079af1a5 100644 --- a/AsbCloudWebApi.IntegrationTests/Clients/ICrudWellRelatedClient.cs +++ b/AsbCloudWebApi.IntegrationTests/Clients/ICrudWellRelatedClient.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using Refit; namespace AsbCloudWebApi.IntegrationTests.Clients; diff --git a/AsbCloudWebApi.IntegrationTests/Clients/IDetectedOperationClient.cs b/AsbCloudWebApi.IntegrationTests/Clients/IDetectedOperationClient.cs index ecf37d37..304a96d1 100644 --- a/AsbCloudWebApi.IntegrationTests/Clients/IDetectedOperationClient.cs +++ b/AsbCloudWebApi.IntegrationTests/Clients/IDetectedOperationClient.cs @@ -7,17 +7,17 @@ namespace AsbCloudWebApi.IntegrationTests.Clients; public interface IDetectedOperationClient { - private const string BaseRoute = "/api/well/{idWell}/DetectedOperation"; + private const string BaseRoute = "/api/well/{idWell}/DetectedOperation"; - [Post(BaseRoute)] - Task> InsertRangeAsync(int idWell, IEnumerable dtos); + [Post(BaseRoute)] + Task> InsertRangeAsync(int idWell, IEnumerable dtos); - [Put(BaseRoute)] - Task> UpdateRangeAsync(int idWell, IEnumerable dtos); + [Put(BaseRoute)] + Task> UpdateRangeAsync(int idWell, IEnumerable dtos); - [Delete(BaseRoute)] - Task> DeleteRangeAsync(int idWell, [Body] IEnumerable ids); + [Delete(BaseRoute)] + Task> DeleteRangeAsync(int idWell, [Body] IEnumerable ids); - [Get(BaseRoute)] - Task>> GetAsync(int idWell, [Query] DetectedOperationRequest request); + [Get(BaseRoute)] + Task>> GetAsync(int idWell, [Query] DetectedOperationRequest request); } \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/Clients/IDrillTestControllerClient.cs b/AsbCloudWebApi.IntegrationTests/Clients/IDrillTestControllerClient.cs index ba622557..fa1cd81e 100644 --- a/AsbCloudWebApi.IntegrationTests/Clients/IDrillTestControllerClient.cs +++ b/AsbCloudWebApi.IntegrationTests/Clients/IDrillTestControllerClient.cs @@ -21,7 +21,7 @@ public interface IDrillTestControllerClient int id, CancellationToken cancellationToken); - [HttpGet("/api/well/{idWell}/DrillTest/all")] + [Get("/api/well/{idWell}/DrillTest/all")] Task>> GetListAsync( int idWell, FileReportRequest request, diff --git a/AsbCloudWebApi.IntegrationTests/Clients/IGtrWitsClient.cs b/AsbCloudWebApi.IntegrationTests/Clients/IGtrWitsClient.cs index 517b98ef..fd8c957e 100644 --- a/AsbCloudWebApi.IntegrationTests/Clients/IGtrWitsClient.cs +++ b/AsbCloudWebApi.IntegrationTests/Clients/IGtrWitsClient.cs @@ -6,8 +6,8 @@ namespace AsbCloudWebApi.IntegrationTests.Clients; public interface IGtrWitsClient { - private const string BaseRoute = "/api/gtrWits"; + private const string BaseRoute = "/api/gtrWits"; - [Get(BaseRoute)] - Task>> GetAllAsync(int idWell, [Query] GtrRequest request); + [Get(BaseRoute)] + Task>> GetAllAsync(int idWell, [Query] GtrRequest request); } \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/Clients/IProcessMapPlanClient.cs b/AsbCloudWebApi.IntegrationTests/Clients/IProcessMapPlanClient.cs new file mode 100644 index 00000000..999362c5 --- /dev/null +++ b/AsbCloudWebApi.IntegrationTests/Clients/IProcessMapPlanClient.cs @@ -0,0 +1,41 @@ +using AsbCloudApp.Data; +using AsbCloudApp.Data.ProcessMaps; +using Refit; + +namespace AsbCloudWebApi.IntegrationTests.Clients; + +public interface IProcessMapPlanClient where TDto : ProcessMapPlanBaseDto +{ + public const string BaseRoute = "/api/well/{idWell}/{controller}"; + + [Post(BaseRoute)] + Task> InsertRange(int idWell, string controller, [Body] IEnumerable dtos); + + [Post($"{BaseRoute}/replace")] + Task> ClearAndInsertRange(int idWell, string controller, [Body] IEnumerable dtos); + + [Delete(BaseRoute)] + Task> DeleteRange(int idWell, string controller, [Body] IEnumerable ids); + + [Delete($"{BaseRoute}/clear")] + Task> Clear(int idWell, string controller); + + [Get(BaseRoute)] + Task>> Get(int idWell, string controller); + + [Get($"{BaseRoute}/changelogByMoment")] + Task>>> Get(int idWell, string controller, DateTimeOffset? moment); + + [Get("/api/telemetry/{uid}/{controller}")] + Task>>> Get(string uid, string controller, DateTimeOffset? updateFrom); + + [Get($"{BaseRoute}/dates")] + Task>> GetDatesChange(int idWell, string controller); + + [Put(BaseRoute)] + Task> UpdateOrInsertRange(int idWell, string controller, IEnumerable dtos); + + [Multipart] + [Post(BaseRoute + "/parse")] + Task>> Parse(int idWell, string controller, [AliasAs("file")] StreamPart stream); +} diff --git a/AsbCloudWebApi.IntegrationTests/Clients/IProcessMapPlanDrillingClient.cs b/AsbCloudWebApi.IntegrationTests/Clients/IProcessMapPlanDrillingClient.cs index 93ce768b..5d867a97 100644 --- a/AsbCloudWebApi.IntegrationTests/Clients/IProcessMapPlanDrillingClient.cs +++ b/AsbCloudWebApi.IntegrationTests/Clients/IProcessMapPlanDrillingClient.cs @@ -1,19 +1,19 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Data.ProcessMaps; using AsbCloudApp.Requests; using Refit; namespace AsbCloudWebApi.IntegrationTests.Clients; -public interface IProcessMapPlanDrillingClient +public interface IProcessMapPlanDrillingClient where TDto : ProcessMapPlanBaseDto { private const string BaseRoute = "/api/well/{idWell}/ProcessMapPlanDrilling"; [Post(BaseRoute)] - Task> InsertRange(int idWell, [Body] IEnumerable dtos); + Task> InsertRange(int idWell, [Body] IEnumerable dtos); [Post($"{BaseRoute}/replace")] - Task> ClearAndInsertRange(int idWell, [Body] IEnumerable dtos); + Task> ClearAndInsertRange(int idWell, [Body] IEnumerable dtos); [Delete(BaseRoute)] Task> DeleteRange(int idWell, [Body] IEnumerable ids); @@ -22,18 +22,24 @@ public interface IProcessMapPlanDrillingClient Task> Clear(int idWell); [Get(BaseRoute)] - Task>> Get(int idWell, ProcessMapPlanBaseRequest request); + Task>> Get(int idWell); - [Get($"{BaseRoute}/changeLog")] - Task>> GetChangeLog(int idWell, DateOnly? date); + [Get($"{BaseRoute}/changelogByMoment")] + Task>>> Get(int idWell, DateTimeOffset? moment); + + [Get("/api/telemetry/{uid}/ProcessMapPlanDrilling")] + Task>>> Get(string uid, DateTimeOffset? updateFrom); + + [Get($"{BaseRoute}/changeLogForDate")] + Task>> GetChangeLog(int idWell, DateOnly? date); [Get($"{BaseRoute}/dates")] Task>> GetDatesChange(int idWell); [Put(BaseRoute)] - Task> UpdateOrInsertRange(int idWell, IEnumerable dtos); + Task> UpdateOrInsertRange(int idWell, IEnumerable dtos); [Multipart] [Post(BaseRoute + "/parse")] - Task>> Parse(int idWell, [AliasAs("file")] StreamPart stream); + Task>> Parse(int idWell, [AliasAs("file")] StreamPart stream); } diff --git a/AsbCloudWebApi.IntegrationTests/Clients/IProcessMapReportDrilling.cs b/AsbCloudWebApi.IntegrationTests/Clients/IProcessMapReportDrilling.cs index 92a4353b..428ce5f3 100644 --- a/AsbCloudWebApi.IntegrationTests/Clients/IProcessMapReportDrilling.cs +++ b/AsbCloudWebApi.IntegrationTests/Clients/IProcessMapReportDrilling.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Data.ProcessMaps; using AsbCloudApp.Data.ProcessMaps.Report; using AsbCloudApp.Requests; diff --git a/AsbCloudWebApi.IntegrationTests/Clients/ISetpointsClient.cs b/AsbCloudWebApi.IntegrationTests/Clients/ISetpointsClient.cs index c8e6e523..23a00376 100644 --- a/AsbCloudWebApi.IntegrationTests/Clients/ISetpointsClient.cs +++ b/AsbCloudWebApi.IntegrationTests/Clients/ISetpointsClient.cs @@ -5,8 +5,8 @@ namespace AsbCloudWebApi.IntegrationTests.Clients; public interface ISetpointsClient { - private const string BaseRoute = "/api/telemetry/{uid}/Setpoints"; + private const string BaseRoute = "/api/telemetry/{uid}/Setpoints"; - [Get(BaseRoute)] - Task>> GetByTelemetryUidAsync(string uid); + [Get(BaseRoute)] + Task>> GetByTelemetryUidAsync(string uid); } \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/Clients/ISlipsTimeClient.cs b/AsbCloudWebApi.IntegrationTests/Clients/ISlipsTimeClient.cs index a4cfd0ac..62f30ac7 100644 --- a/AsbCloudWebApi.IntegrationTests/Clients/ISlipsTimeClient.cs +++ b/AsbCloudWebApi.IntegrationTests/Clients/ISlipsTimeClient.cs @@ -6,8 +6,8 @@ namespace AsbCloudWebApi.IntegrationTests.Clients; public interface ISlipsTimeClient { - private const string BaseRoute = "/api/slipsStat"; + private const string BaseRoute = "/api/slipsStat"; - [Get(BaseRoute)] - Task>> GetAll([Query] OperationStatRequest request); + [Get(BaseRoute)] + Task>> GetAll([Query] OperationStatRequest request); } \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/Clients/ITelemetryControllerClient.cs b/AsbCloudWebApi.IntegrationTests/Clients/ITelemetryControllerClient.cs index 94f4293e..b34d597a 100644 --- a/AsbCloudWebApi.IntegrationTests/Clients/ITelemetryControllerClient.cs +++ b/AsbCloudWebApi.IntegrationTests/Clients/ITelemetryControllerClient.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.SAUB; +using AsbCloudApp.Data.SAUB; using Refit; namespace AsbCloudWebApi.IntegrationTests.Clients; diff --git a/AsbCloudWebApi.IntegrationTests/Clients/IWellClient.cs b/AsbCloudWebApi.IntegrationTests/Clients/IWellClient.cs index 1e6961a5..8d19c262 100644 --- a/AsbCloudWebApi.IntegrationTests/Clients/IWellClient.cs +++ b/AsbCloudWebApi.IntegrationTests/Clients/IWellClient.cs @@ -5,8 +5,8 @@ namespace AsbCloudWebApi.IntegrationTests.Clients; public interface IWellClient { - private const string BaseRoute = "/api/well"; + private const string BaseRoute = "/api/well"; - [Get(BaseRoute)] - Task>> GetWellsAsync(); + [Get(BaseRoute)] + Task>> GetWellsAsync(); } diff --git a/AsbCloudWebApi.IntegrationTests/Clients/IWellOperationClient.cs b/AsbCloudWebApi.IntegrationTests/Clients/IWellOperationClient.cs index 9a9a5b7e..11f6dcd5 100644 --- a/AsbCloudWebApi.IntegrationTests/Clients/IWellOperationClient.cs +++ b/AsbCloudWebApi.IntegrationTests/Clients/IWellOperationClient.cs @@ -8,27 +8,27 @@ namespace AsbCloudWebApi.IntegrationTests.Clients; public interface IWellOperationClient { - private const string BaseRoute = "/api/well/{idWell}/wellOperations"; + private const string BaseRoute = "/api/well/{idWell}/wellOperations"; - [Post(BaseRoute + "/{deleteBeforeInsert}")] - Task> InsertRangeAsync(int idWell, - bool deleteBeforeInsert, - [Body] IEnumerable dtos); + [Post(BaseRoute + "/{deleteBeforeInsert}")] + Task> InsertRangeAsync(int idWell, + bool deleteBeforeInsert, + [Body] IEnumerable dtos); - [Put(BaseRoute)] - Task> UpdateRangeAsync(int idWell, [Body] IEnumerable dtos); + [Put(BaseRoute)] + Task> UpdateRangeAsync(int idWell, [Body] IEnumerable dtos); - [Get(BaseRoute)] - Task>> GetPageOperationsAsync(int idWell, [Query] WellOperationRequestBase request); + [Get(BaseRoute)] + Task>> GetPageOperationsAsync(int idWell, [Query] WellOperationRequestBase request); - [Multipart] - [Post(BaseRoute + "/parse/{idType}")] - Task>> ParseAsync(int idWell, - int idType, - [AliasAs("file")] StreamPart file); + [Multipart] + [Post(BaseRoute + "/parse/{idType}")] + Task>> ParseAsync(int idWell, + int idType, + [AliasAs("file")] StreamPart file); - [Get(BaseRoute + "/export")] - Task> ExportAsync(int idWell, int idType); + [Get(BaseRoute + "/export")] + Task> ExportAsync(int idWell, int idType); [Get(BaseRoute + "/template")] Task> GetTemplate(int idWell, int idType); diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/AdminDepositControllerTest.cs b/AsbCloudWebApi.IntegrationTests/Controllers/AdminDepositControllerTest.cs index 06ce5f69..95455ff8 100644 --- a/AsbCloudWebApi.IntegrationTests/Controllers/AdminDepositControllerTest.cs +++ b/AsbCloudWebApi.IntegrationTests/Controllers/AdminDepositControllerTest.cs @@ -9,170 +9,170 @@ namespace AsbCloudWebApi.IntegrationTests.Controllers; public class AdminDepositControllerTest : BaseIntegrationTest { - private static readonly DepositBaseDto dto = new() - { - Caption = "test", - Latitude = 90, - Longitude = 100, - Timezone = new SimpleTimezoneDto - { - Hours = 1 - } - }; + private static readonly DepositBaseDto dto = new() + { + Caption = "test", + Latitude = 90, + Longitude = 100, + Timezone = new SimpleTimezoneDto + { + Hours = 1 + } + }; - private readonly IAdminDepositClient client; + private readonly IAdminDepositClient client; - public AdminDepositControllerTest(WebAppFactoryFixture factory) - : base(factory) - { - client = factory.GetAuthorizedHttpClient(string.Empty); - } + public AdminDepositControllerTest(WebAppFactoryFixture factory) + : base(factory) + { + client = factory.GetAuthorizedHttpClient(string.Empty); + } - [Fact] - public async Task Insert_returns_success() - { - //act - var response = await client.InsertAsync(dto); + [Fact] + public async Task Insert_returns_success() + { + //act + var response = await client.InsertAsync(dto); - //assert - Assert.Equal(HttpStatusCode.OK, response.StatusCode); - Assert.True(response.Content > 0); + //assert + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + Assert.True(response.Content > 0); - var entity = await dbContext.Deposits.FirstOrDefaultAsync(d => d.Id == response.Content); - var deposit = entity?.Adapt(); + var entity = await dbContext.Deposits.FirstOrDefaultAsync(d => d.Id == response.Content); + var deposit = entity?.Adapt(); - var excludeProps = new[] { nameof(DepositBaseDto.Id) }; - MatchHelper.Match(dto, deposit, excludeProps); - } + var excludeProps = new[] { nameof(DepositBaseDto.Id) }; + MatchHelper.Match(dto, deposit, excludeProps); + } - [Fact] - public async Task InsertRange_returns_success() - { - //act - var responce = await client.InsertRangeAsync(new[] { dto }); + [Fact] + public async Task InsertRange_returns_success() + { + //act + var responce = await client.InsertRangeAsync(new[] { dto }); - //assert - Assert.Equal(HttpStatusCode.OK, responce.StatusCode); - Assert.Equal(1, responce.Content); + //assert + Assert.Equal(HttpStatusCode.OK, responce.StatusCode); + Assert.Equal(1, responce.Content); - var entity = await dbContext.Deposits.OrderBy(d => d.Id).LastOrDefaultAsync(); - var deposit = entity?.Adapt(); + var entity = await dbContext.Deposits.OrderBy(d => d.Id).LastOrDefaultAsync(); + var deposit = entity?.Adapt(); - var excludeProps = new[] { nameof(DepositBaseDto.Id) }; - MatchHelper.Match(dto, deposit, excludeProps); - } + var excludeProps = new[] { nameof(DepositBaseDto.Id) }; + MatchHelper.Match(dto, deposit, excludeProps); + } - [Fact] - public async Task Update_returns_BadRequest_for_IdDeposit() - { - //arrange - var dtoBad = dto.Adapt(); + [Fact] + public async Task Update_returns_BadRequest_for_IdDeposit() + { + //arrange + var dtoBad = dto.Adapt(); - //act - var response = await client.UpdateAsync(dtoBad); + //act + var response = await client.UpdateAsync(dtoBad); - //assert - Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); - } + //assert + Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); + } - [Fact] - public async Task Update_returns_success() - { - //arrange - var insertResponse = await client.InsertAsync(dto); + [Fact] + public async Task Update_returns_success() + { + //arrange + var insertResponse = await client.InsertAsync(dto); - dto.Id = insertResponse.Content; - dto.Caption = "Test"; - dto.Latitude = 50; - dto.Longitude = 50; - dto.Timezone = new SimpleTimezoneDto - { - IsOverride = true, - Hours = 12 - }; + dto.Id = insertResponse.Content; + dto.Caption = "Test"; + dto.Latitude = 50; + dto.Longitude = 50; + dto.Timezone = new SimpleTimezoneDto + { + IsOverride = true, + Hours = 12 + }; - //act - var response = await client.UpdateAsync(dto); + //act + var response = await client.UpdateAsync(dto); - //assert - Assert.Equal(HttpStatusCode.OK, response.StatusCode); - Assert.True(response.Content > 0); + //assert + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + Assert.True(response.Content > 0); - var entity = await dbContext.Deposits.FirstOrDefaultAsync(d => d.Id == response.Content); - var deposit = entity?.Adapt(); + var entity = await dbContext.Deposits.FirstOrDefaultAsync(d => d.Id == response.Content); + var deposit = entity?.Adapt(); - MatchHelper.Match(dto, deposit); - } + MatchHelper.Match(dto, deposit); + } - [Fact] - public async Task GetOrDefault_returns_success() - { - //arrange - var insertResponse = await client.InsertAsync(dto); - var id = insertResponse.Content; + [Fact] + public async Task GetOrDefault_returns_success() + { + //arrange + var insertResponse = await client.InsertAsync(dto); + var id = insertResponse.Content; - //act - var response = await client.GetOrDefaultAsync(id); + //act + var response = await client.GetOrDefaultAsync(id); - //assert - Assert.Equal(HttpStatusCode.OK, response.StatusCode); - Assert.NotNull(response.Content); + //assert + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + Assert.NotNull(response.Content); - var deposit = response.Content; + var deposit = response.Content; - var excludeProps = new[] { nameof(DepositBaseDto.Id) }; - MatchHelper.Match(dto, deposit, excludeProps); - } + var excludeProps = new[] { nameof(DepositBaseDto.Id) }; + MatchHelper.Match(dto, deposit, excludeProps); + } - [Fact] - public async Task GetOrDefault_returns_NoContent_for_IdDeposit() - { - //act - var responce = await client.GetOrDefaultAsync(0); + [Fact] + public async Task GetOrDefault_returns_NoContent_for_IdDeposit() + { + //act + var responce = await client.GetOrDefaultAsync(0); - //assert - Assert.Equal(HttpStatusCode.NoContent, responce.StatusCode); - } + //assert + Assert.Equal(HttpStatusCode.NoContent, responce.StatusCode); + } - [Fact] - public async Task GetAll_returns_success() - { - //act - var response = await client.GetAllAsync(); + [Fact] + public async Task GetAll_returns_success() + { + //act + var response = await client.GetAllAsync(); - //assert - Assert.Equal(HttpStatusCode.OK, response.StatusCode); - Assert.NotNull(response.Content); + //assert + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + Assert.NotNull(response.Content); - var expectedCount = await dbContext.Deposits.CountAsync(); - Assert.Equal(expectedCount, response.Content.Count()); - } + var expectedCount = await dbContext.Deposits.CountAsync(); + Assert.Equal(expectedCount, response.Content.Count()); + } - [Fact] - public async Task Delete_returns_success() - { - //arrange - var insertResponse = await client.InsertAsync(dto); - var id = insertResponse.Content; + [Fact] + public async Task Delete_returns_success() + { + //arrange + var insertResponse = await client.InsertAsync(dto); + var id = insertResponse.Content; - //act - var response = await client.DeleteAsync(id); + //act + var response = await client.DeleteAsync(id); - //assert - Assert.Equal(HttpStatusCode.OK, response.StatusCode); - Assert.True(response.Content > 0); + //assert + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + Assert.True(response.Content > 0); - var entity = await dbContext.Deposits.FirstOrDefaultAsync(d => d.Id == dto.Id); - Assert.Null(entity); - } + var entity = await dbContext.Deposits.FirstOrDefaultAsync(d => d.Id == dto.Id); + Assert.Null(entity); + } - [Fact] - public async Task Delete_returns_NoContent_IdDeposit() - { - //act - var response = await client.DeleteAsync(0); + [Fact] + public async Task Delete_returns_NoContent_IdDeposit() + { + //act + var response = await client.DeleteAsync(0); - //assert - Assert.Equal(HttpStatusCode.NoContent, response.StatusCode); - } + //assert + Assert.Equal(HttpStatusCode.NoContent, response.StatusCode); + } } \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/DetectedOperationControllerTests.cs b/AsbCloudWebApi.IntegrationTests/Controllers/DetectedOperationControllerTests.cs index 5f518884..01a350b9 100644 --- a/AsbCloudWebApi.IntegrationTests/Controllers/DetectedOperationControllerTests.cs +++ b/AsbCloudWebApi.IntegrationTests/Controllers/DetectedOperationControllerTests.cs @@ -13,170 +13,167 @@ namespace AsbCloudWebApi.IntegrationTests.Controllers; public class DetectedOperationControllerTests : BaseIntegrationTest { - private readonly IDetectedOperationClient client; + private readonly IDetectedOperationClient client; - private readonly DetectedOperationDto dto = new() - { - IdCategory = WellOperationCategory.IdRotor, - DateStart = new DateTimeOffset(new DateTime(2023, 5, 12, 1,0,0, DateTimeKind.Utc)), - DateEnd = new DateTimeOffset(new DateTime(2023, 5, 12, 1,0,0, DateTimeKind.Utc)), - DepthStart = 0, - DepthEnd = 80, - OperationCategory = new WellOperationCategoryDto - { - Id = WellOperationCategory.IdRotor, - IdParent = WellOperationCategory.IdDrilling, - Name = "Бурение ротором" - }, - EnabledSubsystems = new EnabledSubsystems - { - IsAutoRotor = true - }, - Value = 400, - }; + private readonly DetectedOperationDto dto = new() + { + IdCategory = WellOperationCategory.IdRotor, + DateStart = new DateTimeOffset(new DateTime(2023, 5, 12, 1,0,0, DateTimeKind.Utc)), + DateEnd = new DateTimeOffset(new DateTime(2023, 5, 12, 1,0,0, DateTimeKind.Utc)), + DepthStart = 0, + DepthEnd = 80, + OperationCategory = new WellOperationCategoryDto + { + Id = WellOperationCategory.IdRotor, + IdParent = WellOperationCategory.IdDrilling, + Name = "Бурение ротором" + }, + EnabledSubsystems = new EnabledSubsystems + { + IsAutoRotor = true + }, + Value = 400, + }; - public DetectedOperationControllerTests(WebAppFactoryFixture factory) - : base(factory) - { - client = factory.GetAuthorizedHttpClient(string.Empty); + public DetectedOperationControllerTests(WebAppFactoryFixture factory) + : base(factory) + { + client = factory.GetAuthorizedHttpClient(string.Empty); - dbContext.CleanupDbSet(); - } + dbContext.CleanupDbSet(); + } - [Fact] - public async Task InsertRangeAsync_returns_success() - { - //arrange - var well = dbContext.Wells.First(); - dto.IdTelemetry = well.IdTelemetry!.Value; + [Fact] + public async Task InsertRangeAsync_returns_success() + { + //arrange + var well = dbContext.Wells.First(); + dto.IdTelemetry = well.IdTelemetry!.Value; - //act - var response = await client.InsertRangeAsync(well.Id, new[] { dto }); + //act + var response = await client.InsertRangeAsync(well.Id, new[] { dto }); - //assert - Assert.Equal(HttpStatusCode.OK, response.StatusCode); - Assert.NotNull(response.Content); - Assert.Equal(1, response.Content); - } + //assert + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + Assert.Equal(1, response.Content); + } - [Fact] - public async Task UpdateRangeAsync_returns_success() - { - //arrange - var well = dbContext.Wells.First(); - dto.IdTelemetry = well.IdTelemetry!.Value; + [Fact] + public async Task UpdateRangeAsync_returns_success() + { + //arrange + var well = dbContext.Wells.First(); + dto.IdTelemetry = well.IdTelemetry!.Value; - var entity = dto.Adapt(); - dbContext.DetectedOperations.Add(entity); - await dbContext.SaveChangesAsync(); - dto.Id = entity.Id; + var entity = dto.Adapt(); + dbContext.DetectedOperations.Add(entity); + await dbContext.SaveChangesAsync(); + dto.Id = entity.Id; - //act - var response = await client.UpdateRangeAsync(well.Id, new[] { dto }); + //act + var response = await client.UpdateRangeAsync(well.Id, new[] { dto }); - //assert - Assert.Equal(HttpStatusCode.OK, response.StatusCode); - Assert.NotNull(response.Content); - Assert.Equal(1, response.Content); - } + //assert + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + Assert.Equal(1, response.Content); + } - [Fact] - public async Task UpdateRangeAsync_returns_bad_request_when_id_is_invalid() - { - //arrange - var well = dbContext.Wells.First(); + [Fact] + public async Task UpdateRangeAsync_returns_bad_request_when_id_is_invalid() + { + //arrange + var well = dbContext.Wells.First(); - //act - var response = await client.UpdateRangeAsync(well.Id, new[] { dto }); + //act + var response = await client.UpdateRangeAsync(well.Id, new[] { dto }); - //assert - Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); - } + //assert + Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); + } - [Fact] - public async Task DeleteRangeAsync_returns_success() - { - //arrange - var well = dbContext.Wells.First(); - dto.IdTelemetry = well.IdTelemetry!.Value; + [Fact] + public async Task DeleteRangeAsync_returns_success() + { + //arrange + var well = dbContext.Wells.First(); + dto.IdTelemetry = well.IdTelemetry!.Value; - var entity = dto.Adapt(); - dbContext.DetectedOperations.Add(entity); - await dbContext.SaveChangesAsync(); + var entity = dto.Adapt(); + dbContext.DetectedOperations.Add(entity); + await dbContext.SaveChangesAsync(); - var ids = await dbContext.DetectedOperations.Select(d => d.Id).ToArrayAsync(); + var ids = await dbContext.DetectedOperations.Select(d => d.Id).ToArrayAsync(); - //act - var response = await client.DeleteRangeAsync(well.Id, ids); + //act + var response = await client.DeleteRangeAsync(well.Id, ids); - //assert - Assert.Equal(HttpStatusCode.OK, response.StatusCode); - Assert.NotNull(response.Content); - Assert.Equal(1, response.Content); - } + //assert + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + Assert.Equal(1, response.Content); + } - [Fact] - public async Task GetAsync_returns_first_page() - { - //arrange - const int pageSize = 10; - const int pageIndex = 0; + [Fact] + public async Task GetAsync_returns_first_page() + { + //arrange + const int pageSize = 10; + const int pageIndex = 0; - var request = new DetectedOperationRequest - { - Skip = pageIndex, - Take = pageSize, - IdsCategories = new[] { dto.IdCategory } - }; + var request = new DetectedOperationRequest + { + Skip = pageIndex, + Take = pageSize, + IdsCategories = new[] { dto.IdCategory } + }; - var well = dbContext.Wells.First(); - dto.IdTelemetry = well.IdTelemetry!.Value; - - var entity = dto.Adapt(); - dbContext.DetectedOperations.Add(entity); - await dbContext.SaveChangesAsync(); + var well = dbContext.Wells.First(); + dto.IdTelemetry = well.IdTelemetry!.Value; + + var entity = dto.Adapt(); + dbContext.DetectedOperations.Add(entity); + await dbContext.SaveChangesAsync(); - //act - var response = await client.GetAsync(well.Id, request); + //act + var response = await client.GetAsync(well.Id, request); - //assert - Assert.Equal(HttpStatusCode.OK, response.StatusCode); - Assert.NotNull(response.Content); + //assert + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + Assert.NotNull(response.Content); - var totalExpected = response.Content.Count - pageSize * pageIndex; + var totalExpected = response.Content.Count - pageSize * pageIndex; - Assert.Equal(totalExpected, response.Content.Items.Count()); - } - - [Fact] - public async Task GetAsync_returns_first_operation() - { - //arrange - var well = dbContext.Wells.First(); - dto.IdTelemetry = well.IdTelemetry!.Value; - - var entity = dto.Adapt(); - dbContext.DetectedOperations.Add(entity); - await dbContext.SaveChangesAsync(); + Assert.Equal(totalExpected, response.Content.Items.Count()); + } + + [Fact] + public async Task GetAsync_returns_first_operation() + { + //arrange + var well = dbContext.Wells.First(); + dto.IdTelemetry = well.IdTelemetry!.Value; + + var entity = dto.Adapt(); + dbContext.DetectedOperations.Add(entity); + await dbContext.SaveChangesAsync(); - var request = new DetectedOperationRequest - { - IdsCategories = new[] { dto.IdCategory } - }; - - //act - var response = await client.GetAsync(well.Id, request); - - //assert - Assert.Equal(HttpStatusCode.OK, response.StatusCode); - Assert.NotNull(response.Content); + var request = new DetectedOperationRequest + { + IdsCategories = new[] { dto.IdCategory } + }; + + //act + var response = await client.GetAsync(well.Id, request); + + //assert + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + Assert.NotNull(response.Content); - var firstOperation = response.Content.Items.ElementAt(0); - - Assert.Equal(well.IdTelemetry, firstOperation.IdTelemetry); - Assert.Equal(dto.EnabledSubsystems, firstOperation.EnabledSubsystems); - Assert.Equal(dto.DateStart.ToOffset(TimeSpan.FromHours(Defaults.Timezone.Hours)), firstOperation.DateStart); - Assert.Equal(dto.DateEnd.ToOffset(TimeSpan.FromHours(Defaults.Timezone.Hours)), firstOperation.DateEnd); - } + var firstOperation = response.Content.Items.ElementAt(0); + + Assert.Equal(well.IdTelemetry, firstOperation.IdTelemetry); + Assert.Equal(dto.EnabledSubsystems, firstOperation.EnabledSubsystems); + Assert.Equal(dto.DateStart.ToOffset(TimeSpan.FromHours(Defaults.Timezone.Hours)), firstOperation.DateStart); + Assert.Equal(dto.DateEnd.ToOffset(TimeSpan.FromHours(Defaults.Timezone.Hours)), firstOperation.DateEnd); + } } \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/DrillControllerTest.cs b/AsbCloudWebApi.IntegrationTests/Controllers/DrillControllerTest.cs index ed15f095..17ac9ab7 100644 --- a/AsbCloudWebApi.IntegrationTests/Controllers/DrillControllerTest.cs +++ b/AsbCloudWebApi.IntegrationTests/Controllers/DrillControllerTest.cs @@ -7,22 +7,22 @@ namespace AsbCloudWebApi.IntegrationTests.Controllers; public class DrillerControllerTest : BaseIntegrationTest { - private readonly IDrillerClient client; + private readonly IDrillerClient client; - public DrillerControllerTest(WebAppFactoryFixture factory) - : base(factory) - { - client = factory.GetAuthorizedHttpClient(string.Empty); + public DrillerControllerTest(WebAppFactoryFixture factory) + : base(factory) + { + client = factory.GetAuthorizedHttpClient(string.Empty); dbContext.CleanupDbSet(); dbContext.CleanupDbSet(); - } + } - [Fact] - public async Task GetByWellIds_returns_success() - { + [Fact] + public async Task GetByWellIds_returns_success() + { //arrange - var well1 = CreateWellAsync(2); + var well1 = CreateWellAsync(2); var well2 = CreateWellAsync(3); var well3 = CreateWellAsync(4); dbContext.Wells.Add(well1); @@ -52,14 +52,14 @@ public class DrillerControllerTest : BaseIntegrationTest Assert.Equal(3, response.Content.Count()); } - private static Schedule CreateScheduleAsync(int idWell, Driller driller) => new() - { - IdWell = idWell, - ShiftStart = new TimeOnly(8, 0, 0), - ShiftEnd = new TimeOnly(20, 0, 0), - DrillStart = new DateTimeOffset(new DateTime(2024, 1, 1, 0, 0, 0, DateTimeKind.Utc)), - DrillEnd = new DateTimeOffset(new DateTime(2024, 2, 1, 0, 0, 0, DateTimeKind.Utc)), - Driller = driller + private static Schedule CreateScheduleAsync(int idWell, Driller driller) => new() + { + IdWell = idWell, + ShiftStart = new TimeOnly(8, 0, 0), + ShiftEnd = new TimeOnly(20, 0, 0), + DrillStart = new DateTimeOffset(new DateTime(2024, 1, 1, 0, 0, 0, DateTimeKind.Utc)), + DrillEnd = new DateTimeOffset(new DateTime(2024, 2, 1, 0, 0, 0, DateTimeKind.Utc)), + Driller = driller }; diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/GtrControllerTests.cs b/AsbCloudWebApi.IntegrationTests/Controllers/GtrControllerTests.cs index e951c13e..e8f7b548 100644 --- a/AsbCloudWebApi.IntegrationTests/Controllers/GtrControllerTests.cs +++ b/AsbCloudWebApi.IntegrationTests/Controllers/GtrControllerTests.cs @@ -8,61 +8,61 @@ namespace AsbCloudWebApi.IntegrationTests.Controllers; public class GtrControllerTests : BaseIntegrationTest { - private readonly IGtrWitsClient client; + private readonly IGtrWitsClient client; - public GtrControllerTests(WebAppFactoryFixture factory) - : base(factory) - { - client = factory.GetAuthorizedHttpClient(string.Empty); - } + public GtrControllerTests(WebAppFactoryFixture factory) + : base(factory) + { + client = factory.GetAuthorizedHttpClient(string.Empty); + } - [Fact] - public async Task GetAll_returns_success() - { - //arrange - var well = dbContext.Wells.First(); - - var witsItems = CreateWitsItems(well.IdTelemetry!.Value); - dbContext.WitsItemFloat.AddRange(witsItems); - await dbContext.SaveChangesAsync(); - - var request = new GtrRequest(); - - //act - var response = await client.GetAllAsync(well.Id, request); + [Fact] + public async Task GetAll_returns_success() + { + //arrange + var well = dbContext.Wells.First(); + + var witsItems = CreateWitsItems(well.IdTelemetry!.Value); + dbContext.WitsItemFloat.AddRange(witsItems); + await dbContext.SaveChangesAsync(); + + var request = new GtrRequest(); + + //act + var response = await client.GetAllAsync(well.Id, request); - //assert - Assert.Equal(HttpStatusCode.OK, response.StatusCode); - Assert.NotNull(response.Content); - Assert.True(response.Content.Any()); - } + //assert + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + Assert.NotNull(response.Content); + Assert.True(response.Content.Any()); + } - private static IEnumerable CreateWitsItems(int idTelemetry) => - new[] - { - new WitsItemFloat - { - IdRecord = 1, - IdItem = 14, - Value = 4, - IdTelemetry = idTelemetry, - DateTime = DateTimeOffset.UtcNow - }, - new WitsItemFloat - { - IdRecord = 1, - IdItem = 14, - Value = 5, - IdTelemetry = idTelemetry, - DateTime = DateTimeOffset.UtcNow - }, - new WitsItemFloat - { - IdRecord = 1, - IdItem = 12, - Value = 5, - IdTelemetry = idTelemetry, - DateTime = DateTimeOffset.UtcNow.AddSeconds(10) - } - }; + private static IEnumerable CreateWitsItems(int idTelemetry) => + new[] + { + new WitsItemFloat + { + IdRecord = 1, + IdItem = 14, + Value = 4, + IdTelemetry = idTelemetry, + DateTime = DateTimeOffset.UtcNow + }, + new WitsItemFloat + { + IdRecord = 1, + IdItem = 14, + Value = 5, + IdTelemetry = idTelemetry, + DateTime = DateTimeOffset.UtcNow + }, + new WitsItemFloat + { + IdRecord = 1, + IdItem = 12, + Value = 5, + IdTelemetry = idTelemetry, + DateTime = DateTimeOffset.UtcNow.AddSeconds(10) + } + }; } \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Files/ProcessMapPlanDrillingValid.xlsx b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Files/ProcessMapPlanDrillingValid.xlsx deleted file mode 100644 index b2bdd446..00000000 Binary files a/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Files/ProcessMapPlanDrillingValid.xlsx and /dev/null differ diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Files/ProcessMapPlanRotorInvalid.xlsx b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Files/ProcessMapPlanRotorInvalid.xlsx new file mode 100644 index 00000000..bdbb84ea Binary files /dev/null and b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Files/ProcessMapPlanRotorInvalid.xlsx differ diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Files/ProcessMapPlanRotorValid.xlsx b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Files/ProcessMapPlanRotorValid.xlsx new file mode 100644 index 00000000..13ef41c9 Binary files /dev/null and b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Files/ProcessMapPlanRotorValid.xlsx differ diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Files/ProcessMapPlanSlideInvalid.xlsx b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Files/ProcessMapPlanSlideInvalid.xlsx new file mode 100644 index 00000000..aefc488c Binary files /dev/null and b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Files/ProcessMapPlanSlideInvalid.xlsx differ diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Files/ProcessMapPlanSlideValid.xlsx b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Files/ProcessMapPlanSlideValid.xlsx new file mode 100644 index 00000000..456c7487 Binary files /dev/null and b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Files/ProcessMapPlanSlideValid.xlsx differ diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Functions/ProcessMapPlanAntiCrashRotationControllerTest.cs b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Functions/ProcessMapPlanAntiCrashRotationControllerTest.cs new file mode 100644 index 00000000..1a9237e8 --- /dev/null +++ b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Functions/ProcessMapPlanAntiCrashRotationControllerTest.cs @@ -0,0 +1,68 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudDb.Model.ProcessMapPlan.Functions; +using AsbCloudWebApi.IntegrationTests; +using AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan; +using Microsoft.EntityFrameworkCore; +using Xunit; + +namespace AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan.Functions; + +/// +/// РТК план противоаварийное вращение +/// +public class ProcessMapPlanAntiCrashRotationControllerTest : + ProcessMapPlanBaseControllerTest +{ + public ProcessMapPlanAntiCrashRotationControllerTest(WebAppFactoryFixture factory) : base(factory, "ProcessMapPlanAntiCrashRotation") + { + } + private readonly ProcessMapPlanAntiCrashRotationDto dto = new ProcessMapPlanAntiCrashRotationDto() + { + IdWell = 1, + DepthStart = 1, + DepthEnd = 2, + Id = 0, + IdWellSectionType = 1, + Note = "1", + TopDriveRpmMin = 1, + TopDriveStartMinFlowRate = 1, + TopDriveTorqueMax = 1, + }; + + private readonly ProcessMapPlanAntiCrashRotation entity = new ProcessMapPlanAntiCrashRotation() + { + IdWell = 1, + DepthEnd = 10, + DepthStart = 2, + Id = 0, + IdWellSectionType = 1, + IdAuthor = 1, + IdEditor = 1, + Creation = DateTimeOffset.UtcNow, + Note = "1", + TopDriveRpmMin = 1, + TopDriveStartMinFlowRate = 1, + TopDriveTorqueMax = 1 + }; + + [Fact] + public async Task Get_actual_returns_success() + { + await Get(entity, dto); + } + + protected override ProcessMapPlanAntiCrashRotation GetByNote(DbSet dbSet, ProcessMapPlanAntiCrashRotationDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanAntiCrashRotationDto GetByNote(IEnumerable dtos, ProcessMapPlanAntiCrashRotationDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanAntiCrashRotation? GetByWellId() + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Functions/ProcessMapPlanAutoHoldTFControllerTest.cs b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Functions/ProcessMapPlanAutoHoldTFControllerTest.cs new file mode 100644 index 00000000..48bcee90 --- /dev/null +++ b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Functions/ProcessMapPlanAutoHoldTFControllerTest.cs @@ -0,0 +1,69 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudDb.Model.ProcessMapPlan.Functions; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; +using AsbCloudWebApi.IntegrationTests; +using AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan; +using Microsoft.EntityFrameworkCore; +using Xunit; + +namespace AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan.Functions; + +/// +/// РТК план автоудержание +/// +public class ProcessMapPlanAutoHoldTFControllerTest : + ProcessMapPlanBaseControllerTest +{ + public ProcessMapPlanAutoHoldTFControllerTest(WebAppFactoryFixture factory) : base(factory, "ProcessMapPlanAutoHoldTF") + { + } + private readonly ProcessMapPlanAutoHoldTFDto dto = new ProcessMapPlanAutoHoldTFDto() + { + IdWell = 1, + DepthStart = 1, + DepthEnd = 2, + Id = 0, + IdWellSectionType = 1, + Note = "1", + ZenithAngle = 2, + }; + + private readonly ProcessMapPlanAutoHoldTF entity = new ProcessMapPlanAutoHoldTF() + { + IdWell = 1, + DepthEnd = 10, + DepthStart = 2, + Id = 0, + IdWellSectionType = 1, + IdAuthor = 1, + IdEditor = 1, + Creation = DateTimeOffset.UtcNow, + Note = "1", + ZenithAngle = 2, + }; + + [Fact] + public async Task Get_actual_returns_success() + { + await Get(entity, dto); + } + + protected override ProcessMapPlanAutoHoldTF GetByNote(DbSet dbSet, ProcessMapPlanAutoHoldTFDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanAutoHoldTFDto GetByNote(IEnumerable dtos, ProcessMapPlanAutoHoldTFDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanAutoHoldTF? GetByWellId() + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Functions/ProcessMapPlanDamperControllerTest.cs b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Functions/ProcessMapPlanDamperControllerTest.cs new file mode 100644 index 00000000..343f12f3 --- /dev/null +++ b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Functions/ProcessMapPlanDamperControllerTest.cs @@ -0,0 +1,69 @@ +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; +using AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan; +using AsbCloudWebApi.IntegrationTests; +using Microsoft.EntityFrameworkCore; +using Xunit; +using AsbCloudDb.Model.ProcessMapPlan.Functions; +using AsbCloudApp.Data.ProcessMaps.Functions; + +namespace AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan.Functions; + +/// +/// РТК план демпфер +/// +public class ProcessMapPlanDamperControllerTest : + ProcessMapPlanBaseControllerTest +{ + public ProcessMapPlanDamperControllerTest(WebAppFactoryFixture factory) : base(factory, "ProcessMapPlanDamper") + { + } + private readonly ProcessMapPlanDamperDto dto = new ProcessMapPlanDamperDto() + { + IdWell = 1, + DepthStart = 1, + DepthEnd = 2, + Id = 0, + IdWellSectionType = 1, + Note = "1", + StickSlip = 1, + }; + + private readonly ProcessMapPlanDamper entity = new ProcessMapPlanDamper() + { + IdWell = 1, + DepthEnd = 10, + DepthStart = 2, + Id = 0, + IdWellSectionType = 1, + IdAuthor = 1, + IdEditor = 1, + Creation = DateTimeOffset.UtcNow, + Note = "1", + StickSlip = 1 + }; + + [Fact] + public async Task Get_actual_returns_success() + { + await Get(entity, dto); + } + + protected override ProcessMapPlanDamper GetByNote(DbSet dbSet, ProcessMapPlanDamperDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanDamperDto GetByNote(IEnumerable dtos, ProcessMapPlanDamperDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanDamper? GetByWellId() + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Functions/ProcessMapPlanDrillTestControllerTest.cs b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Functions/ProcessMapPlanDrillTestControllerTest.cs new file mode 100644 index 00000000..6aaf4445 --- /dev/null +++ b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Functions/ProcessMapPlanDrillTestControllerTest.cs @@ -0,0 +1,77 @@ +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; +using AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan; +using AsbCloudWebApi.IntegrationTests; +using Microsoft.EntityFrameworkCore; +using Xunit; +using AsbCloudDb.Model.ProcessMapPlan.Functions; +using AsbCloudApp.Data.ProcessMaps.Functions; + +namespace AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan.Functions; + +/// +/// РТК план дрилтест +/// +public class ProcessMapPlanDrillTestControllerTest : + ProcessMapPlanBaseControllerTest +{ + public ProcessMapPlanDrillTestControllerTest(WebAppFactoryFixture factory) : base(factory, "ProcessMapPlanDrillTest") + { + } + private readonly ProcessMapPlanDrillTestDto dto = new ProcessMapPlanDrillTestDto() + { + IdWell = 1, + DepthStart = 1, + DepthEnd = 2, + Id = 0, + IdWellSectionType = 1, + LengthStep = 1, + Note = "1", + WeightOnBitMin = 1, + RpmMin = 1, + RpmStepsCount = 1, + WeightOnBitStepsCount = 1, + }; + + private readonly ProcessMapPlanDrillTest entity = new ProcessMapPlanDrillTest() + { + IdWell = 1, + DepthEnd = 10, + DepthStart = 2, + Id = 0, + IdWellSectionType = 1, + IdAuthor = 1, + IdEditor = 1, + Creation = DateTimeOffset.UtcNow, + LengthStep = 1, + Note = "1", + WeightOnBitMin = 1, + RpmMin = 1, + RpmStepsCount = 1, + WeightOnBitStepsCount = 1 + }; + + [Fact] + public async Task Get_actual_returns_success() + { + await Get(entity, dto); + } + + protected override ProcessMapPlanDrillTest GetByNote(DbSet dbSet, ProcessMapPlanDrillTestDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanDrillTestDto GetByNote(IEnumerable dtos, ProcessMapPlanDrillTestDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanDrillTest? GetByWellId() + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Functions/ProcessMapPlanOscillationControllerTest.cs b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Functions/ProcessMapPlanOscillationControllerTest.cs new file mode 100644 index 00000000..4efd40e1 --- /dev/null +++ b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Functions/ProcessMapPlanOscillationControllerTest.cs @@ -0,0 +1,79 @@ +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; +using AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan; +using AsbCloudWebApi.IntegrationTests; +using Microsoft.EntityFrameworkCore; +using Xunit; +using AsbCloudDb.Model.ProcessMapPlan.Functions; +using AsbCloudApp.Data.ProcessMaps.Functions; + +namespace AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan.Functions; + +/// +/// РТК план осцилляция +/// +public class ProcessMapPlanOscillationControllerTest : + ProcessMapPlanBaseControllerTest +{ + public ProcessMapPlanOscillationControllerTest(WebAppFactoryFixture factory) : base(factory, "ProcessMapPlanOscillation") + { + } + private readonly ProcessMapPlanOscillationDto dto = new ProcessMapPlanOscillationDto() + { + IdWell = 1, + DepthStart = 1, + DepthEnd = 2, + Id = 0, + IdWellSectionType = 1, + Mode = 1, + Note = "1", + OptimalOscillationAngle = 1, + RpmLeft = 1, + RpmRight = 2, + TorqueMaxLeft = 2, + TorqueMaxRight = 3 + }; + + private readonly ProcessMapPlanOscillation entity = new ProcessMapPlanOscillation() + { + IdWell = 1, + DepthEnd = 10, + DepthStart = 2, + Id = 0, + IdWellSectionType = 1, + IdAuthor = 1, + IdEditor = 1, + Creation = DateTimeOffset.UtcNow, + Mode = 1, + Note = "1", + OptimalOscillationAngle = 1, + RpmLeft = 1, + RpmRight = 2, + TorqueMaxLeft = 2, + TorqueMaxRight = 3 + }; + + [Fact] + public async Task Get_actual_returns_success() + { + await Get(entity, dto); + } + + protected override ProcessMapPlanOscillation GetByNote(DbSet dbSet, ProcessMapPlanOscillationDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanOscillationDto GetByNote(IEnumerable dtos, ProcessMapPlanOscillationDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanOscillation? GetByWellId() + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Functions/ProcessMapPlanShockTestControllerTest.cs b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Functions/ProcessMapPlanShockTestControllerTest.cs new file mode 100644 index 00000000..401efdfb --- /dev/null +++ b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Functions/ProcessMapPlanShockTestControllerTest.cs @@ -0,0 +1,79 @@ +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; +using AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan; +using AsbCloudWebApi.IntegrationTests; +using Microsoft.EntityFrameworkCore; +using Xunit; +using AsbCloudDb.Model.ProcessMapPlan.Functions; +using AsbCloudApp.Data.ProcessMaps.Functions; + +namespace AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan.Functions; + +/// +/// РТК план shock test +/// +public class ProcessMapPlanShockTestControllerTest : + ProcessMapPlanBaseControllerTest +{ + public ProcessMapPlanShockTestControllerTest(WebAppFactoryFixture factory) : base(factory, "ProcessMapPlanShockTest") + { + } + private readonly ProcessMapPlanShockTestDto dto = new ProcessMapPlanShockTestDto() + { + IdWell = 1, + DepthStart = 1, + DepthEnd = 2, + Id = 0, + IdWellSectionType = 1, + AxialVibrations = 1, + CombinedVibrations = 2, + Note = "1", + StickSlip = 1, + WeightOnBitMin = 1, + Whirl = 1, + RpmMin = 1, + }; + + private readonly ProcessMapPlanShockTest entity = new ProcessMapPlanShockTest() + { + IdWell = 1, + DepthEnd = 10, + DepthStart = 2, + Id = 0, + IdWellSectionType = 1, + IdAuthor = 1, + IdEditor = 1, + Creation = DateTimeOffset.UtcNow, + AxialVibrations = 1, + CombinedVibrations = 2, + Note = "1", + StickSlip = 1, + WeightOnBitMin = 1, + Whirl = 1, + RpmMin = 1, + }; + + [Fact] + public async Task Get_actual_returns_success() + { + await Get(entity, dto); + } + + protected override ProcessMapPlanShockTest GetByNote(DbSet dbSet, ProcessMapPlanShockTestDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanShockTestDto GetByNote(IEnumerable dtos, ProcessMapPlanShockTestDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanShockTest? GetByWellId() + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Functions/ProcessMapPlanStaticMeasurementOutputControllerTest.cs b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Functions/ProcessMapPlanStaticMeasurementOutputControllerTest.cs new file mode 100644 index 00000000..99bd0aa3 --- /dev/null +++ b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Functions/ProcessMapPlanStaticMeasurementOutputControllerTest.cs @@ -0,0 +1,69 @@ +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; +using AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan; +using AsbCloudWebApi.IntegrationTests; +using Microsoft.EntityFrameworkCore; +using Xunit; +using AsbCloudDb.Model.ProcessMapPlan.Functions; +using AsbCloudApp.Data.ProcessMaps.Functions; + +namespace AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan.Functions; + +/// +/// РТК план выход статического замера +/// +public class ProcessMapPlanStaticMeasurementOutputControllerTest : + ProcessMapPlanBaseControllerTest +{ + public ProcessMapPlanStaticMeasurementOutputControllerTest(WebAppFactoryFixture factory) : base(factory, "ProcessMapPlanStaticMeasurementOutput") + { + } + private readonly ProcessMapPlanStaticMeasurementOutputDto dto = new ProcessMapPlanStaticMeasurementOutputDto() + { + IdWell = 1, + DepthStart = 1, + DepthEnd = 2, + Id = 0, + IdWellSectionType = 1, + SignalWaitingTime = 1, + Note = "1" + }; + + private readonly ProcessMapPlanStaticMeasurementOutput entity = new ProcessMapPlanStaticMeasurementOutput() + { + IdWell = 1, + DepthEnd = 10, + DepthStart = 2, + Id = 0, + IdWellSectionType = 1, + IdAuthor = 1, + IdEditor = 1, + Creation = DateTimeOffset.UtcNow, + SignalWaitingTime = 1, + Note = "1" + }; + + [Fact] + public async Task Get_actual_returns_success() + { + await Get(entity, dto); + } + + protected override ProcessMapPlanStaticMeasurementOutput GetByNote(DbSet dbSet, ProcessMapPlanStaticMeasurementOutputDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanStaticMeasurementOutputDto GetByNote(IEnumerable dtos, ProcessMapPlanStaticMeasurementOutputDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanStaticMeasurementOutput? GetByWellId() + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanLoadCapacityControllerTest.cs b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanLoadCapacityControllerTest.cs new file mode 100644 index 00000000..8bae7ed4 --- /dev/null +++ b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanLoadCapacityControllerTest.cs @@ -0,0 +1,73 @@ +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; +using AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan; +using AsbCloudWebApi.IntegrationTests; +using Microsoft.EntityFrameworkCore; +using Xunit; +using AsbCloudDb.Model.ProcessMapPlan.Operations; +using AsbCloudApp.Data.ProcessMaps.Operations; + +namespace AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan.Operations; + +/// +/// РТК план выработка нагрузки +/// +public class ProcessMapPlanLoadCapacityControllerTest : + ProcessMapPlanBaseControllerTest +{ + public ProcessMapPlanLoadCapacityControllerTest(WebAppFactoryFixture factory) : base(factory, "ProcessMapPlanLoadCapacity") + { + } + private readonly ProcessMapPlanLoadCapacityDto dto = new ProcessMapPlanLoadCapacityDto() + { + IdWell = 1, + DepthStart = 1, + DepthEnd = 2, + Id = 0, + IdWellSectionType = 1, + DifferentialPressureMin = 1, + Note = "2", + TimeLoadCapacityMin = 2, + WeightOnBitMin = 3, + }; + + private readonly ProcessMapPlanLoadCapacity entity = new ProcessMapPlanLoadCapacity() + { + IdWell = 1, + DepthEnd = 10, + DepthStart = 2, + Id = 0, + IdWellSectionType = 1, + IdAuthor = 1, + IdEditor = 1, + Creation = DateTimeOffset.UtcNow, + DifferentialPressureMin = 1, + Note = "2", + TimeLoadCapacityMin = 2, + WeightOnBitMin = 3, + }; + + [Fact] + public async Task Get_actual_returns_success() + { + await Get(entity, dto); + } + + protected override ProcessMapPlanLoadCapacity GetByNote(DbSet dbSet, ProcessMapPlanLoadCapacityDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanLoadCapacityDto GetByNote(IEnumerable dtos, ProcessMapPlanLoadCapacityDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanLoadCapacity? GetByWellId() + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanOscillationAnglesControllerTest.cs b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanOscillationAnglesControllerTest.cs new file mode 100644 index 00000000..2fd82df0 --- /dev/null +++ b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanOscillationAnglesControllerTest.cs @@ -0,0 +1,75 @@ +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; +using AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan; +using AsbCloudWebApi.IntegrationTests; +using Microsoft.EntityFrameworkCore; +using Xunit; +using AsbCloudDb.Model.ProcessMapPlan.Operations; +using AsbCloudApp.Data.ProcessMaps.Operations; + +namespace AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan.Operations; + +/// +/// РТК план определения углов осцилляции +/// +public class ProcessMapPlanOscillationAnglesControllerTest : + ProcessMapPlanBaseControllerTest +{ + public ProcessMapPlanOscillationAnglesControllerTest(WebAppFactoryFixture factory) : base(factory, "ProcessMapPlanOscillationAngles") + { + } + private readonly ProcessMapPlanOscillationAnglesDto dto = new ProcessMapPlanOscillationAnglesDto() + { + IdWell = 1, + DepthStart = 1, + DepthEnd = 2, + Id = 0, + IdWellSectionType = 1, + Note = "1", + Rpm = 1, + RpmMax = 2, + TopDriveTorque = 2, + TopDriveTorqueMax = 3, + }; + + private readonly ProcessMapPlanOscillationAngles entity = new ProcessMapPlanOscillationAngles() + { + IdWell = 1, + DepthEnd = 10, + DepthStart = 2, + Id = 0, + IdWellSectionType = 1, + IdAuthor = 1, + IdEditor = 1, + Creation = DateTimeOffset.UtcNow, + Note = "1", + Rpm = 1, + RpmMax = 2, + TopDriveTorque = 2, + TopDriveTorqueMax = 3, + }; + + [Fact] + public async Task Get_actual_returns_success() + { + await Get(entity, dto); + } + + protected override ProcessMapPlanOscillationAngles GetByNote(DbSet dbSet, ProcessMapPlanOscillationAnglesDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanOscillationAnglesDto GetByNote(IEnumerable dtos, ProcessMapPlanOscillationAnglesDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanOscillationAngles? GetByWellId() + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanPositioningOffTheBottomControllerTest.cs b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanPositioningOffTheBottomControllerTest.cs new file mode 100644 index 00000000..dcd46abd --- /dev/null +++ b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanPositioningOffTheBottomControllerTest.cs @@ -0,0 +1,91 @@ +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; +using AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan; +using AsbCloudWebApi.IntegrationTests; +using Microsoft.EntityFrameworkCore; +using Xunit; +using AsbCloudDb.Model.ProcessMapPlan.Operations; +using AsbCloudApp.Data.ProcessMaps.Operations; + +namespace AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan.Operations; + +/// +/// РТК план позиционирование над забоем +/// +public class ProcessMapPlanPositioningOffTheBottomControllerTest : + ProcessMapPlanBaseControllerTest +{ + public ProcessMapPlanPositioningOffTheBottomControllerTest(WebAppFactoryFixture factory) : base(factory, "ProcessMapPlanPositioningOffTheBottom") + { + } + private readonly ProcessMapPlanPositioningOffTheBottomDto dto = new ProcessMapPlanPositioningOffTheBottomDto() + { + IdWell = 1, + DepthStart = 1, + DepthEnd = 2, + Id = 0, + IdWellSectionType = 1, + StopOffTheBottom = 1, + DifferentialPressure = 1, + FlowRateDown = 1, + FlowRateUp = 1, + Note = "1", + RopDown = 1, + RopUp = 1, + PressureMax = 1, + RpmDown = 1, + RpmUp = 1, + SlackingOff = 1, + Tight = 1, + TorqueMax = 1 + }; + + private readonly ProcessMapPlanPositioningOffTheBottom entity = new ProcessMapPlanPositioningOffTheBottom() + { + IdWell = 1, + DepthEnd = 10, + DepthStart = 2, + Id = 0, + IdWellSectionType = 1, + IdAuthor = 1, + IdEditor = 1, + Creation = DateTimeOffset.UtcNow, + StopOffTheBottom = 1, + DifferentialPressure = 1, + FlowRateDown = 1, + FlowRateUp = 1, + Note = "1", + RopDown = 1, + RopUp = 1, + PressureMax = 1, + RpmDown = 1, + RpmUp = 1, + SlackingOff = 1, + Tight = 1, + TorqueMax = 1 + }; + + [Fact] + public async Task Get_actual_returns_success() + { + await Get(entity, dto); + } + + protected override ProcessMapPlanPositioningOffTheBottom GetByNote(DbSet dbSet, ProcessMapPlanPositioningOffTheBottomDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanPositioningOffTheBottomDto GetByNote(IEnumerable dtos, ProcessMapPlanPositioningOffTheBottomDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanPositioningOffTheBottom? GetByWellId() + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanReamingRotorControllerTest.cs b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanReamingRotorControllerTest.cs new file mode 100644 index 00000000..3a97aa70 --- /dev/null +++ b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanReamingRotorControllerTest.cs @@ -0,0 +1,131 @@ +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; +using AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan; +using AsbCloudWebApi.IntegrationTests; +using Microsoft.EntityFrameworkCore; +using Xunit; +using AsbCloudDb.Model.ProcessMapPlan.Operations; +using AsbCloudApp.Data.ProcessMaps.Operations; + +namespace AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan.Operations; + +/// +/// РТК план проработка для ротора +/// +public class ProcessMapPlanReamingRotorControllerTest : + ProcessMapPlanBaseControllerTest +{ + public ProcessMapPlanReamingRotorControllerTest(WebAppFactoryFixture factory) : base(factory, "ProcessMapPlanReamingRotor") + { + } + private readonly ProcessMapPlanReamingRotorDto dto = new ProcessMapPlanReamingRotorDto() + { + IdWell = 1, + DepthStart = 1, + DepthEnd = 2, + Id = 0, + IdWellSectionType = 1, + DifferentialPressure = 2, + Note = "5", + Reaming1FlowRateDown = 7, + Reaming2FlowRateDown = 8, + Reaming3FlowRateDown = 9, + Reaming1FlowRateUp = 10, + Reaming1Interval = 11, + Reaming2Interval = 12, + Reaming1StopPointOffBottom = 3, + Reaming2FlowRateUp = 4, + Reaming3FlowRateUp = 5, + Reaming2StopPointOffBottom = 1, + Reaming3Interval = 2, + Reaming3StopPointOffBottom = 4, + Reaming3RopDown = 5, + TorqueMax = 6, + Tight = 6, + SlackingOff = 7, + PressureMax = 8, + Reaming1RepetitionsCount = 9, + Reaming1RopDown = 10, + Reaming1RopUp = 11, + Reaming1RpmDown = 12, + Reaming1RpmUp = 13, + Reaming2RpmDown = 14, + Reaming2RepetitionsCount = 15, + Reaming2RopDown = 16, + Reaming2RopUp = 17, + Reaming3RpmDown = 18, + Reaming3RpmUp = 19, + Reaming2RpmUp = 20, + Reaming3RepetitionsCount = 20, + Reaming3RopUp = 21, + }; + + private readonly ProcessMapPlanReamingRotor entity = new ProcessMapPlanReamingRotor() + { + IdWell = 1, + DepthEnd = 10, + DepthStart = 2, + Id = 0, + IdWellSectionType = 1, + IdAuthor = 1, + IdEditor = 1, + Creation = DateTimeOffset.UtcNow, + DifferentialPressure = 2, + Note = "5", + Reaming1FlowRateDown = 7, + Reaming2FlowRateDown = 8, + Reaming3FlowRateDown = 9, + Reaming1FlowRateUp = 10, + Reaming1Interval = 11, + Reaming2Interval = 12, + Reaming1StopPointOffBottom = 3, + Reaming2FlowRateUp = 4, + Reaming3FlowRateUp = 5, + Reaming2StopPointOffBottom = 1, + Reaming3Interval = 2, + Reaming3StopPointOffBottom = 4, + Reaming3RopDown = 5, + TorqueMax = 6, + Tight = 6, + SlackingOff = 7, + PressureMax = 8, + Reaming1RepetitionsCount = 9, + Reaming1RopDown = 10, + Reaming1RopUp = 11, + Reaming1RpmDown = 12, + Reaming1RpmUp = 13, + Reaming2RpmDown = 14, + Reaming2RepetitionsCount = 15, + Reaming2RopDown = 16, + Reaming2RopUp = 17, + Reaming3RpmDown = 18, + Reaming3RpmUp = 19, + Reaming2RpmUp = 20, + Reaming3RepetitionsCount = 20, + Reaming3RopUp = 21, + }; + + [Fact] + public async Task Get_actual_returns_success() + { + await Get(entity, dto); + } + + protected override ProcessMapPlanReamingRotor GetByNote(DbSet dbSet, ProcessMapPlanReamingRotorDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanReamingRotorDto GetByNote(IEnumerable dtos, ProcessMapPlanReamingRotorDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanReamingRotor? GetByWellId() + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanReamingSlideControllerTest.cs b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanReamingSlideControllerTest.cs new file mode 100644 index 00000000..c97a436c --- /dev/null +++ b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanReamingSlideControllerTest.cs @@ -0,0 +1,131 @@ +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; +using AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan; +using AsbCloudWebApi.IntegrationTests; +using Microsoft.EntityFrameworkCore; +using Xunit; +using AsbCloudDb.Model.ProcessMapPlan.Operations; +using AsbCloudApp.Data.ProcessMaps.Operations; + +namespace AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan.Operations; + +/// +/// РТК план проработка для слайда +/// +public class ProcessMapPlanReamingSlideControllerTest : + ProcessMapPlanBaseControllerTest +{ + public ProcessMapPlanReamingSlideControllerTest(WebAppFactoryFixture factory) : base(factory, "ProcessMapPlanReamingSlide") + { + } + private readonly ProcessMapPlanReamingSlideDto dto = new ProcessMapPlanReamingSlideDto() + { + IdWell = 1, + DepthStart = 1, + DepthEnd = 2, + Id = 0, + IdWellSectionType = 1, + SlackingOff = 1, + Reaming3StopPointOffBottom = 2, + Reaming3RopUp = 3, + Reaming3Interval = 4, + Reaming2StopPointOffBottom = 5, + Reaming2RopUp = 6, + Reaming2RepetitionsCount = 7, + Reaming3FlowRateUp = 8, + Reaming2FlowRateUp = 9, + Reaming1StopPointOffBottom = 1, + Reaming1RopUp = 1, + Reaming1Interval = 2, + DifferentialPressure = 3, + PressureMax = 4, + TorqueMax = 5, + Note = "1", + Reaming1FlowRateDown = 6, + Reaming1FlowRateUp = 7, + Reaming1RepetitionsCount = 8, + Reaming1RopDown = 9, + Reaming1RpmDown = 1, + Reaming1RpmUp = 1, + Reaming2FlowRateDown = 2, + Reaming2Interval = 3, + Reaming2RopDown = 3, + Reaming2RpmDown = 4, + Reaming2RpmUp = 5, + Reaming3FlowRateDown = 6, + Reaming3RepetitionsCount = 3, + Reaming3RopDown = 4, + Reaming3RpmDown = 5, + Reaming3RpmUp = 6, + Tight = 1, + }; + + private readonly ProcessMapPlanReamingSlide entity = new ProcessMapPlanReamingSlide() + { + IdWell = 1, + DepthEnd = 10, + DepthStart = 2, + Id = 0, + IdWellSectionType = 1, + IdAuthor = 1, + IdEditor = 1, + Creation = DateTimeOffset.UtcNow, + SlackingOff = 1, + Reaming3StopPointOffBottom = 2, + Reaming3RopUp = 3, + Reaming3Interval = 4, + Reaming2StopPointOffBottom = 5, + Reaming2RopUp = 6, + Reaming2RepetitionsCount = 7, + Reaming3FlowRateUp = 8, + Reaming2FlowRateUp = 9, + Reaming1StopPointOffBottom = 1, + Reaming1RopUp = 1, + Reaming1Interval = 2, + DifferentialPressure = 3, + PressureMax = 4, + TorqueMax = 5, + Note = "1", + Reaming1FlowRateDown = 6, + Reaming1FlowRateUp = 7, + Reaming1RepetitionsCount = 8, + Reaming1RopDown = 9, + Reaming1RpmDown = 1, + Reaming1RpmUp = 1, + Reaming2FlowRateDown = 2, + Reaming2Interval = 3, + Reaming2RopDown = 3, + Reaming2RpmDown = 4, + Reaming2RpmUp = 5, + Reaming3FlowRateDown = 6, + Reaming3RepetitionsCount = 3, + Reaming3RopDown = 4, + Reaming3RpmDown = 5, + Reaming3RpmUp = 6, + Tight = 1, + }; + + [Fact] + public async Task Get_actual_returns_success() + { + await Get(entity, dto); + } + + protected override ProcessMapPlanReamingSlide GetByNote(DbSet dbSet, ProcessMapPlanReamingSlideDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanReamingSlideDto GetByNote(IEnumerable dtos, ProcessMapPlanReamingSlideDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanReamingSlide? GetByWellId() + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanRecordingStaticMeasurementControllerTest.cs b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanRecordingStaticMeasurementControllerTest.cs new file mode 100644 index 00000000..d42a8b78 --- /dev/null +++ b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanRecordingStaticMeasurementControllerTest.cs @@ -0,0 +1,69 @@ +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; +using AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan; +using AsbCloudWebApi.IntegrationTests; +using Microsoft.EntityFrameworkCore; +using Xunit; +using AsbCloudDb.Model.ProcessMapPlan.Operations; +using AsbCloudApp.Data.ProcessMaps.Operations; + +namespace AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan.Operations; + +/// +/// РТК план записи статического замера +/// +public class ProcessMapPlanRecordingStaticMeasurementControllerTest : + ProcessMapPlanBaseControllerTest +{ + public ProcessMapPlanRecordingStaticMeasurementControllerTest(WebAppFactoryFixture factory) : base(factory, "ProcessMapPlanRecordingStaticMeasurement") + { + } + private readonly ProcessMapPlanRecordingStaticMeasurementDto dto = new ProcessMapPlanRecordingStaticMeasurementDto() + { + IdWell = 1, + DepthStart = 1, + DepthEnd = 2, + Id = 0, + IdWellSectionType = 1, + MeasurementRecordingTime = 1, + Note = "1" + }; + + private readonly ProcessMapPlanRecordingStaticMeasurement entity = new ProcessMapPlanRecordingStaticMeasurement() + { + IdWell = 1, + DepthEnd = 10, + DepthStart = 2, + Id = 0, + IdWellSectionType = 1, + IdAuthor = 1, + IdEditor = 1, + Creation = DateTimeOffset.UtcNow, + MeasurementRecordingTime = 1, + Note = "1" + }; + + [Fact] + public async Task Get_actual_returns_success() + { + await Get(entity, dto); + } + + protected override ProcessMapPlanRecordingStaticMeasurement GetByNote(DbSet dbSet, ProcessMapPlanRecordingStaticMeasurementDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanRecordingStaticMeasurementDto GetByNote(IEnumerable dtos, ProcessMapPlanRecordingStaticMeasurementDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanRecordingStaticMeasurement? GetByWellId() + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanRotorControllerTest.cs b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanRotorControllerTest.cs new file mode 100644 index 00000000..ff117690 --- /dev/null +++ b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanRotorControllerTest.cs @@ -0,0 +1,210 @@ +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudDb.Model.ProcessMapPlan.Operations; +using DocumentFormat.OpenXml.Drawing.Charts; +using Mapster; +using Microsoft.EntityFrameworkCore; +using Xunit; + +namespace AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan.Operations; +public class ProcessMapPlanRotorControllerTest : ProcessMapPlanBaseControllerTest +{ + private readonly ProcessMapPlanRotorDto dto = new ProcessMapPlanRotorDto() + { + IdWell = 1, + DepthStart = 1, + DepthEnd = 2, + RopMax = 3, + PressureMax = 4, + DifferentialPressure = 5, + DifferentialPressureMax = 6, + WeightOnBit = 7, + WeightOnBitMax = 8, + TopDriveTorque = 9, + TopDriveTorqueMax = 10, + Rpm = 11, + RpmMax = 12, + FlowRate = 13, + FlowRateMax = 14, + Note = "15", + Id = 0, + IdWellSectionType = 1, + }; + + private readonly ProcessMapPlanRotor entity = new ProcessMapPlanRotor() + { + IdWell = 1, + DepthEnd = 10, + DepthStart = 2, + DifferentialPressure = 3, + DifferentialPressureMax = 4, + FlowRate = 5, + FlowRateMax = 6, + Id = 0, + IdWellSectionType = 1, + Note = "1", + PressureMax = 2, + Rpm = 3, + RpmMax = 4, + RopMax = 5, + TopDriveTorque = 6, + TopDriveTorqueMax = 7, + WeightOnBit = 8, + WeightOnBitMax = 9, + IdAuthor = 1, + IdEditor = 1, + Creation = DateTimeOffset.UtcNow + }; + + public ProcessMapPlanRotorControllerTest(WebAppFactoryFixture factory) : base(factory, "ProcessMapPlanRotor") + { + } + + + protected override ProcessMapPlanRotor? GetByWellId() + { + var entity = dbContext + .Set() + .Where(p => p.WeightOnBit == dto.WeightOnBit) + .Where(p => p.WeightOnBitMax == dto.WeightOnBitMax) + .Where(p => p.Note == dto.Note) + .FirstOrDefault(p => p.IdWell == dto.IdWell); + + return entity; + } + + protected override ProcessMapPlanRotor GetByNote( + DbSet dbSet, + ProcessMapPlanRotorDto dto) + { + var entity = dbSet.First(p => p.Note == dto.Note); + + return entity; + } + + protected override ProcessMapPlanRotorDto GetByNote( + IEnumerable dtos, + ProcessMapPlanRotorDto dto) + { + var entity = dtos.First(p => p.Note == dto.Note); + + return entity; + } + + + [Fact] + public async Task InsertRange_returns_success() + { + await InsertRangeSuccess(dto); + } + + + [Fact] + public async Task InsertRange_returns_BadRequest_for_IdWellSectionType() + { + //arrange + var badDto = dto.Adapt(); + badDto.IdWellSectionType = int.MaxValue; + + await InsertRangeFailed(badDto); + } + + [Fact] + public async Task ClearAndInsertRange_returns_success() + { + await ClearAndInsertRange(entity, dto); + } + + [Fact] + public async Task UpdateOrInsertRange_returns_success() + { + var dtoUpdate = dto.Adapt(); + dtoUpdate.IdWell = 0; + dtoUpdate.Note = "nebuchadnezzar"; + dtoUpdate.DifferentialPressureMax++; + dtoUpdate.DifferentialPressure++; + dtoUpdate.FlowRate++; + dtoUpdate.FlowRateMax++; + dtoUpdate.RopMax++; + dtoUpdate.WeightOnBit++; + dtoUpdate.WeightOnBitMax++; + dtoUpdate.DepthStart++; + dtoUpdate.DepthEnd++; + dtoUpdate.Rpm++; + dtoUpdate.RpmMax++; + dtoUpdate.TopDriveTorque++; + dtoUpdate.TopDriveTorqueMax++; + + var dtoInsert = dtoUpdate.Adapt(); + dtoInsert.Id = 0; + dtoInsert.Note = "nebuchad"; + dtoInsert.DifferentialPressureMax++; + dtoInsert.DifferentialPressure++; + dtoInsert.FlowRate++; + dtoInsert.FlowRateMax++; + dtoInsert.RopMax++; + dtoInsert.WeightOnBit++; + dtoInsert.WeightOnBitMax++; + dtoInsert.DepthStart++; + dtoInsert.DepthEnd++; + dtoInsert.Rpm++; + dtoInsert.RpmMax++; + dtoInsert.TopDriveTorque++; + dtoInsert.TopDriveTorqueMax++; + + await UpdateOrInsertRange(entity, dtoUpdate, dtoInsert); + } + + [Fact] + public async Task DeleteRange_returns_success() + { + await DeleteRange(entity, dto); + } + + [Fact] + public async Task Clear_returns_success() + { + await Clear(entity, dto); + } + + [Fact] + public async Task GetDatesChange_returns_success() + { + await GetDatesChange(entity, dto); + } + + [Fact] + public async Task Get_actual_returns_success() + { + await Get(entity, dto); + } + + [Fact] + public async Task Get_at_moment_returns_success() + { + await GetAtMoment(entity, dto); + } + + [Fact] + public async Task Get_by_updated_from_returns_success() + { + await GetByUpdated(entity, dto); + } + + [Fact] + public async Task Get_updated_returns_success() + { + await GetUpdated(entity, dto); + } + + [Fact] + public async Task Parse_returns_success() + { + await Parse(dto.IdWell, "ProcessMapPlanRotorValid.xlsx", dto); + } + + [Fact] + public async Task Parse_returns_success_for_result_with_warnings() + { + await ParseWithWarnings(dto.IdWell, "ProcessMapPlanRotorInvalid.xlsx"); + } +} \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanSlideControllerTest.cs b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanSlideControllerTest.cs new file mode 100644 index 00000000..389cc8a3 --- /dev/null +++ b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanSlideControllerTest.cs @@ -0,0 +1,201 @@ +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudDb.Model.ProcessMapPlan.Operations; +using Mapster; +using Microsoft.EntityFrameworkCore; +using Xunit; + +namespace AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan.Operations; +public class ProcessMapPlanSlideControllerTest : ProcessMapPlanBaseControllerTest +{ + private readonly ProcessMapPlanSlideDto dto = new ProcessMapPlanSlideDto() + { + IdWell = 1, + DepthStart = 1, + DepthEnd = 2, + RopMax = 3, + PressureMax = 4, + DifferentialPressure = 5, + DifferentialPressureMax = 6, + WeightOnBit = 7, + WeightOnBitMax = 8, + FlowRate = 9, + FlowRateMax = 10, + Spring = 11, + Buckling = 12, + Id = 0, + IdWellSectionType = 1, + Note = "13", + }; + + private readonly ProcessMapPlanSlide entity = new ProcessMapPlanSlide() + { + IdWell = 1, + DepthEnd = 10, + DepthStart = 2, + DifferentialPressure = 3, + DifferentialPressureMax = 4, + FlowRate = 5, + FlowRateMax = 6, + Id = 0, + IdWellSectionType = 1, + Note = "1", + PressureMax = 2, + RopMax = 5, + WeightOnBit = 8, + WeightOnBitMax = 9, + IdAuthor = 1, + IdEditor = 1, + Creation = DateTimeOffset.UtcNow, + Spring = 10, + Buckling = 11, + }; + + public ProcessMapPlanSlideControllerTest(WebAppFactoryFixture factory) : base(factory, "ProcessMapPlanSlide") + { + } + + + protected override ProcessMapPlanSlide? GetByWellId() + { + var entity = dbContext + .Set() + .Where(p => p.WeightOnBit == dto.WeightOnBit) + .Where(p => p.WeightOnBitMax == dto.WeightOnBitMax) + .Where(p => p.Note == dto.Note) + .FirstOrDefault(p => p.IdWell == dto.IdWell); + + return entity; + } + + protected override ProcessMapPlanSlide GetByNote( + DbSet dbSet, + ProcessMapPlanSlideDto dto) + { + var entity = dbSet.First(p => p.Note == dto.Note); + + return entity; + } + + protected override ProcessMapPlanSlideDto GetByNote( + IEnumerable dtos, + ProcessMapPlanSlideDto dto) + { + var entity = dtos.First(p => p.Note == dto.Note); + + return entity; + } + + + [Fact] + public async Task InsertRange_returns_success() + { + await InsertRangeSuccess(dto); + } + + + [Fact] + public async Task InsertRange_returns_BadRequest_for_IdWellSectionType() + { + //arrange + var badDto = dto.Adapt(); + badDto.IdWellSectionType = int.MaxValue; + + await InsertRangeFailed(badDto); + } + + [Fact] + public async Task ClearAndInsertRange_returns_success() + { + await ClearAndInsertRange(entity, dto); + } + + [Fact] + public async Task UpdateOrInsertRange_returns_success() + { + var dtoUpdate = dto.Adapt(); + dtoUpdate.IdWell = 0; + dtoUpdate.Note = "nebuchadnezzar"; + dtoUpdate.DifferentialPressureMax++; + dtoUpdate.DifferentialPressure++; + dtoUpdate.FlowRate++; + dtoUpdate.FlowRateMax++; + dtoUpdate.RopMax++; + dtoUpdate.WeightOnBit++; + dtoUpdate.WeightOnBitMax++; + dtoUpdate.DepthStart++; + dtoUpdate.DepthEnd++; + dtoUpdate.Spring++; + dtoUpdate.Buckling++; + + var dtoInsert = dtoUpdate.Adapt(); + dtoInsert.Id = 0; + dtoInsert.Note = "nebuchad"; + dtoInsert.DifferentialPressureMax++; + dtoInsert.DifferentialPressure++; + dtoInsert.FlowRate++; + dtoInsert.FlowRateMax++; + dtoInsert.RopMax++; + dtoInsert.WeightOnBit++; + dtoInsert.WeightOnBitMax++; + dtoInsert.DepthStart++; + dtoInsert.DepthEnd++; + dtoUpdate.Spring++; + dtoUpdate.Buckling++; + + await UpdateOrInsertRange(entity, dtoUpdate, dtoInsert); + } + + [Fact] + public async Task DeleteRange_returns_success() + { + await DeleteRange(entity, dto); + } + + [Fact] + public async Task Clear_returns_success() + { + await Clear(entity, dto); + } + + [Fact] + public async Task GetDatesChange_returns_success() + { + await GetDatesChange(entity, dto); + } + + [Fact] + public async Task Get_actual_returns_success() + { + await Get(entity, dto); + } + + [Fact] + public async Task Get_at_moment_returns_success() + { + await GetAtMoment(entity, dto); + } + + [Fact] + public async Task Get_by_updated_from_returns_success() + { + await GetByUpdated(entity, dto); + } + + [Fact] + public async Task Get_updated_returns_success() + { + await GetUpdated(entity, dto); + } + + [Fact] + public async Task Parse_returns_success() + { + await Parse(dto.IdWell, "ProcessMapPlanSlideValid.xlsx", dto); + } + + [Fact] + public async Task Parse_returns_success_for_result_with_warnings() + { + await ParseWithWarnings(dto.IdWell, "ProcessMapPlanSlideInvalid.xlsx"); + } +} \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanSwitchingOffThePumpControllerTest.cs b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanSwitchingOffThePumpControllerTest.cs new file mode 100644 index 00000000..ecd63831 --- /dev/null +++ b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanSwitchingOffThePumpControllerTest.cs @@ -0,0 +1,71 @@ +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; +using AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan; +using AsbCloudWebApi.IntegrationTests; +using Microsoft.EntityFrameworkCore; +using Xunit; +using AsbCloudDb.Model.ProcessMapPlan.Operations; +using AsbCloudApp.Data.ProcessMaps.Operations; + +namespace AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan.Operations; + +/// +/// РТК план выключение насоса +/// +public class ProcessMapPlanSwitchingOffThePumpControllerTest : + ProcessMapPlanBaseControllerTest +{ + public ProcessMapPlanSwitchingOffThePumpControllerTest(WebAppFactoryFixture factory) : base(factory, "ProcessMapPlanSwitchingOffThePump") + { + } + private readonly ProcessMapPlanSwitchingOffThePumpDto dto = new ProcessMapPlanSwitchingOffThePumpDto() + { + IdWell = 1, + DepthStart = 1, + DepthEnd = 2, + Id = 0, + IdWellSectionType = 1, + Duration = 1, + ResidualPressureLimit = 1, + Note = "5" + }; + + private readonly ProcessMapPlanSwitchingOffThePump entity = new ProcessMapPlanSwitchingOffThePump() + { + IdWell = 1, + DepthEnd = 10, + DepthStart = 2, + Id = 0, + IdWellSectionType = 1, + IdAuthor = 1, + IdEditor = 1, + Creation = DateTimeOffset.UtcNow, + Duration = 1, + ResidualPressureLimit = 1, + Note = "5" + }; + + [Fact] + public async Task Get_actual_returns_success() + { + await Get(entity, dto); + } + + protected override ProcessMapPlanSwitchingOffThePump GetByNote(DbSet dbSet, ProcessMapPlanSwitchingOffThePumpDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanSwitchingOffThePumpDto GetByNote(IEnumerable dtos, ProcessMapPlanSwitchingOffThePumpDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanSwitchingOffThePump? GetByWellId() + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanSwitchingToTheModeControllerTest.cs b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanSwitchingToTheModeControllerTest.cs new file mode 100644 index 00000000..b1b61629 --- /dev/null +++ b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanSwitchingToTheModeControllerTest.cs @@ -0,0 +1,68 @@ +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudDb.Model.ProcessMapPlan.Operations; +using AsbCloudWebApi.IntegrationTests; +using AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan; +using Microsoft.EntityFrameworkCore; +using Xunit; + +namespace AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan.Operations; + +/// +/// РТК план выход на плановый расход +/// +public class ProcessMapPlanSwitchingToTheModeControllerTest : + ProcessMapPlanBaseControllerTest +{ + public ProcessMapPlanSwitchingToTheModeControllerTest(WebAppFactoryFixture factory) : base(factory, "ProcessMapPlanSwitchingToTheMode") + { + } + private readonly ProcessMapPlanSwitchingToTheModeDto dto = new ProcessMapPlanSwitchingToTheModeDto() + { + IdWell = 1, + DepthStart = 1, + DepthEnd = 2, + Id = 0, + IdWellSectionType = 1, + FlowRate = 1, + PressureMax = 1, + RampTime = 1, + Note = "10" + }; + + private readonly ProcessMapPlanSwitchingToTheMode entity = new ProcessMapPlanSwitchingToTheMode() + { + IdWell = 1, + DepthEnd = 10, + DepthStart = 2, + Id = 0, + IdWellSectionType = 1, + IdAuthor = 1, + IdEditor = 1, + Creation = DateTimeOffset.UtcNow, + FlowRate = 1, + PressureMax = 1, + RampTime = 1, + Note = "10" + }; + + [Fact] + public async Task Get_actual_returns_success() + { + await Get(entity, dto); + } + + protected override ProcessMapPlanSwitchingToTheMode GetByNote(DbSet dbSet, ProcessMapPlanSwitchingToTheModeDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanSwitchingToTheModeDto GetByNote(IEnumerable dtos, ProcessMapPlanSwitchingToTheModeDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanSwitchingToTheMode? GetByWellId() + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanTFOrientationControllerTest.cs b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanTFOrientationControllerTest.cs new file mode 100644 index 00000000..1f3d34e1 --- /dev/null +++ b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanTFOrientationControllerTest.cs @@ -0,0 +1,95 @@ +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; +using AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan; +using AsbCloudWebApi.IntegrationTests; +using Microsoft.EntityFrameworkCore; +using Xunit; +using AsbCloudDb.Model.ProcessMapPlan.Operations; +using AsbCloudApp.Data.ProcessMaps.Operations; + +namespace AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan.Operations; + +/// +/// РТК план выставление +/// +public class ProcessMapPlanTFOrientationControllerTest : + ProcessMapPlanBaseControllerTest +{ + public ProcessMapPlanTFOrientationControllerTest(WebAppFactoryFixture factory) : base(factory, "ProcessMapPlanTFOrientation") + { + } + private readonly ProcessMapPlanTFOrientationDto dto = new ProcessMapPlanTFOrientationDto() + { + IdWell = 1, + DepthStart = 1, + DepthEnd = 2, + Id = 0, + IdWellSectionType = 1, + DifferentialPressure = 1, + Spring = 1, + FlowRateDown = 1, + FlowRateUp = 1, + Interval = 1, + Note = "1", + PressureMax = 1, + RepetitionsCount = 1, + RopDown = 1, + RopUp = 1, + SlackingOff = 1, + StopPointOffBottom = 1, + TFSetpoint = 1, + Tight = 1, + TorqueMax = 1, + }; + + private readonly ProcessMapPlanTFOrientation entity = new ProcessMapPlanTFOrientation() + { + IdWell = 1, + DepthEnd = 10, + DepthStart = 2, + Id = 0, + IdWellSectionType = 1, + IdAuthor = 1, + IdEditor = 1, + Creation = DateTimeOffset.UtcNow, + DifferentialPressure = 1, + Spring = 1, + FlowRateDown = 1, + FlowRateUp = 1, + Interval = 1, + Note = "1", + PressureMax = 1, + RepetitionsCount = 1, + RopDown = 1, + RopUp = 1, + SlackingOff = 1, + StopPointOffBottom = 1, + TFSetpoint = 1, + Tight = 1, + TorqueMax = 1, + }; + + [Fact] + public async Task Get_actual_returns_success() + { + await Get(entity, dto); + } + + protected override ProcessMapPlanTFOrientation GetByNote(DbSet dbSet, ProcessMapPlanTFOrientationDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanTFOrientationDto GetByNote(IEnumerable dtos, ProcessMapPlanTFOrientationDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanTFOrientation? GetByWellId() + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/ProcessMapPlanBaseControllerTest.cs b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/ProcessMapPlanBaseControllerTest.cs new file mode 100644 index 00000000..ef386a27 --- /dev/null +++ b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/ProcessMapPlanBaseControllerTest.cs @@ -0,0 +1,426 @@ +using AsbCloudApp.Data; +using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.User; +using AsbCloudApp.Requests; +using AsbCloudDb.Model; +using AsbCloudDb.Model.ProcessMapPlan; +using AsbCloudWebApi.IntegrationTests.Clients; +using AsbCloudWebApi.IntegrationTests.Data; +using Mapster; +using Microsoft.EntityFrameworkCore; +using Refit; +using System.Net; +using System.Reflection; +using Xunit; + +namespace AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan; +public abstract class ProcessMapPlanBaseControllerTest : BaseIntegrationTest + where TEntity : ProcessMapPlanBase + where TDto : ProcessMapPlanBaseDto +{ + private IProcessMapPlanClient client; + private string controllerName; + + protected abstract TEntity? GetByWellId(); + protected abstract TEntity GetByNote(DbSet dbSet, TDto dto); + protected abstract TDto GetByNote(IEnumerable dtos, TDto dto); + + public ProcessMapPlanBaseControllerTest(WebAppFactoryFixture factory, string controllerName) : base(factory) + { + dbContext.CleanupDbSet(); + client = factory.GetAuthorizedHttpClient>(string.Empty); + this.controllerName = controllerName; + } + public async Task InsertRangeSuccess(TDto dto) + { + //arrange + var expected = dto.Adapt(); + + //act + var response = await client.InsertRange(dto.IdWell, controllerName, new TDto[] { expected }); + + //assert + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + Assert.Equal(1, response.Content); + + var entity = GetByWellId(); + + Assert.NotNull(entity); + + var actual = entity.Adapt>(); + Assert.Equal(ProcessMapPlanBase.IdStateActual, actual.IdState); + + var excludeProps = new[] { + nameof(ProcessMapPlanBaseDto.Id), + nameof(ProcessMapPlanBaseDto.Section) + }; + MatchHelper.Match(expected, actual.Item, excludeProps); + } + + public async Task InsertRangeFailed(TDto dto) + { + //act + var response = await client.InsertRange(dto.IdWell, controllerName, new[] { dto }); + + //assert + Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); + } + + public async Task ClearAndInsertRange(TEntity entity, TDto dto) + { + // arrange + var dbset = dbContext.Set(); + + var entry = dbset.Add(entity); + dbContext.SaveChanges(); + entry.State = EntityState.Detached; + + var startTime = DateTimeOffset.UtcNow; + + // act + var result = await client.ClearAndInsertRange(entity.IdWell, controllerName, new TDto[] { dto }); + + // assert + var doneTime = DateTimeOffset.UtcNow; + Assert.Equal(HttpStatusCode.OK, result.StatusCode); + Assert.Equal(2, result.Content); + + var count = dbset.Count(); + Assert.Equal(2, count); + + var oldEntity = dbset.First(p => p.Id == entry.Entity.Id); + Assert.Equal(ProcessMapPlanBase.IdCleared, oldEntity.IdState); + Assert.Equal(1, oldEntity.IdEditor); + Assert.NotNull(oldEntity.Obsolete); + Assert.InRange(oldEntity.Obsolete.Value, startTime, doneTime); + + var newEntity = dbset.First(p => p.Id != entry.Entity.Id); + Assert.Equal(ProcessMapPlanBase.IdStateActual, newEntity.IdState); + Assert.Equal(1, newEntity.IdAuthor); + Assert.Null(newEntity.IdEditor); + Assert.Null(newEntity.Obsolete); + Assert.Null(newEntity.IdPrevious); + Assert.InRange(newEntity.Creation, startTime, doneTime); + } + + public async Task UpdateOrInsertRange(TEntity entity, TDto dtoUpdate, TDto dtoInsert) + { + // arrange + var startTime = DateTimeOffset.UtcNow; + + var dbset = dbContext.Set(); + var user = dbContext.Set().First().Adapt(); + user.Surname = "userSurname"; + user.Email = "user@mail.domain"; + + var entry = dbset.Add(entity); + dbContext.SaveChanges(); + entry.State = EntityState.Detached; + + dtoUpdate.Id = entry.Entity.Id; + + // act + var result = await client.UpdateOrInsertRange(entity.IdWell, controllerName, new TDto[] { dtoUpdate, dtoInsert }); + + // assert + var doneTime = DateTimeOffset.UtcNow; + Assert.Equal(HttpStatusCode.OK, result.StatusCode); + Assert.Equal(3, result.Content); + + var count = dbset.Count(); + Assert.Equal(3, count); + + var oldEntity = dbset.First(p => p.Id == entry.Entity.Id); + Assert.Equal(ProcessMapPlanBase.IdStateReplaced, oldEntity.IdState); + Assert.Equal(1, oldEntity.IdEditor); + Assert.NotNull(oldEntity.Obsolete); + Assert.InRange(oldEntity.Obsolete.Value, startTime, doneTime); + + var newEntity = GetByNote(dbset, dtoUpdate); + Assert.Equal(ProcessMapPlanBase.IdStateActual, newEntity.IdState); + Assert.Equal(1, newEntity.IdAuthor); + Assert.Null(newEntity.IdEditor); + Assert.Null(newEntity.Obsolete); + Assert.Equal(oldEntity.Id, newEntity.IdPrevious); + Assert.InRange(newEntity.Creation, startTime, doneTime); + + var expected = dtoUpdate.Adapt(); + var excludeProps = new[] { + nameof(ProcessMapPlanBase.Id), + nameof(ProcessMapPlanBase.IdWell), + nameof(ProcessMapPlanBase.Author), + nameof(ProcessMapPlanBase.IdAuthor), + nameof(ProcessMapPlanBase.Editor), + nameof(ProcessMapPlanBase.Creation), + }; + MatchHelper.Match(expected, newEntity!, excludeProps); + } + + public async Task DeleteRange(TEntity entity, TDto dto) + { + //arrange + var dbset = dbContext.Set(); + + var entry = dbset.Add(entity); + dbContext.SaveChanges(); + entry.State = EntityState.Detached; + + var startTime = DateTimeOffset.UtcNow; + + //act + var response = await client.DeleteRange(dto.IdWell, controllerName, new[] { entry.Entity.Id }); + + //assert + var doneTime = DateTimeOffset.UtcNow; + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + Assert.Equal(1, response.Content); + + var actual = dbContext + .Set() + .FirstOrDefault(p => p.Id == entry.Entity.Id); + + Assert.NotNull(actual); + Assert.Equal(ProcessMapPlanBase.IdStateDeleted, actual.IdState); + Assert.Equal(1, actual.IdEditor); + Assert.NotNull(actual.Obsolete); + Assert.InRange(actual.Obsolete.Value, startTime, doneTime); + } + + public async Task Clear(TEntity entity, TDto dto) + { + //arrange + var dbset = dbContext.Set(); + + var entry = dbset.Add(entity); + dbContext.SaveChanges(); + entry.State = EntityState.Detached; + + var startTime = DateTimeOffset.UtcNow; + + //act + var response = await client.Clear(dto.IdWell, controllerName); + + //assert + var doneTime = DateTimeOffset.UtcNow; + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + Assert.Equal(1, response.Content); + + var actual = dbContext + .Set() + .FirstOrDefault(p => p.Id == entry.Entity.Id); + + Assert.NotNull(actual); + Assert.Equal(ProcessMapPlanBase.IdCleared, actual.IdState); + Assert.Equal(1, actual.IdEditor); + Assert.NotNull(actual.Obsolete); + Assert.InRange(actual.Obsolete.Value, startTime, doneTime); + } + + public async Task GetDatesChange(TEntity entity, TDto dto) + { + //arrange + var dbset = dbContext.Set(); + + var entity2 = entity.Adapt(); + entity2.Creation = entity.Creation.AddDays(1); + dbset.Add(entity); + dbset.Add(entity2); + dbContext.SaveChanges(); + var timezoneHours = Defaults.Timezone.Hours; + var offset = TimeSpan.FromHours(timezoneHours); + var dates = new[] { entity.Creation, entity2.Creation } + .Select(d => d.ToOffset(offset)) + .Select(d => new DateOnly(d.Year, d.Month, d.Day)); + + //act + var response = await client.GetDatesChange(dto.IdWell, controllerName); + + //assert + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + Assert.NotNull(response.Content); + Assert.Equal(2, response.Content.Count()); + Assert.All(response.Content, d => dates.Contains(d)); + } + + public async Task Get(TEntity entity, TDto dto) + { + //arrange + var dbset = dbContext.Set(); + + dbset.Add(entity); + + var entityDeleted = entity.Adapt(); + entityDeleted.Creation = entity.Creation.AddDays(-1); + entityDeleted.Obsolete = entity.Creation; + entityDeleted.IdState = ProcessMapPlanBase.IdStateDeleted; + entityDeleted.IdEditor = 1; + dbset.Add(entityDeleted); + + dbContext.SaveChanges(); + + var response = await client.Get(dto.IdWell, controllerName); + + //assert + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + Assert.NotNull(response.Content); + Assert.Single(response.Content); + + var actual = response.Content.First()!; + Assert.NotNull(actual.Section); + Assert.NotEmpty(actual.Section); + + var expected = entity.Adapt()!; + var excludeProps = new[] { + nameof(ProcessMapPlanBaseDto.Id), + }; + MatchHelper.Match(expected, actual, excludeProps); + } + + public async Task GetAtMoment(TEntity entity, TDto dto) + { + //arrange + var dbset = dbContext.Set(); + + var now = DateTimeOffset.UtcNow; + var entityDeleted = entity.Adapt(); + entityDeleted.Creation = now; + entityDeleted.Obsolete = now.AddMinutes(1); + entityDeleted.IdState = ProcessMapPlanBase.IdStateDeleted; + entityDeleted.IdEditor = 1; + dbset.Add(entityDeleted); + + var entityDeleted2 = entity.Adapt(); + entityDeleted2.Creation = now.AddMinutes(1); + entityDeleted2.Obsolete = now.AddMinutes(2); + entityDeleted2.IdState = ProcessMapPlanBase.IdStateDeleted; + entityDeleted2.IdEditor = 1; + dbset.Add(entityDeleted2); + + dbContext.SaveChanges(); + + //act + var response = await client.Get(dto.IdWell, controllerName, now.AddMinutes(0.5)); + + //assert + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + Assert.NotNull(response.Content); + Assert.Single(response.Content); + } + + public async Task GetByUpdated(TEntity entity, TDto dto) + { + //arrange + var dbset = dbContext.Set(); + dbset.Add(entity); + + var entity2 = entity.Adapt(); + entity2.Obsolete = DateTimeOffset.UtcNow; + dbset.Add(entity2); + + dbContext.SaveChanges(); + + //act + var response = await client.Get(Defaults.RemoteUid, controllerName, DateTimeOffset.UtcNow.AddHours(-1)); + + //assert + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + Assert.NotNull(response.Content); + Assert.Equal(2, response.Content.Count()); + } + + public async Task GetUpdated(TEntity entity, TDto dto) + { + //arrange + var dbset = dbContext.Set(); + + dbset.Add(entity); + + var entity2 = entity.Adapt(); + entity2.Creation = entity.Creation.AddHours(1); + dbset.Add(entity2); + + var entity3 = entity.Adapt(); + entity3.Obsolete = entity.Creation.AddHours(1); + dbset.Add(entity3); + + dbContext.SaveChanges(); + + var timezoneHours = Defaults.Timezone.Hours; + var offset = TimeSpan.FromHours(timezoneHours); + var updateFrom = entity.Creation.ToOffset(offset).AddHours(0.5); + + //act + var request = new ProcessMapPlanBaseRequest + { + UpdateFrom = updateFrom, + }; + var response = await client.Get(dto.IdWell, controllerName); + + //assert + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + Assert.NotNull(response.Content); + Assert.Equal(2, response.Content.Count()); + + var entity2Dto = entity2.Adapt(); + var actual = GetByNote(response.Content, entity2Dto); + + var expected = entity2.Adapt(); + var excludeProps = new[] { + nameof(ProcessMapPlanBaseDto.Id), + }; + MatchHelper.Match(expected, actual, excludeProps); + } + + public async Task Parse(int IdWell, string fileName, TDto dto) + { + //arrange + var stream = Assembly.GetExecutingAssembly().GetFileCopyStream(fileName); + + var streamPart = new StreamPart(stream, fileName, "application/octet-stream"); + + //act + var response = await client.Parse(IdWell, controllerName, streamPart); + + //assert + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + + var parserResult = response.Content; + + Assert.NotNull(parserResult); + Assert.Single(parserResult.Item); + Assert.True(parserResult.IsValid); + + var row = parserResult.Item.First(); + var dtoActual = row.Item; + + Assert.True(row.IsValid); + + var excludeProps = new[] { nameof(ProcessMapPlanBaseDto.IdWell) }; + MatchHelper.Match(dto, dtoActual, excludeProps); + } + + public async Task ParseWithWarnings(int IdWell, string fileName) + { + //arrange + var stream = Assembly.GetExecutingAssembly().GetFileCopyStream(fileName); + + var streamPart = new StreamPart(stream, fileName, "application/octet-stream"); + + //act + var response = await client.Parse(IdWell, controllerName, streamPart); + + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + + var parserResult = response.Content; + + Assert.NotNull(parserResult); + Assert.False(parserResult.IsValid); + Assert.Single(parserResult.Warnings); + Assert.Single(parserResult.Item); + + var row = parserResult.Item.First(); + + Assert.False(row.IsValid); + Assert.Equal(2, row.Warnings.Count()); + } +} diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/ProcessMapPlanDrillingControllerTest.cs b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/ProcessMapPlanDrillingControllerTest.cs deleted file mode 100644 index 8199e785..00000000 --- a/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/ProcessMapPlanDrillingControllerTest.cs +++ /dev/null @@ -1,618 +0,0 @@ -using AsbCloudApp.Requests; -using AsbCloudDb.Model.ProcessMapPlan; -using AsbCloudWebApi.IntegrationTests.Clients; -using Mapster; -using Microsoft.EntityFrameworkCore; -using System.Net; -using System.Reflection; -using AsbCloudDb.Model.ProcessMaps; -using AsbCloudWebApi.IntegrationTests.Data; -using Refit; -using Xunit; -using AsbCloudApp.Data.ProcessMaps; -using AsbCloudDb.Model; -using AsbCloudApp.Data.User; - -namespace AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan; - -public class ProcessMapPlanDrillingControllerTest: BaseIntegrationTest -{ - private const int IdWell = 1; - - private readonly ProcessMapPlanDrillingDto dto = new (){ - Id = 0, - Creation = new(), - Obsolete = null, - IdState = 0, - IdPrevious = null, - - IdWell = IdWell, - Section = "Кондуктор", - IdWellSectionType = 3, - DepthStart = 0.5, - DepthEnd = 1.5, - - IdMode = 1, - AxialLoadPlan = 2.718281, - AxialLoadLimitMax = 3.1415926, - DeltaPressurePlan = 4, - DeltaPressureLimitMax = 5, - TopDriveTorquePlan = 6, - TopDriveTorqueLimitMax = 7, - TopDriveSpeedPlan = 8, - TopDriveSpeedLimitMax = 9, - FlowPlan = 10, - FlowLimitMax = 11, - RopPlan = 12, - UsageSaub = 13, - UsageSpin = 14, - Comment = "это тестовая запись", - }; - private readonly ProcessMapPlanDrilling entity = new () - { - Id = 0, - IdAuthor = 1, - IdEditor = null, - Creation = DateTimeOffset.UtcNow, - Obsolete = null, - IdState = AsbCloudDb.Model.ChangeLogAbstract.IdStateActual, - IdPrevious = null, - - IdWell = IdWell, - IdWellSectionType = 1, - DepthStart = 0.5, - DepthEnd = 1.5, - - IdMode = 1, - AxialLoadPlan = 2.718281, - AxialLoadLimitMax = 3.1415926, - DeltaPressurePlan = 4, - DeltaPressureLimitMax = 5, - TopDriveTorquePlan = 6, - TopDriveTorqueLimitMax = 7, - TopDriveSpeedPlan = 8, - TopDriveSpeedLimitMax = 9, - FlowPlan = 10, - FlowLimitMax = 11, - RopPlan = 12, - UsageSaub = 13, - UsageSpin = 14, - Comment = "это тестовая запись", - }; - - private IProcessMapPlanDrillingClient client; - - public ProcessMapPlanDrillingControllerTest(WebAppFactoryFixture factory) : base(factory) - { - dbContext.CleanupDbSet(); - client = factory.GetAuthorizedHttpClient(string.Empty); - } - - [Fact] - public async Task InsertRange_returns_success() - { - //arrange - var expected = dto.Adapt(); - - //act - var response = await client.InsertRange(dto.IdWell, new[] { expected }); - - //assert - Assert.Equal(HttpStatusCode.OK, response.StatusCode); - Assert.Equal(1, response.Content); - - var entity = dbContext - .Set() - .Where(p => p.AxialLoadPlan == dto.AxialLoadPlan) - .Where(p => p.AxialLoadLimitMax == dto.AxialLoadLimitMax) - .Where(p => p.Comment == dto.Comment) - .FirstOrDefault(p => p.IdWell == dto.IdWell); - - Assert.NotNull(entity); - - var actual = entity.Adapt(); - Assert.Equal(ProcessMapPlanBase.IdStateActual, actual.IdState); - - var excludeProps = new[] { - nameof(ProcessMapPlanDrillingDto.Id), - nameof(ProcessMapPlanDrillingDto.IdState), - nameof(ProcessMapPlanDrillingDto.Author), - nameof(ProcessMapPlanDrillingDto.Creation), - nameof(ProcessMapPlanDrillingDto.Section) - }; - MatchHelper.Match(expected, actual, excludeProps); - } - - [Fact] - public async Task InsertRange_returns_BadRequest_for_IdWellSectionType() - { - //arrange - var badDto = dto.Adapt(); - badDto.IdWellSectionType = int.MaxValue; - - //act - var response = await client.InsertRange(dto.IdWell, new[] { badDto }); - - //assert - Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); - } - - [Fact] - public async Task InsertRange_returns_BadRequest_for_IdMode() - { - //arrange - var badDto = dto.Adapt(); - badDto.IdMode = int.MaxValue; - - //act - var response = await client.InsertRange(dto.IdWell, new[] { badDto }); - - //assert - Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); - } - - [Fact] - public async Task ClearAndInsertRange_returns_success() - { - // arrange - var dbset = dbContext.Set(); - - var entry = dbset.Add(entity); - dbContext.SaveChanges(); - entry.State = EntityState.Detached; - - var startTime = DateTimeOffset.UtcNow; - - // act - var result = await client.ClearAndInsertRange(entity.IdWell, new ProcessMapPlanDrillingDto[] { dto }); - - // assert - var doneTime = DateTimeOffset.UtcNow; - Assert.Equal(HttpStatusCode.OK, result.StatusCode); - Assert.Equal(2, result.Content); - - var count = dbset.Count(); - Assert.Equal(2, count); - - var oldEntity = dbset.First(p => p.Id == entry.Entity.Id); - Assert.Equal(ProcessMapPlanBase.IdCleared, oldEntity.IdState); - Assert.Equal(1, oldEntity.IdEditor); - Assert.NotNull(oldEntity.Obsolete); - Assert.InRange(oldEntity.Obsolete.Value, startTime, doneTime); - - var newEntity = dbset.First(p => p.Id != entry.Entity.Id); - Assert.Equal(ProcessMapPlanBase.IdStateActual, newEntity.IdState); - Assert.Equal(1, newEntity.IdAuthor); - Assert.Null(newEntity.IdEditor); - Assert.Null(newEntity.Obsolete); - Assert.Null(newEntity.IdPrevious); - Assert.InRange(newEntity.Creation, startTime, doneTime); - } - - [Fact] - public async Task UpdateOrInsertRange_returns_success() - { - // arrange - var startTime = DateTimeOffset.UtcNow; - - var dbset = dbContext.Set(); - var user = dbContext.Set().First().Adapt(); - user.Surname = "userSurname"; - user.Email = "user@mail.domain"; - - var entry = dbset.Add(entity); - dbContext.SaveChanges(); - entry.State = EntityState.Detached; - - var dtoUpdate = dto.Adapt(); - dtoUpdate.IdWell = 0; - dtoUpdate.Id = entry.Entity.Id; - dtoUpdate.Comment = "nebuchadnezzar"; - dtoUpdate.DeltaPressureLimitMax++; - dtoUpdate.DeltaPressurePlan++; - dtoUpdate.FlowPlan++; - dtoUpdate.FlowLimitMax++; - dtoUpdate.RopPlan++; - dtoUpdate.AxialLoadPlan++; - dtoUpdate.AxialLoadLimitMax++; - dtoUpdate.DepthStart++; - dtoUpdate.DepthEnd++; - dtoUpdate.TopDriveSpeedPlan++; - dtoUpdate.TopDriveSpeedLimitMax++; - dtoUpdate.TopDriveTorquePlan++; - dtoUpdate.TopDriveTorqueLimitMax++; - dtoUpdate.Author = user; - - var dtoInsert = dtoUpdate.Adapt(); - dtoInsert.Id = 0; - dtoInsert.Comment = "nebuchad"; - dtoInsert.DeltaPressureLimitMax++; - dtoInsert.DeltaPressurePlan++; - dtoInsert.FlowPlan++; - dtoInsert.FlowLimitMax++; - dtoInsert.RopPlan++; - dtoInsert.AxialLoadPlan++; - dtoInsert.AxialLoadLimitMax++; - dtoInsert.DepthStart++; - dtoInsert.DepthEnd++; - dtoInsert.TopDriveSpeedPlan++; - dtoInsert.TopDriveSpeedLimitMax++; - dtoInsert.TopDriveTorquePlan++; - dtoInsert.TopDriveTorqueLimitMax++; - dtoInsert.Author = user; - - // act - var result = await client.UpdateOrInsertRange(entity.IdWell, new ProcessMapPlanDrillingDto[] { dtoUpdate, dtoInsert }); - - // assert - var doneTime = DateTimeOffset.UtcNow; - Assert.Equal(HttpStatusCode.OK, result.StatusCode); - Assert.Equal(3, result.Content); - - var count = dbset.Count(); - Assert.Equal(3, count); - - var oldEntity = dbset.First(p => p.Id == entry.Entity.Id); - Assert.Equal(ProcessMapPlanBase.IdStateReplaced, oldEntity.IdState); - Assert.Equal(1, oldEntity.IdEditor); - Assert.NotNull(oldEntity.Obsolete); - Assert.InRange(oldEntity.Obsolete.Value, startTime, doneTime); - - var newEntity = dbset.First(p => p.Comment == dtoUpdate.Comment); - Assert.Equal(ProcessMapPlanBase.IdStateActual, newEntity.IdState); - Assert.Equal(1, newEntity.IdAuthor); - Assert.Null(newEntity.IdEditor); - Assert.Null(newEntity.Obsolete); - Assert.Equal(oldEntity.Id, newEntity.IdPrevious); - Assert.InRange(newEntity.Creation, startTime, doneTime); - - var expected = dtoUpdate.Adapt(); - var excludeProps = new[] { - nameof(ProcessMapPlanDrilling.Id), - nameof(ProcessMapPlanDrilling.IdWell), - nameof(ProcessMapPlanDrilling.Author), - nameof(ProcessMapPlanDrilling.IdAuthor), - nameof(ProcessMapPlanDrilling.Editor), - nameof(ProcessMapPlanDrilling.Creation), - }; - MatchHelper.Match(expected, newEntity!, excludeProps); - } - - [Fact] - public async Task DeleteRange_returns_success() - { - //arrange - var dbset = dbContext.Set(); - - var entry = dbset.Add(entity); - dbContext.SaveChanges(); - entry.State = EntityState.Detached; - - var startTime = DateTimeOffset.UtcNow; - - //act - var response = await client.DeleteRange(dto.IdWell, new[] { entry.Entity.Id }); - - //assert - var doneTime = DateTimeOffset.UtcNow; - Assert.Equal(HttpStatusCode.OK, response.StatusCode); - Assert.Equal(1, response.Content); - - var actual = dbContext - .Set() - .FirstOrDefault(p => p.Id == entry.Entity.Id); - - Assert.NotNull(actual); - Assert.Equal(ProcessMapPlanBase.IdStateDeleted, actual.IdState); - Assert.Equal(1, actual.IdEditor); - Assert.NotNull(actual.Obsolete); - Assert.InRange(actual.Obsolete.Value, startTime, doneTime); - } - - - [Fact] - public async Task Clear_returns_success() - { - //arrange - var dbset = dbContext.Set(); - - var entry = dbset.Add(entity); - dbContext.SaveChanges(); - entry.State = EntityState.Detached; - - var startTime = DateTimeOffset.UtcNow; - - //act - var response = await client.Clear(dto.IdWell); - - //assert - var doneTime = DateTimeOffset.UtcNow; - Assert.Equal(HttpStatusCode.OK, response.StatusCode); - Assert.Equal(1, response.Content); - - var actual = dbContext - .Set() - .FirstOrDefault(p => p.Id == entry.Entity.Id); - - Assert.NotNull(actual); - Assert.Equal(ProcessMapPlanBase.IdCleared, actual.IdState); - Assert.Equal(1, actual.IdEditor); - Assert.NotNull(actual.Obsolete); - Assert.InRange(actual.Obsolete.Value, startTime, doneTime); - } - - [Fact] - public async Task GetDatesChange_returns_success() - { - //arrange - var dbset = dbContext.Set(); - - var entity2 = entity.Adapt(); - entity2.Creation = entity.Creation.AddDays(1); - dbset.Add(entity); - dbset.Add(entity2); - dbContext.SaveChanges(); - var timezoneHours = Defaults.Timezone.Hours; - var offset = TimeSpan.FromHours(timezoneHours); - var dates = new[] { entity.Creation, entity2.Creation } - .Select(d => d.ToOffset(offset)) - .Select(d => new DateOnly(d.Year, d.Month, d.Day)); - - //act - var response = await client.GetDatesChange(dto.IdWell); - - //assert - Assert.Equal(HttpStatusCode.OK, response.StatusCode); - Assert.NotNull(response.Content); - Assert.Equal(2, response.Content.Count()); - Assert.All(response.Content, d => dates.Contains(d)); - } - - [Fact] - public async Task Get_all_returns_success() - { - //arrange - var dbset = dbContext.Set(); - - dbset.Add(entity); - - var entityDeleted = entity.Adapt(); - entityDeleted.Creation = entity.Creation.AddDays(-1); - entityDeleted.Obsolete = entity.Creation; - entityDeleted.IdState = ProcessMapPlanBase.IdStateDeleted; - entityDeleted.IdEditor = 1; - dbset.Add(entityDeleted); - - dbContext.SaveChanges(); - - //act - var request = new ProcessMapPlanBaseRequest(); - var response = await client.Get(dto.IdWell, request); - - //assert - Assert.Equal(HttpStatusCode.OK, response.StatusCode); - Assert.NotNull(response.Content); - Assert.Equal(2, response.Content.Count()); - } - - [Fact] - public async Task Get_actual_returns_success() - { - //arrange - var dbset = dbContext.Set(); - - dbset.Add(entity); - - var entityDeleted = entity.Adapt(); - entityDeleted.Creation = entity.Creation.AddDays(-1); - entityDeleted.Obsolete = entity.Creation; - entityDeleted.IdState = ProcessMapPlanBase.IdStateDeleted; - entityDeleted.IdEditor = 1; - entityDeleted.Comment = "nothing"; - dbset.Add(entityDeleted); - - dbContext.SaveChanges(); - - //act - var request = new ProcessMapPlanBaseRequest { - Moment = new DateTimeOffset(3000, 1, 1, 0, 0, 0, 0, TimeSpan.Zero) - }; - var response = await client.Get(dto.IdWell, request); - - //assert - Assert.Equal(HttpStatusCode.OK, response.StatusCode); - Assert.NotNull(response.Content); - Assert.Single(response.Content); - - var actual = response.Content.First()!; - - var expected = entity.Adapt()!; - var excludeProps = new[] { - nameof(ProcessMapPlanDrillingDto.Id), - nameof(ProcessMapPlanDrillingDto.Author), - nameof(ProcessMapPlanDrillingDto.Creation), - }; - MatchHelper.Match(expected, actual, excludeProps); - } - - [Fact] - public async Task Get_at_moment_returns_success() - { - //arrange - var dbset = dbContext.Set(); - - var now = DateTimeOffset.UtcNow; - var entityDeleted = entity.Adapt(); - entityDeleted.Creation = now; - entityDeleted.Obsolete = now.AddMinutes(1); - entityDeleted.IdState = ProcessMapPlanBase.IdStateDeleted; - entityDeleted.IdEditor = 1; - entityDeleted.Comment = "nothing"; - dbset.Add(entityDeleted); - - var entityDeleted2 = entity.Adapt(); - entityDeleted2.Creation = now.AddMinutes(1); - entityDeleted2.Obsolete = now.AddMinutes(2); - entityDeleted2.IdState = ProcessMapPlanBase.IdStateDeleted; - entityDeleted2.IdEditor = 1; - entityDeleted2.Comment = "nothing"; - dbset.Add(entityDeleted2); - - dbContext.SaveChanges(); - - //act - var request = new ProcessMapPlanBaseRequest - { - Moment = now.AddMinutes(0.5), - }; - var response = await client.Get(dto.IdWell, request); - - //assert - Assert.Equal(HttpStatusCode.OK, response.StatusCode); - Assert.NotNull(response.Content); - Assert.Single(response.Content); - } - - [Fact] - public async Task Get_section_returns_success() - { - //arrange - var dbset = dbContext.Set(); - - dbset.Add(entity); - - var entity2 = entity.Adapt(); - entity2.IdWellSectionType = 2; - entity2.Comment = "IdWellSectionType = 2"; - dbset.Add(entity2); - - dbContext.SaveChanges(); - - //act - var request = new ProcessMapPlanBaseRequest - { - IdWellSectionType = 2, - }; - var response = await client.Get(dto.IdWell, request); - - //assert - Assert.Equal(HttpStatusCode.OK, response.StatusCode); - Assert.NotNull(response.Content); - Assert.Single(response.Content); - - var actual = response.Content.First()!; - - var expected = entity2.Adapt()!; - var excludeProps = new[] { - nameof(ProcessMapPlanDrillingDto.Id), - nameof(ProcessMapPlanDrillingDto.Author), - nameof(ProcessMapPlanDrillingDto.Creation), - }; - MatchHelper.Match(expected, actual, excludeProps); - } - - [Fact] - public async Task Get_updated_returns_success() - { - //arrange - var dbset = dbContext.Set(); - - dbset.Add(entity); - - var entity2 = entity.Adapt(); - entity2.Creation = entity.Creation.AddHours(1); - entity2.Comment = "IdWellSectionType = 2"; - dbset.Add(entity2); - - var entity3 = entity.Adapt(); - entity3.Obsolete = entity.Creation.AddHours(1); - entity3.Comment = "IdWellSectionType = 3"; - dbset.Add(entity3); - - dbContext.SaveChanges(); - - var timezoneHours = Defaults.Timezone.Hours; - var offset = TimeSpan.FromHours(timezoneHours); - var updateFrom = entity.Creation.ToOffset(offset).AddHours(0.5); - - //act - var request = new ProcessMapPlanBaseRequest - { - UpdateFrom = updateFrom, - }; - var response = await client.Get(dto.IdWell, request); - - //assert - Assert.Equal(HttpStatusCode.OK, response.StatusCode); - Assert.NotNull(response.Content); - Assert.Equal(2, response.Content.Count()); - - var actual = response.Content - .First(p => p.Comment == entity2.Comment); - - var expected = entity2.Adapt(); - var excludeProps = new[] { - nameof(ProcessMapPlanDrillingDto.Id), - nameof(ProcessMapPlanDrillingDto.Author), - nameof(ProcessMapPlanDrillingDto.Creation), - }; - MatchHelper.Match(expected, actual, excludeProps); - } - - [Fact] - public async Task Parse_returns_success() - { - //arrange - const string fileName = "ProcessMapPlanDrillingValid.xlsx"; - var stream = Assembly.GetExecutingAssembly().GetFileCopyStream(fileName); - - var streamPart = new StreamPart(stream, fileName, "application/octet-stream"); - - //act - var response = await client.Parse(IdWell, streamPart); - - //assert - Assert.Equal(HttpStatusCode.OK, response.StatusCode); - - var parserResult = response.Content; - - Assert.NotNull(parserResult); - Assert.Single(parserResult.Item); - Assert.True(parserResult.IsValid); - - var row = parserResult.Item.First(); - var dtoActual = row.Item; - - Assert.True(row.IsValid); - - var excludeProps = new[] { nameof(ProcessMapPlanDrillingDto.IdWell) }; - MatchHelper.Match(dto, dtoActual, excludeProps); - } - - [Fact] - public async Task Parse_returns_success_for_result_with_warnings() - { - //arrange - const string fileName = "ProcessMapPlanDrillingInvalid.xlsx"; - var stream = Assembly.GetExecutingAssembly().GetFileCopyStream(fileName); - - var streamPart = new StreamPart(stream, fileName, "application/octet-stream"); - - //act - var response = await client.Parse(IdWell, streamPart); - - Assert.Equal(HttpStatusCode.OK, response.StatusCode); - - var parserResult = response.Content; - - Assert.NotNull(parserResult); - Assert.False(parserResult.IsValid); - Assert.Single(parserResult.Warnings); - Assert.Single(parserResult.Item); - - var row = parserResult.Item.First(); - - Assert.False(row.IsValid); - Assert.Equal(2, row.Warnings.Count()); - } -} \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/ProcessMapReportDrillingControllerTest.cs b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/ProcessMapReportDrillingControllerTest.cs index 7de0acd5..125852f6 100644 --- a/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/ProcessMapReportDrillingControllerTest.cs +++ b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/ProcessMapReportDrillingControllerTest.cs @@ -1,256 +1,256 @@ -using AsbCloudApp.Requests; -using AsbCloudDb.Model; -using AsbCloudDb.Model.ProcessMaps; -using AsbCloudWebApi.IntegrationTests.Clients; -using System.Net; -using AsbCloudWebApi.IntegrationTests.Data; -using Xunit; +//using AsbCloudApp.Requests; +//using AsbCloudDb.Model; +//using AsbCloudDb.Model.ProcessMaps; +//using AsbCloudWebApi.IntegrationTests.Clients; +//using System.Net; +//using AsbCloudWebApi.IntegrationTests.Data; +//using Xunit; -namespace AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan; +//namespace AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan; -public class ProcessMapReportDrillingControllerTest : BaseIntegrationTest -{ - private IProcessMapReportDrilling client; +//public class ProcessMapReportDrillingControllerTest : BaseIntegrationTest +//{ +// private IProcessMapReportDrilling client; - public ProcessMapReportDrillingControllerTest(WebAppFactoryFixture factory) - : base(factory) - { - dbContext.CleanupDbSet(); - dbContext.CleanupDbSet(); - client = factory.GetAuthorizedHttpClient(string.Empty); - } +// public ProcessMapReportDrillingControllerTest(WebAppFactoryFixture factory) +// : base(factory) +// { +// dbContext.CleanupDbSet(); +// dbContext.CleanupDbSet(); +// client = factory.GetAuthorizedHttpClient(string.Empty); +// } - [Fact] - public async Task Get_rtk_report_by_default_request_returns_success() - { - //arrange - var well = dbContext.Wells.First(); +// [Fact] +// public async Task Get_rtk_report_by_default_request_returns_success() +// { +// //arrange +// var well = dbContext.Wells.First(); - var processMapPlanDrilling = CreateProcessMapPlanDrilling(well.Id); - dbContext.ProcessMapPlanDrilling.Add(processMapPlanDrilling); +// var processMapPlanDrilling = CreateProcessMapPlanDrilling(well.Id); +// dbContext.ProcessMapPlanDrilling.Add(processMapPlanDrilling); - var wellOperation = CreateWellOperation(well.Id); - dbContext.WellOperations.Add(wellOperation); +// var wellOperation = CreateWellOperation(well.Id); +// dbContext.WellOperations.Add(wellOperation); - var dataSaubStats = CreateDataSaubStats(well.IdTelemetry!.Value, wellOperation.IdCategory); - dbContext.DataSaubStat.AddRange(dataSaubStats); +// var dataSaubStats = CreateDataSaubStats(well.IdTelemetry!.Value, wellOperation.IdCategory); +// dbContext.DataSaubStat.AddRange(dataSaubStats); - await dbContext.SaveChangesAsync(); +// await dbContext.SaveChangesAsync(); - //act - var request = new DataSaubStatRequest(); - var response = await client.GetReportAsync(well.Id, request, CancellationToken.None); +// //act +// var request = new DataSaubStatRequest(); +// var response = await client.GetReportAsync(well.Id, request, CancellationToken.None); - //assert - Assert.Equal(HttpStatusCode.OK, response.StatusCode); - Assert.NotNull(response.Content); - Assert.Equal(dataSaubStats.Count() - 1, response.Content.Count()); - } +// //assert +// Assert.Equal(HttpStatusCode.OK, response.StatusCode); +// Assert.NotNull(response.Content); +// Assert.Equal(dataSaubStats.Count() - 1, response.Content.Count()); +// } - [Fact] - public async Task Get_rtk_report_by_parametrize_request_returns_success() - { - //arrange - var well = dbContext.Wells.First(); +// [Fact] +// public async Task Get_rtk_report_by_parametrize_request_returns_success() +// { +// //arrange +// var well = dbContext.Wells.First(); - var processMapPlanDrilling = CreateProcessMapPlanDrilling(well.Id); - dbContext.ProcessMapPlanDrilling.Add(processMapPlanDrilling); +// var processMapPlanDrilling = CreateProcessMapPlanDrilling(well.Id); +// dbContext.ProcessMapPlanDrilling.Add(processMapPlanDrilling); - var wellOperation = CreateWellOperation(well.Id); - dbContext.WellOperations.Add(wellOperation); +// var wellOperation = CreateWellOperation(well.Id); +// dbContext.WellOperations.Add(wellOperation); - var dataSaubStats = CreateDataSaubStats(well.IdTelemetry!.Value, wellOperation.IdCategory); - dbContext.DataSaubStat.AddRange(dataSaubStats); +// var dataSaubStats = CreateDataSaubStats(well.IdTelemetry!.Value, wellOperation.IdCategory); +// dbContext.DataSaubStat.AddRange(dataSaubStats); - await dbContext.SaveChangesAsync(); - - var request = new DataSaubStatRequest - { - DeltaAxialLoad = 5, - DeltaPressure = 15, - DeltaRotorTorque = 10 - }; - - //act - var response = await client.GetReportAsync(well.Id, request, CancellationToken.None); - - //assert - Assert.Equal(HttpStatusCode.OK, response.StatusCode); - Assert.NotNull(response.Content); - Assert.Equal(1, response.Content.Count()); - } - - [Fact] - public async Task Get_rtk_report_returns_BadRequest() - { - //act - var request = new DataSaubStatRequest() - { - DeltaAxialLoad = 15, - DeltaPressure = 25, - DeltaRotorTorque = 20 - }; - var response = await client.GetReportAsync(0, request, CancellationToken.None); - - //assert - Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); - } - - [Fact] - public async Task Export_rtk_report_returns_success() - { - //arrange - var well = dbContext.Wells.First(); +// await dbContext.SaveChangesAsync(); + +// var request = new DataSaubStatRequest +// { +// DeltaAxialLoad = 5, +// DeltaPressure = 15, +// DeltaRotorTorque = 10 +// }; + +// //act +// var response = await client.GetReportAsync(well.Id, request, CancellationToken.None); + +// //assert +// Assert.Equal(HttpStatusCode.OK, response.StatusCode); +// Assert.NotNull(response.Content); +// Assert.Single(response.Content); +// } + +// [Fact] +// public async Task Get_rtk_report_returns_BadRequest() +// { +// //act +// var request = new DataSaubStatRequest() +// { +// DeltaAxialLoad = 15, +// DeltaPressure = 25, +// DeltaRotorTorque = 20 +// }; +// var response = await client.GetReportAsync(0, request, CancellationToken.None); + +// //assert +// Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); +// } + +// [Fact] +// public async Task Export_rtk_report_returns_success() +// { +// //arrange +// var well = dbContext.Wells.First(); - var processMapPlanDrilling = CreateProcessMapPlanDrilling(well.Id); - dbContext.ProcessMapPlanDrilling.Add(processMapPlanDrilling); +// var processMapPlanDrilling = CreateProcessMapPlanDrilling(well.Id); +// dbContext.ProcessMapPlanDrilling.Add(processMapPlanDrilling); - var wellOperation = CreateWellOperation(well.Id); - dbContext.WellOperations.Add(wellOperation); +// var wellOperation = CreateWellOperation(well.Id); +// dbContext.WellOperations.Add(wellOperation); - var dataSaubStats = CreateDataSaubStats(well.IdTelemetry!.Value, wellOperation.IdCategory); - dbContext.DataSaubStat.AddRange(dataSaubStats); +// var dataSaubStats = CreateDataSaubStats(well.IdTelemetry!.Value, wellOperation.IdCategory); +// dbContext.DataSaubStat.AddRange(dataSaubStats); - await dbContext.SaveChangesAsync(); - - //act - var request = new DataSaubStatRequest(); - var response = await client.ExportReportAsync(1, request, CancellationToken.None); - - //assert - Assert.Equal(HttpStatusCode.OK, response.StatusCode); - Assert.Equal("application/octet-stream", response.ContentHeaders?.ContentType?.MediaType); - Assert.True(response.ContentHeaders?.ContentLength > 0); - } +// await dbContext.SaveChangesAsync(); + +// //act +// var request = new DataSaubStatRequest(); +// var response = await client.ExportReportAsync(1, request, CancellationToken.None); + +// //assert +// Assert.Equal(HttpStatusCode.OK, response.StatusCode); +// Assert.Equal("application/octet-stream", response.ContentHeaders?.ContentType?.MediaType); +// Assert.True(response.ContentHeaders?.ContentLength > 0); +// } - private static WellOperation CreateWellOperation(int idWell) => - new() - { - CategoryInfo = "CategoryInfo", - Comment = "Comment", - DateStart = DateTimeOffset.UtcNow, - DepthEnd = 1, - DepthStart = 0.6, - DurationHours = 10, - IdCategory = WellOperationCategory.IdSlide, - IdPlan = null, - IdType = WellOperation.IdOperationTypeFact, - IdUser = 1, - IdWell = idWell, - IdWellSectionType = 1, - LastUpdateDate = DateTimeOffset.UtcNow - }; +// private static WellOperation CreateWellOperation(int idWell) => +// new() +// { +// CategoryInfo = "CategoryInfo", +// Comment = "Comment", +// DateStart = DateTimeOffset.UtcNow, +// DepthEnd = 1, +// DepthStart = 0.6, +// DurationHours = 10, +// IdCategory = WellOperationCategory.IdSlide, +// IdPlan = null, +// IdType = WellOperation.IdOperationTypeFact, +// IdUser = 1, +// IdWell = idWell, +// IdWellSectionType = 1, +// LastUpdateDate = DateTimeOffset.UtcNow +// }; - private static ProcessMapPlanDrilling CreateProcessMapPlanDrilling(int idWell) => - new() - { - IdAuthor = 1, - IdEditor = null, - Creation = DateTimeOffset.UtcNow, - Obsolete = null, - IdState = ChangeLogAbstract.IdStateActual, - IdPrevious = null, +// private static ProcessMapPlanDrilling CreateProcessMapPlanDrilling(int idWell) => +// new() +// { +// IdAuthor = 1, +// IdEditor = null, +// Creation = DateTimeOffset.UtcNow, +// Obsolete = null, +// IdState = ChangeLogAbstract.IdStateActual, +// IdPrevious = null, - IdWell = idWell, - IdWellSectionType = 1, - DepthStart = 0.5, - DepthEnd = 1.5, +// IdWell = idWell, +// IdWellSectionType = 1, +// DepthStart = 0.5, +// DepthEnd = 1.5, - IdMode = 1, - AxialLoadPlan = 2.718281, - AxialLoadLimitMax = 3.1415926, - DeltaPressurePlan = 4, - DeltaPressureLimitMax = 5, - TopDriveTorquePlan = 6, - TopDriveTorqueLimitMax = 7, - TopDriveSpeedPlan = 8, - TopDriveSpeedLimitMax = 9, - FlowPlan = 10, - FlowLimitMax = 11, - RopPlan = 12, - UsageSaub = 13, - UsageSpin = 14, - Comment = "это тестовая запись", - }; +// IdMode = 1, +// AxialLoadPlan = 2.718281, +// AxialLoadLimitMax = 3.1415926, +// DeltaPressurePlan = 4, +// DeltaPressureLimitMax = 5, +// TopDriveTorquePlan = 6, +// TopDriveTorqueLimitMax = 7, +// TopDriveSpeedPlan = 8, +// TopDriveSpeedLimitMax = 9, +// FlowPlan = 10, +// FlowLimitMax = 11, +// RopPlan = 12, +// UsageSaub = 13, +// UsageSpin = 14, +// Comment = "это тестовая запись", +// }; - private static IEnumerable CreateDataSaubStats(int idTelemetry, - int idCategory) => - new[] - { - new DataSaubStat - { - AxialLoad = 0, - AxialLoadLimitMax = 10, - AxialLoadSp = 8, - BlockSpeedSp = 50.0, - DateEnd = DateTimeOffset.UtcNow.AddMinutes(40), - DateStart = DateTimeOffset.UtcNow.AddMinutes(30), - DepthEnd = 85.99299621582031, - DepthStart = 85.9260025024414, - EnabledSubsystems = 0, - Flow = 10, - IdCategory = idCategory, - HasOscillation = true, - IdFeedRegulator = 0, - IdTelemetry = idTelemetry, - Pressure = 24, - PressureIdle = 0, - PressureSp = 40, - RotorSpeed = 11.3, - RotorTorque = 1, - RotorTorqueLimitMax = 26.5, - RotorTorqueSp = 5, - Speed = 80.3924560546875 - }, - new DataSaubStat - { - AxialLoad = 2, - AxialLoadLimitMax = 10.0, - AxialLoadSp = 8, - BlockSpeedSp = 20, - DateEnd = DateTimeOffset.UtcNow.AddMinutes(30), - DateStart = DateTimeOffset.UtcNow.AddMinutes(20), - DepthEnd = 86.28099822998047, - DepthStart = 86.21900177001953, - EnabledSubsystems = 1, - Flow = 20, - HasOscillation = true, - IdCategory = idCategory, - IdFeedRegulator = 1, - IdTelemetry = idTelemetry, - Pressure = 30, - PressureIdle = 20, - PressureSp = 40, - RotorSpeed = 11.251153300212916, - RotorTorque = 7, - RotorTorqueLimitMax = 26.5, - RotorTorqueSp = 9, - Speed = 74.395751953125 - }, - new DataSaubStat - { - AxialLoad = 4, - AxialLoadLimitMax = 15.0, - AxialLoadSp = 8, - BlockSpeedSp = 110.0, - DateEnd = DateTimeOffset.UtcNow.AddMinutes(20), - DateStart = DateTimeOffset.UtcNow.AddMinutes(10), - DepthEnd = 106.7490005493164, - DepthStart = 106.47899627685547, - EnabledSubsystems = 1, - Flow = 30, - HasOscillation = true, - IdFeedRegulator = 1, - IdTelemetry = idTelemetry, - IdCategory = idCategory, - Pressure = 36, - PressureIdle = 23.0, - PressureSp = 63.0, - RotorSpeed = 11.334207942999628, - RotorTorque = 14, - RotorTorqueLimitMax = 15.0, - RotorTorqueSp = 13, - Speed = 108.001708984375 - } - }; -} \ No newline at end of file +// private static IEnumerable CreateDataSaubStats(int idTelemetry, +// int idCategory) => +// new[] +// { +// new DataSaubStat +// { +// AxialLoad = 0, +// AxialLoadLimitMax = 10, +// AxialLoadSp = 8, +// BlockSpeedSp = 50.0, +// DateEnd = DateTimeOffset.UtcNow.AddMinutes(40), +// DateStart = DateTimeOffset.UtcNow.AddMinutes(30), +// DepthEnd = 85.99299621582031, +// DepthStart = 85.9260025024414, +// EnabledSubsystems = 0, +// Flow = 10, +// IdCategory = idCategory, +// HasOscillation = true, +// IdFeedRegulator = 0, +// IdTelemetry = idTelemetry, +// Pressure = 24, +// PressureIdle = 0, +// PressureSp = 40, +// RotorSpeed = 11.3, +// RotorTorque = 1, +// RotorTorqueLimitMax = 26.5, +// RotorTorqueSp = 5, +// Speed = 80.3924560546875 +// }, +// new DataSaubStat +// { +// AxialLoad = 2, +// AxialLoadLimitMax = 10.0, +// AxialLoadSp = 8, +// BlockSpeedSp = 20, +// DateEnd = DateTimeOffset.UtcNow.AddMinutes(30), +// DateStart = DateTimeOffset.UtcNow.AddMinutes(20), +// DepthEnd = 86.28099822998047, +// DepthStart = 86.21900177001953, +// EnabledSubsystems = 1, +// Flow = 20, +// HasOscillation = true, +// IdCategory = idCategory, +// IdFeedRegulator = 1, +// IdTelemetry = idTelemetry, +// Pressure = 30, +// PressureIdle = 20, +// PressureSp = 40, +// RotorSpeed = 11.251153300212916, +// RotorTorque = 7, +// RotorTorqueLimitMax = 26.5, +// RotorTorqueSp = 9, +// Speed = 74.395751953125 +// }, +// new DataSaubStat +// { +// AxialLoad = 4, +// AxialLoadLimitMax = 15.0, +// AxialLoadSp = 8, +// BlockSpeedSp = 110.0, +// DateEnd = DateTimeOffset.UtcNow.AddMinutes(20), +// DateStart = DateTimeOffset.UtcNow.AddMinutes(10), +// DepthEnd = 106.7490005493164, +// DepthStart = 106.47899627685547, +// EnabledSubsystems = 1, +// Flow = 30, +// HasOscillation = true, +// IdFeedRegulator = 1, +// IdTelemetry = idTelemetry, +// IdCategory = idCategory, +// Pressure = 36, +// PressureIdle = 23.0, +// PressureSp = 63.0, +// RotorSpeed = 11.334207942999628, +// RotorTorque = 14, +// RotorTorqueLimitMax = 15.0, +// RotorTorqueSp = 13, +// Speed = 108.001708984375 +// } +// }; +//} \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/ScheduleControllerTest.cs b/AsbCloudWebApi.IntegrationTests/Controllers/ScheduleControllerTest.cs index ad7571a2..4c7e06f0 100644 --- a/AsbCloudWebApi.IntegrationTests/Controllers/ScheduleControllerTest.cs +++ b/AsbCloudWebApi.IntegrationTests/Controllers/ScheduleControllerTest.cs @@ -1,4 +1,4 @@ -// using AsbCloudApp.Data; +// using AsbCloudApp.Data; // using AsbCloudDb.Model; // using AsbCloudInfrastructure; // using AsbCloudWebApi.IntegrationTests.Clients; diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/SetpointsControllerTest.cs b/AsbCloudWebApi.IntegrationTests/Controllers/SetpointsControllerTest.cs index d73148de..eb9c5e8d 100644 --- a/AsbCloudWebApi.IntegrationTests/Controllers/SetpointsControllerTest.cs +++ b/AsbCloudWebApi.IntegrationTests/Controllers/SetpointsControllerTest.cs @@ -8,46 +8,46 @@ namespace AsbCloudWebApi.IntegrationTests.Controllers; public class SetpointsControllerTest : BaseIntegrationTest { - private readonly ISetpointsClient client; + private readonly ISetpointsClient client; - public SetpointsControllerTest(WebAppFactoryFixture factory) - : base(factory) - { - client = factory.GetAuthorizedHttpClient(string.Empty); - } + public SetpointsControllerTest(WebAppFactoryFixture factory) + : base(factory) + { + client = factory.GetAuthorizedHttpClient(string.Empty); + } - [Fact] - public async Task GetByTelemetryUidAsync_returns_success() - { - //arrange - var well = await dbContext.Wells - .Include(w => w.Telemetry) - .FirstAsync(); - - var entity = new SetpointsRequest - { - IdWell = well.Id, - UploadDate = DateTimeOffset.UtcNow, - ObsolescenceSec = 15, - IdState = 1, - IdAuthor = 1 - }; - - var entry = dbContext.SetpointsRequests.Add(entity); - await dbContext.SaveChangesAsync(); - entry.State = EntityState.Detached; + [Fact] + public async Task GetByTelemetryUidAsync_returns_success() + { + //arrange + var well = await dbContext.Wells + .Include(w => w.Telemetry) + .FirstAsync(); + + var entity = new SetpointsRequest + { + IdWell = well.Id, + UploadDate = DateTimeOffset.UtcNow, + ObsolescenceSec = 15, + IdState = 1, + IdAuthor = 1 + }; + + var entry = dbContext.SetpointsRequests.Add(entity); + await dbContext.SaveChangesAsync(); + entry.State = EntityState.Detached; - //act - var response = await client.GetByTelemetryUidAsync(well.Telemetry!.RemoteUid); - - //assert - Assert.Equal(HttpStatusCode.OK, response.StatusCode); - Assert.NotNull(response.Content); - Assert.Single(response.Content); + //act + var response = await client.GetByTelemetryUidAsync(well.Telemetry!.RemoteUid); + + //assert + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + Assert.NotNull(response.Content); + Assert.Single(response.Content); - var setpoints = await dbContext.SetpointsRequests.ToArrayAsync(); + var setpoints = await dbContext.SetpointsRequests.ToArrayAsync(); - foreach (var setpoint in setpoints) - Assert.Equal(2, setpoint.IdState); - } + foreach (var setpoint in setpoints) + Assert.Equal(2, setpoint.IdState); + } } \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/SlipsStatControllerTest.cs b/AsbCloudWebApi.IntegrationTests/Controllers/SlipsStatControllerTest.cs index 70f72369..77fe4c88 100644 --- a/AsbCloudWebApi.IntegrationTests/Controllers/SlipsStatControllerTest.cs +++ b/AsbCloudWebApi.IntegrationTests/Controllers/SlipsStatControllerTest.cs @@ -8,100 +8,100 @@ namespace AsbCloudWebApi.IntegrationTests.Controllers; public class SlipsStatControllerTest : BaseIntegrationTest { - private readonly ISlipsTimeClient client; + private readonly ISlipsTimeClient client; - public SlipsStatControllerTest(WebAppFactoryFixture factory) - : base(factory) - { - client = factory.GetAuthorizedHttpClient(string.Empty); + public SlipsStatControllerTest(WebAppFactoryFixture factory) + : base(factory) + { + client = factory.GetAuthorizedHttpClient(string.Empty); - dbContext.CleanupDbSet(); - dbContext.CleanupDbSet(); - dbContext.CleanupDbSet(); - } + dbContext.CleanupDbSet(); + dbContext.CleanupDbSet(); + dbContext.CleanupDbSet(); + } - [Fact] - public async Task GetAll_returns_success() - { - //arrange - var well = dbContext.Wells.First(); - var schedule = CreateScheduleAsync(well.Id); - var factWellOperation = CreateFactWellOperation(well.Id); - var detectedOperation = CreateDetectedOperation(well.IdTelemetry!.Value); + [Fact] + public async Task GetAll_returns_success() + { + //arrange + var well = dbContext.Wells.First(); + var schedule = CreateScheduleAsync(well.Id); + var factWellOperation = CreateFactWellOperation(well.Id); + var detectedOperation = CreateDetectedOperation(well.IdTelemetry!.Value); - dbContext.Schedule.Add(schedule); - dbContext.WellOperations.Add(factWellOperation); - dbContext.DetectedOperations.Add(detectedOperation); - await dbContext.SaveChangesAsync(); + dbContext.Schedule.Add(schedule); + dbContext.WellOperations.Add(factWellOperation); + dbContext.DetectedOperations.Add(detectedOperation); + await dbContext.SaveChangesAsync(); - var request = new OperationStatRequest - { - DateStartUTC = schedule.DrillStart.DateTime, - DateEndUTC = schedule.DrillEnd.DateTime, - DurationMinutesMin = 0, - DurationMinutesMax = 5 - }; + var request = new OperationStatRequest + { + DateStartUTC = schedule.DrillStart.DateTime, + DateEndUTC = schedule.DrillEnd.DateTime, + DurationMinutesMin = 0, + DurationMinutesMax = 5 + }; - var dtoExpected = new SlipsStatDto - { - DrillerName = $"{schedule.Driller.Surname} {schedule.Driller.Name} {schedule.Driller.Patronymic}", - WellCount = 1, - SectionCaption = "Пилотный ствол", - SlipsCount = 1, - SlipsTimeInMinutes = (detectedOperation.DateEnd - detectedOperation.DateStart).TotalMinutes, - SectionDepth = factWellOperation.DepthEnd - factWellOperation.DepthStart, - }; + var dtoExpected = new SlipsStatDto + { + DrillerName = $"{schedule.Driller.Surname} {schedule.Driller.Name} {schedule.Driller.Patronymic}", + WellCount = 1, + SectionCaption = "Пилотный ствол", + SlipsCount = 1, + SlipsTimeInMinutes = (detectedOperation.DateEnd - detectedOperation.DateStart).TotalMinutes, + SectionDepth = factWellOperation.DepthEnd - factWellOperation.DepthStart, + }; - //act - var response = await client.GetAll(request); + //act + var response = await client.GetAll(request); - //assert - Assert.NotNull(response.Content); - Assert.Single(response.Content); + //assert + Assert.NotNull(response.Content); + Assert.Single(response.Content); - var slipsStat = response.Content.First(); - MatchHelper.Match(dtoExpected, slipsStat); - } + var slipsStat = response.Content.First(); + MatchHelper.Match(dtoExpected, slipsStat); + } - private static Schedule CreateScheduleAsync(int idWell) => new() - { - IdWell = idWell, - ShiftStart = new TimeOnly(8, 0, 0), - ShiftEnd = new TimeOnly(20, 0, 0), - DrillStart = new DateTimeOffset(new DateTime(2024, 1, 1, 0, 0, 0, DateTimeKind.Utc)), - DrillEnd = new DateTimeOffset(new DateTime(2024, 2, 1, 0, 0, 0, DateTimeKind.Utc)), - Driller = new Driller - { - Name = "TestName", - Surname = "TestSurname", - Patronymic = "TestPatronymic" - } - }; + private static Schedule CreateScheduleAsync(int idWell) => new() + { + IdWell = idWell, + ShiftStart = new TimeOnly(8, 0, 0), + ShiftEnd = new TimeOnly(20, 0, 0), + DrillStart = new DateTimeOffset(new DateTime(2024, 1, 1, 0, 0, 0, DateTimeKind.Utc)), + DrillEnd = new DateTimeOffset(new DateTime(2024, 2, 1, 0, 0, 0, DateTimeKind.Utc)), + Driller = new Driller + { + Name = "TestName", + Surname = "TestSurname", + Patronymic = "TestPatronymic" + } + }; - private static WellOperation CreateFactWellOperation(int idWell) => - new() - { - IdWell = idWell, - IdWellSectionType = 1, - IdCategory = WellOperationCategory.IdRotor, - IdType = WellOperation.IdOperationTypeFact, - DepthStart = 0, - DepthEnd = 100, - LastUpdateDate = DateTimeOffset.UtcNow, - DateStart = new DateTimeOffset(new DateTime(2024, 1, 15, 15, 0, 0, DateTimeKind.Utc)), - DurationHours = 1 - }; + private static WellOperation CreateFactWellOperation(int idWell) => + new() + { + IdWell = idWell, + IdWellSectionType = 1, + IdCategory = WellOperationCategory.IdRotor, + IdType = WellOperation.IdOperationTypeFact, + DepthStart = 0, + DepthEnd = 100, + LastUpdateDate = DateTimeOffset.UtcNow, + DateStart = new DateTimeOffset(new DateTime(2024, 1, 15, 15, 0, 0, DateTimeKind.Utc)), + DurationHours = 1 + }; - private static DetectedOperation CreateDetectedOperation(int idTelemetry) => - new() - { - IdTelemetry = idTelemetry, - IdCategory = WellOperationCategory.IdSlipsTime, - DateStart = new DateTimeOffset(new DateTime(2024, 1, 23, 15, 0, 0, 0, DateTimeKind.Utc)), - DateEnd = new DateTimeOffset(new DateTime(2024, 1, 23, 15, 2, 0, 0, DateTimeKind.Utc)), - ExtraData = new Dictionary - { - { "test", 5 } - } - }; + private static DetectedOperation CreateDetectedOperation(int idTelemetry) => + new() + { + IdTelemetry = idTelemetry, + IdCategory = WellOperationCategory.IdSlipsTime, + DateStart = new DateTimeOffset(new DateTime(2024, 1, 23, 15, 0, 0, 0, DateTimeKind.Utc)), + DateEnd = new DateTimeOffset(new DateTime(2024, 1, 23, 15, 2, 0, 0, DateTimeKind.Utc)), + ExtraData = new Dictionary + { + { "test", 5 } + } + }; } \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/TelemetryControllerTest.cs b/AsbCloudWebApi.IntegrationTests/Controllers/TelemetryControllerTest.cs index 8622f11b..12fd5e83 100644 --- a/AsbCloudWebApi.IntegrationTests/Controllers/TelemetryControllerTest.cs +++ b/AsbCloudWebApi.IntegrationTests/Controllers/TelemetryControllerTest.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.SAUB; +using AsbCloudApp.Data.SAUB; using AsbCloudDb.Model; using AsbCloudWebApi.IntegrationTests.Clients; using Xunit; diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/WellOperations/WellOperationControllerTest.cs b/AsbCloudWebApi.IntegrationTests/Controllers/WellOperations/WellOperationControllerTest.cs index 117ddae1..2b820872 100644 --- a/AsbCloudWebApi.IntegrationTests/Controllers/WellOperations/WellOperationControllerTest.cs +++ b/AsbCloudWebApi.IntegrationTests/Controllers/WellOperations/WellOperationControllerTest.cs @@ -27,7 +27,7 @@ public class WellOperationControllerTest : BaseIntegrationTest } /// - /// ( ) + /// Успешное добавление операций (без предварительной очистки данных) /// /// [Fact] @@ -46,7 +46,7 @@ public class WellOperationControllerTest : BaseIntegrationTest } /// - /// ( ) + /// Успешное добавление операций (с предварительной очисткой данных) /// /// [Fact] @@ -65,7 +65,7 @@ public class WellOperationControllerTest : BaseIntegrationTest } /// - /// + /// Успешное обновление операций /// /// [Fact] @@ -87,7 +87,7 @@ public class WellOperationControllerTest : BaseIntegrationTest } /// - /// + /// Получение плановых операций /// /// [Fact] @@ -118,7 +118,7 @@ public class WellOperationControllerTest : BaseIntegrationTest var response = await client.GetPageOperationsAsync(well.Id, request); //assert - Assert.Equal(response.StatusCode, HttpStatusCode.OK); + Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.NotNull(response.Content); var totalExpected = response.Content.Count - pageSize * pageIndex; @@ -144,7 +144,7 @@ public class WellOperationControllerTest : BaseIntegrationTest IdWellSectionType = 2, IdCategory = WellOperationCategory.IdSlide, IdPlan = null, - CategoryInfo = ".", + CategoryInfo = "Доп.инфо", IdType = idType, DepthStart = 10.0, DepthEnd = 20.0, @@ -201,7 +201,7 @@ public class WellOperationControllerTest : BaseIntegrationTest var stream = responseTemplate.Content; using var workbook = new XLWorkbook(stream); - var sheet = workbook.GetWorksheet(""); + var sheet = workbook.GetWorksheet("Справочники"); var count = sheet.RowsUsed().Count() - 1; @@ -230,10 +230,8 @@ public class WellOperationControllerTest : BaseIntegrationTest Assert.True(notExistedInDb.Count() == 0); } - [Theory] - [InlineData(WellOperation.IdOperationTypePlan)] - [InlineData(WellOperation.IdOperationTypeFact)] - public async Task GetPageOperationsAsyncWithDaysAndNpv_returns_success(int idType) + [Fact] + public async Task GetPageOperationsAsyncWithDaysAndNpv_returns_success() { //arrange const int pageSize = 10; @@ -243,9 +241,9 @@ public class WellOperationControllerTest : BaseIntegrationTest var entity1 = CreateWellOperation(well.Id); var entity2 = entity1.Adapt(); - entity2.DateStart = entity2.DateStart.AddDays(1); - entity2.IdCategory = WellOperationCategory.IdEquipmentDrillingRepair; - entity2.DurationHours = 2; + entity2.DateStart = entity2.DateStart.AddDays(1); + entity2.IdCategory = WellOperationCategory.IdEquipmentDrillingRepair; + entity2.DurationHours = 2; var entity3 = entity2.Adapt(); entity3.DateStart = entity3.DateStart.AddDays(1); @@ -258,22 +256,22 @@ public class WellOperationControllerTest : BaseIntegrationTest await dbContext.SaveChangesAsync(); - var request = new WellOperationRequestBase - { - OperationType = WellOperation.IdOperationTypePlan, - Skip = pageIndex, - Take = pageSize, + var request = new WellOperationRequestBase + { + OperationType = WellOperation.IdOperationTypePlan, + Skip = pageIndex, + Take = pageSize, SortFields = [nameof(WellOperation.DateStart)] }; - //act - var response = await client.GetPageOperationsAsync(well.Id, request); + //act + var response = await client.GetPageOperationsAsync(well.Id, request); //assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.NotNull(response.Content); - var items = response.Content.Items.ToArray(); + var items = response.Content.Items.ToArray(); Assert.Equal(0, items[0].Day); Assert.Equal(1, items[1].Day); @@ -285,20 +283,20 @@ public class WellOperationControllerTest : BaseIntegrationTest } private static WellOperation CreateWellOperation(int idWell, int idType = WellOperation.IdOperationTypePlan) => - new() - { - IdWell = idWell, - IdWellSectionType = 2, - IdCategory = WellOperationCategory.IdSlide, - IdPlan = null, - CategoryInfo = ".", - LastUpdateDate = new DateTimeOffset(new DateTime(2023, 1, 10)).ToUniversalTime(), - IdType = idType, - DepthStart = 10.0, - DepthEnd = 20.0, - DateStart = new DateTimeOffset(new DateTime(2023, 1, 10), TimeSpan.FromHours(Defaults.Timezone.Hours)).ToUniversalTime(), - DurationHours = 1.0, - Comment = "1", - IdUser = 1, - }; + new() + { + IdWell = idWell, + IdWellSectionType = 2, + IdCategory = WellOperationCategory.IdSlide, + IdPlan = null, + CategoryInfo = "Доп.инфо", + LastUpdateDate = new DateTimeOffset(new DateTime(2023, 1, 10)).ToUniversalTime(), + IdType = idType, + DepthStart = 10.0, + DepthEnd = 20.0, + DateStart = new DateTimeOffset(new DateTime(2023, 1, 10), TimeSpan.FromHours(Defaults.Timezone.Hours)).ToUniversalTime(), + DurationHours = 1.0, + Comment = "1", + IdUser = 1, + }; } \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/Converters/ValidationResultConverter.cs b/AsbCloudWebApi.IntegrationTests/Converters/ValidationResultConverter.cs index 15423bc0..11252b1b 100644 --- a/AsbCloudWebApi.IntegrationTests/Converters/ValidationResultConverter.cs +++ b/AsbCloudWebApi.IntegrationTests/Converters/ValidationResultConverter.cs @@ -6,63 +6,63 @@ namespace AsbCloudWebApi.IntegrationTests.Converters; public class ValidationResultConverter : JsonConverter { - public override ValidationResult Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) - { - if (reader.TokenType != JsonTokenType.StartObject) - { - throw new JsonException("Expected the start of an object."); - } + public override ValidationResult Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + if (reader.TokenType != JsonTokenType.StartObject) + { + throw new JsonException("Expected the start of an object."); + } - string? errorMessage = null; - List? memberNames = null; + string? errorMessage = null; + List? memberNames = null; - while (reader.Read()) - { - if (reader.TokenType == JsonTokenType.EndObject) - { - break; - } + while (reader.Read()) + { + if (reader.TokenType == JsonTokenType.EndObject) + { + break; + } - if (reader.TokenType != JsonTokenType.PropertyName) - { - throw new JsonException($"Unexpected token type: {reader.TokenType}"); - } + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException($"Unexpected token type: {reader.TokenType}"); + } - var propertyName = reader.GetString(); - reader.Read(); + var propertyName = reader.GetString(); + reader.Read(); - switch (propertyName) - { - case "errorMessage": - errorMessage = reader.GetString(); - break; - case "memberNames": - if (reader.TokenType != JsonTokenType.StartArray) - { - throw new JsonException("Expected the start of an array for 'memberNames'."); - } - memberNames = new List(); - while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) - { - memberNames.Add(reader.GetString() ?? string.Empty); - } - break; - default: - reader.Skip(); - break; - } - } + switch (propertyName) + { + case "errorMessage": + errorMessage = reader.GetString(); + break; + case "memberNames": + if (reader.TokenType != JsonTokenType.StartArray) + { + throw new JsonException("Expected the start of an array for 'memberNames'."); + } + memberNames = new List(); + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + memberNames.Add(reader.GetString() ?? string.Empty); + } + break; + default: + reader.Skip(); + break; + } + } - if (errorMessage == null) - { - throw new JsonException("Missing 'errorMessage' property."); - } + if (errorMessage == null) + { + throw new JsonException("Missing 'errorMessage' property."); + } - return new ValidationResult(errorMessage, memberNames ?? Enumerable.Empty()); - } + return new ValidationResult(errorMessage, memberNames ?? Enumerable.Empty()); + } - public override void Write(Utf8JsonWriter writer, ValidationResult value, JsonSerializerOptions options) - { - throw new NotImplementedException(); - } + public override void Write(Utf8JsonWriter writer, ValidationResult value, JsonSerializerOptions options) + { + throw new NotImplementedException(); + } } \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/Data/Defaults.cs b/AsbCloudWebApi.IntegrationTests/Data/Defaults.cs index a3667662..1d97e6ec 100644 --- a/AsbCloudWebApi.IntegrationTests/Data/Defaults.cs +++ b/AsbCloudWebApi.IntegrationTests/Data/Defaults.cs @@ -1,56 +1,58 @@ -using AsbCloudDb.Model; +using AsbCloudDb.Model; namespace AsbCloudWebApi.IntegrationTests.Data { - [System.Diagnostics.CodeAnalysis.SuppressMessage("Usage", "CA2211:Поля, не являющиеся константами, не должны быть видимыми", - Justification = "<Ожидание>")] - public static class Defaults - { - public static SimpleTimezone Timezone => new() - { - Hours = 1 - }; + [System.Diagnostics.CodeAnalysis.SuppressMessage("Usage", "CA2211:Поля, не являющиеся константами, не должны быть видимыми", + Justification = "<Ожидание>")] + public static class Defaults + { + public static SimpleTimezone Timezone => new() + { + Hours = 1 + }; - public static Deposit[] Deposits => new Deposit[] - { - new() - { - Caption = "Deposit1", - Latitude = 10, - Longitude = 20, - Timezone = Timezone, - Clusters = new[] - { - new Cluster - { - Caption = "Cluster1", - Latitude = 10, - Longitude = 20, - Timezone = Timezone, - Wells = new[] - { - new Well - { - IdWellType = 1, - IdState = 1, - Caption = "Well1", - Latitude = 10, - Longitude = 20, - Timezone = Timezone, - Telemetry = new Telemetry - { - RemoteUid = "555-555-555", - TimeZone = Timezone - }, - RelationCompaniesWells = new RelationCompanyWell[] - { - new() { IdCompany = 1 }, - }, - } - } - } - } - } - }; - } + public const string RemoteUid = "555-555-555"; + + public static Deposit[] Deposits => new Deposit[] + { + new() + { + Caption = "Deposit1", + Latitude = 10, + Longitude = 20, + Timezone = Timezone, + Clusters = new[] + { + new Cluster + { + Caption = "Cluster1", + Latitude = 10, + Longitude = 20, + Timezone = Timezone, + Wells = new[] + { + new Well + { + IdWellType = 1, + IdState = 1, + Caption = "Well1", + Latitude = 10, + Longitude = 20, + Timezone = Timezone, + Telemetry = new Telemetry + { + RemoteUid = RemoteUid, + TimeZone = Timezone + }, + RelationCompaniesWells = new RelationCompanyWell[] + { + new() { IdCompany = 1 }, + }, + } + } + } + } + } + }; + } } \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/DbConnection.cs b/AsbCloudWebApi.IntegrationTests/DbConnection.cs index fad06ed8..4db32635 100644 --- a/AsbCloudWebApi.IntegrationTests/DbConnection.cs +++ b/AsbCloudWebApi.IntegrationTests/DbConnection.cs @@ -2,14 +2,14 @@ namespace AsbCloudWebApi.IntegrationTests; public class DbConnection { - public string Host { get; set; } = null!; + public string Host { get; set; } = null!; - public int Port { get; set; } + public int Port { get; set; } - public string Username { get; set; } = null!; + public string Username { get; set; } = null!; - public string Password { get; set; } = null!; + public string Password { get; set; } = null!; - public string GetConnectionString() => - $"Host={Host};Database={Guid.NewGuid()};Port={Port};Username={Username};Password={Password};Persist Security Info=True;Include Error Detail=True"; + public string GetConnectionString() => + $"Host={Host};Database={Guid.NewGuid()};Port={Port};Username={Username};Password={Password};Persist Security Info=True;Include Error Detail=True"; } \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/EFCoreExtensions.cs b/AsbCloudWebApi.IntegrationTests/EFCoreExtensions.cs index 422c9362..3a0f1b0f 100644 --- a/AsbCloudWebApi.IntegrationTests/EFCoreExtensions.cs +++ b/AsbCloudWebApi.IntegrationTests/EFCoreExtensions.cs @@ -4,11 +4,11 @@ namespace AsbCloudWebApi.IntegrationTests; public static class EFCoreExtensions { - public static void CleanupDbSet(this IAsbCloudDbContext dbContext) - where T : class - { - var dbset = dbContext.Set(); - dbset.RemoveRange(dbset); - dbContext.SaveChanges(); - } + public static void CleanupDbSet(this IAsbCloudDbContext dbContext) + where T : class + { + var dbset = dbContext.Set(); + dbset.RemoveRange(dbset); + dbContext.SaveChanges(); + } } \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/MatchHelper.cs b/AsbCloudWebApi.IntegrationTests/MatchHelper.cs index 32a51b61..15a5f9d6 100644 --- a/AsbCloudWebApi.IntegrationTests/MatchHelper.cs +++ b/AsbCloudWebApi.IntegrationTests/MatchHelper.cs @@ -5,31 +5,31 @@ namespace AsbCloudWebApi.IntegrationTests; public static class MatchHelper { - public static void Match(T expected, T actual, IEnumerable? excludeProps = null) - { - if (ReferenceEquals(expected, actual)) - throw EqualException.ForMismatchedValues(expected, actual, "Reference are equals"); + public static void Match(T expected, T actual, IEnumerable? excludeProps = null) + { + if (ReferenceEquals(expected, actual)) + throw EqualException.ForMismatchedValues(expected, actual, "Reference are equals"); - if (expected is null || actual is null) - throw EqualException.ForMismatchedValues(expected, actual); + if (expected is null || actual is null) + throw EqualException.ForMismatchedValues(expected, actual); - var type = typeof(T); - var props = type.GetProperties( - BindingFlags.Public - | BindingFlags.Instance).Where(prop => prop.CanWrite); + var type = typeof(T); + var props = type.GetProperties( + BindingFlags.Public + | BindingFlags.Instance).Where(prop => prop.CanWrite); - if (excludeProps is not null && excludeProps.Any()) - props = props.Where(prop => !excludeProps.Contains(prop.Name)); + if (excludeProps is not null && excludeProps.Any()) + props = props.Where(prop => !excludeProps.Contains(prop.Name)); - foreach (var prop in props) - { - var objValue = prop.GetValue(expected); - var anotherValue = prop.GetValue(actual); - if (objValue != null && !objValue.Equals(anotherValue)) - { - var banner = $" of {type.Name} props {prop.Name} "; + foreach (var prop in props) + { + var objValue = prop.GetValue(expected); + var anotherValue = prop.GetValue(actual); + if (objValue != null && !objValue.Equals(anotherValue)) + { + var banner = $" of {type.Name} props {prop.Name} "; throw EqualException.ForMismatchedValues(expected, actual, banner); - } - } - } + } + } + } } \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/Repository/DataSaubStatRepositoryTest.cs b/AsbCloudWebApi.IntegrationTests/Repository/DataSaubStatRepositoryTest.cs index 9641dc3c..e69cc692 100644 --- a/AsbCloudWebApi.IntegrationTests/Repository/DataSaubStatRepositoryTest.cs +++ b/AsbCloudWebApi.IntegrationTests/Repository/DataSaubStatRepositoryTest.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Repositories; using AsbCloudDb.Model; using Mapster; @@ -10,128 +10,128 @@ namespace AsbCloudWebApi.IntegrationTests.Repository; public class DataSaubStatRepositoryTest : BaseIntegrationTest { - private readonly IDataSaubStatRepository dataSaubStatRepository; - - public DataSaubStatRepositoryTest(WebAppFactoryFixture factory) - : base(factory) - { - dataSaubStatRepository = scope.ServiceProvider.GetRequiredService(); - dbContext.CleanupDbSet(); - } + private readonly IDataSaubStatRepository dataSaubStatRepository; + + public DataSaubStatRepositoryTest(WebAppFactoryFixture factory) + : base(factory) + { + dataSaubStatRepository = scope.ServiceProvider.GetRequiredService(); + dbContext.CleanupDbSet(); + } - [Fact] - public async Task GetLastDatesAsync_returns_success() - { - //arrange - var telemetry = await dbContext.Telemetries.FirstAsync(); - var timeZoneOffset = TimeSpan.FromHours(telemetry.TimeZone.Hours); - var dataSaubStat = CreateDataSaubStat(telemetry.Id, timeZoneOffset); - dbContext.AddRange(dataSaubStat); - await dbContext.SaveChangesAsync(); + [Fact] + public async Task GetLastDatesAsync_returns_success() + { + //arrange + var telemetry = await dbContext.Telemetries.FirstAsync(); + var timeZoneOffset = TimeSpan.FromHours(telemetry.TimeZone.Hours); + var dataSaubStat = CreateDataSaubStat(telemetry.Id, timeZoneOffset); + dbContext.AddRange(dataSaubStat); + await dbContext.SaveChangesAsync(); - var telemetryIds = dataSaubStat.Select(stat => stat.IdTelemetry).ToArray(); + var telemetryIds = dataSaubStat.Select(stat => stat.IdTelemetry).ToArray(); - //act - var result = await dataSaubStatRepository.GetLastsAsync(telemetryIds, CancellationToken.None); + //act + var result = await dataSaubStatRepository.GetLastsAsync(telemetryIds, CancellationToken.None); - //assert - var expected = dataSaubStat.Max(stat => stat.DateEnd).ToOffset(timeZoneOffset); - var actual = result.First().DateEnd; - Assert.True((expected - actual).Ticks == 0.0); - } + //assert + var expected = dataSaubStat.Max(stat => stat.DateEnd).ToOffset(timeZoneOffset); + var actual = result.First().DateEnd; + Assert.True((expected - actual).Ticks == 0.0); + } - [Fact] - public async Task InsertRangeAsync_returns_success() - { - //arrange - var telemetry = await dbContext.Telemetries.FirstAsync(); - var timeZoneOffset = TimeSpan.FromHours(telemetry.TimeZone.Hours); - var dataSaubStat = CreateDataSaubStat(telemetry.Id, timeZoneOffset); - var expectedDtos = dataSaubStat.Select(entity => ConvertToDto(entity, timeZoneOffset)); + [Fact] + public async Task InsertRangeAsync_returns_success() + { + //arrange + var telemetry = await dbContext.Telemetries.FirstAsync(); + var timeZoneOffset = TimeSpan.FromHours(telemetry.TimeZone.Hours); + var dataSaubStat = CreateDataSaubStat(telemetry.Id, timeZoneOffset); + var expectedDtos = dataSaubStat.Select(entity => ConvertToDto(entity, timeZoneOffset)); - //act - await dataSaubStatRepository.InsertRangeAsync(expectedDtos, CancellationToken.None); + //act + await dataSaubStatRepository.InsertRangeAsync(expectedDtos, CancellationToken.None); - //assert - var entities = await dbContext.DataSaubStat.ToArrayAsync(); - var actualDtos = entities.Select(entity => ConvertToDto(entity, timeZoneOffset)); + //assert + var entities = await dbContext.DataSaubStat.ToArrayAsync(); + var actualDtos = entities.Select(entity => ConvertToDto(entity, timeZoneOffset)); - var excludedProps = new[] - { - nameof(DataSaubStat.Telemetry), - nameof(DataSaubStat.Id), - nameof(DataSaubStat.OperationCategory) - }; + var excludedProps = new[] + { + nameof(DataSaubStat.Telemetry), + nameof(DataSaubStat.Id), + nameof(DataSaubStat.OperationCategory) + }; - foreach (var actualDto in actualDtos) - { - var statDto = expectedDtos.FirstOrDefault(stat => stat.DateEnd == actualDto.DateEnd && - stat.DateStart == actualDto.DateStart); + foreach (var actualDto in actualDtos) + { + var statDto = expectedDtos.FirstOrDefault(stat => stat.DateEnd == actualDto.DateEnd && + stat.DateStart == actualDto.DateStart); - MatchHelper.Match(actualDto, statDto, excludedProps); - } - } + MatchHelper.Match(actualDto, statDto, excludedProps); + } + } - private static IEnumerable CreateDataSaubStat(int idTelemetry, TimeSpan timeZoneOffset) => new DataSaubStat[] - { - new() - { - IdTelemetry = idTelemetry, - DateEnd = new DateTimeOffset(2024, 1, 1, 20, 25, 0, timeZoneOffset).ToUniversalTime(), - DateStart = new DateTimeOffset(2024, 1, 1, 20, 15, 0, timeZoneOffset).ToUniversalTime(), - AxialLoad = 10.0, - AxialLoadLimitMax = 10.0, - AxialLoadSp = 10.0, - BlockSpeedSp = 1000, - DepthEnd = 10.0, - DepthStart = 5.0, - EnabledSubsystems = 1, - Flow = 10.0, - HasOscillation = true, - IdCategory = WellOperationCategory.IdSlide, - IdFeedRegulator = 1, - Pressure = 10.0, - PressureIdle = 10.0, - PressureSp = 10.0, - RotorSpeed = 9.0, - RotorTorque = 9.0, - RotorTorqueSp = 9.0, - RotorTorqueLimitMax = 9.0, - Speed = 10.0 - }, - new() - { - IdTelemetry = idTelemetry, - DateEnd = new DateTimeOffset(2024, 2, 2, 20, 25, 0, timeZoneOffset).ToUniversalTime(), - DateStart = new DateTimeOffset(2024, 2, 2, 20, 15, 0, timeZoneOffset).ToUniversalTime(), - AxialLoad = 10.0, - AxialLoadLimitMax = 10.0, - AxialLoadSp = 10.0, - BlockSpeedSp = 1000, - DepthEnd = 10.0, - DepthStart = 5.0, - EnabledSubsystems = 1, - Flow = 10.0, - HasOscillation = true, - IdCategory = WellOperationCategory.IdSlide, - IdFeedRegulator = 1, - Pressure = 10.0, - PressureIdle = 10.0, - PressureSp = 10.0, - RotorSpeed = 10.0, - RotorTorque = 10.0, - RotorTorqueSp = 10.0, - RotorTorqueLimitMax = 10.0, - Speed = 10.0 - } - }; + private static IEnumerable CreateDataSaubStat(int idTelemetry, TimeSpan timeZoneOffset) => new DataSaubStat[] + { + new() + { + IdTelemetry = idTelemetry, + DateEnd = new DateTimeOffset(2024, 1, 1, 20, 25, 0, timeZoneOffset).ToUniversalTime(), + DateStart = new DateTimeOffset(2024, 1, 1, 20, 15, 0, timeZoneOffset).ToUniversalTime(), + AxialLoad = 10.0, + AxialLoadLimitMax = 10.0, + AxialLoadSp = 10.0, + BlockSpeedSp = 1000, + DepthEnd = 10.0, + DepthStart = 5.0, + EnabledSubsystems = 1, + Flow = 10.0, + HasOscillation = true, + IdCategory = WellOperationCategory.IdSlide, + IdFeedRegulator = 1, + Pressure = 10.0, + PressureIdle = 10.0, + PressureSp = 10.0, + RotorSpeed = 9.0, + RotorTorque = 9.0, + RotorTorqueSp = 9.0, + RotorTorqueLimitMax = 9.0, + Speed = 10.0 + }, + new() + { + IdTelemetry = idTelemetry, + DateEnd = new DateTimeOffset(2024, 2, 2, 20, 25, 0, timeZoneOffset).ToUniversalTime(), + DateStart = new DateTimeOffset(2024, 2, 2, 20, 15, 0, timeZoneOffset).ToUniversalTime(), + AxialLoad = 10.0, + AxialLoadLimitMax = 10.0, + AxialLoadSp = 10.0, + BlockSpeedSp = 1000, + DepthEnd = 10.0, + DepthStart = 5.0, + EnabledSubsystems = 1, + Flow = 10.0, + HasOscillation = true, + IdCategory = WellOperationCategory.IdSlide, + IdFeedRegulator = 1, + Pressure = 10.0, + PressureIdle = 10.0, + PressureSp = 10.0, + RotorSpeed = 10.0, + RotorTorque = 10.0, + RotorTorqueSp = 10.0, + RotorTorqueLimitMax = 10.0, + Speed = 10.0 + } + }; - private static DataSaubStatDto ConvertToDto(DataSaubStat entity, TimeSpan timeZoneOffset) - { - var dto = entity.Adapt(); - dto.DateStart = dto.DateStart.ToOffset(timeZoneOffset); - dto.DateEnd = dto.DateEnd.ToOffset(timeZoneOffset); + private static DataSaubStatDto ConvertToDto(DataSaubStat entity, TimeSpan timeZoneOffset) + { + var dto = entity.Adapt(); + dto.DateStart = dto.DateStart.ToOffset(timeZoneOffset); + dto.DateEnd = dto.DateEnd.ToOffset(timeZoneOffset); - return dto; - } + return dto; + } } \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/WebAppFactoryFixture.cs b/AsbCloudWebApi.IntegrationTests/WebAppFactoryFixture.cs index b3edf988..11e9aa78 100644 --- a/AsbCloudWebApi.IntegrationTests/WebAppFactoryFixture.cs +++ b/AsbCloudWebApi.IntegrationTests/WebAppFactoryFixture.cs @@ -14,78 +14,78 @@ namespace AsbCloudWebApi.IntegrationTests; public class WebAppFactoryFixture : WebApplicationFactory { - private static readonly JsonSerializerOptions JsonSerializerOptions = new() - { - PropertyNamingPolicy = JsonNamingPolicy.CamelCase, - PropertyNameCaseInsensitive = true, - Converters = { new ValidationResultConverter() } - }; + private static readonly JsonSerializerOptions JsonSerializerOptions = new() + { + PropertyNamingPolicy = JsonNamingPolicy.CamelCase, + PropertyNameCaseInsensitive = true, + Converters = { new ValidationResultConverter() } + }; - private static readonly RefitSettings RefitSettings = new(new SystemTextJsonContentSerializer(JsonSerializerOptions)); + private static readonly RefitSettings RefitSettings = new(new SystemTextJsonContentSerializer(JsonSerializerOptions)); - private readonly string connectionString; + private readonly string connectionString; - public WebAppFactoryFixture() - { - var configuration = new ConfigurationBuilder() - .AddJsonFile("appsettings.Tests.json") - .Build(); - - var dbConnection = configuration.GetSection("DbConnection").Get()!; - connectionString = dbConnection.GetConnectionString(); - } - - protected override void ConfigureWebHost(IWebHostBuilder builder) - { - builder.ConfigureServices(services => - { - var descriptor = services.SingleOrDefault(d => d.ServiceType == typeof(DbContextOptions)); + public WebAppFactoryFixture() + { + var configuration = new ConfigurationBuilder() + .AddJsonFile("appsettings.Tests.json") + .Build(); + + var dbConnection = configuration.GetSection("DbConnection").Get()!; + connectionString = dbConnection.GetConnectionString(); + } + + protected override void ConfigureWebHost(IWebHostBuilder builder) + { + builder.ConfigureServices(services => + { + var descriptor = services.SingleOrDefault(d => d.ServiceType == typeof(DbContextOptions)); - if (descriptor != null) - services.Remove(descriptor); + if (descriptor != null) + services.Remove(descriptor); - services.AddDbContext(options => - options.UseNpgsql(connectionString)); + services.AddDbContext(options => + options.UseNpgsql(connectionString)); - var serviceProvider = services.BuildServiceProvider(); + var serviceProvider = services.BuildServiceProvider(); - using var scope = serviceProvider.CreateScope(); - var scopedServices = scope.ServiceProvider; - var dbContext = scopedServices.GetRequiredService(); + using var scope = serviceProvider.CreateScope(); + var scopedServices = scope.ServiceProvider; + var dbContext = scopedServices.GetRequiredService(); - dbContext.Database.EnsureCreatedAndMigrated(); - dbContext.Deposits.AddRange(Data.Defaults.Deposits); - dbContext.SaveChanges(); - }); - } + dbContext.Database.EnsureCreatedAndMigrated(); + dbContext.Deposits.AddRange(Data.Defaults.Deposits); + dbContext.SaveChanges(); + }); + } - public override async ValueTask DisposeAsync() - { - var dbContext = new AsbCloudDbContext( - new DbContextOptionsBuilder() - .UseNpgsql(connectionString) - .Options); + public override async ValueTask DisposeAsync() + { + var dbContext = new AsbCloudDbContext( + new DbContextOptionsBuilder() + .UseNpgsql(connectionString) + .Options); - await dbContext.Database.EnsureDeletedAsync(); - } + await dbContext.Database.EnsureDeletedAsync(); + } - public T GetAuthorizedHttpClient(string uriSuffix) - { - var httpClient = GetAuthorizedHttpClient(); - if (string.IsNullOrEmpty(uriSuffix)) - return RestService.For(httpClient, RefitSettings); + public T GetAuthorizedHttpClient(string uriSuffix) + { + var httpClient = GetAuthorizedHttpClient(); + if (string.IsNullOrEmpty(uriSuffix)) + return RestService.For(httpClient, RefitSettings); - if (httpClient.BaseAddress is not null) - httpClient.BaseAddress = new Uri(httpClient.BaseAddress, uriSuffix); + if (httpClient.BaseAddress is not null) + httpClient.BaseAddress = new Uri(httpClient.BaseAddress, uriSuffix); - return RestService.For(httpClient, RefitSettings); - } + return RestService.For(httpClient, RefitSettings); + } - private HttpClient GetAuthorizedHttpClient() - { - var httpClient = CreateClient(); - var jwtToken = ApiTokenHelper.GetAdminUserToken(); - httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", jwtToken); - return httpClient; - } + private HttpClient GetAuthorizedHttpClient() + { + var httpClient = CreateClient(); + var jwtToken = ApiTokenHelper.GetAdminUserToken(); + httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", jwtToken); + return httpClient; + } } \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/readme.md b/AsbCloudWebApi.IntegrationTests/readme.md index 6449d67a..132d8d46 100644 --- a/AsbCloudWebApi.IntegrationTests/readme.md +++ b/AsbCloudWebApi.IntegrationTests/readme.md @@ -1,2 +1,2 @@ -Статья от ms https://learn.microsoft.com/ru-ru/aspnet/core/test/integration-tests?view=aspnetcore-6.0 +Статья от ms https://learn.microsoft.com/ru-ru/aspnet/core/test/integration-tests?view=aspnetcore-6.0 refit https://github.com/reactiveui/refit \ No newline at end of file diff --git a/AsbCloudWebApi.Tests/AsbCloudWebApi.Tests.csproj b/AsbCloudWebApi.Tests/AsbCloudWebApi.Tests.csproj index 6305415b..9d052820 100644 --- a/AsbCloudWebApi.Tests/AsbCloudWebApi.Tests.csproj +++ b/AsbCloudWebApi.Tests/AsbCloudWebApi.Tests.csproj @@ -17,11 +17,11 @@ - - + + - - + + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/AsbCloudWebApi.Tests/AspExtensions.cs b/AsbCloudWebApi.Tests/AspExtensions.cs index 59a5811d..a7c1aedd 100644 --- a/AsbCloudWebApi.Tests/AspExtensions.cs +++ b/AsbCloudWebApi.Tests/AspExtensions.cs @@ -1,4 +1,4 @@ -using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.DependencyInjection; using System.Linq; namespace AsbCloudWebApi.Tests diff --git a/AsbCloudWebApi.Tests/Background/BackgroundWorkerTest.cs b/AsbCloudWebApi.Tests/Background/BackgroundWorkerTest.cs index 912b4806..3f8dc020 100644 --- a/AsbCloudWebApi.Tests/Background/BackgroundWorkerTest.cs +++ b/AsbCloudWebApi.Tests/Background/BackgroundWorkerTest.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Reflection; using System.Threading; using System.Threading.Tasks; @@ -48,7 +48,7 @@ public class BackgroundWorkerTest backgroundWorker.Enqueue(work); } - await backgroundWorker.ExecuteTask; + await backgroundWorker.ExecuteTask!; //assert Assert.Equal(workCount, result); @@ -79,7 +79,7 @@ public class BackgroundWorkerTest backgroundWorker.Enqueue(badWork); backgroundWorker.Enqueue(goodWork); - await backgroundWorker.ExecuteTask; + await backgroundWorker.ExecuteTask!; //assert Assert.Equal(expectadResult, result); @@ -109,7 +109,7 @@ public class BackgroundWorkerTest var removed = backgroundWorker.TryRemoveFromQueue((workCount - 1).ToString()); - await backgroundWorker.ExecuteTask; + await backgroundWorker.ExecuteTask!; //assert Assert.True(removed); diff --git a/AsbCloudWebApi.Tests/Background/PeriodicBackgroundWorkerTest.cs b/AsbCloudWebApi.Tests/Background/PeriodicBackgroundWorkerTest.cs index 9fc0f6d9..acdfad32 100644 --- a/AsbCloudWebApi.Tests/Background/PeriodicBackgroundWorkerTest.cs +++ b/AsbCloudWebApi.Tests/Background/PeriodicBackgroundWorkerTest.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Diagnostics; using System.Reflection; using System.Threading; diff --git a/AsbCloudWebApi.Tests/Background/WorkTest.cs b/AsbCloudWebApi.Tests/Background/WorkTest.cs index 75628370..da1e417c 100644 --- a/AsbCloudWebApi.Tests/Background/WorkTest.cs +++ b/AsbCloudWebApi.Tests/Background/WorkTest.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Runtime.CompilerServices; using System.Threading; using System.Threading.Tasks; diff --git a/AsbCloudWebApi.Tests/CommonExtensions.cs b/AsbCloudWebApi.Tests/CommonExtensions.cs index ac32b59f..501fe0e9 100644 --- a/AsbCloudWebApi.Tests/CommonExtensions.cs +++ b/AsbCloudWebApi.Tests/CommonExtensions.cs @@ -1,4 +1,4 @@ -using Mapster; +using Mapster; using System; namespace AsbCloudWebApi.Tests; diff --git a/AsbCloudWebApi.Tests/ReflectionExtensions.cs b/AsbCloudWebApi.Tests/ReflectionExtensions.cs index e08a8e38..23019890 100644 --- a/AsbCloudWebApi.Tests/ReflectionExtensions.cs +++ b/AsbCloudWebApi.Tests/ReflectionExtensions.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Text; diff --git a/AsbCloudWebApi.Tests/Services/DetectedOperations/Detectors/DetectorDrillingTests.cs b/AsbCloudWebApi.Tests/Services/DetectedOperations/Detectors/DetectorDrillingTests.cs index bd8c5690..13ac5d48 100644 --- a/AsbCloudWebApi.Tests/Services/DetectedOperations/Detectors/DetectorDrillingTests.cs +++ b/AsbCloudWebApi.Tests/Services/DetectedOperations/Detectors/DetectorDrillingTests.cs @@ -8,278 +8,278 @@ namespace AsbCloudWebApi.Tests.Services.DetectedOperations.Detectors; public class DetectorDrillingTests : DetectorDrilling { - private const int idSlide = 5002; - private const int idRotor = 5003; + private const int idSlide = 5002; + private const int idRotor = 5003; - [Theory] - [MemberData(nameof(TelemetryRangeDrillingRotor))] - public void DefineDrillingOperation_ShouldReturn_DrillingRotor(DetectableTelemetry[] telemetryRange) - { - //act - var result = GetSpecificInformation(telemetryRange, 0, telemetryRange.Length); + [Theory] + [MemberData(nameof(TelemetryRangeDrillingRotor))] + public void DefineDrillingOperation_ShouldReturn_DrillingRotor(DetectableTelemetry[] telemetryRange) + { + //act + var result = GetSpecificInformation(telemetryRange, 0, telemetryRange.Length); - //assert - Assert.Equal(idRotor, result.IdCategory); - } + //assert + Assert.Equal(idRotor, result.IdCategory); + } - [Theory] - [MemberData(nameof(TelemetryRangeDrillingSlide))] - public void DefineDrillingOperation_ShouldReturn_DrillingSlide(DetectableTelemetry[] telemetryRange) - { - //act - var result = GetSpecificInformation(telemetryRange, 0, telemetryRange.Length); + [Theory] + [MemberData(nameof(TelemetryRangeDrillingSlide))] + public void DefineDrillingOperation_ShouldReturn_DrillingSlide(DetectableTelemetry[] telemetryRange) + { + //act + var result = GetSpecificInformation(telemetryRange, 0, telemetryRange.Length); - //assert - Assert.Equal(idSlide, result.IdCategory); - } + //assert + Assert.Equal(idSlide, result.IdCategory); + } - [Theory] - [MemberData(nameof(TelemetryRangeDrillingSlideWithOscillation))] - public void DefineDrillingOperation_ShouldReturn_DrillingSlideWithOscillation(DetectableTelemetry[] telemetryRange) - { - //act - var result = GetSpecificInformation(telemetryRange, 0, telemetryRange.Length); + [Theory] + [MemberData(nameof(TelemetryRangeDrillingSlideWithOscillation))] + public void DefineDrillingOperation_ShouldReturn_DrillingSlideWithOscillation(DetectableTelemetry[] telemetryRange) + { + //act + var result = GetSpecificInformation(telemetryRange, 0, telemetryRange.Length); - //assert - var oHasOscillation = result.ExtraData[ExtraDataKeyHasOscillation]; + //assert + var oHasOscillation = result.ExtraData[ExtraDataKeyHasOscillation]; - Assert.Equal(idSlide, result.IdCategory); - Assert.True(oHasOscillation is bool hasOscillation && hasOscillation); - } + Assert.Equal(idSlide, result.IdCategory); + Assert.True(oHasOscillation is bool hasOscillation && hasOscillation); + } - [Fact] - public void IsValidOperationDetectorResult_ShouldReturn_True() - { - //arrange - var operationDetectorResult = new OperationDetectorResult - { - Operation = new DetectedOperationDto - { - DepthStart = 5000, - DepthEnd = 6000, - DateStart = System.DateTimeOffset.Now.AddMinutes(-1), - DateEnd = System.DateTimeOffset.Now, + [Fact] + public void IsValidOperationDetectorResult_ShouldReturn_True() + { + //arrange + var operationDetectorResult = new OperationDetectorResult + { + Operation = new DetectedOperationDto + { + DepthStart = 5000, + DepthEnd = 6000, + DateStart = System.DateTimeOffset.Now.AddMinutes(-1), + DateEnd = System.DateTimeOffset.Now, } - }; + }; - //act - var result = IsValidOperationDetectorResult(operationDetectorResult); - - //assert - Assert.True(result); - } + //act + var result = IsValidOperationDetectorResult(operationDetectorResult); + + //assert + Assert.True(result); + } - [Fact] - public void IsValidOperationDetectorResult_ShouldReturn_False() - { - //arrange - var operationDetectorResult = new OperationDetectorResult - { - Operation = new DetectedOperationDto - { - DepthStart = 5000, - DepthEnd = 5000, + [Fact] + public void IsValidOperationDetectorResult_ShouldReturn_False() + { + //arrange + var operationDetectorResult = new OperationDetectorResult + { + Operation = new DetectedOperationDto + { + DepthStart = 5000, + DepthEnd = 5000, DateStart = System.DateTimeOffset.Now.AddMinutes(-1), DateEnd = System.DateTimeOffset.Now, } - }; + }; - //act - var result = IsValidOperationDetectorResult(operationDetectorResult); - - //assert - Assert.False(result); - } + //act + var result = IsValidOperationDetectorResult(operationDetectorResult); + + //assert + Assert.False(result); + } - public static IEnumerable TelemetryRangeDrillingRotor() - { - yield return new object[] - { - new[] - { - new DetectableTelemetry - { - WellDepth = 4.187f, - Pressure = 27.815952f, - HookWeight = 34.221367f, - BlockPosition = 24.388f, - BitDepth = 4.187f, - RotorSpeed = 40.3f - }, - new DetectableTelemetry - { - WellDepth = 4.232f, - Pressure = 28.080372f, - HookWeight = 34.162174f, - BlockPosition = 24.343f, - BitDepth = 4.232f, - RotorSpeed = 40.3f - }, - new DetectableTelemetry - { - WellDepth = 4.277f, - Pressure = 29.047901f, - HookWeight = 33.688717f, - BlockPosition = 24.298f, - BitDepth = 24.298f, - RotorSpeed = 40.3f - }, - new DetectableTelemetry - { - WellDepth = 4.309f, - Pressure = 29.574032f, - HookWeight = 33.692104f, - BlockPosition = 24.266f, - BitDepth = 4.309f, - RotorSpeed = 40.4f - }, - new DetectableTelemetry - { - WellDepth = 4.324f, - Pressure = 24.007977f, - HookWeight = 34.838448f, - BlockPosition = 24.251f, - BitDepth = 4.324f, - RotorSpeed = 40.5f - }, - new DetectableTelemetry - { - WellDepth = 4.324f, - Pressure = 24.04114f, - HookWeight = 34.423424f, - BlockPosition = 24.252f, - BitDepth = 4.323f, - RotorSpeed = 40.3f - } - } - }; - } + public static IEnumerable TelemetryRangeDrillingRotor() + { + yield return new object[] + { + new[] + { + new DetectableTelemetry + { + WellDepth = 4.187f, + Pressure = 27.815952f, + HookWeight = 34.221367f, + BlockPosition = 24.388f, + BitDepth = 4.187f, + RotorSpeed = 40.3f + }, + new DetectableTelemetry + { + WellDepth = 4.232f, + Pressure = 28.080372f, + HookWeight = 34.162174f, + BlockPosition = 24.343f, + BitDepth = 4.232f, + RotorSpeed = 40.3f + }, + new DetectableTelemetry + { + WellDepth = 4.277f, + Pressure = 29.047901f, + HookWeight = 33.688717f, + BlockPosition = 24.298f, + BitDepth = 24.298f, + RotorSpeed = 40.3f + }, + new DetectableTelemetry + { + WellDepth = 4.309f, + Pressure = 29.574032f, + HookWeight = 33.692104f, + BlockPosition = 24.266f, + BitDepth = 4.309f, + RotorSpeed = 40.4f + }, + new DetectableTelemetry + { + WellDepth = 4.324f, + Pressure = 24.007977f, + HookWeight = 34.838448f, + BlockPosition = 24.251f, + BitDepth = 4.324f, + RotorSpeed = 40.5f + }, + new DetectableTelemetry + { + WellDepth = 4.324f, + Pressure = 24.04114f, + HookWeight = 34.423424f, + BlockPosition = 24.252f, + BitDepth = 4.323f, + RotorSpeed = 40.3f + } + } + }; + } - public static IEnumerable TelemetryRangeDrillingSlide() - { - yield return new object[] - { - new[] - { - new DetectableTelemetry - { - WellDepth = 447.276001f, - Pressure = 26.619421f, - HookWeight = 40.9143829f, - BlockPosition = 4.559f, - BitDepth = 477.265991f, - RotorSpeed = 0 - }, - new DetectableTelemetry - { - WellDepth = 477.289f, - Pressure = 28.716f, - HookWeight = 38.27f, - BlockPosition = 4.5f, - BitDepth = 477.289f, - RotorSpeed = 0.1f - }, - new DetectableTelemetry - { - WellDepth = 477.30899f, - Pressure = 33.953495f, - HookWeight = 38.27f, - BlockPosition = 4.5359997f, - BitDepth = 477.289001f, - RotorSpeed = 0.1f - }, - } - }; - } + public static IEnumerable TelemetryRangeDrillingSlide() + { + yield return new object[] + { + new[] + { + new DetectableTelemetry + { + WellDepth = 447.276001f, + Pressure = 26.619421f, + HookWeight = 40.9143829f, + BlockPosition = 4.559f, + BitDepth = 477.265991f, + RotorSpeed = 0 + }, + new DetectableTelemetry + { + WellDepth = 477.289f, + Pressure = 28.716f, + HookWeight = 38.27f, + BlockPosition = 4.5f, + BitDepth = 477.289f, + RotorSpeed = 0.1f + }, + new DetectableTelemetry + { + WellDepth = 477.30899f, + Pressure = 33.953495f, + HookWeight = 38.27f, + BlockPosition = 4.5359997f, + BitDepth = 477.289001f, + RotorSpeed = 0.1f + }, + } + }; + } - public static IEnumerable TelemetryRangeDrillingSlideWithOscillation() - { - yield return new object[] - { - new[] - { - new DetectableTelemetry - { - WellDepth = 415.306f, - Pressure = 53.731934f, - HookWeight = 41.049942f, - BlockPosition = 28.666f, - BitDepth = 415.293f, - RotorSpeed = 0.3f - }, - new DetectableTelemetry - { - WellDepth = 415.311f, - Pressure = 57.660595f, - HookWeight = 40.898712f, - BlockPosition = 28.648f, - BitDepth = 415.311f, - RotorSpeed = 0.2f - }, - new DetectableTelemetry - { - WellDepth = 415.326f, - Pressure = 59.211086f, - HookWeight = 40.882797f, - BlockPosition = 28.633f, - BitDepth = 415.326f, - RotorSpeed = 0.1f - }, - new DetectableTelemetry - { - WellDepth = 415.344f, - Pressure = 59.484406f, - HookWeight = 40.91972f, - BlockPosition = 28.615f, - BitDepth = 415.344f, - RotorSpeed = 0.2f - }, - new DetectableTelemetry - { - WellDepth = 415.364f, - Pressure = 60.739918f, - HookWeight = 40.795666f, - BlockPosition = 28.595f, - BitDepth = 415.364f, - RotorSpeed = 4.5f - }, - new DetectableTelemetry - { - WellDepth = 415.378f, - Pressure = 62.528984f, - HookWeight = 40.52114f, - BlockPosition = 28.581f, - BitDepth = 415.378f, - RotorSpeed = 22.6f - }, - new DetectableTelemetry - { - WellDepth = 415.392f, - Pressure = 67.0039f, - HookWeight = 38.878895f, - BlockPosition = 28.569f, - BitDepth = 415.39f, - RotorSpeed = 50f - }, - new DetectableTelemetry - { - WellDepth = 415.392f, - Pressure = 65.72418f, - HookWeight = 42.53173f, - BlockPosition = 28.622f, - BitDepth = 415.337f, - RotorSpeed = 93f - }, - new DetectableTelemetry - { - WellDepth = 415.392f, - Pressure = 56.82195f, - HookWeight = 43.15844f, - BlockPosition = 28.704f, - BitDepth = 415.255f, - RotorSpeed = 71.5f - } - } - }; - } + public static IEnumerable TelemetryRangeDrillingSlideWithOscillation() + { + yield return new object[] + { + new[] + { + new DetectableTelemetry + { + WellDepth = 415.306f, + Pressure = 53.731934f, + HookWeight = 41.049942f, + BlockPosition = 28.666f, + BitDepth = 415.293f, + RotorSpeed = 0.3f + }, + new DetectableTelemetry + { + WellDepth = 415.311f, + Pressure = 57.660595f, + HookWeight = 40.898712f, + BlockPosition = 28.648f, + BitDepth = 415.311f, + RotorSpeed = 0.2f + }, + new DetectableTelemetry + { + WellDepth = 415.326f, + Pressure = 59.211086f, + HookWeight = 40.882797f, + BlockPosition = 28.633f, + BitDepth = 415.326f, + RotorSpeed = 0.1f + }, + new DetectableTelemetry + { + WellDepth = 415.344f, + Pressure = 59.484406f, + HookWeight = 40.91972f, + BlockPosition = 28.615f, + BitDepth = 415.344f, + RotorSpeed = 0.2f + }, + new DetectableTelemetry + { + WellDepth = 415.364f, + Pressure = 60.739918f, + HookWeight = 40.795666f, + BlockPosition = 28.595f, + BitDepth = 415.364f, + RotorSpeed = 4.5f + }, + new DetectableTelemetry + { + WellDepth = 415.378f, + Pressure = 62.528984f, + HookWeight = 40.52114f, + BlockPosition = 28.581f, + BitDepth = 415.378f, + RotorSpeed = 22.6f + }, + new DetectableTelemetry + { + WellDepth = 415.392f, + Pressure = 67.0039f, + HookWeight = 38.878895f, + BlockPosition = 28.569f, + BitDepth = 415.39f, + RotorSpeed = 50f + }, + new DetectableTelemetry + { + WellDepth = 415.392f, + Pressure = 65.72418f, + HookWeight = 42.53173f, + BlockPosition = 28.622f, + BitDepth = 415.337f, + RotorSpeed = 93f + }, + new DetectableTelemetry + { + WellDepth = 415.392f, + Pressure = 56.82195f, + HookWeight = 43.15844f, + BlockPosition = 28.704f, + BitDepth = 415.255f, + RotorSpeed = 71.5f + } + } + }; + } } \ No newline at end of file diff --git a/AsbCloudWebApi.Tests/Services/DetectedOperations/Detectors/DetectorSlipsTimeTests.cs b/AsbCloudWebApi.Tests/Services/DetectedOperations/Detectors/DetectorSlipsTimeTests.cs index 30d8da83..17029194 100644 --- a/AsbCloudWebApi.Tests/Services/DetectedOperations/Detectors/DetectorSlipsTimeTests.cs +++ b/AsbCloudWebApi.Tests/Services/DetectedOperations/Detectors/DetectorSlipsTimeTests.cs @@ -7,80 +7,80 @@ namespace AsbCloudWebApi.Tests.Services.DetectedOperations.Detectors; public class DetectorSlipsTimeTests { - private const int IdSlipsTime = 5011; + private const int IdSlipsTime = 5011; - private readonly DetectableTelemetry telemetry = new() { + private readonly DetectableTelemetry telemetry = new() { WellDepth = 300, - Pressure = 15, - HookWeight = 20, - BlockPosition = 20, - BitDepth = 151, - AxialLoad = 19, - }; + Pressure = 15, + HookWeight = 20, + BlockPosition = 20, + BitDepth = 151, + AxialLoad = 19, + }; - private readonly DetectorSlipsTime sut = new(); + private readonly DetectorSlipsTime sut = new(); - [Fact] - public void DetectOperation_by_change_block_position_and_axial_load_less_hook_weight_is_success() - { - //arrange - var point0 = telemetry.Copy(); + [Fact] + public void DetectOperation_by_change_block_position_and_axial_load_less_hook_weight_is_success() + { + //arrange + var point0 = telemetry.Copy(); - var point1 = telemetry.Copy(); + var point1 = telemetry.Copy(); point1.BlockPosition = 21; - var telemetries = new[] { point0, point1 }; + var telemetries = new[] { point0, point1 }; - //act - var isDetectOperation = sut.TryDetect(0, telemetries, 0, telemetries.Length - 1, null, out var result); + //act + var isDetectOperation = sut.TryDetect(0, telemetries, 0, telemetries.Length - 1, null, out var result); - //assert - Assert.True(isDetectOperation); - Assert.NotNull(result); - Assert.Equal(IdSlipsTime, result.Operation.IdCategory); - } + //assert + Assert.True(isDetectOperation); + Assert.NotNull(result); + Assert.Equal(IdSlipsTime, result.Operation.IdCategory); + } - [Fact] - public void DetectOperation_by_high_pressure_is_success() - { + [Fact] + public void DetectOperation_by_high_pressure_is_success() + { //arrange var point0 = telemetry.Copy(); - var point1 = telemetry.Copy(); - point1.BlockPosition = 21; - point1.AxialLoad = 30; - point1.HookWeight = 20; - point1.Pressure = 23; + var point1 = telemetry.Copy(); + point1.BlockPosition = 21; + point1.AxialLoad = 30; + point1.HookWeight = 20; + point1.Pressure = 23; - var telemetries = new[] { point0, point1 }; + var telemetries = new[] { point0, point1 }; - //act - var isDetectOperation = sut.TryDetect(0, telemetries, 0, telemetries.Length - 1, null, out var result); + //act + var isDetectOperation = sut.TryDetect(0, telemetries, 0, telemetries.Length - 1, null, out var result); - //assert - Assert.True(isDetectOperation); - Assert.NotNull(result); - Assert.Equal(IdSlipsTime, result.Operation.IdCategory); - } + //assert + Assert.True(isDetectOperation); + Assert.NotNull(result); + Assert.Equal(IdSlipsTime, result.Operation.IdCategory); + } - [Fact] - public void ValidateOperation_with_duration_more_30_minutes_is_invalid() - { + [Fact] + public void ValidateOperation_with_duration_more_30_minutes_is_invalid() + { //arrange var point0 = telemetry.Copy(); var point1 = telemetry.Copy(); point1.BlockPosition = 21; - point1.DateTime = DateTimeOffset.UtcNow.AddMinutes(30); + point1.DateTime = DateTimeOffset.UtcNow.AddMinutes(30); - var telemetries = new[] { point0, point1 }; + var telemetries = new[] { point0, point1 }; - //act - var isDetectOperation = sut.TryDetect(0, telemetries, 0, telemetries.Length - 1, null, out var result); + //act + var isDetectOperation = sut.TryDetect(0, telemetries, 0, telemetries.Length - 1, null, out var result); - //assert - Assert.False(isDetectOperation); - Assert.NotNull(result); - Assert.Equal(IdSlipsTime, result.Operation.IdCategory); - } + //assert + Assert.False(isDetectOperation); + Assert.NotNull(result); + Assert.Equal(IdSlipsTime, result.Operation.IdCategory); + } } \ No newline at end of file diff --git a/AsbCloudWebApi.Tests/Services/DetectedOperations/EnabledSubsystemsTests.cs b/AsbCloudWebApi.Tests/Services/DetectedOperations/EnabledSubsystemsTests.cs index 97f459aa..791a86d8 100644 --- a/AsbCloudWebApi.Tests/Services/DetectedOperations/EnabledSubsystemsTests.cs +++ b/AsbCloudWebApi.Tests/Services/DetectedOperations/EnabledSubsystemsTests.cs @@ -5,38 +5,38 @@ namespace AsbCloudWebApi.Tests.Services.DetectedOperations; public class EnabledSubsystemsTests { - [Fact] - public void Create_enable_subsystem_with_the_systems_turned_off() - { - //act - EnabledSubsystems enableSubsystem = 0; - - //arrange - Assert.False(enableSubsystem.IsAutoRotor); - Assert.False(enableSubsystem.IsAutoSlide); - Assert.False(enableSubsystem.IsAutoConditionig); - Assert.False(enableSubsystem.IsAutoSinking); - Assert.False(enableSubsystem.IsAutoLifting); - Assert.False(enableSubsystem.IsAutoLiftingWithConditionig); - Assert.False(enableSubsystem.IsAutoBlocknig); - Assert.False(enableSubsystem.IsAutoOscillation); - } - - [Fact] - public void Create_enable_subsystem_with_the_auto_slide_subsystem() - { - //act - EnabledSubsystems enableSubsystem = 2; - - //arrange - Assert.True(enableSubsystem.IsAutoSlide); - - Assert.False(enableSubsystem.IsAutoRotor); - Assert.False(enableSubsystem.IsAutoConditionig); - Assert.False(enableSubsystem.IsAutoSinking); - Assert.False(enableSubsystem.IsAutoLifting); - Assert.False(enableSubsystem.IsAutoLiftingWithConditionig); - Assert.False(enableSubsystem.IsAutoBlocknig); - Assert.False(enableSubsystem.IsAutoOscillation); - } + [Fact] + public void Create_enable_subsystem_with_the_systems_turned_off() + { + //act + EnabledSubsystems enableSubsystem = 0; + + //arrange + Assert.False(enableSubsystem.IsAutoRotor); + Assert.False(enableSubsystem.IsAutoSlide); + Assert.False(enableSubsystem.IsAutoConditionig); + Assert.False(enableSubsystem.IsAutoSinking); + Assert.False(enableSubsystem.IsAutoLifting); + Assert.False(enableSubsystem.IsAutoLiftingWithConditionig); + Assert.False(enableSubsystem.IsAutoBlocknig); + Assert.False(enableSubsystem.IsAutoOscillation); + } + + [Fact] + public void Create_enable_subsystem_with_the_auto_slide_subsystem() + { + //act + EnabledSubsystems enableSubsystem = 2; + + //arrange + Assert.True(enableSubsystem.IsAutoSlide); + + Assert.False(enableSubsystem.IsAutoRotor); + Assert.False(enableSubsystem.IsAutoConditionig); + Assert.False(enableSubsystem.IsAutoSinking); + Assert.False(enableSubsystem.IsAutoLifting); + Assert.False(enableSubsystem.IsAutoLiftingWithConditionig); + Assert.False(enableSubsystem.IsAutoBlocknig); + Assert.False(enableSubsystem.IsAutoOscillation); + } } \ No newline at end of file diff --git a/AsbCloudWebApi.Tests/Services/FileServiceTest.cs b/AsbCloudWebApi.Tests/Services/FileServiceTest.cs index b1200160..61dad20e 100644 --- a/AsbCloudWebApi.Tests/Services/FileServiceTest.cs +++ b/AsbCloudWebApi.Tests/Services/FileServiceTest.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.IO; using System.Threading; diff --git a/AsbCloudWebApi.Tests/Services/HelpPageServiceTest.cs b/AsbCloudWebApi.Tests/Services/HelpPageServiceTest.cs index e722fcb9..38fdf8bc 100644 --- a/AsbCloudWebApi.Tests/Services/HelpPageServiceTest.cs +++ b/AsbCloudWebApi.Tests/Services/HelpPageServiceTest.cs @@ -1,13 +1,13 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading; -using System.Threading.Tasks; using AsbCloudApp.Data; using AsbCloudApp.Repositories; using AsbCloudInfrastructure.Services; using Microsoft.Extensions.Configuration; using NSubstitute; +using System; +using System.Collections.Generic; +using System.IO; +using System.Threading; +using System.Threading.Tasks; using Xunit; namespace AsbCloudWebApi.Tests.Services; @@ -18,7 +18,7 @@ public class HelpPageServiceTest private const string fileName = "Справка_для_страницы_test.pdf"; private const int idCategory = 20000; - private static Dictionary configSettings = new() + private static Dictionary configSettings = new() { { "DirectoryNameHelpPageFiles", "helpPages" } }; diff --git a/AsbCloudWebApi.Tests/Services/Notification/EmailNotificationTransportServiceTests.cs b/AsbCloudWebApi.Tests/Services/Notification/EmailNotificationTransportServiceTests.cs index 5b6bcb1d..0d2974b9 100644 --- a/AsbCloudWebApi.Tests/Services/Notification/EmailNotificationTransportServiceTests.cs +++ b/AsbCloudWebApi.Tests/Services/Notification/EmailNotificationTransportServiceTests.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Data.User; using AsbCloudApp.Repositories; using AsbCloudApp.Services.Notifications; @@ -43,7 +43,7 @@ namespace AsbCloudWebApi.Tests.Services.Notification Surname = "Test", }; - private static Dictionary configSettings = new() + private static Dictionary configSettings = new() { { "email:sender", "bot@digitaldrilling.ru" }, { "email:password", "8wZrXSfP" }, diff --git a/AsbCloudWebApi.Tests/Services/ProcessMaps/ProcessMapReportDataSaubStatServiceTest.cs b/AsbCloudWebApi.Tests/Services/ProcessMaps/ProcessMapReportDataSaubStatServiceTest.cs index a5cba844..4aad0d9c 100644 --- a/AsbCloudWebApi.Tests/Services/ProcessMaps/ProcessMapReportDataSaubStatServiceTest.cs +++ b/AsbCloudWebApi.Tests/Services/ProcessMaps/ProcessMapReportDataSaubStatServiceTest.cs @@ -1,292 +1,297 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading; -using System.Threading.Tasks; -using AsbCloudApp.Data; -using AsbCloudApp.Data.ProcessMaps; -using AsbCloudApp.Data.WellOperation; -using AsbCloudApp.Repositories; -using AsbCloudApp.Requests; -using AsbCloudApp.Services; -using AsbCloudDb.Model; -using AsbCloudInfrastructure.Repository; -using AsbCloudInfrastructure.Services.ProcessMaps; -using AsbCloudInfrastructure.Services.ProcessMaps.Report; -using DocumentFormat.OpenXml.Bibliography; -using DocumentFormat.OpenXml.Spreadsheet; -using NSubstitute; -using Xunit; +//using AsbCloudApp.Data; +//using AsbCloudApp.Data.ProcessMaps; +//using AsbCloudApp.Data.WellOperation; +//using AsbCloudApp.Repositories; +//using AsbCloudApp.Requests; +//using AsbCloudApp.Services; +//using AsbCloudDb.Model; +//using AsbCloudInfrastructure.Services.ProcessMaps.Report; +//using NSubstitute; +//using System; +//using System.Collections.Generic; +//using System.Linq; +//using System.Threading; +//using System.Threading.Tasks; +//using Xunit; -namespace AsbCloudWebApi.Tests.Services.ProcessMaps; +//namespace AsbCloudWebApi.Tests.Services.ProcessMaps; -public class ProcessMapReportDataSaubStatServiceTest -{ +//public class ProcessMapReportDataSaubStatServiceTest +//{ - private IWellService wellService - = Substitute.For(); +// private IWellService wellService +// = Substitute.For(); - private IChangeLogRepository processMapPlanBaseRepository - = Substitute.For>(); +// private IChangeLogRepository processMapPlanBaseRepository +// = Substitute.For>(); - private IWellOperationRepository wellOperationRepository - = Substitute.For(); +// private IWellOperationRepository wellOperationRepository +// = Substitute.For(); - private IWellOperationCategoryRepository wellOperationCategoryRepository - = Substitute.For(); +// private IWellOperationCategoryRepository wellOperationCategoryRepository +// = Substitute.For(); - private IDataSaubStatRepository dataSaubStatRepository - = Substitute.For(); +// private IDataSaubStatRepository dataSaubStatRepository +// = Substitute.For(); - private ProcessMapReportDrillingService service; +// private ProcessMapReportDrillingService service; - private readonly static SimpleTimezoneDto timezone = new() { Hours = 2 }; - private static readonly DateTimeOffset dateStart = new (2024, 01, 01, 00, 11, 11, timezone.Offset); - private readonly static WellDto well = new() - { - Id = 1, - IdTelemetry = 1, - Timezone = timezone - }; - private readonly static IEnumerable processMapPlan = new List() - { - new() { - DepthStart = 0, - DepthEnd = 100, - IdMode = 1, - IdWell = well.Id, - IdWellSectionType = 1, - AxialLoadPlan = 0.2, - AxialLoadLimitMax = 0.3, - DeltaPressurePlan = 0.4, - DeltaPressureLimitMax = 0.5, - TopDriveTorquePlan = 0.6, - TopDriveTorqueLimitMax = 0.7, - TopDriveSpeedPlan = 0.8, - TopDriveSpeedLimitMax = 0.9, - FlowPlan = 0.10, - FlowLimitMax = 0.11, - RopPlan = 0.12, - UsageSaub = 0.12, - UsageSpin = 0.14, - Comment = "r", - }, - new() { - DepthStart = 0, - DepthEnd = 100, - IdMode = 2, - IdWell = well.Id, - IdWellSectionType = 1, - AxialLoadPlan = 0.12, - AxialLoadLimitMax = 0.13, - DeltaPressurePlan = 0.14, - DeltaPressureLimitMax = 0.15, - TopDriveTorquePlan = 0.16, - TopDriveTorqueLimitMax = 0.17, - TopDriveSpeedPlan = 0.18, - TopDriveSpeedLimitMax = 0.19, - FlowPlan = 0.110, - FlowLimitMax = 0.111, - RopPlan = 0.112, - UsageSaub = 0.112, - UsageSpin = 0.114, - Comment = "s", - }, - new() { - DepthStart = 100, - DepthEnd = 200, - IdMode = 1, - IdWell = well.Id, - IdWellSectionType = 1, - AxialLoadPlan = 0.22, - AxialLoadLimitMax = 0.23, - DeltaPressurePlan = 0.24, - DeltaPressureLimitMax = 0.25, - TopDriveTorquePlan = 0.26, - TopDriveTorqueLimitMax = 0.27, - TopDriveSpeedPlan = 0.28, - TopDriveSpeedLimitMax = 0.29, - FlowPlan = 0.210, - FlowLimitMax = 0.211, - RopPlan = 0.212, - UsageSaub = 0.212, - UsageSpin = 0.214, - Comment = "r", - }, - new() { - DepthStart = 100, - DepthEnd = 200, - IdMode = 2, - IdWell = well.Id, - IdWellSectionType = 1, - AxialLoadPlan = 0.32, - AxialLoadLimitMax = 0.33, - DeltaPressurePlan = 0.34, - DeltaPressureLimitMax = 0.35, - TopDriveTorquePlan = 0.36, - TopDriveTorqueLimitMax = 0.37, - TopDriveSpeedPlan = 0.38, - TopDriveSpeedLimitMax = 0.39, - FlowPlan = 0.310, - FlowLimitMax = 0.311, - RopPlan = 0.312, - UsageSaub = 0.312, - UsageSpin = 0.314, - Comment = "s", - }, - }; - private readonly static IEnumerable operations = new List() - { - new() - { - Id = 1, - IdWell = well.Id, - IdWellSectionType = 1, - IdCategory = WellOperationCategory.IdRotor, - IdParentCategory = WellOperationCategory.IdMechanicalDrilling, - IdType = WellOperation.IdOperationTypeFact, - DepthStart = 0, - DepthEnd = 10, - DateStart = dateStart, - DurationHours = 1, - }, - new() - { - Id = 1, - IdWell = well.Id, - IdWellSectionType = 2, - IdCategory = WellOperationCategory.IdRotor, - IdParentCategory = WellOperationCategory.IdMechanicalDrilling, - IdType = WellOperation.IdOperationTypeFact, - DepthStart = 50, - DepthEnd = 100, - DateStart = dateStart, - DurationHours = 1, - } - }; - private readonly static IEnumerable operationCategories = new List() - { - new(){Id = WellOperationCategory.IdRotor, IdParent = WellOperationCategory.IdMechanicalDrilling, Name = "РОТОР"}, - new(){Id = WellOperationCategory.IdSlide, IdParent = WellOperationCategory.IdMechanicalDrilling, Name = "СЛАЙД"}, - }; - private readonly static IEnumerable sectionTypes = new List() { - new(){ Id = 1, Caption = "Секция 1"}, - new(){ Id = 2, Caption = "Секция 2"}, - new(){ Id = 3, Caption = "Секция 3"}, - new(){ Id = 4, Caption = "Секция 4"}, - }; - private readonly static IEnumerable dataSaubStat = new List() { - new(){ - Id = 1, - IdTelemetry = 1, - IdCategory = WellOperationCategory.IdRotor, - DateStart = dateStart, - DateEnd = dateStart.AddHours(3.25), - DepthStart = 0, - DepthEnd = 20, - Speed = 0.1, - BlockSpeedSp = 0.2, - Pressure = 0.3, - PressureIdle = 0.4, - PressureSp = 0.5, - AxialLoad = 0.6, - AxialLoadSp = 0.7, - AxialLoadLimitMax = 0.8, - RotorTorque = 0.9, - RotorTorqueSp = 0.11, - RotorTorqueLimitMax = 0.12, - RotorSpeed = 0.14, - Flow = 0.17, - IdFeedRegulator = LimitingParameterDto.AxialLoad, - EnabledSubsystems = 15, - HasOscillation = false, - }, - new(){ - Id = 1, - IdTelemetry = 1, - IdCategory = WellOperationCategory.IdRotor, - DateStart = dateStart.AddHours(3.25), - DateEnd = dateStart.AddHours(4.25), - DepthStart = 20, - DepthEnd = 190, - Speed = 0.21, - BlockSpeedSp = 0.22, - Pressure = 0.23, - PressureIdle = 0.24, - PressureSp = 0.25, - AxialLoad = 0.26, - AxialLoadSp = 0.27, - AxialLoadLimitMax = 0.28, - RotorTorque = 0.29, - RotorTorqueSp = 0.211, - RotorTorqueLimitMax = 0.212, - RotorSpeed = 0.214, - Flow = 0.217, - IdFeedRegulator = LimitingParameterDto.AxialLoad, - EnabledSubsystems = 15, - HasOscillation = false, - }, - new(){ - Id = 1, - IdTelemetry = 1, - IdCategory = WellOperationCategory.IdRotor, - DateStart = dateStart.AddHours(4.25), - DateEnd = dateStart.AddHours(16), - DepthStart = 190, - DepthEnd = 290, - Speed = 0.31, - BlockSpeedSp = 0.32, - Pressure = 0.33, - PressureIdle = 0.34, - PressureSp = 0.35, - AxialLoad = 0.36, - AxialLoadSp = 0.37, - AxialLoadLimitMax = 0.38, - RotorTorque = 0.39, - RotorTorqueSp = 0.231, - RotorTorqueLimitMax = 0.232, - RotorSpeed = 0.234, - Flow = 0.237, - IdFeedRegulator = LimitingParameterDto.AxialLoad, - EnabledSubsystems = 15, - HasOscillation = false, - } - }; - - public ProcessMapReportDataSaubStatServiceTest() - { - wellService.GetOrDefaultAsync(Arg.Any(), Arg.Any()) - .Returns(well); +// private readonly static SimpleTimezoneDto timezone = new() { Hours = 2 }; +// private static readonly DateTimeOffset dateStart = new(2024, 01, 01, 00, 11, 11, timezone.Offset); +// private readonly static WellDto well = new() +// { +// Id = 1, +// IdTelemetry = 1, +// Timezone = timezone +// }; +// private readonly static IEnumerable processMapPlan = new List() +// { +// new() { +// DepthStart = 0, +// DepthEnd = 100, +// IdMode = 1, +// IdWell = well.Id, +// IdWellSectionType = 1, +// AxialLoadPlan = 0.2, +// AxialLoadLimitMax = 0.3, +// DeltaPressurePlan = 0.4, +// DeltaPressureLimitMax = 0.5, +// TopDriveTorquePlan = 0.6, +// TopDriveTorqueLimitMax = 0.7, +// TopDriveSpeedPlan = 0.8, +// TopDriveSpeedLimitMax = 0.9, +// FlowPlan = 0.10, +// FlowLimitMax = 0.11, +// RopPlan = 0.12, +// UsageSaub = 0.12, +// UsageSpin = 0.14, +// Comment = "r", +// }, +// new() { +// DepthStart = 0, +// DepthEnd = 100, +// IdMode = 2, +// IdWell = well.Id, +// IdWellSectionType = 1, +// AxialLoadPlan = 0.12, +// AxialLoadLimitMax = 0.13, +// DeltaPressurePlan = 0.14, +// DeltaPressureLimitMax = 0.15, +// TopDriveTorquePlan = 0.16, +// TopDriveTorqueLimitMax = 0.17, +// TopDriveSpeedPlan = 0.18, +// TopDriveSpeedLimitMax = 0.19, +// FlowPlan = 0.110, +// FlowLimitMax = 0.111, +// RopPlan = 0.112, +// UsageSaub = 0.112, +// UsageSpin = 0.114, +// Comment = "s", +// }, +// new() { +// DepthStart = 100, +// DepthEnd = 200, +// IdMode = 1, +// IdWell = well.Id, +// IdWellSectionType = 1, +// AxialLoadPlan = 0.22, +// AxialLoadLimitMax = 0.23, +// DeltaPressurePlan = 0.24, +// DeltaPressureLimitMax = 0.25, +// TopDriveTorquePlan = 0.26, +// TopDriveTorqueLimitMax = 0.27, +// TopDriveSpeedPlan = 0.28, +// TopDriveSpeedLimitMax = 0.29, +// FlowPlan = 0.210, +// FlowLimitMax = 0.211, +// RopPlan = 0.212, +// UsageSaub = 0.212, +// UsageSpin = 0.214, +// Comment = "r", +// }, +// new() { +// DepthStart = 100, +// DepthEnd = 200, +// IdMode = 2, +// IdWell = well.Id, +// IdWellSectionType = 1, +// AxialLoadPlan = 0.32, +// AxialLoadLimitMax = 0.33, +// DeltaPressurePlan = 0.34, +// DeltaPressureLimitMax = 0.35, +// TopDriveTorquePlan = 0.36, +// TopDriveTorqueLimitMax = 0.37, +// TopDriveSpeedPlan = 0.38, +// TopDriveSpeedLimitMax = 0.39, +// FlowPlan = 0.310, +// FlowLimitMax = 0.311, +// RopPlan = 0.312, +// UsageSaub = 0.312, +// UsageSpin = 0.314, +// Comment = "s", +// }, +// }; - processMapPlanBaseRepository.Get(Arg.Any(), Arg.Any()) - .Returns(processMapPlan); +// private readonly static IEnumerable> processMapPlanChangeLog = processMapPlan.Select(p => new ChangeLogDto() +// { +// Item = p, +// }); - wellOperationRepository.GetAsync(Arg.Any(), Arg.Any()) - .Returns(operations); +// private readonly static IEnumerable operations = new List() +// { +// new() +// { +// Id = 1, +// IdWell = well.Id, +// IdWellSectionType = 1, +// IdCategory = WellOperationCategory.IdRotor, +// IdParentCategory = WellOperationCategory.IdMechanicalDrilling, +// IdType = WellOperation.IdOperationTypeFact, +// DepthStart = 0, +// DepthEnd = 10, +// DateStart = dateStart, +// DurationHours = 1, +// }, +// new() +// { +// Id = 1, +// IdWell = well.Id, +// IdWellSectionType = 2, +// IdCategory = WellOperationCategory.IdRotor, +// IdParentCategory = WellOperationCategory.IdMechanicalDrilling, +// IdType = WellOperation.IdOperationTypeFact, +// DepthStart = 50, +// DepthEnd = 100, +// DateStart = dateStart, +// DurationHours = 1, +// } +// }; +// private readonly static IEnumerable operationCategories = new List() +// { +// new(){Id = WellOperationCategory.IdRotor, IdParent = WellOperationCategory.IdMechanicalDrilling, Name = "РОТОР"}, +// new(){Id = WellOperationCategory.IdSlide, IdParent = WellOperationCategory.IdMechanicalDrilling, Name = "СЛАЙД"}, +// }; +// private readonly static IEnumerable sectionTypes = new List() { +// new(){ Id = 1, Caption = "Секция 1"}, +// new(){ Id = 2, Caption = "Секция 2"}, +// new(){ Id = 3, Caption = "Секция 3"}, +// new(){ Id = 4, Caption = "Секция 4"}, +// }; +// private readonly static IEnumerable dataSaubStat = new List() { +// new(){ +// Id = 1, +// IdTelemetry = 1, +// IdCategory = WellOperationCategory.IdRotor, +// DateStart = dateStart, +// DateEnd = dateStart.AddHours(3.25), +// DepthStart = 0, +// DepthEnd = 20, +// Speed = 0.1, +// BlockSpeedSp = 0.2, +// Pressure = 0.3, +// PressureIdle = 0.4, +// PressureSp = 0.5, +// AxialLoad = 0.6, +// AxialLoadSp = 0.7, +// AxialLoadLimitMax = 0.8, +// RotorTorque = 0.9, +// RotorTorqueSp = 0.11, +// RotorTorqueLimitMax = 0.12, +// RotorSpeed = 0.14, +// Flow = 0.17, +// IdFeedRegulator = LimitingParameterDto.AxialLoad, +// EnabledSubsystems = 15, +// HasOscillation = false, +// }, +// new(){ +// Id = 1, +// IdTelemetry = 1, +// IdCategory = WellOperationCategory.IdRotor, +// DateStart = dateStart.AddHours(3.25), +// DateEnd = dateStart.AddHours(4.25), +// DepthStart = 20, +// DepthEnd = 190, +// Speed = 0.21, +// BlockSpeedSp = 0.22, +// Pressure = 0.23, +// PressureIdle = 0.24, +// PressureSp = 0.25, +// AxialLoad = 0.26, +// AxialLoadSp = 0.27, +// AxialLoadLimitMax = 0.28, +// RotorTorque = 0.29, +// RotorTorqueSp = 0.211, +// RotorTorqueLimitMax = 0.212, +// RotorSpeed = 0.214, +// Flow = 0.217, +// IdFeedRegulator = LimitingParameterDto.AxialLoad, +// EnabledSubsystems = 15, +// HasOscillation = false, +// }, +// new(){ +// Id = 1, +// IdTelemetry = 1, +// IdCategory = WellOperationCategory.IdRotor, +// DateStart = dateStart.AddHours(4.25), +// DateEnd = dateStart.AddHours(16), +// DepthStart = 190, +// DepthEnd = 290, +// Speed = 0.31, +// BlockSpeedSp = 0.32, +// Pressure = 0.33, +// PressureIdle = 0.34, +// PressureSp = 0.35, +// AxialLoad = 0.36, +// AxialLoadSp = 0.37, +// AxialLoadLimitMax = 0.38, +// RotorTorque = 0.39, +// RotorTorqueSp = 0.231, +// RotorTorqueLimitMax = 0.232, +// RotorSpeed = 0.234, +// Flow = 0.237, +// IdFeedRegulator = LimitingParameterDto.AxialLoad, +// EnabledSubsystems = 15, +// HasOscillation = false, +// } +// }; - wellOperationRepository.GetSectionTypes() - .Returns(sectionTypes); +// public ProcessMapReportDataSaubStatServiceTest() +// { +// wellService.GetOrDefaultAsync(Arg.Any(), Arg.Any()) +// .Returns(well); - wellOperationCategoryRepository.Get(Arg.Any()) - .Returns(operationCategories); +// processMapPlanBaseRepository.GetCurrent(Arg.Any(), Arg.Any()) +// .Returns(processMapPlan); - dataSaubStatRepository.GetAsync(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) - .Returns(dataSaubStat); +// processMapPlanBaseRepository.GetChangeLogForDate(Arg.Any(), null, Arg.Any()) +// .Returns(processMapPlanChangeLog); - service = new ProcessMapReportDrillingService(wellService, processMapPlanBaseRepository, dataSaubStatRepository, wellOperationRepository, wellOperationCategoryRepository); - } +// wellOperationRepository.GetAsync(Arg.Any(), Arg.Any()) +// .Returns(operations); - [Fact] - public async Task GetAsync_return_data() - { - // arrange - DataSaubStatRequest request = new() { }; +// wellOperationRepository.GetSectionTypes() +// .Returns(sectionTypes); - // act - var result = await service.GetAsync(well.Id, request, CancellationToken.None); +// wellOperationCategoryRepository.Get(Arg.Any()) +// .Returns(operationCategories); - // assert - Assert.NotEmpty(result); - } -} +// dataSaubStatRepository.GetAsync(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) +// .Returns(dataSaubStat); + +// service = new ProcessMapReportDrillingService(wellService, processMapPlanBaseRepository, dataSaubStatRepository, wellOperationRepository, wellOperationCategoryRepository); +// } + +// [Fact] +// public async Task GetAsync_return_data() +// { +// // arrange +// DataSaubStatRequest request = new() { }; + +// // act +// var result = await service.GetAsync(well.Id, request, CancellationToken.None); + +// // assert +// Assert.NotEmpty(result); +// } +//} diff --git a/AsbCloudWebApi.Tests/Services/Trajectory/TrajectoryExportTest.cs b/AsbCloudWebApi.Tests/Services/Trajectory/TrajectoryExportTest.cs index bffab69f..856d09ae 100644 --- a/AsbCloudWebApi.Tests/Services/Trajectory/TrajectoryExportTest.cs +++ b/AsbCloudWebApi.Tests/Services/Trajectory/TrajectoryExportTest.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.Trajectory; +using AsbCloudApp.Data.Trajectory; using AsbCloudApp.Repositories; using AsbCloudApp.Services; using AsbCloudInfrastructure.Services.Trajectory.Export; diff --git a/AsbCloudWebApi.Tests/Services/Trajectory/TrajectoryParserTest.cs b/AsbCloudWebApi.Tests/Services/Trajectory/TrajectoryParserTest.cs index 1acd0ad7..64a3caca 100644 --- a/AsbCloudWebApi.Tests/Services/Trajectory/TrajectoryParserTest.cs +++ b/AsbCloudWebApi.Tests/Services/Trajectory/TrajectoryParserTest.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using AsbCloudApp.Data.Trajectory; using AsbCloudApp.Requests.ParserOptions; using AsbCloudInfrastructure.Services.Trajectory.Parser; @@ -8,38 +8,38 @@ namespace AsbCloudWebApi.Tests.Services.Trajectory; public class TrajectoryParserTest { - private const string UsingTemplateFile = "AsbCloudWebApi.Tests.Services.Trajectory.Templates"; + private const string UsingTemplateFile = "AsbCloudWebApi.Tests.Services.Trajectory.Templates"; - private readonly WellRelatedParserRequest options = new(1); + private readonly WellRelatedParserRequest options = new(1); - private readonly TrajectoryPlanParser trajectoryPlanParser = new(); - private readonly TrajectoryFactManualParser trajectoryFactManualParser = new(); + private readonly TrajectoryPlanParser trajectoryPlanParser = new(); + private readonly TrajectoryFactManualParser trajectoryFactManualParser = new(); - [Fact] - public void Parse_trajectory_plan() - { - var stream = System.Reflection.Assembly.GetExecutingAssembly() - .GetManifestResourceStream($"{UsingTemplateFile}.TrajectoryPlanTemplate.xlsx"); + [Fact] + public void Parse_trajectory_plan() + { + var stream = System.Reflection.Assembly.GetExecutingAssembly() + .GetManifestResourceStream($"{UsingTemplateFile}.TrajectoryPlanTemplate.xlsx"); - if (stream is null) - Assert.Fail("Файла для импорта не существует"); + if (stream is null) + Assert.Fail("Файла для импорта не существует"); - var trajectoryRows = trajectoryPlanParser.Parse(stream, options); + var trajectoryRows = trajectoryPlanParser.Parse(stream, options); - Assert.Equal(3, trajectoryRows.Item.Count()); - } + Assert.Equal(3, trajectoryRows.Item.Count()); + } - [Fact] - public void Parse_trajectory_fact_manual() - { - var stream = System.Reflection.Assembly.GetExecutingAssembly() - .GetManifestResourceStream($"{UsingTemplateFile}.TrajectoryFactManualTemplate.xlsx"); + [Fact] + public void Parse_trajectory_fact_manual() + { + var stream = System.Reflection.Assembly.GetExecutingAssembly() + .GetManifestResourceStream($"{UsingTemplateFile}.TrajectoryFactManualTemplate.xlsx"); - if (stream is null) - Assert.Fail("Файла для импорта не существует"); + if (stream is null) + Assert.Fail("Файла для импорта не существует"); - var trajectoryRows = trajectoryFactManualParser.Parse(stream, options); + var trajectoryRows = trajectoryFactManualParser.Parse(stream, options); - Assert.Equal(4, trajectoryRows.Item.Count()); - } + Assert.Equal(4, trajectoryRows.Item.Count()); + } } \ No newline at end of file diff --git a/AsbCloudWebApi.Tests/Services/TrajectoryVisualizationServiceTest.cs b/AsbCloudWebApi.Tests/Services/TrajectoryVisualizationServiceTest.cs index d6776eb9..a2d31b40 100644 --- a/AsbCloudWebApi.Tests/Services/TrajectoryVisualizationServiceTest.cs +++ b/AsbCloudWebApi.Tests/Services/TrajectoryVisualizationServiceTest.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using System.Threading; using System.Threading.Tasks; using AsbCloudApp.Data; diff --git a/AsbCloudWebApi.Tests/Services/WellCompositeOperation/WellCompositeOperationServiceTest.cs b/AsbCloudWebApi.Tests/Services/WellCompositeOperation/WellCompositeOperationServiceTest.cs index c6f5f5cf..b5ac6d1f 100644 --- a/AsbCloudWebApi.Tests/Services/WellCompositeOperation/WellCompositeOperationServiceTest.cs +++ b/AsbCloudWebApi.Tests/Services/WellCompositeOperation/WellCompositeOperationServiceTest.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Data.WellOperation; using AsbCloudApp.Repositories; using AsbCloudApp.Requests; diff --git a/AsbCloudWebApi.Tests/Services/WellFinalDocumentsServiceTest.cs b/AsbCloudWebApi.Tests/Services/WellFinalDocumentsServiceTest.cs index a85ca068..18cca46b 100644 --- a/AsbCloudWebApi.Tests/Services/WellFinalDocumentsServiceTest.cs +++ b/AsbCloudWebApi.Tests/Services/WellFinalDocumentsServiceTest.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.IO; using System.Threading; diff --git a/AsbCloudWebApi.Tests/Services/WellboreServiceTest.cs b/AsbCloudWebApi.Tests/Services/WellboreServiceTest.cs index f256c384..32a1e2a5 100644 --- a/AsbCloudWebApi.Tests/Services/WellboreServiceTest.cs +++ b/AsbCloudWebApi.Tests/Services/WellboreServiceTest.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Threading; diff --git a/AsbCloudWebApi.Tests/XLExtensionsTests.cs b/AsbCloudWebApi.Tests/XLExtensionsTests.cs index 601e71e0..87a13dad 100644 --- a/AsbCloudWebApi.Tests/XLExtensionsTests.cs +++ b/AsbCloudWebApi.Tests/XLExtensionsTests.cs @@ -8,163 +8,163 @@ namespace AsbCloudWebApi.Tests; public class XLExtensionsTests { - private const string cellUsed = "A1"; - private const string sheetName = "test"; + private const string cellUsed = "A1"; + private const string sheetName = "test"; - private readonly IXLWorkbook workbook; + private readonly IXLWorkbook workbook; - public XLExtensionsTests() - { - workbook = new XLWorkbook(); - workbook.Worksheets.Add(sheetName); - } + public XLExtensionsTests() + { + workbook = new XLWorkbook(); + workbook.Worksheets.Add(sheetName); + } - [Fact] - public void GetWorksheet_returns_sheet() - { - //act - var sheet = workbook.GetWorksheet(sheetName); + [Fact] + public void GetWorksheet_returns_sheet() + { + //act + var sheet = workbook.GetWorksheet(sheetName); - //assert - Assert.NotNull(sheet); - } + //assert + Assert.NotNull(sheet); + } - [Theory] - [MemberData(nameof(valueTypesToSet))] - public void SetCellValue_returns_success(object value, XLDataType expectedDataType) - { - //act - var cell = GetCell(cellUsed); - cell.SetCellValue(value); + [Theory] + [MemberData(nameof(valueTypesToSet))] + public void SetCellValue_returns_success(object value, XLDataType expectedDataType) + { + //act + var cell = GetCell(cellUsed); + cell.SetCellValue(value); - //assert - Assert.Equal(expectedDataType, cell.DataType); - } - - [Fact] - public void GetCellValue_returns_double() - { - //arrange - const double expectedValue = 2.0d; - SetCellValue(expectedValue); + //assert + Assert.Equal(expectedDataType, cell.DataType); + } + + [Fact] + public void GetCellValue_returns_double() + { + //arrange + const double expectedValue = 2.0d; + SetCellValue(expectedValue); - //act - var actualValue = GetCell(cellUsed).GetCellValue(); - - //assert - Assert.Equal(expectedValue, actualValue); - } + //act + var actualValue = GetCell(cellUsed).GetCellValue(); + + //assert + Assert.Equal(expectedValue, actualValue); + } - [Fact] - public void GetCellValue_returns_float() - { - //arrange - const float expectedValue = 2.0f; - SetCellValue(expectedValue); - - //act - var actualValue = GetCell(cellUsed).GetCellValue(); - - //assert - Assert.Equal(expectedValue, actualValue); - } + [Fact] + public void GetCellValue_returns_float() + { + //arrange + const float expectedValue = 2.0f; + SetCellValue(expectedValue); + + //act + var actualValue = GetCell(cellUsed).GetCellValue(); + + //assert + Assert.Equal(expectedValue, actualValue); + } - [Theory] - [InlineData("test")] - [InlineData(null)] - public void GetCellValue_returns_string(string? expectedValue) - { - //arrange - SetCellValue(expectedValue); - - //act - var actualValue = GetCell(cellUsed).GetCellValue(); - - //assert - Assert.Equal(expectedValue, actualValue); - } + [Theory] + [InlineData("test")] + [InlineData(null)] + public void GetCellValue_returns_string(string? expectedValue) + { + //arrange + SetCellValue(expectedValue); + + //act + var actualValue = GetCell(cellUsed).GetCellValue(); + + //assert + Assert.Equal(expectedValue, actualValue); + } - [Fact] - public void GetCellValue_returns_bool() - { - //arrange - const bool expectedValue = true; - SetCellValue(expectedValue); - - //act - var actualValue = GetCell(cellUsed).GetCellValue(); - - //assert - Assert.Equal(expectedValue, actualValue); - } + [Fact] + public void GetCellValue_returns_bool() + { + //arrange + const bool expectedValue = true; + SetCellValue(expectedValue); + + //act + var actualValue = GetCell(cellUsed).GetCellValue(); + + //assert + Assert.Equal(expectedValue, actualValue); + } - [Fact] - public void GetCellValue_returns_dateTime() - { - //arrange - var expectedValue = DateTime.Parse("2023-01-01"); - SetCellValue(expectedValue); - - //act - var actualValue = GetCell(cellUsed).GetCellValue(); - - //assert - Assert.Equal(expectedValue, actualValue); - Assert.Equal(DateTimeKind.Unspecified, actualValue.Kind); - } + [Fact] + public void GetCellValue_returns_dateTime() + { + //arrange + var expectedValue = DateTime.Parse("2023-01-01"); + SetCellValue(expectedValue); + + //act + var actualValue = GetCell(cellUsed).GetCellValue(); + + //assert + Assert.Equal(expectedValue, actualValue); + Assert.Equal(DateTimeKind.Unspecified, actualValue.Kind); + } - [Fact] - public void GetCellValue_returns_exception() - { - //arrange - SetCellValue("test"); + [Fact] + public void GetCellValue_returns_exception() + { + //arrange + SetCellValue("test"); - //assert - Assert.Throws(() => GetCell(cellUsed).GetCellValue()); - } + //assert + Assert.Throws(() => GetCell(cellUsed).GetCellValue()); + } - [Fact] - public void GetCellValue_returns_nullable() - { - //act - var actualValue = GetCell(cellUsed).GetCellValue(); - - //assert - Assert.Null(actualValue); - } + [Fact] + public void GetCellValue_returns_nullable() + { + //act + var actualValue = GetCell(cellUsed).GetCellValue(); + + //assert + Assert.Null(actualValue); + } - [Fact] - public void SetHyperlink_returns_success() - { - //arrange - const string link = "http://test.ru"; - - //act - GetCell(cellUsed).SetHyperlink(link); - - //assert - var hyperLink = GetCell(cellUsed).GetHyperlink(); - Assert.NotNull(hyperLink); - } + [Fact] + public void SetHyperlink_returns_success() + { + //arrange + const string link = "http://test.ru"; + + //act + GetCell(cellUsed).SetHyperlink(link); + + //assert + var hyperLink = GetCell(cellUsed).GetHyperlink(); + Assert.NotNull(hyperLink); + } - private void SetCellValue(T value) - { - var cell = GetCell(cellUsed); - cell.SetCellValue(value); - } + private void SetCellValue(T value) + { + var cell = GetCell(cellUsed); + cell.SetCellValue(value); + } - public static readonly object[][] valueTypesToSet = - { - new object[] { 2.0d, XLDataType.Number }, - new object[] { 2.0f, XLDataType.Number }, - new object[] { "test", XLDataType.Text }, - new object[] { true, XLDataType.Boolean }, - new object[] { DateTime.UtcNow, XLDataType.DateTime } - }; + public static readonly object[][] valueTypesToSet = + { + new object[] { 2.0d, XLDataType.Number }, + new object[] { 2.0f, XLDataType.Number }, + new object[] { "test", XLDataType.Text }, + new object[] { true, XLDataType.Boolean }, + new object[] { DateTime.UtcNow, XLDataType.DateTime } + }; - private IXLCell GetCell(string cellAddressInRange) - { - var sheet = workbook.GetWorksheet(sheetName); - return sheet.Cell(cellAddressInRange); - } + private IXLCell GetCell(string cellAddressInRange) + { + var sheet = workbook.GetWorksheet(sheetName); + return sheet.Cell(cellAddressInRange); + } } \ No newline at end of file diff --git a/AsbCloudWebApi.Tests/readme.md b/AsbCloudWebApi.Tests/readme.md index 05db6480..f1160266 100644 --- a/AsbCloudWebApi.Tests/readme.md +++ b/AsbCloudWebApi.Tests/readme.md @@ -1 +1 @@ -Доп инфо по тестированию: https://learn.microsoft.com/ru-ru/dotnet/architecture/modern-web-apps-azure/test-asp-net-core-mvc-apps +Доп инфо по тестированию: https://learn.microsoft.com/ru-ru/dotnet/architecture/modern-web-apps-azure/test-asp-net-core-mvc-apps diff --git a/AsbCloudWebApi/AsbCloudWebApi.csproj b/AsbCloudWebApi/AsbCloudWebApi.csproj index 0537c3aa..23e0f7a4 100644 --- a/AsbCloudWebApi/AsbCloudWebApi.csproj +++ b/AsbCloudWebApi/AsbCloudWebApi.csproj @@ -10,16 +10,16 @@ - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive - - - + + + diff --git a/AsbCloudWebApi/Controllers/AdminClusterController.cs b/AsbCloudWebApi/Controllers/AdminClusterController.cs index 511b786b..e99c7d70 100644 --- a/AsbCloudWebApi/Controllers/AdminClusterController.cs +++ b/AsbCloudWebApi/Controllers/AdminClusterController.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Services; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; diff --git a/AsbCloudWebApi/Controllers/AdminCompanyController.cs b/AsbCloudWebApi/Controllers/AdminCompanyController.cs index f6ebb3d2..819c79e0 100644 --- a/AsbCloudWebApi/Controllers/AdminCompanyController.cs +++ b/AsbCloudWebApi/Controllers/AdminCompanyController.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Services; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; diff --git a/AsbCloudWebApi/Controllers/AdminCompanyTypeController.cs b/AsbCloudWebApi/Controllers/AdminCompanyTypeController.cs index eb05c245..71cf7b61 100644 --- a/AsbCloudWebApi/Controllers/AdminCompanyTypeController.cs +++ b/AsbCloudWebApi/Controllers/AdminCompanyTypeController.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Services; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; diff --git a/AsbCloudWebApi/Controllers/AdminDepositController.cs b/AsbCloudWebApi/Controllers/AdminDepositController.cs index b39e4f01..c558d1d6 100644 --- a/AsbCloudWebApi/Controllers/AdminDepositController.cs +++ b/AsbCloudWebApi/Controllers/AdminDepositController.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Services; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; diff --git a/AsbCloudWebApi/Controllers/AdminPermissionController.cs b/AsbCloudWebApi/Controllers/AdminPermissionController.cs index 31d7bec6..4444f335 100644 --- a/AsbCloudWebApi/Controllers/AdminPermissionController.cs +++ b/AsbCloudWebApi/Controllers/AdminPermissionController.cs @@ -10,7 +10,7 @@ using System.Reflection; namespace AsbCloudWebApi.Controllers { /// - /// + /// Редактор разрешений пользователей для админки /// [Route("api/admin/permission")] [ApiController] diff --git a/AsbCloudWebApi/Controllers/AdminTelemetryController.cs b/AsbCloudWebApi/Controllers/AdminTelemetryController.cs index 4fb1f9fb..6a6eb16e 100644 --- a/AsbCloudWebApi/Controllers/AdminTelemetryController.cs +++ b/AsbCloudWebApi/Controllers/AdminTelemetryController.cs @@ -1,7 +1,10 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; +using AsbCloudApp.Requests; using AsbCloudApp.Services; using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; +using System; using System.Threading; using System.Threading.Tasks; @@ -16,12 +19,15 @@ namespace AsbCloudWebApi.Controllers public class AdminTelemetryController : CrudController> { private readonly ITelemetryService telemetryService; + private readonly ITelemetryDataEditorService telemetryEditorService; public AdminTelemetryController(ICrudRepository service, - ITelemetryService telemetryService) + ITelemetryService telemetryService, + ITelemetryDataEditorService telemetryEditorService) : base(service) { this.telemetryService = telemetryService; + this.telemetryEditorService = telemetryEditorService; } /// @@ -36,5 +42,22 @@ namespace AsbCloudWebApi.Controllers .ConfigureAwait(false); return Ok(count); } + + /// + /// Удаление куска телеметрии по запросу + /// + /// запрос + /// + /// + [HttpDelete("part")] + [Permission] + [ProducesResponseType(typeof(int), (int)System.Net.HttpStatusCode.OK)] + [ProducesResponseType(typeof(ValidationProblemDetails), StatusCodes.Status400BadRequest)] + public async Task DeleteAsync([FromQuery] TelemetryPartDeleteRequest request,CancellationToken token) + { + var result = await telemetryEditorService.DeleteAsync(request, token); + + return Ok(result); + } } } diff --git a/AsbCloudWebApi/Controllers/AdminUserController.cs b/AsbCloudWebApi/Controllers/AdminUserController.cs index 1f662ed7..f0784c35 100644 --- a/AsbCloudWebApi/Controllers/AdminUserController.cs +++ b/AsbCloudWebApi/Controllers/AdminUserController.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.User; +using AsbCloudApp.Data.User; using AsbCloudApp.Repositories; using AsbCloudApp.Services; using AsbCloudInfrastructure.Repository; diff --git a/AsbCloudWebApi/Controllers/AdminUserRoleController.cs b/AsbCloudWebApi/Controllers/AdminUserRoleController.cs index 38575530..5c19378c 100644 --- a/AsbCloudWebApi/Controllers/AdminUserRoleController.cs +++ b/AsbCloudWebApi/Controllers/AdminUserRoleController.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.User; +using AsbCloudApp.Data.User; using AsbCloudApp.Repositories; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; diff --git a/AsbCloudWebApi/Controllers/AdminWellController.cs b/AsbCloudWebApi/Controllers/AdminWellController.cs index ac08b383..fa4c6e60 100644 --- a/AsbCloudWebApi/Controllers/AdminWellController.cs +++ b/AsbCloudWebApi/Controllers/AdminWellController.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Services; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; diff --git a/AsbCloudWebApi/Controllers/AuthController.cs b/AsbCloudWebApi/Controllers/AuthController.cs index 6239edc7..3497dcab 100644 --- a/AsbCloudWebApi/Controllers/AuthController.cs +++ b/AsbCloudWebApi/Controllers/AuthController.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Data.User; using AsbCloudApp.Repositories; using AsbCloudApp.Services; diff --git a/AsbCloudWebApi/Controllers/BackgroundWorkController.cs b/AsbCloudWebApi/Controllers/BackgroundWorkController.cs index bb0cdc43..58be1362 100644 --- a/AsbCloudWebApi/Controllers/BackgroundWorkController.cs +++ b/AsbCloudWebApi/Controllers/BackgroundWorkController.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudInfrastructure.Background; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; diff --git a/AsbCloudWebApi/Controllers/CrudController.cs b/AsbCloudWebApi/Controllers/CrudController.cs index 69ecdb5c..08b422c0 100644 --- a/AsbCloudWebApi/Controllers/CrudController.cs +++ b/AsbCloudWebApi/Controllers/CrudController.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Services; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; diff --git a/AsbCloudWebApi/Controllers/CrudWellRelatedController.cs b/AsbCloudWebApi/Controllers/CrudWellRelatedController.cs index 4bf0a800..245e0db8 100644 --- a/AsbCloudWebApi/Controllers/CrudWellRelatedController.cs +++ b/AsbCloudWebApi/Controllers/CrudWellRelatedController.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Services; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; diff --git a/AsbCloudWebApi/Controllers/DailyReportController.cs b/AsbCloudWebApi/Controllers/DailyReportController.cs index 682dc74d..8ef3d660 100644 --- a/AsbCloudWebApi/Controllers/DailyReportController.cs +++ b/AsbCloudWebApi/Controllers/DailyReportController.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Linq; using System.Net; using System.Threading; @@ -28,175 +28,175 @@ namespace AsbCloudWebApi.Controllers; [Authorize] public class DailyReportController : ControllerBase { - private readonly IWellOperationRepository wellOperationRepository; - private readonly IDailyReportService dailyReportService; - private readonly IDailyReportExportService dailyReportExportService; - private readonly IWellService wellService; + private readonly IWellOperationRepository wellOperationRepository; + private readonly IDailyReportService dailyReportService; + private readonly IDailyReportExportService dailyReportExportService; + private readonly IWellService wellService; - public DailyReportController(IWellOperationRepository wellOperationRepository, - IDailyReportService dailyReportService, - IDailyReportExportService dailyReportExportService, - IWellService wellService) - { - this.wellOperationRepository = wellOperationRepository; - this.dailyReportService = dailyReportService; - this.dailyReportExportService = dailyReportExportService; - this.wellService = wellService; - } + public DailyReportController(IWellOperationRepository wellOperationRepository, + IDailyReportService dailyReportService, + IDailyReportExportService dailyReportExportService, + IWellService wellService) + { + this.wellOperationRepository = wellOperationRepository; + this.dailyReportService = dailyReportService; + this.dailyReportExportService = dailyReportExportService; + this.wellService = wellService; + } - private int IdUser - { - get - { - var idUser = User.GetUserId(); + private int IdUser + { + get + { + var idUser = User.GetUserId(); - if (!idUser.HasValue) - throw new ForbidException("Неизвестный пользователь"); + if (!idUser.HasValue) + throw new ForbidException("Неизвестный пользователь"); - return idUser.Value; - } - } + return idUser.Value; + } + } - /// - /// Обновить подпись - /// - /// Id скважины - /// Дата суточного отчёта - /// Обновляемый блок - /// - /// - [HttpPut("sign")] - [Permission] - [ProducesResponseType(typeof(int), StatusCodes.Status200OK)] - [ProducesResponseType(typeof(ValidationProblemDetails), StatusCodes.Status400BadRequest)] - public Task UpdateSignBlockAsync(int idWell, DateOnly dateDailyReport, SignBlockDto signBlock, - CancellationToken cancellationToken) => - UpdateOrInsertAsync(idWell, dateDailyReport, signBlock, cancellationToken); + /// + /// Обновить подпись + /// + /// Id скважины + /// Дата суточного отчёта + /// Обновляемый блок + /// + /// + [HttpPut("sign")] + [Permission] + [ProducesResponseType(typeof(int), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(ValidationProblemDetails), StatusCodes.Status400BadRequest)] + public Task UpdateSignBlockAsync(int idWell, DateOnly dateDailyReport, SignBlockDto signBlock, + CancellationToken cancellationToken) => + UpdateOrInsertAsync(idWell, dateDailyReport, signBlock, cancellationToken); - /// - /// Обновить наработку подсистем - /// - /// Id скважины - /// Дата суточного отчёта - /// Обновляемый блок - /// - /// - [HttpPut("subsystem")] - [Permission] - [ProducesResponseType(typeof(int), StatusCodes.Status200OK)] - [ProducesResponseType(typeof(ValidationProblemDetails), StatusCodes.Status400BadRequest)] - public Task UpdateSubsystemBlockAsync(int idWell, DateOnly dateDailyReport, SubsystemBlockDto subsystemBlock, - CancellationToken cancellationToken) - { - var validSubsystemNames = new[] { "АвтоСПО", "Автопроработка" }; + /// + /// Обновить наработку подсистем + /// + /// Id скважины + /// Дата суточного отчёта + /// Обновляемый блок + /// + /// + [HttpPut("subsystem")] + [Permission] + [ProducesResponseType(typeof(int), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(ValidationProblemDetails), StatusCodes.Status400BadRequest)] + public Task UpdateSubsystemBlockAsync(int idWell, DateOnly dateDailyReport, SubsystemBlockDto subsystemBlock, + CancellationToken cancellationToken) + { + var validSubsystemNames = new[] { "АвтоСПО", "Автопроработка" }; - if (subsystemBlock.Subsystems.Any(m => !validSubsystemNames.Contains(m.Name))) - throw new ArgumentInvalidException($"Возможно добавить подсистемы с именами {string.Join(", ", validSubsystemNames)}", - nameof(subsystemBlock.Subsystems)); + if (subsystemBlock.Subsystems.Any(m => !validSubsystemNames.Contains(m.Name))) + throw new ArgumentInvalidException($"Возможно добавить подсистемы с именами {string.Join(", ", validSubsystemNames)}", + nameof(subsystemBlock.Subsystems)); - return UpdateOrInsertAsync(idWell, dateDailyReport, subsystemBlock, cancellationToken); - } + return UpdateOrInsertAsync(idWell, dateDailyReport, subsystemBlock, cancellationToken); + } - /// - /// Обновить баланс времени - /// - /// Id скважины - /// Дата суточного отчёта - /// Обновляемый блок - /// - /// - [HttpPut("timeBalance")] - [Permission] - [ProducesResponseType(typeof(int), StatusCodes.Status200OK)] - [ProducesResponseType(typeof(ValidationProblemDetails), StatusCodes.Status400BadRequest)] - public Task UpdateTimeBalanceBlockAsync(int idWell, DateOnly dateDailyReport, TimeBalanceBlockDto timeBalanceBlock, - CancellationToken cancellationToken) - { - var validWellOperationsIds = new[] { 1, 2, 3, 4 }; + /// + /// Обновить баланс времени + /// + /// Id скважины + /// Дата суточного отчёта + /// Обновляемый блок + /// + /// + [HttpPut("timeBalance")] + [Permission] + [ProducesResponseType(typeof(int), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(ValidationProblemDetails), StatusCodes.Status400BadRequest)] + public Task UpdateTimeBalanceBlockAsync(int idWell, DateOnly dateDailyReport, TimeBalanceBlockDto timeBalanceBlock, + CancellationToken cancellationToken) + { + var validWellOperationsIds = new[] { 1, 2, 3, 4 }; - if (timeBalanceBlock.WellOperations.Any(o => !validWellOperationsIds.Contains(o.IdWellOperation))) - throw new ArgumentInvalidException($"Возможно добавить операции только с Id: {string.Join(", ", validWellOperationsIds)}", - nameof(timeBalanceBlock.WellOperations)); + if (timeBalanceBlock.WellOperations.Any(o => !validWellOperationsIds.Contains(o.IdWellOperation))) + throw new ArgumentInvalidException($"Возможно добавить операции только с Id: {string.Join(", ", validWellOperationsIds)}", + nameof(timeBalanceBlock.WellOperations)); - var wellSections = wellOperationRepository.GetSectionTypes(); + var wellSections = wellOperationRepository.GetSectionTypes(); - if (wellSections.All(s => s.Id != timeBalanceBlock.IdSection)) - throw new ArgumentInvalidException($"Секция с Id: {timeBalanceBlock.IdSection} не найдена", nameof(timeBalanceBlock.IdSection)); + if (wellSections.All(s => s.Id != timeBalanceBlock.IdSection)) + throw new ArgumentInvalidException($"Секция с Id: {timeBalanceBlock.IdSection} не найдена", nameof(timeBalanceBlock.IdSection)); - return UpdateOrInsertAsync(idWell, dateDailyReport, timeBalanceBlock, cancellationToken); - } + return UpdateOrInsertAsync(idWell, dateDailyReport, timeBalanceBlock, cancellationToken); + } - /// - /// Получить список суточных отчётов по скважине - /// - /// Идентификатор скважины - /// Параметры запроса - /// - /// - [HttpGet] - [ProducesResponseType(typeof(PaginationContainer), StatusCodes.Status200OK)] - [ProducesResponseType(typeof(ValidationProblemDetails), StatusCodes.Status400BadRequest)] - public async Task GetAsync(int idWell, [FromQuery] FileReportRequest request, CancellationToken cancellationToken) - { - await AssertUserAccessToWell(idWell, cancellationToken); + /// + /// Получить список суточных отчётов по скважине + /// + /// Идентификатор скважины + /// Параметры запроса + /// + /// + [HttpGet] + [ProducesResponseType(typeof(PaginationContainer), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(ValidationProblemDetails), StatusCodes.Status400BadRequest)] + public async Task GetAsync(int idWell, [FromQuery] FileReportRequest request, CancellationToken cancellationToken) + { + await AssertUserAccessToWell(idWell, cancellationToken); - var dailyReports = await dailyReportService.GetAsync(idWell, request, cancellationToken); + var dailyReports = await dailyReportService.GetAsync(idWell, request, cancellationToken); - return Ok(dailyReports); - } - - /// - /// Получить диапазон дат по которым возможно сформировать суточный отчёты - /// - /// Id скважины - /// - /// - [HttpGet("datesRange")] - [ProducesResponseType(typeof(DatesRangeDto), (int)HttpStatusCode.OK)] - public async Task GetDatesRangeAsync(int idWell, CancellationToken cancellationToken) - { - await AssertUserAccessToWell(idWell, cancellationToken); + return Ok(dailyReports); + } + + /// + /// Получить диапазон дат по которым возможно сформировать суточный отчёты + /// + /// Id скважины + /// + /// + [HttpGet("datesRange")] + [ProducesResponseType(typeof(DatesRangeDto), (int)HttpStatusCode.OK)] + public async Task GetDatesRangeAsync(int idWell, CancellationToken cancellationToken) + { + await AssertUserAccessToWell(idWell, cancellationToken); - var datesRanges = await wellOperationRepository.GetDatesRangeAsync(idWell, WellOperation.IdOperationTypeFact, cancellationToken); + var datesRanges = await wellOperationRepository.GetDatesRangeAsync(idWell, WellOperation.IdOperationTypeFact, cancellationToken); - return Ok(datesRanges); - } - - /// - /// Экспорт суточного рапорта - /// - /// Id скважины - /// Дата формирования суточного отчёта - /// - /// - [HttpGet("{dateDailyReport}")] - [ProducesResponseType(typeof(PhysicalFileResult), StatusCodes.Status200OK)] - [ProducesResponseType(typeof(ValidationProblemDetails), StatusCodes.Status400BadRequest)] - public async Task ExportAsync(int idWell, DateOnly dateDailyReport, CancellationToken cancellationToken) - { - await AssertUserAccessToWell(idWell, cancellationToken); + return Ok(datesRanges); + } + + /// + /// Экспорт суточного рапорта + /// + /// Id скважины + /// Дата формирования суточного отчёта + /// + /// + [HttpGet("{dateDailyReport}")] + [ProducesResponseType(typeof(PhysicalFileResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(ValidationProblemDetails), StatusCodes.Status400BadRequest)] + public async Task ExportAsync(int idWell, DateOnly dateDailyReport, CancellationToken cancellationToken) + { + await AssertUserAccessToWell(idWell, cancellationToken); - var dailyReport = await dailyReportExportService.ExportAsync(idWell, dateDailyReport, cancellationToken); + var dailyReport = await dailyReportExportService.ExportAsync(idWell, dateDailyReport, cancellationToken); - return File(dailyReport.File, "application/octet-stream", dailyReport.FileName); - } + return File(dailyReport.File, "application/octet-stream", dailyReport.FileName); + } - private async Task UpdateOrInsertAsync(int idWell, DateOnly dateDailyReport, TBlock block, - CancellationToken cancellationToken) - where TBlock : ItemInfoDto - { - await AssertUserAccessToWell(idWell, cancellationToken); - - var id = await dailyReportService.UpdateOrInsertAsync(idWell, dateDailyReport, IdUser, block, cancellationToken); + private async Task UpdateOrInsertAsync(int idWell, DateOnly dateDailyReport, TBlock block, + CancellationToken cancellationToken) + where TBlock : ItemInfoDto + { + await AssertUserAccessToWell(idWell, cancellationToken); + + var id = await dailyReportService.UpdateOrInsertAsync(idWell, dateDailyReport, IdUser, block, cancellationToken); - return Ok(id); - } + return Ok(id); + } - private async Task AssertUserAccessToWell(int idWell, CancellationToken cancellationToken) - { - var idCompany = User.GetCompanyId(); + private async Task AssertUserAccessToWell(int idWell, CancellationToken cancellationToken) + { + var idCompany = User.GetCompanyId(); - if (!idCompany.HasValue || !await wellService.IsCompanyInvolvedInWellAsync(idCompany.Value, idWell, cancellationToken)) - throw new ForbidException("Нет доступа к скважине"); - } + if (!idCompany.HasValue || !await wellService.IsCompanyInvolvedInWellAsync(idCompany.Value, idWell, cancellationToken)) + throw new ForbidException("Нет доступа к скважине"); + } } \ No newline at end of file diff --git a/AsbCloudWebApi/Controllers/DepositController.cs b/AsbCloudWebApi/Controllers/DepositController.cs index 4e9a287f..b18464b1 100644 --- a/AsbCloudWebApi/Controllers/DepositController.cs +++ b/AsbCloudWebApi/Controllers/DepositController.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Repositories; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; diff --git a/AsbCloudWebApi/Controllers/DrillerController.cs b/AsbCloudWebApi/Controllers/DrillerController.cs index 48efca2c..347abe6e 100644 --- a/AsbCloudWebApi/Controllers/DrillerController.cs +++ b/AsbCloudWebApi/Controllers/DrillerController.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Requests; using AsbCloudApp.Services; using Microsoft.AspNetCore.Authorization; @@ -46,9 +46,9 @@ namespace AsbCloudWebApi.Controllers var drillers = schedulePage .Select(s => s.Driller) .Where(d => d is not null) - .GroupBy(d => d.Id) + .GroupBy(d => d!.Id) .Select(group => group.First()) - .OrderBy(d => d.Surname); + .OrderBy(d => d!.Surname); return Ok(drillers); } diff --git a/AsbCloudWebApi/Controllers/DrillingProgramController.cs b/AsbCloudWebApi/Controllers/DrillingProgramController.cs index 0d22fa34..94e987df 100644 --- a/AsbCloudWebApi/Controllers/DrillingProgramController.cs +++ b/AsbCloudWebApi/Controllers/DrillingProgramController.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Exceptions; using AsbCloudApp.Services; using Microsoft.AspNetCore.Authorization; diff --git a/AsbCloudWebApi/Controllers/FaqController.cs b/AsbCloudWebApi/Controllers/FaqController.cs index 763d0f6d..6af362b0 100644 --- a/AsbCloudWebApi/Controllers/FaqController.cs +++ b/AsbCloudWebApi/Controllers/FaqController.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Exceptions; using AsbCloudApp.Repositories; using AsbCloudApp.Requests; diff --git a/AsbCloudWebApi/Controllers/FileController.cs b/AsbCloudWebApi/Controllers/FileController.cs index e9a7990b..0c11e9a0 100644 --- a/AsbCloudWebApi/Controllers/FileController.cs +++ b/AsbCloudWebApi/Controllers/FileController.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Requests; using AsbCloudApp.Services; using Microsoft.AspNetCore.Authorization; diff --git a/AsbCloudWebApi/Controllers/HelpPageController.cs b/AsbCloudWebApi/Controllers/HelpPageController.cs index aadd3fcc..b7d6ccfa 100644 --- a/AsbCloudWebApi/Controllers/HelpPageController.cs +++ b/AsbCloudWebApi/Controllers/HelpPageController.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Services; +using AsbCloudApp.Services; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using System.ComponentModel.DataAnnotations; diff --git a/AsbCloudWebApi/Controllers/LimitingParameterController.cs b/AsbCloudWebApi/Controllers/LimitingParameterController.cs index 7157dd03..527e1646 100644 --- a/AsbCloudWebApi/Controllers/LimitingParameterController.cs +++ b/AsbCloudWebApi/Controllers/LimitingParameterController.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Requests; using AsbCloudApp.Services; using Microsoft.AspNetCore.Authorization; diff --git a/AsbCloudWebApi/Controllers/ManualController.cs b/AsbCloudWebApi/Controllers/ManualController.cs index 8c01b873..3ff31d1c 100644 --- a/AsbCloudWebApi/Controllers/ManualController.cs +++ b/AsbCloudWebApi/Controllers/ManualController.cs @@ -14,74 +14,74 @@ namespace AsbCloudWebApi.Controllers; [Authorize] public class ManualController : ControllerBase { - private readonly IManualCatalogService manualCatalogService; + private readonly IManualCatalogService manualCatalogService; - public ManualController(IManualCatalogService manualCatalogService) - { - this.manualCatalogService = manualCatalogService; - } + public ManualController(IManualCatalogService manualCatalogService) + { + this.manualCatalogService = manualCatalogService; + } - /// - /// Сохранение файла - /// - /// Id директории - /// Загружаемый файл - /// - /// - [HttpPost] - [Permission] - [ProducesResponseType(typeof(int), StatusCodes.Status200OK)] - [ProducesResponseType(StatusCodes.Status400BadRequest)] - [ProducesResponseType(StatusCodes.Status403Forbidden)] - public async Task SaveFileAsync(int idDirectory, - [Required] IFormFile file, - CancellationToken cancellationToken) - { - var idUser = User.GetUserId(); - - if(!idUser.HasValue) - throw new ForbidException("Не удается вас опознать"); - - using var fileStream = file.OpenReadStream(); + /// + /// Сохранение файла + /// + /// Id директории + /// Загружаемый файл + /// + /// + [HttpPost] + [Permission] + [ProducesResponseType(typeof(int), StatusCodes.Status200OK)] + [ProducesResponseType(StatusCodes.Status400BadRequest)] + [ProducesResponseType(StatusCodes.Status403Forbidden)] + public async Task SaveFileAsync(int idDirectory, + [Required] IFormFile file, + CancellationToken cancellationToken) + { + var idUser = User.GetUserId(); + + if(!idUser.HasValue) + throw new ForbidException("Не удается вас опознать"); + + using var fileStream = file.OpenReadStream(); - var id = await manualCatalogService.SaveFileAsync(idDirectory, idUser.Value, file.FileName, fileStream, cancellationToken); + var id = await manualCatalogService.SaveFileAsync(idDirectory, idUser.Value, file.FileName, fileStream, cancellationToken); - return Ok(id); - } + return Ok(id); + } - /// - /// Получение файла - /// - /// Id инструкции - /// - /// - [HttpGet("{id:int}")] - [Permission] - [ProducesResponseType(typeof(PhysicalFileResult), StatusCodes.Status200OK, "application/octet-stream")] - [ProducesResponseType(StatusCodes.Status204NoContent)] - [ProducesResponseType(StatusCodes.Status403Forbidden)] - public async Task GetFileAsync(int id, CancellationToken cancellationToken) - { - var file = await manualCatalogService.GetFileAsync(id, cancellationToken); + /// + /// Получение файла + /// + /// Id инструкции + /// + /// + [HttpGet("{id:int}")] + [Permission] + [ProducesResponseType(typeof(PhysicalFileResult), StatusCodes.Status200OK, "application/octet-stream")] + [ProducesResponseType(StatusCodes.Status204NoContent)] + [ProducesResponseType(StatusCodes.Status403Forbidden)] + public async Task GetFileAsync(int id, CancellationToken cancellationToken) + { + var file = await manualCatalogService.GetFileAsync(id, cancellationToken); - if (!file.HasValue) - return NoContent(); + if (!file.HasValue) + return NoContent(); - return File(file.Value.stream, "application/octet-stream", file.Value.fileName); - } + return File(file.Value.stream, "application/octet-stream", file.Value.fileName); + } - /// - /// Удаление файла - /// - /// Id инструкции - /// - /// - [HttpDelete] - [Permission] - [ProducesResponseType(typeof(int), StatusCodes.Status200OK)] - [ProducesResponseType(StatusCodes.Status403Forbidden)] - public async Task DeleteFileAsync(int id, CancellationToken cancellationToken) - { - return Ok(await manualCatalogService.DeleteFileAsync(id, cancellationToken)); - } + /// + /// Удаление файла + /// + /// Id инструкции + /// + /// + [HttpDelete] + [Permission] + [ProducesResponseType(typeof(int), StatusCodes.Status200OK)] + [ProducesResponseType(StatusCodes.Status403Forbidden)] + public async Task DeleteFileAsync(int id, CancellationToken cancellationToken) + { + return Ok(await manualCatalogService.DeleteFileAsync(id, cancellationToken)); + } } \ No newline at end of file diff --git a/AsbCloudWebApi/Controllers/ManualDirectoryController.cs b/AsbCloudWebApi/Controllers/ManualDirectoryController.cs index f53da16a..97edaa35 100644 --- a/AsbCloudWebApi/Controllers/ManualDirectoryController.cs +++ b/AsbCloudWebApi/Controllers/ManualDirectoryController.cs @@ -14,77 +14,77 @@ namespace AsbCloudWebApi.Controllers; [Authorize] public class ManualDirectoryController : ControllerBase { - private readonly IManualDirectoryRepository manualDirectoryRepository; - private readonly IManualCatalogService manualCatalogService; + private readonly IManualDirectoryRepository manualDirectoryRepository; + private readonly IManualCatalogService manualCatalogService; - public ManualDirectoryController(IManualDirectoryRepository manualDirectoryRepository, - IManualCatalogService manualCatalogService) - { - this.manualDirectoryRepository = manualDirectoryRepository; - this.manualCatalogService = manualCatalogService; - } - - /// - /// Создание директории - /// - /// Название - /// Необязательный параметр. Id родительской директории - /// - /// - [HttpPost] - [Permission("Manual.edit")] - [ProducesResponseType(typeof(int), StatusCodes.Status200OK)] - [ProducesResponseType(StatusCodes.Status400BadRequest)] - [ProducesResponseType(StatusCodes.Status403Forbidden)] - public async Task AddDirectoryAsync(string name, int? idParent, CancellationToken cancellationToken) - { - return Ok(await manualCatalogService.AddDirectoryAsync(name, idParent, cancellationToken)); - } - - /// - /// Обновление директории - /// - /// - /// Новое название директории - /// - /// - [HttpPut] - [Permission("Manual.edit")] - [ProducesResponseType(StatusCodes.Status400BadRequest)] - [ProducesResponseType(StatusCodes.Status403Forbidden)] - public async Task UpdateDirectoryAsync(int id, string name, CancellationToken cancellationToken) - { - await manualCatalogService.UpdateDirectoryAsync(id, name, cancellationToken); - - return Ok(); - } + public ManualDirectoryController(IManualDirectoryRepository manualDirectoryRepository, + IManualCatalogService manualCatalogService) + { + this.manualDirectoryRepository = manualDirectoryRepository; + this.manualCatalogService = manualCatalogService; + } + + /// + /// Создание директории + /// + /// Название + /// Необязательный параметр. Id родительской директории + /// + /// + [HttpPost] + [Permission("Manual.edit")] + [ProducesResponseType(typeof(int), StatusCodes.Status200OK)] + [ProducesResponseType(StatusCodes.Status400BadRequest)] + [ProducesResponseType(StatusCodes.Status403Forbidden)] + public async Task AddDirectoryAsync(string name, int? idParent, CancellationToken cancellationToken) + { + return Ok(await manualCatalogService.AddDirectoryAsync(name, idParent, cancellationToken)); + } + + /// + /// Обновление директории + /// + /// + /// Новое название директории + /// + /// + [HttpPut] + [Permission("Manual.edit")] + [ProducesResponseType(StatusCodes.Status400BadRequest)] + [ProducesResponseType(StatusCodes.Status403Forbidden)] + public async Task UpdateDirectoryAsync(int id, string name, CancellationToken cancellationToken) + { + await manualCatalogService.UpdateDirectoryAsync(id, name, cancellationToken); + + return Ok(); + } - /// - /// Удаление директории - /// - /// Идентификатор директории - /// - /// - [HttpDelete] - [Permission("Manual.delete")] - [ProducesResponseType(typeof(int), StatusCodes.Status200OK)] - [ProducesResponseType(StatusCodes.Status403Forbidden)] - public async Task DeleteDirectoryAsync(int id, CancellationToken cancellationToken) - { - return Ok(await manualCatalogService.DeleteDirectoryAsync(id, cancellationToken)); - } - - /// - /// Получение дерева категорий - /// - /// - /// - [HttpGet] - [Permission("Manual.get")] - [ProducesResponseType(typeof(IEnumerable), StatusCodes.Status200OK)] - [ProducesResponseType(StatusCodes.Status403Forbidden)] - public async Task GetAsync(CancellationToken cancellationToken) - { - return Ok(await manualDirectoryRepository.GetTreeAsync(cancellationToken)); - } + /// + /// Удаление директории + /// + /// Идентификатор директории + /// + /// + [HttpDelete] + [Permission("Manual.delete")] + [ProducesResponseType(typeof(int), StatusCodes.Status200OK)] + [ProducesResponseType(StatusCodes.Status403Forbidden)] + public async Task DeleteDirectoryAsync(int id, CancellationToken cancellationToken) + { + return Ok(await manualCatalogService.DeleteDirectoryAsync(id, cancellationToken)); + } + + /// + /// Получение дерева категорий + /// + /// + /// + [HttpGet] + [Permission("Manual.get")] + [ProducesResponseType(typeof(IEnumerable), StatusCodes.Status200OK)] + [ProducesResponseType(StatusCodes.Status403Forbidden)] + public async Task GetAsync(CancellationToken cancellationToken) + { + return Ok(await manualDirectoryRepository.GetTreeAsync(cancellationToken)); + } } \ No newline at end of file diff --git a/AsbCloudWebApi/Controllers/MeasureController.cs b/AsbCloudWebApi/Controllers/MeasureController.cs index 7dc1afde..f92ef71f 100644 --- a/AsbCloudWebApi/Controllers/MeasureController.cs +++ b/AsbCloudWebApi/Controllers/MeasureController.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Services; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; diff --git a/AsbCloudWebApi/Controllers/MockController.cs b/AsbCloudWebApi/Controllers/MockController.cs index 4cec7ce2..61694445 100644 --- a/AsbCloudWebApi/Controllers/MockController.cs +++ b/AsbCloudWebApi/Controllers/MockController.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Exceptions; +using AsbCloudApp.Exceptions; using AsbCloudWebApi.SignalR; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; diff --git a/AsbCloudWebApi/Controllers/NotificationController.cs b/AsbCloudWebApi/Controllers/NotificationController.cs index b8a8aaea..2ec9840c 100644 --- a/AsbCloudWebApi/Controllers/NotificationController.cs +++ b/AsbCloudWebApi/Controllers/NotificationController.cs @@ -22,129 +22,129 @@ namespace AsbCloudWebApi.Controllers; [Obsolete("Это тестовый контроллер, его нельзя использовать на фронте.")] public class NotificationController : ControllerBase { - private readonly NotificationService notificationService; - private readonly INotificationRepository notificationRepository; - private readonly NotificationPublisher notificationPublisher; + private readonly NotificationService notificationService; + private readonly INotificationRepository notificationRepository; + private readonly NotificationPublisher notificationPublisher; - public NotificationController(NotificationService notificationService, - INotificationRepository notificationRepository, - NotificationPublisher notificationPublisher) - { - this.notificationService = notificationService; - this.notificationRepository = notificationRepository; - this.notificationPublisher = notificationPublisher; - } + public NotificationController(NotificationService notificationService, + INotificationRepository notificationRepository, + NotificationPublisher notificationPublisher) + { + this.notificationService = notificationService; + this.notificationRepository = notificationRepository; + this.notificationPublisher = notificationPublisher; + } - /// - /// Отправка уведомления - /// - /// Параметры запроса - /// - /// - [HttpPost] - public async Task SendAsync(NotifyRequest request, CancellationToken cancellationToken) - { - await notificationService.NotifyAsync(request, cancellationToken); + /// + /// Отправка уведомления + /// + /// Параметры запроса + /// + /// + [HttpPost] + public async Task SendAsync(NotifyRequest request, CancellationToken cancellationToken) + { + await notificationService.NotifyAsync(request, cancellationToken); - return Ok(); - } + return Ok(); + } - /// - /// Обновление уведомления - /// - /// Id уведомления - /// Прочитано ли уведомление - /// - /// - [HttpPut] - public async Task UpdateAsync([Required] int idNotification, - [Required] bool isRead, - CancellationToken cancellationToken) - { - var idUser = User.GetUserId(); + /// + /// Обновление уведомления + /// + /// Id уведомления + /// Прочитано ли уведомление + /// + /// + [HttpPut] + public async Task UpdateAsync([Required] int idNotification, + [Required] bool isRead, + CancellationToken cancellationToken) + { + var idUser = User.GetUserId(); - if (!idUser.HasValue) - return Forbid(); - - await notificationService.UpdateAsync(idNotification, - isRead, - cancellationToken); + if (!idUser.HasValue) + return Forbid(); + + await notificationService.UpdateAsync(idNotification, + isRead, + cancellationToken); - await notificationPublisher.PublishCountUnreadAsync(idUser.Value, cancellationToken); - - return Ok(); - } + await notificationPublisher.PublishCountUnreadAsync(idUser.Value, cancellationToken); + + return Ok(); + } - /// - /// Получение уведомления по Id - /// - /// Id уведомления - /// - /// - [HttpGet("{idNotification}")] - [ProducesResponseType(typeof(NotificationDto), (int)System.Net.HttpStatusCode.OK)] + /// + /// Получение уведомления по Id + /// + /// Id уведомления + /// + /// + [HttpGet("{idNotification}")] + [ProducesResponseType(typeof(NotificationDto), (int)System.Net.HttpStatusCode.OK)] [ProducesResponseType(typeof(ValidationProblemDetails), (int)System.Net.HttpStatusCode.BadRequest)] public async Task GetAsync([Required] int idNotification, - CancellationToken cancellationToken) - { - var notification = await notificationRepository.GetOrDefaultAsync(idNotification, cancellationToken); - if (notification is null) + CancellationToken cancellationToken) + { + var notification = await notificationRepository.GetOrDefaultAsync(idNotification, cancellationToken); + if (notification is null) return this.ValidationBadRequest(nameof(idNotification), "Уведомление не найдено"); return Ok(notification); - } + } - /// - /// Получение списка уведомлений - /// - /// Параметры запроса - /// - /// - [HttpGet] - [ProducesResponseType(typeof(PaginationContainer), (int)System.Net.HttpStatusCode.OK)] - public async Task GetListAsync([FromQuery] NotificationRequest request, - CancellationToken cancellationToken) - { - int? idUser = User.GetUserId(); + /// + /// Получение списка уведомлений + /// + /// Параметры запроса + /// + /// + [HttpGet] + [ProducesResponseType(typeof(PaginationContainer), (int)System.Net.HttpStatusCode.OK)] + public async Task GetListAsync([FromQuery] NotificationRequest request, + CancellationToken cancellationToken) + { + int? idUser = User.GetUserId(); - if (!idUser.HasValue) - return Forbid(); + if (!idUser.HasValue) + return Forbid(); - var result = await notificationRepository.GetNotificationsAsync(idUser.Value, - request, - cancellationToken); + var result = await notificationRepository.GetNotificationsAsync(idUser.Value, + request, + cancellationToken); - return Ok(result); - } + return Ok(result); + } - /// - /// Удаление уведомления - /// - /// Id уведомления - /// - /// - [HttpDelete("{idNotification}")] - public async Task DeleteAsync([Required] int idNotification, - CancellationToken cancellationToken) - { - await notificationRepository.DeleteAsync(idNotification, - cancellationToken); + /// + /// Удаление уведомления + /// + /// Id уведомления + /// + /// + [HttpDelete("{idNotification}")] + public async Task DeleteAsync([Required] int idNotification, + CancellationToken cancellationToken) + { + await notificationRepository.DeleteAsync(idNotification, + cancellationToken); - return Ok(); - } + return Ok(); + } - /// + /// /// Удаление уведомлений /// /// Параметры запроса /// /// [HttpDelete] - public async Task DeleteAsync(NotificationDeleteRequest request, - CancellationToken cancellationToken) - { - await notificationRepository.DeleteAsync(request, cancellationToken); + public async Task DeleteAsync(NotificationDeleteRequest request, + CancellationToken cancellationToken) + { + await notificationRepository.DeleteAsync(request, cancellationToken); - return Ok(); - } + return Ok(); + } } \ No newline at end of file diff --git a/AsbCloudWebApi/Controllers/OperationStatController.cs b/AsbCloudWebApi/Controllers/OperationStatController.cs index 81a9431f..a60cc14f 100644 --- a/AsbCloudWebApi/Controllers/OperationStatController.cs +++ b/AsbCloudWebApi/Controllers/OperationStatController.cs @@ -1,4 +1,4 @@ -using System; +using System; using AsbCloudApp.Data; using AsbCloudApp.Services; using Microsoft.AspNetCore.Authorization; diff --git a/AsbCloudWebApi/Controllers/OperationValueController.cs b/AsbCloudWebApi/Controllers/OperationValueController.cs index 5a58953b..cc0ce11f 100644 --- a/AsbCloudWebApi/Controllers/OperationValueController.cs +++ b/AsbCloudWebApi/Controllers/OperationValueController.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Services; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; diff --git a/AsbCloudWebApi/Controllers/PeriodicBackgroundWorkerController.cs b/AsbCloudWebApi/Controllers/PeriodicBackgroundWorkerController.cs index d7f666a0..836f57be 100644 --- a/AsbCloudWebApi/Controllers/PeriodicBackgroundWorkerController.cs +++ b/AsbCloudWebApi/Controllers/PeriodicBackgroundWorkerController.cs @@ -1,7 +1,8 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudInfrastructure.Background; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.DependencyInjection; using System; using System.Linq; using System.Threading; @@ -15,10 +16,14 @@ namespace AsbCloudWebApi.Controllers public class PeriodicBackgroundWorkerController : ControllerBase { private readonly PeriodicBackgroundWorker worker; + private readonly IServiceProvider serviceProvider; - public PeriodicBackgroundWorkerController(PeriodicBackgroundWorker worker) + public PeriodicBackgroundWorkerController( + PeriodicBackgroundWorker worker, + IServiceProvider serviceProvider) { this.worker = worker; + this.serviceProvider = serviceProvider; } [HttpGet] @@ -33,6 +38,27 @@ namespace AsbCloudWebApi.Controllers return Ok(result); } + /// + /// Запуск задачи по Id + /// + /// Id задачи + /// + /// + [HttpGet("start/{workId}")] + public async Task Start(string workId, CancellationToken token) + { + var targetWork = worker.Works.FirstOrDefault(w => w.Work.Id == workId); + if(targetWork is not null) + { + using (var scope = serviceProvider.CreateScope()) { + + var result = await targetWork.Work.Start(scope.ServiceProvider, token); + return Ok(result); + } + } + return BadRequest("Work not found by workId"); + } + [HttpPost("restart"), Obsolete("temporary method")] public async Task RestartAsync(CancellationToken token) { diff --git a/AsbCloudWebApi/Controllers/ProcessMaps/Functions/ProcessMapPlanAntiCrashRotationController.cs b/AsbCloudWebApi/Controllers/ProcessMaps/Functions/ProcessMapPlanAntiCrashRotationController.cs new file mode 100644 index 00000000..73504353 --- /dev/null +++ b/AsbCloudWebApi/Controllers/ProcessMaps/Functions/ProcessMapPlanAntiCrashRotationController.cs @@ -0,0 +1,28 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudDb.Model.ProcessMapPlan.Functions; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +namespace AsbCloudWebApi.Controllers.ProcessMaps.Functions; + +/// +/// РТК план противоаварийное вращение +/// +public class ProcessMapPlanAntiCrashRotationController : + ProcessMapPlanBaseController +{ + public ProcessMapPlanAntiCrashRotationController( + IChangeLogRepository repository, + IWellService wellService, + ProcessMapPlanAntiCrashRotationParser parserService, + ITelemetryService telemetryService, + ProcessMapPlanAntiCrashRotationExportService processMapPlanExportService) + : base(repository, wellService, parserService, processMapPlanExportService, telemetryService) + { + } + + protected override string TemplateFileName => "ЕЦП_шаблон_файла_РТК_план_противоаварийное_вращение.xlsx"; +} \ No newline at end of file diff --git a/AsbCloudWebApi/Controllers/ProcessMaps/Functions/ProcessMapPlanAutoHoldTFController.cs b/AsbCloudWebApi/Controllers/ProcessMaps/Functions/ProcessMapPlanAutoHoldTFController.cs new file mode 100644 index 00000000..10a50003 --- /dev/null +++ b/AsbCloudWebApi/Controllers/ProcessMaps/Functions/ProcessMapPlanAutoHoldTFController.cs @@ -0,0 +1,28 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudDb.Model.ProcessMapPlan.Functions; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +namespace AsbCloudWebApi.Controllers.ProcessMaps.Functions; + +/// +/// РТК план автоудержание TF +/// +public class ProcessMapPlanAutoHoldTFController : + ProcessMapPlanBaseController +{ + public ProcessMapPlanAutoHoldTFController( + IChangeLogRepository repository, + IWellService wellService, + ProcessMapPlanAutoHoldTFParser parserService, + ITelemetryService telemetryService, + ProcessMapPlanAutoHoldTFExportService processMapPlanExportService) + : base(repository, wellService, parserService, processMapPlanExportService, telemetryService) + { + } + + protected override string TemplateFileName => "ЕЦП_шаблон_файла_РТК_план_автоудержание_tf.xlsx"; +} \ No newline at end of file diff --git a/AsbCloudWebApi/Controllers/ProcessMaps/Functions/ProcessMapPlanDamperController.cs b/AsbCloudWebApi/Controllers/ProcessMaps/Functions/ProcessMapPlanDamperController.cs new file mode 100644 index 00000000..92d31dac --- /dev/null +++ b/AsbCloudWebApi/Controllers/ProcessMaps/Functions/ProcessMapPlanDamperController.cs @@ -0,0 +1,28 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudDb.Model.ProcessMapPlan.Functions; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +namespace AsbCloudWebApi.Controllers.ProcessMaps.Functions; + +/// +/// РТК план демпфер +/// +public class ProcessMapPlanDamperController : + ProcessMapPlanBaseController +{ + public ProcessMapPlanDamperController( + IChangeLogRepository repository, + IWellService wellService, + ProcessMapPlanDamperParser parserService, + ITelemetryService telemetryService, + ProcessMapPlanDamperExportService processMapPlanExportService) + : base(repository, wellService, parserService, processMapPlanExportService, telemetryService) + { + } + + protected override string TemplateFileName => "ЕЦП_шаблон_файла_РТК_план_демпфер.xlsx"; +} \ No newline at end of file diff --git a/AsbCloudWebApi/Controllers/ProcessMaps/Functions/ProcessMapPlanDrillTestController.cs b/AsbCloudWebApi/Controllers/ProcessMaps/Functions/ProcessMapPlanDrillTestController.cs new file mode 100644 index 00000000..8335388a --- /dev/null +++ b/AsbCloudWebApi/Controllers/ProcessMaps/Functions/ProcessMapPlanDrillTestController.cs @@ -0,0 +1,28 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudDb.Model.ProcessMapPlan.Functions; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +namespace AsbCloudWebApi.Controllers.ProcessMaps.Functions; + +/// +/// РТК план дрилтест +/// +public class ProcessMapPlanDrillTestController : + ProcessMapPlanBaseController +{ + public ProcessMapPlanDrillTestController( + IChangeLogRepository repository, + IWellService wellService, + ProcessMapPlanDrillTestParser parserService, + ITelemetryService telemetryService, + ProcessMapPlanDrillTestExportService processMapPlanExportService) + : base(repository, wellService, parserService, processMapPlanExportService, telemetryService) + { + } + + protected override string TemplateFileName => "ЕЦП_шаблон_файла_РТК_план_дрилтест.xlsx"; +} \ No newline at end of file diff --git a/AsbCloudWebApi/Controllers/ProcessMaps/Functions/ProcessMapPlanOscillationController.cs b/AsbCloudWebApi/Controllers/ProcessMaps/Functions/ProcessMapPlanOscillationController.cs new file mode 100644 index 00000000..71eec984 --- /dev/null +++ b/AsbCloudWebApi/Controllers/ProcessMaps/Functions/ProcessMapPlanOscillationController.cs @@ -0,0 +1,28 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudDb.Model.ProcessMapPlan.Functions; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +namespace AsbCloudWebApi.Controllers.ProcessMaps.Functions; + +/// +/// РТК план осцилляция +/// +public class ProcessMapPlanOscillationController : + ProcessMapPlanBaseController +{ + public ProcessMapPlanOscillationController( + IChangeLogRepository repository, + IWellService wellService, + ProcessMapPlanOscillationParser parserService, + ITelemetryService telemetryService, + ProcessMapPlanOscillationExportService processMapPlanExportService) + : base(repository, wellService, parserService, processMapPlanExportService, telemetryService) + { + } + + protected override string TemplateFileName => "ЕЦП_шаблон_файла_РТК_план_осцилляция.xlsx"; +} \ No newline at end of file diff --git a/AsbCloudWebApi/Controllers/ProcessMaps/Functions/ProcessMapPlanShockTestController.cs b/AsbCloudWebApi/Controllers/ProcessMaps/Functions/ProcessMapPlanShockTestController.cs new file mode 100644 index 00000000..fd4d40eb --- /dev/null +++ b/AsbCloudWebApi/Controllers/ProcessMaps/Functions/ProcessMapPlanShockTestController.cs @@ -0,0 +1,28 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudDb.Model.ProcessMapPlan.Functions; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +namespace AsbCloudWebApi.Controllers.ProcessMaps.Functions; + +/// +/// РТК план shock test +/// +public class ProcessMapPlanShockTestController : + ProcessMapPlanBaseController +{ + public ProcessMapPlanShockTestController( + IChangeLogRepository repository, + IWellService wellService, + ProcessMapPlanShockTestParser parserService, + ITelemetryService telemetryService, + ProcessMapPlanShockTestExportService processMapPlanExportService) + : base(repository, wellService, parserService, processMapPlanExportService, telemetryService) + { + } + + protected override string TemplateFileName => "ЕЦП_шаблон_файла_РТК_план_shock_test.xlsx"; +} \ No newline at end of file diff --git a/AsbCloudWebApi/Controllers/ProcessMaps/Functions/ProcessMapPlanStaticMeasurementOutputController.cs b/AsbCloudWebApi/Controllers/ProcessMaps/Functions/ProcessMapPlanStaticMeasurementOutputController.cs new file mode 100644 index 00000000..3aa1ea35 --- /dev/null +++ b/AsbCloudWebApi/Controllers/ProcessMaps/Functions/ProcessMapPlanStaticMeasurementOutputController.cs @@ -0,0 +1,28 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudDb.Model.ProcessMapPlan.Functions; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +namespace AsbCloudWebApi.Controllers.ProcessMaps.Functions; + +/// +/// РТК план выход статического замера +/// +public class ProcessMapPlanStaticMeasurementOutputController : + ProcessMapPlanBaseController +{ + public ProcessMapPlanStaticMeasurementOutputController( + IChangeLogRepository repository, + IWellService wellService, + ProcessMapPlanStaticMeasurementOutputParser parserService, + ITelemetryService telemetryService, + ProcessMapPlanStaticMeasurementOutputExportService processMapPlanExportService) + : base(repository, wellService, parserService, processMapPlanExportService, telemetryService) + { + } + + protected override string TemplateFileName => "ЕЦП_шаблон_файла_РТК_план_выход_статического_замера.xlsx"; +} \ No newline at end of file diff --git a/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanLoadCapacityController.cs b/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanLoadCapacityController.cs new file mode 100644 index 00000000..6facfc7c --- /dev/null +++ b/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanLoadCapacityController.cs @@ -0,0 +1,28 @@ +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudDb.Model.ProcessMapPlan.Operations; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +namespace AsbCloudWebApi.Controllers.ProcessMaps.Operations; + +/// +/// РТК план выработка нагрузки +/// +public class ProcessMapPlanLoadCapacityController : + ProcessMapPlanBaseController +{ + public ProcessMapPlanLoadCapacityController( + IChangeLogRepository repository, + IWellService wellService, + ProcessMapPlanLoadCapacityParser parserService, + ITelemetryService telemetryService, + ProcessMapPlanLoadCapacityExportService processMapPlanExportService) + : base(repository, wellService, parserService, processMapPlanExportService, telemetryService) + { + } + + protected override string TemplateFileName => "ЕЦП_шаблон_файла_РТК_план_выработка_нагрузки.xlsx"; +} \ No newline at end of file diff --git a/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanOscillationAnglesController.cs b/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanOscillationAnglesController.cs new file mode 100644 index 00000000..3762f57a --- /dev/null +++ b/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanOscillationAnglesController.cs @@ -0,0 +1,28 @@ +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudDb.Model.ProcessMapPlan.Operations; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +namespace AsbCloudWebApi.Controllers.ProcessMaps.Operations; + +/// +/// РТК план определения углов осцилляции +/// +public class ProcessMapPlanOscillationAnglesController : + ProcessMapPlanBaseController +{ + public ProcessMapPlanOscillationAnglesController( + IChangeLogRepository repository, + IWellService wellService, + ProcessMapPlanOscillationAnglesParser parserService, + ITelemetryService telemetryService, + ProcessMapPlanOscillationAnglesExportService processMapPlanExportService) + : base(repository, wellService, parserService, processMapPlanExportService, telemetryService) + { + } + + protected override string TemplateFileName => "ЕЦП_шаблон_файла_РТК_план_определение_углов_осцилляции.xlsx"; +} \ No newline at end of file diff --git a/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanPositioningOffTheBottomController.cs b/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanPositioningOffTheBottomController.cs new file mode 100644 index 00000000..73a40e0b --- /dev/null +++ b/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanPositioningOffTheBottomController.cs @@ -0,0 +1,28 @@ +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudDb.Model.ProcessMapPlan.Operations; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +namespace AsbCloudWebApi.Controllers.ProcessMaps.Operations; + +/// +/// РТК план позиционирование над забоем +/// +public class ProcessMapPlanPositioningOffTheBottomController : + ProcessMapPlanBaseController +{ + public ProcessMapPlanPositioningOffTheBottomController( + IChangeLogRepository repository, + IWellService wellService, + ProcessMapPlanPositioningOffTheBottomParser parserService, + ITelemetryService telemetryService, + ProcessMapPlanPositioningOffTheBottomExportService processMapPlanExportService) + : base(repository, wellService, parserService, processMapPlanExportService, telemetryService) + { + } + + protected override string TemplateFileName => "ЕЦП_шаблон_файла_РТК_план_позиционирование_над_забоем.xlsx"; +} \ No newline at end of file diff --git a/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanReamingRotorController.cs b/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanReamingRotorController.cs new file mode 100644 index 00000000..a4961fcd --- /dev/null +++ b/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanReamingRotorController.cs @@ -0,0 +1,28 @@ +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudDb.Model.ProcessMapPlan.Operations; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +namespace AsbCloudWebApi.Controllers.ProcessMaps; + +/// +/// РТК план проработка для ротора +/// +public class ProcessMapPlanReamingRotorController : + ProcessMapPlanBaseController +{ + public ProcessMapPlanReamingRotorController( + IChangeLogRepository repository, + IWellService wellService, + ProcessMapPlanReamingRotorParser parserService, + ITelemetryService telemetryService, + ProcessMapPlanReamingRotorExportService processMapPlanExportService) + : base(repository, wellService, parserService, processMapPlanExportService, telemetryService) + { + } + + protected override string TemplateFileName => "ЕЦП_шаблон_файла_РТК_план_проработка_ротор.xlsx"; +} \ No newline at end of file diff --git a/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanReamingSlideController.cs b/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanReamingSlideController.cs new file mode 100644 index 00000000..aaf9eb30 --- /dev/null +++ b/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanReamingSlideController.cs @@ -0,0 +1,28 @@ +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudDb.Model.ProcessMapPlan.Operations; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +namespace AsbCloudWebApi.Controllers.ProcessMaps.Operations; + +/// +/// РТК план проработка для слайда +/// +public class ProcessMapPlanReamingSlideController : + ProcessMapPlanBaseController +{ + public ProcessMapPlanReamingSlideController( + IChangeLogRepository repository, + IWellService wellService, + ProcessMapPlanReamingSlideParser parserService, + ITelemetryService telemetryService, + ProcessMapPlanReamingSlideExportService processMapPlanExportService) + : base(repository, wellService, parserService, processMapPlanExportService, telemetryService) + { + } + + protected override string TemplateFileName => "ЕЦП_шаблон_файла_РТК_план_проработка_слайд.xlsx"; +} \ No newline at end of file diff --git a/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanRecordingStaticMeasurementController.cs b/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanRecordingStaticMeasurementController.cs new file mode 100644 index 00000000..d3f41b09 --- /dev/null +++ b/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanRecordingStaticMeasurementController.cs @@ -0,0 +1,28 @@ +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudDb.Model.ProcessMapPlan.Operations; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +namespace AsbCloudWebApi.Controllers.ProcessMaps.Operations; + +/// +/// РТК план записи статического замера +/// +public class ProcessMapPlanRecordingStaticMeasurementController : + ProcessMapPlanBaseController +{ + public ProcessMapPlanRecordingStaticMeasurementController( + IChangeLogRepository repository, + IWellService wellService, + ProcessMapPlanRecordingStaticMeasurementParser parserService, + ITelemetryService telemetryService, + ProcessMapPlanRecordingStaticMeasurementExportService processMapPlanExportService) + : base(repository, wellService, parserService, processMapPlanExportService, telemetryService) + { + } + + protected override string TemplateFileName => "ЕЦП_шаблон_файла_РТК_план_запись_статического_замера.xlsx"; +} \ No newline at end of file diff --git a/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanRotorController.cs b/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanRotorController.cs new file mode 100644 index 00000000..bba30be5 --- /dev/null +++ b/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanRotorController.cs @@ -0,0 +1,26 @@ +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudDb.Model.ProcessMapPlan.Operations; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +namespace AsbCloudWebApi.Controllers.ProcessMaps.Operations; + +/// +/// РТК план бурения (ротор) +/// +public class ProcessMapPlanRotorController : ProcessMapPlanBaseController +{ + public ProcessMapPlanRotorController(IChangeLogRepository repository, + IWellService wellService, + ProcessMapPlanRotorParser parserService, + ITelemetryService telemetryService, + ProcessMapPlanRotorExportService processMapPlanExportService) + : base(repository, wellService, parserService, processMapPlanExportService, telemetryService) + { + } + + protected override string TemplateFileName => "ЕЦП_шаблон_файла_РТК_план_бурение_ротор.xlsx"; +} \ No newline at end of file diff --git a/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanSlideController.cs b/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanSlideController.cs new file mode 100644 index 00000000..633d1399 --- /dev/null +++ b/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanSlideController.cs @@ -0,0 +1,26 @@ +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudDb.Model.ProcessMapPlan.Operations; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +namespace AsbCloudWebApi.Controllers.ProcessMaps.Operations; + +/// +/// РТК план бурения (ротор) +/// +public class ProcessMapPlanSlideController : ProcessMapPlanBaseController +{ + public ProcessMapPlanSlideController(IChangeLogRepository repository, + IWellService wellService, + ProcessMapPlanSlideParser parserService, + ITelemetryService telemetryService, + ProcessMapPlanSlideExportService processMapPlanExportService) + : base(repository, wellService, parserService, processMapPlanExportService, telemetryService) + { + } + + protected override string TemplateFileName => "ЕЦП_шаблон_файла_РТК_план_бурение_слайд.xlsx"; +} \ No newline at end of file diff --git a/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanSwitchingOffThePumpController.cs b/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanSwitchingOffThePumpController.cs new file mode 100644 index 00000000..1d65cafa --- /dev/null +++ b/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanSwitchingOffThePumpController.cs @@ -0,0 +1,28 @@ +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudDb.Model.ProcessMapPlan.Operations; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +namespace AsbCloudWebApi.Controllers.ProcessMaps.Operations; + +/// +/// РТК план выключение насоса +/// +public class ProcessMapPlanSwitchingOffThePumpController : + ProcessMapPlanBaseController +{ + public ProcessMapPlanSwitchingOffThePumpController( + IChangeLogRepository repository, + IWellService wellService, + ProcessMapPlanSwitchingOffThePumpParser parserService, + ITelemetryService telemetryService, + ProcessMapPlanSwitchingOffThePumpExportService processMapPlanExportService) + : base(repository, wellService, parserService, processMapPlanExportService, telemetryService) + { + } + + protected override string TemplateFileName => "ЕЦП_шаблон_файла_РТК_план_выключение_насоса.xlsx"; +} \ No newline at end of file diff --git a/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanSwitchingToTheModeController.cs b/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanSwitchingToTheModeController.cs new file mode 100644 index 00000000..e4256e40 --- /dev/null +++ b/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanSwitchingToTheModeController.cs @@ -0,0 +1,28 @@ +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudDb.Model.ProcessMapPlan.Operations; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +namespace AsbCloudWebApi.Controllers.ProcessMaps.Operations; + +/// +/// РТК план выход на плановый расход +/// +public class ProcessMapPlanSwitchingToTheModeController : + ProcessMapPlanBaseController +{ + public ProcessMapPlanSwitchingToTheModeController( + IChangeLogRepository repository, + IWellService wellService, + ProcessMapPlanSwitchingToTheModeParser parserService, + ITelemetryService telemetryService, + ProcessMapPlanSwitchingToTheModeExportService processMapPlanExportService) + : base(repository, wellService, parserService, processMapPlanExportService, telemetryService) + { + } + + protected override string TemplateFileName => "ЕЦП_шаблон_файла_РТК_план_выход_на_плановый_расход.xlsx"; +} \ No newline at end of file diff --git a/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanTFOrientationController.cs b/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanTFOrientationController.cs new file mode 100644 index 00000000..f9ed8fb9 --- /dev/null +++ b/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanTFOrientationController.cs @@ -0,0 +1,28 @@ +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudDb.Model.ProcessMapPlan.Operations; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +namespace AsbCloudWebApi.Controllers.ProcessMaps.Operations; + +/// +/// РТК план выставление +/// +public class ProcessMapPlanTFOrientationController : + ProcessMapPlanBaseController +{ + public ProcessMapPlanTFOrientationController( + IChangeLogRepository repository, + IWellService wellService, + ProcessMapPlanTFOrientationParser parserService, + ITelemetryService telemetryService, + ProcessMapPlanTFOrientationExportService processMapPlanExportService) + : base(repository, wellService, parserService, processMapPlanExportService, telemetryService) + { + } + + protected override string TemplateFileName => "ЕЦП_шаблон_файла_РТК_план_выставление.xlsx"; +} \ No newline at end of file diff --git a/AsbCloudWebApi/Controllers/ProcessMaps/ProcessMapPlanBaseController.cs b/AsbCloudWebApi/Controllers/ProcessMaps/ProcessMapPlanBaseController.cs index f4df65cc..a0fdeaf0 100644 --- a/AsbCloudWebApi/Controllers/ProcessMaps/ProcessMapPlanBaseController.cs +++ b/AsbCloudWebApi/Controllers/ProcessMaps/ProcessMapPlanBaseController.cs @@ -1,23 +1,24 @@ -using AsbCloudApp.Repositories; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Mvc; -using System.Collections.Generic; -using System.Threading.Tasks; -using System.Threading; -using Microsoft.AspNetCore.Http; -using AsbCloudApp.Exceptions; -using AsbCloudApp.Requests; -using System; -using System.IO; -using AsbCloudApp.Services; -using System.Linq; using AsbCloudApp.Data; -using AsbCloudApp.Requests.ParserOptions; using AsbCloudApp.Data.ProcessMaps; -using System.ComponentModel.DataAnnotations; +using AsbCloudApp.Exceptions; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; using AsbCloudApp.Requests.ExportOptions; +using AsbCloudApp.Requests.ParserOptions; +using AsbCloudApp.Services; using AsbCloudApp.Services.Export; using AsbCloudApp.Services.Parsers; +using AsbCloudDb.Model.ProcessMapPlan; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.IO; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; namespace AsbCloudWebApi.Controllers.ProcessMaps; @@ -27,22 +28,26 @@ namespace AsbCloudWebApi.Controllers.ProcessMaps; [ApiController] [Route("api/well/{idWell}/[controller]")] [Authorize] -public abstract class ProcessMapPlanBaseController : ControllerBase +public abstract class ProcessMapPlanBaseController : ControllerBase + where TEntity : ProcessMapPlanBase where TDto : ProcessMapPlanBaseDto { private readonly IChangeLogRepository repository; private readonly IWellService wellService; private readonly IParserService parserService; + private readonly ITelemetryService telemetryService; private readonly IExportService processMapPlanExportService; protected ProcessMapPlanBaseController(IChangeLogRepository repository, IWellService wellService, IParserService parserService, - IExportService processMapPlanExportService) + IExportService processMapPlanExportService, + ITelemetryService telemetryService) { this.repository = repository; this.wellService = wellService; this.parserService = parserService; + this.telemetryService = telemetryService; this.processMapPlanExportService = processMapPlanExportService; } @@ -58,7 +63,7 @@ public abstract class ProcessMapPlanBaseController : ControllerBase [HttpPost] [ProducesResponseType(typeof(int), StatusCodes.Status200OK)] [ProducesResponseType(typeof(ValidationProblemDetails), StatusCodes.Status400BadRequest)] - public async Task InsertRange([FromRoute][Range(0,int.MaxValue)] int idWell, IEnumerable dtos, CancellationToken token) + public async Task InsertRange([FromRoute][Range(0, int.MaxValue)] int idWell, IEnumerable dtos, CancellationToken token) { var idUser = await AssertUserHasAccessToWell(idWell, token); @@ -92,7 +97,7 @@ public abstract class ProcessMapPlanBaseController : ControllerBase } /// - /// Удаление + /// Пометить записи как удаленные /// /// /// @@ -101,11 +106,11 @@ public abstract class ProcessMapPlanBaseController : ControllerBase [HttpDelete] [ProducesResponseType(typeof(int), StatusCodes.Status200OK)] [ProducesResponseType(typeof(ValidationProblemDetails), StatusCodes.Status400BadRequest)] - public async Task DeleteRange([FromRoute] int idWell, IEnumerable ids, CancellationToken token) + public async Task MarkAsDeleted([FromRoute] int idWell, IEnumerable ids, CancellationToken token) { var idUser = await AssertUserHasAccessToWell(idWell, token); - var result = await repository.DeleteRange(idUser, ids, token); + var result = await repository.MarkAsDeleted(idUser, ids, token); return Ok(result); } @@ -128,21 +133,78 @@ public abstract class ProcessMapPlanBaseController : ControllerBase } /// - /// Получение + /// Получение текущих записей по параметрам /// /// - /// /// /// [HttpGet] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(typeof(ValidationProblemDetails), StatusCodes.Status400BadRequest)] - public async Task>> Get([FromRoute] int idWell, [FromQuery] ProcessMapPlanBaseRequest request, CancellationToken token) + public async Task>> GetCurrent([FromRoute] int idWell, CancellationToken token) { await AssertUserHasAccessToWell(idWell, token); - var serviceRequest = new ProcessMapPlanBaseRequestWithWell(request, idWell); - var result = await repository.Get(serviceRequest, token); + var serviceRequest = new ProcessMapPlanBaseRequestWithWell(idWell); + + var result = await repository.GetCurrent(serviceRequest, token); + return Ok(result); + } + + /// + /// Получение измененных записей за определенную дату по ключу скважины + /// + /// + /// + /// + /// + [HttpGet("changelogByMoment")] + [ProducesResponseType(StatusCodes.Status200OK)] + [ProducesResponseType(typeof(ValidationProblemDetails), StatusCodes.Status400BadRequest)] + public async Task>>> GetChangeLogByMoment([FromRoute] int idWell, DateTimeOffset? moment, CancellationToken token) + { + await AssertUserHasAccessToWell(idWell, token); + + var dataRequest = new ProcessMapPlanBaseRequestWithWell(idWell); + + var changeLogRequest = new ChangeLogRequest() + { + Moment = moment + }; + + var builder = repository + .GetQueryBuilder(changeLogRequest) + .ApplyRequest(dataRequest); + + var dtos = await builder.GetChangeLogData(token); + + return Ok(dtos); + } + + /// + /// Получение записей за определенную дату по uid + /// + /// + /// + /// + /// + [AllowAnonymous] + [HttpGet("/api/telemetry/{uid}/[controller]")] + [ProducesResponseType(StatusCodes.Status200OK)] + [ProducesResponseType(typeof(ValidationProblemDetails), StatusCodes.Status400BadRequest)] + public async Task>>> GetByUid(string uid, DateTimeOffset? updateFrom, CancellationToken token) + { + var idWell = telemetryService.GetIdWellByTelemetryUid(uid) ?? -1; + + if (idWell < 0) + return this.ValidationBadRequest(nameof(uid), "Скважина по uid не найдена"); + + var serviceRequest = new ProcessMapPlanBaseRequestWithWell(idWell) + { + UpdateFrom = updateFrom, + }; + + var result = await repository.GetChangeLogForDate(serviceRequest, null, token); return Ok(result); } @@ -153,15 +215,15 @@ public abstract class ProcessMapPlanBaseController : ControllerBase /// /// /// - [HttpGet("changeLog")] + [HttpGet("changeLogForDate")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(typeof(ValidationProblemDetails), StatusCodes.Status400BadRequest)] - public async Task>> GetChangeLog([FromRoute] int idWell, [FromQuery] DateOnly? date, CancellationToken token) + public async Task>>> GetChangeLogForDate([FromRoute] int idWell, [FromQuery] DateOnly? date, CancellationToken token) { await AssertUserHasAccessToWell(idWell, token); var serviceRequest = new ProcessMapPlanBaseRequestWithWell(idWell); - var result = await repository.GetChangeLog(serviceRequest, date, token); + var result = await repository.GetChangeLogForDate(serviceRequest, date, token); return Ok(result); } @@ -197,7 +259,7 @@ public abstract class ProcessMapPlanBaseController : ControllerBase { if (!dtos.Any()) return NoContent(); - + var idUser = await AssertUserHasAccessToWell(idWell, token); foreach (var dto in dtos) @@ -218,7 +280,7 @@ public abstract class ProcessMapPlanBaseController : ControllerBase [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(typeof(ValidationProblemDetails), StatusCodes.Status400BadRequest)] public async Task>> Parse(int idWell, - [Required] IFormFile file, + [Required] IFormFile file, CancellationToken token) { await AssertUserHasAccessToWell(idWell, token); @@ -229,7 +291,7 @@ public abstract class ProcessMapPlanBaseController : ControllerBase { var options = new WellRelatedParserRequest(idWell); var dto = parserService.Parse(stream, options); - + return Ok(dto); } catch (FileFormatException ex) @@ -271,7 +333,7 @@ public abstract class ProcessMapPlanBaseController : ControllerBase throw new ForbidException("Нет доступа к скважине"); return idUser; } - + /// /// Формируем excel файл с текущими строками РТК /// diff --git a/AsbCloudWebApi/Controllers/ProcessMaps/ProcessMapPlanDrillingController.cs b/AsbCloudWebApi/Controllers/ProcessMaps/ProcessMapPlanDrillingController.cs deleted file mode 100644 index 241be301..00000000 --- a/AsbCloudWebApi/Controllers/ProcessMaps/ProcessMapPlanDrillingController.cs +++ /dev/null @@ -1,24 +0,0 @@ -using AsbCloudApp.Data.ProcessMaps; -using AsbCloudApp.Repositories; -using AsbCloudApp.Requests; -using AsbCloudApp.Services; -using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; -using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; - -namespace AsbCloudWebApi.Controllers.ProcessMaps; - -/// -/// РТК план бурения -/// -public class ProcessMapPlanDrillingController : ProcessMapPlanBaseController -{ - public ProcessMapPlanDrillingController(IChangeLogRepository repository, - IWellService wellService, - ProcessMapPlanDrillingParser parserService, - ProcessMapPlanDrillingExportService processMapPlanExportService) - : base(repository, wellService, parserService, processMapPlanExportService) - { - } - - protected override string TemplateFileName => "ЕЦП_шаблон_файла_РТК_план_бурение.xlsx"; -} \ No newline at end of file diff --git a/AsbCloudWebApi/Controllers/ProcessMaps/ProcessMapPlanReamController.cs b/AsbCloudWebApi/Controllers/ProcessMaps/ProcessMapPlanReamController.cs deleted file mode 100644 index 9c103f06..00000000 --- a/AsbCloudWebApi/Controllers/ProcessMaps/ProcessMapPlanReamController.cs +++ /dev/null @@ -1,24 +0,0 @@ -using AsbCloudApp.Data.ProcessMaps; -using AsbCloudApp.Repositories; -using AsbCloudApp.Requests; -using AsbCloudApp.Services; -using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; -using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; - -namespace AsbCloudWebApi.Controllers.ProcessMaps; - -/// -/// РТК план проработка -/// -public class ProcessMapPlanReamController : ProcessMapPlanBaseController -{ - public ProcessMapPlanReamController(IChangeLogRepository repository, - IWellService wellService, - ProcessMapPlanReamParser parserService, - ProcessMapPlanReamExportService processMapPlanExportService) - : base(repository, wellService, parserService, processMapPlanExportService) - { - } - - protected override string TemplateFileName => "ЕЦП_шаблон_файла_РТК_план_проработка.xlsx"; -} \ No newline at end of file diff --git a/AsbCloudWebApi/Controllers/ProcessMaps/ProcessMapReportDrillingController.cs b/AsbCloudWebApi/Controllers/ProcessMaps/ProcessMapReportDrillingController.cs index 323c4934..82d9b284 100644 --- a/AsbCloudWebApi/Controllers/ProcessMaps/ProcessMapReportDrillingController.cs +++ b/AsbCloudWebApi/Controllers/ProcessMaps/ProcessMapReportDrillingController.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.ProcessMaps.Report; +using AsbCloudApp.Data.ProcessMaps.Report; using AsbCloudApp.Requests; using AsbCloudApp.Services.ProcessMaps.WellDrilling; using Microsoft.AspNetCore.Authorization; diff --git a/AsbCloudWebApi/Controllers/ProcessMaps/WellSectionPlanController.cs b/AsbCloudWebApi/Controllers/ProcessMaps/WellSectionPlanController.cs index 5f69c7db..4ea6bb5c 100644 --- a/AsbCloudWebApi/Controllers/ProcessMaps/WellSectionPlanController.cs +++ b/AsbCloudWebApi/Controllers/ProcessMaps/WellSectionPlanController.cs @@ -182,7 +182,7 @@ public class WellSectionPlanController : ControllerBase private async Task CheckIsExistsWellSectionTypeAsync(int idWellSectionType, CancellationToken cancellationToken) { _ = await wellSectionRepository.GetOrDefaultAsync(idWellSectionType, cancellationToken) - ?? throw new ArgumentInvalidException(nameof(ProcessMapPlanDrillingDto.IdWellSectionType), + ?? throw new ArgumentInvalidException(nameof(ProcessMapPlanBaseDto.IdWellSectionType), $"Тип секции с Id: {idWellSectionType} не найден"); } } \ No newline at end of file diff --git a/AsbCloudWebApi/Controllers/ProtobufController.cs b/AsbCloudWebApi/Controllers/ProtobufController.cs index 1476db25..298f38bb 100644 --- a/AsbCloudWebApi/Controllers/ProtobufController.cs +++ b/AsbCloudWebApi/Controllers/ProtobufController.cs @@ -1,4 +1,4 @@ -using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc; using ProtoBuf.Meta; using System.Collections.Generic; using System.Linq; diff --git a/AsbCloudWebApi/Controllers/ReduceSamplingController.cs b/AsbCloudWebApi/Controllers/ReduceSamplingController.cs index ddb99b2d..4edc1db2 100644 --- a/AsbCloudWebApi/Controllers/ReduceSamplingController.cs +++ b/AsbCloudWebApi/Controllers/ReduceSamplingController.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Services; +using AsbCloudApp.Services; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using System.Collections.Generic; diff --git a/AsbCloudWebApi/Controllers/ReportController.cs b/AsbCloudWebApi/Controllers/ReportController.cs index ec1b7228..423f36c4 100644 --- a/AsbCloudWebApi/Controllers/ReportController.cs +++ b/AsbCloudWebApi/Controllers/ReportController.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Services; using AsbCloudWebApi.SignalR; using Microsoft.AspNetCore.Mvc; diff --git a/AsbCloudWebApi/Controllers/RequestTrackerController.cs b/AsbCloudWebApi/Controllers/RequestTrackerController.cs index 11facc97..82e3a433 100644 --- a/AsbCloudWebApi/Controllers/RequestTrackerController.cs +++ b/AsbCloudWebApi/Controllers/RequestTrackerController.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Services; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; diff --git a/AsbCloudWebApi/Controllers/SAUB/DetectedOperationController.cs b/AsbCloudWebApi/Controllers/SAUB/DetectedOperationController.cs index fe5f289e..d4171f25 100644 --- a/AsbCloudWebApi/Controllers/SAUB/DetectedOperationController.cs +++ b/AsbCloudWebApi/Controllers/SAUB/DetectedOperationController.cs @@ -1,4 +1,4 @@ -using System; +using System; using AsbCloudApp.Data.DetectedOperation; using AsbCloudApp.Requests; using AsbCloudApp.Services; @@ -16,182 +16,182 @@ using Microsoft.AspNetCore.Http; namespace AsbCloudWebApi.Controllers.SAUB { - /// - /// Операции определенные по телеметрии САУБ - /// - [Route("api/well/{idWell}/[controller]")] - [ApiController] - [Authorize] - public class DetectedOperationController : ControllerBase - { - private readonly IDetectedOperationRepository detectedOperationRepository; - private readonly IDetectedOperationService detectedOperationService; - private readonly IWellService wellService; - private readonly DetectedOperationExportService detectedOperationExportService; + /// + /// Операции определенные по телеметрии САУБ + /// + [Route("api/well/{idWell}/[controller]")] + [ApiController] + [Authorize] + public class DetectedOperationController : ControllerBase + { + private readonly IDetectedOperationRepository detectedOperationRepository; + private readonly IDetectedOperationService detectedOperationService; + private readonly IWellService wellService; + private readonly DetectedOperationExportService detectedOperationExportService; - public DetectedOperationController(IDetectedOperationService detectedOperationService, - IWellService wellService, - DetectedOperationExportService detectedOperationExportService, - IDetectedOperationRepository detectedOperationRepository) - { - this.detectedOperationService = detectedOperationService; - this.wellService = wellService; - this.detectedOperationExportService = detectedOperationExportService; - this.detectedOperationRepository = detectedOperationRepository; - } + public DetectedOperationController(IDetectedOperationService detectedOperationService, + IWellService wellService, + DetectedOperationExportService detectedOperationExportService, + IDetectedOperationRepository detectedOperationRepository) + { + this.detectedOperationService = detectedOperationService; + this.wellService = wellService; + this.detectedOperationExportService = detectedOperationExportService; + this.detectedOperationRepository = detectedOperationRepository; + } - /// - /// Добавить операции - /// - /// - /// - /// - /// - [HttpPost] - [ProducesResponseType(typeof(int), StatusCodes.Status200OK)] - public async Task InsertRangeAsync(int idWell, IEnumerable dtos, CancellationToken token) - { - var idUser = await AssertUserHasAccessToWellAsync(idWell, token); + /// + /// Добавить операции + /// + /// + /// + /// + /// + [HttpPost] + [ProducesResponseType(typeof(int), StatusCodes.Status200OK)] + public async Task InsertRangeAsync(int idWell, IEnumerable dtos, CancellationToken token) + { + var idUser = await AssertUserHasAccessToWellAsync(idWell, token); - var result = await detectedOperationService.InsertRangeManualAsync(idUser, idWell, dtos, token); + var result = await detectedOperationService.InsertRangeManualAsync(idUser, idWell, dtos, token); - return Ok(result); - } + return Ok(result); + } - /// - /// Обновить операции - /// - /// - /// - /// - /// - [HttpPut] - [ProducesResponseType(typeof(int), StatusCodes.Status200OK)] - public async Task UpdateRangeAsync(int idWell, IEnumerable dtos, CancellationToken token) - { - var idUser = await AssertUserHasAccessToWellAsync(idWell, token); + /// + /// Обновить операции + /// + /// + /// + /// + /// + [HttpPut] + [ProducesResponseType(typeof(int), StatusCodes.Status200OK)] + public async Task UpdateRangeAsync(int idWell, IEnumerable dtos, CancellationToken token) + { + var idUser = await AssertUserHasAccessToWellAsync(idWell, token); - var result = await detectedOperationService.UpdateRangeManualAsync(idUser, idWell, dtos, token); + var result = await detectedOperationService.UpdateRangeManualAsync(idUser, idWell, dtos, token); - return Ok(result); - } + return Ok(result); + } - /// - /// Удалить операции - /// - /// - /// - /// - /// - [HttpDelete] - [ProducesResponseType(typeof(int), StatusCodes.Status200OK)] - public async Task DeleteRangeAsync(int idWell, IEnumerable ids, CancellationToken token) - { - await AssertUserHasAccessToWellAsync(idWell, token); + /// + /// Удалить операции + /// + /// + /// + /// + /// + [HttpDelete] + [ProducesResponseType(typeof(int), StatusCodes.Status200OK)] + public async Task DeleteRangeAsync(int idWell, IEnumerable ids, CancellationToken token) + { + await AssertUserHasAccessToWellAsync(idWell, token); - var result = await detectedOperationRepository.DeleteRangeAsync(ids, token); + var result = await detectedOperationRepository.DeleteRangeAsync(ids, token); - return Ok(result); - } + return Ok(result); + } - /// - /// получить справочник операций. Отличается от операций заводимых вручную. - /// При задании id скважины вернет только те операции, которые определились в телеметрии этой скважины. - /// - /// [опционально] id скважины - /// - /// - [HttpGet] - [Route("/api/well/[controller]/categories")] - [ProducesResponseType(typeof(IEnumerable), StatusCodes.Status200OK)] - public async Task GetCategoriesAsync([FromQuery] int? idWell, CancellationToken token) - { - var result = await detectedOperationService.GetCategoriesAsync(idWell, token); - return Ok(result); - } + /// + /// получить справочник операций. Отличается от операций заводимых вручную. + /// При задании id скважины вернет только те операции, которые определились в телеметрии этой скважины. + /// + /// [опционально] id скважины + /// + /// + [HttpGet] + [Route("/api/well/[controller]/categories")] + [ProducesResponseType(typeof(IEnumerable), StatusCodes.Status200OK)] + public async Task GetCategoriesAsync([FromQuery] int? idWell, CancellationToken token) + { + var result = await detectedOperationService.GetCategoriesAsync(idWell, token); + return Ok(result); + } - /// - /// Получить список автоопределенных операций для редактирования - /// - /// - /// - /// - /// - [HttpGet] - [ProducesResponseType(typeof(PaginationContainer), StatusCodes.Status200OK)] - public async Task GetPageAsync(int idWell, [FromQuery] DetectedOperationRequest request, - CancellationToken token) - { - await AssertUserHasAccessToWellAsync(idWell, token); + /// + /// Получить список авто определенных операций для редактирования + /// + /// + /// + /// + /// + [HttpGet] + [ProducesResponseType(typeof(PaginationContainer), StatusCodes.Status200OK)] + public async Task GetPageAsync(int idWell, [FromQuery] DetectedOperationRequest request, + CancellationToken token) + { + await AssertUserHasAccessToWellAsync(idWell, token); - var well = await wellService.GetOrDefaultAsync(idWell, token); + var well = await wellService.GetOrDefaultAsync(idWell, token); - if (well?.IdTelemetry is null) - return NoContent(); + if (well?.IdTelemetry is null) + return NoContent(); - var requestToService = new DetectedOperationByTelemetryRequest(well.IdTelemetry.Value, request); + var requestToService = new DetectedOperationByTelemetryRequest(well.IdTelemetry.Value, request); - var result = await detectedOperationRepository.GetPageAsync(requestToService, token); - return Ok(result); - } - - /// - /// Получить статистику по автоопределенным операциям - /// - /// - /// - /// - /// - [HttpGet("stat")] - [ProducesResponseType(typeof(DetectedOperationListDto), StatusCodes.Status200OK)] - public async Task GetAsync(int idWell, [FromQuery] DetectedOperationRequest request, CancellationToken token) - { - await AssertUserHasAccessToWellAsync(idWell, token); - - var requestToService = new DetectedOperationByWellRequest(idWell, request); + var result = await detectedOperationRepository.GetPageAsync(requestToService, token); + return Ok(result); + } + + /// + /// Получить статистику по авто определенным операциям + /// + /// + /// + /// + /// + [HttpGet("stat")] + [ProducesResponseType(typeof(DetectedOperationListDto), StatusCodes.Status200OK)] + public async Task GetAsync(int idWell, [FromQuery] DetectedOperationRequest request, CancellationToken token) + { + await AssertUserHasAccessToWellAsync(idWell, token); + + var requestToService = new DetectedOperationByWellRequest(idWell, request); - var result = await detectedOperationService.GetAsync(requestToService, token); - return Ok(result); - } + var result = await detectedOperationService.GetAsync(requestToService, token); + return Ok(result); + } - /// - /// Создает excel файл с операциями по скважине - /// - /// id скважины - /// - [HttpGet("export")] - [Permission] - [ProducesResponseType(typeof(PhysicalFileResult), StatusCodes.Status200OK, "application/octet-stream")] - [ProducesResponseType(StatusCodes.Status204NoContent)] - [ProducesResponseType(typeof(ValidationProblemDetails), (int)System.Net.HttpStatusCode.BadRequest)] - public async Task ExportAsync(int idWell, CancellationToken token) - { - var idCompany = User.GetCompanyId(); + /// + /// Создает excel файл с операциями по скважине + /// + /// id скважины + /// + [HttpGet("export")] + [Permission] + [ProducesResponseType(typeof(PhysicalFileResult), StatusCodes.Status200OK, "application/octet-stream")] + [ProducesResponseType(StatusCodes.Status204NoContent)] + [ProducesResponseType(typeof(ValidationProblemDetails), (int)System.Net.HttpStatusCode.BadRequest)] + public async Task ExportAsync(int idWell, CancellationToken token) + { + var idCompany = User.GetCompanyId(); + + if (idCompany is null) + return Forbid(); + + var host = $"{HttpContext.Request.Scheme}://{HttpContext.Request.Host}"; + var stream = await detectedOperationExportService.ExportAsync(idWell, host, token); + + return File(stream, "application/octet-stream", "operations.xlsx"); + } - if (idCompany is null) - return Forbid(); + private async Task AssertUserHasAccessToWellAsync(int idWell, CancellationToken token) + { + var idUser = User.GetUserId(); + var idCompany = User.GetCompanyId(); - var host = $"{HttpContext.Request.Scheme}://{HttpContext.Request.Host}"; - var stream = await detectedOperationExportService.ExportAsync(idWell, host, token); + if (!idUser.HasValue) + throw new ForbidException("Неизвестный пользователь"); - return File(stream, "application/octet-stream", "operations.xlsx"); - } + if (!idCompany.HasValue) + throw new ForbidException("Нет доступа к скважине"); - private async Task AssertUserHasAccessToWellAsync(int idWell, CancellationToken token) - { - var idUser = User.GetUserId(); - var idCompany = User.GetCompanyId(); + if (!await wellService.IsCompanyInvolvedInWellAsync(idCompany.Value, idWell, token)) + throw new ForbidException("Нет доступа к скважине"); - if (!idUser.HasValue) - throw new ForbidException("Неизвестный пользователь"); - - if (!idCompany.HasValue) - throw new ForbidException("Нет доступа к скважине"); - - if (!await wellService.IsCompanyInvolvedInWellAsync(idCompany.Value, idWell, token)) - throw new ForbidException("Нет доступа к скважине"); - - return idUser.Value; - } - } + return idUser.Value; + } + } } \ No newline at end of file diff --git a/AsbCloudWebApi/Controllers/SAUB/GtrWitsController.cs b/AsbCloudWebApi/Controllers/SAUB/GtrWitsController.cs index f234d33c..460eb773 100644 --- a/AsbCloudWebApi/Controllers/SAUB/GtrWitsController.cs +++ b/AsbCloudWebApi/Controllers/SAUB/GtrWitsController.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.GTR; +using AsbCloudApp.Data.GTR; using AsbCloudApp.Repositories; using AsbCloudApp.Services; using AsbCloudWebApi.SignalR; diff --git a/AsbCloudWebApi/Controllers/SAUB/MessageController.cs b/AsbCloudWebApi/Controllers/SAUB/MessageController.cs index 81e710b3..086ddd69 100644 --- a/AsbCloudWebApi/Controllers/SAUB/MessageController.cs +++ b/AsbCloudWebApi/Controllers/SAUB/MessageController.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Requests; using AsbCloudApp.Services; using Microsoft.AspNetCore.Mvc; diff --git a/AsbCloudWebApi/Controllers/SAUB/Readme.md b/AsbCloudWebApi/Controllers/SAUB/Readme.md index 8b9fb760..337eebe1 100644 --- a/AsbCloudWebApi/Controllers/SAUB/Readme.md +++ b/AsbCloudWebApi/Controllers/SAUB/Readme.md @@ -1 +1 @@ -Папка содержит controllers для получаемых от панели оператора САУБ запросов. \ No newline at end of file +Папка содержит controllers для получаемых от панели оператора САУБ запросов. \ No newline at end of file diff --git a/AsbCloudWebApi/Controllers/SAUB/SetpointsController.cs b/AsbCloudWebApi/Controllers/SAUB/SetpointsController.cs index 59711fa3..e6d82c21 100644 --- a/AsbCloudWebApi/Controllers/SAUB/SetpointsController.cs +++ b/AsbCloudWebApi/Controllers/SAUB/SetpointsController.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.SAUB; +using AsbCloudApp.Data.SAUB; using AsbCloudApp.Services; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; diff --git a/AsbCloudWebApi/Controllers/SAUB/TelemetryController.cs b/AsbCloudWebApi/Controllers/SAUB/TelemetryController.cs index 815f2acc..d5f1a71a 100644 --- a/AsbCloudWebApi/Controllers/SAUB/TelemetryController.cs +++ b/AsbCloudWebApi/Controllers/SAUB/TelemetryController.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.SAUB; +using AsbCloudApp.Data.SAUB; using AsbCloudApp.Services; using AsbCloudWebApi.SignalR; using Microsoft.AspNetCore.Mvc; diff --git a/AsbCloudWebApi/Controllers/SAUB/TelemetryDataBaseController.cs b/AsbCloudWebApi/Controllers/SAUB/TelemetryDataBaseController.cs index 5ff378de..0b271f0b 100644 --- a/AsbCloudWebApi/Controllers/SAUB/TelemetryDataBaseController.cs +++ b/AsbCloudWebApi/Controllers/SAUB/TelemetryDataBaseController.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Requests; using AsbCloudApp.Services; using AsbCloudWebApi.SignalR; diff --git a/AsbCloudWebApi/Controllers/SAUB/TelemetryDataSaubController.cs b/AsbCloudWebApi/Controllers/SAUB/TelemetryDataSaubController.cs index e3791655..d760efab 100644 --- a/AsbCloudWebApi/Controllers/SAUB/TelemetryDataSaubController.cs +++ b/AsbCloudWebApi/Controllers/SAUB/TelemetryDataSaubController.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.SAUB; +using AsbCloudApp.Data.SAUB; using AsbCloudApp.Services; using AsbCloudWebApi.SignalR; using AsbCloudWebApi.SignalR.Clients; diff --git a/AsbCloudWebApi/Controllers/SAUB/TelemetryDataSpinController.cs b/AsbCloudWebApi/Controllers/SAUB/TelemetryDataSpinController.cs index 9c81af02..0ff369da 100644 --- a/AsbCloudWebApi/Controllers/SAUB/TelemetryDataSpinController.cs +++ b/AsbCloudWebApi/Controllers/SAUB/TelemetryDataSpinController.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.SAUB; +using AsbCloudApp.Data.SAUB; using AsbCloudApp.Services; using AsbCloudWebApi.SignalR; using AsbCloudWebApi.SignalR.Clients; diff --git a/AsbCloudWebApi/Controllers/SAUB/TelemetryWirelineRunOutController.cs b/AsbCloudWebApi/Controllers/SAUB/TelemetryWirelineRunOutController.cs index ba11dd9d..719190a7 100644 --- a/AsbCloudWebApi/Controllers/SAUB/TelemetryWirelineRunOutController.cs +++ b/AsbCloudWebApi/Controllers/SAUB/TelemetryWirelineRunOutController.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.SAUB; +using AsbCloudApp.Data.SAUB; using AsbCloudApp.Services; using AsbCloudWebApi.SignalR; using Microsoft.AspNetCore.Authorization; diff --git a/AsbCloudWebApi/Controllers/ScheduleController.cs b/AsbCloudWebApi/Controllers/ScheduleController.cs index cc56a296..6effe4e6 100644 --- a/AsbCloudWebApi/Controllers/ScheduleController.cs +++ b/AsbCloudWebApi/Controllers/ScheduleController.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Services; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; diff --git a/AsbCloudWebApi/Controllers/SlipsStatController.cs b/AsbCloudWebApi/Controllers/SlipsStatController.cs index 1049749d..6c61c0e3 100644 --- a/AsbCloudWebApi/Controllers/SlipsStatController.cs +++ b/AsbCloudWebApi/Controllers/SlipsStatController.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Exceptions; using AsbCloudApp.Requests; using AsbCloudApp.Services; diff --git a/AsbCloudWebApi/Controllers/Subsystems/AdminSubsystemController.cs b/AsbCloudWebApi/Controllers/Subsystems/AdminSubsystemController.cs index 454062e1..8872df9f 100644 --- a/AsbCloudWebApi/Controllers/Subsystems/AdminSubsystemController.cs +++ b/AsbCloudWebApi/Controllers/Subsystems/AdminSubsystemController.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.Subsystems; +using AsbCloudApp.Data.Subsystems; using AsbCloudApp.Services; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; diff --git a/AsbCloudWebApi/Controllers/Subsystems/SubsystemController.cs b/AsbCloudWebApi/Controllers/Subsystems/SubsystemController.cs index f8124d8d..8a5b2801 100644 --- a/AsbCloudWebApi/Controllers/Subsystems/SubsystemController.cs +++ b/AsbCloudWebApi/Controllers/Subsystems/SubsystemController.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Data.Subsystems; using AsbCloudApp.Requests; using AsbCloudApp.Services; diff --git a/AsbCloudWebApi/Controllers/Trajectory/TrajectoryController.cs b/AsbCloudWebApi/Controllers/Trajectory/TrajectoryController.cs index a4521ef8..643aed2c 100644 --- a/AsbCloudWebApi/Controllers/Trajectory/TrajectoryController.cs +++ b/AsbCloudWebApi/Controllers/Trajectory/TrajectoryController.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.Trajectory; +using AsbCloudApp.Data.Trajectory; using AsbCloudApp.Repositories; using AsbCloudApp.Services; using Microsoft.AspNetCore.Authorization; diff --git a/AsbCloudWebApi/Controllers/Trajectory/TrajectoryEditableController.cs b/AsbCloudWebApi/Controllers/Trajectory/TrajectoryEditableController.cs index 2a734d21..c83eafc8 100644 --- a/AsbCloudWebApi/Controllers/Trajectory/TrajectoryEditableController.cs +++ b/AsbCloudWebApi/Controllers/Trajectory/TrajectoryEditableController.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.Trajectory; +using AsbCloudApp.Data.Trajectory; using AsbCloudApp.Repositories; using AsbCloudApp.Services; using Microsoft.AspNetCore.Authorization; @@ -22,22 +22,22 @@ namespace AsbCloudWebApi.Controllers.Trajectory [ApiController] [Authorize] public abstract class TrajectoryEditableController : TrajectoryController - where TDto : TrajectoryGeoDto - { - private readonly IParserService parserService; - private readonly ITrajectoryEditableRepository trajectoryRepository; + where TDto : TrajectoryGeoDto + { + private readonly IParserService parserService; + private readonly ITrajectoryEditableRepository trajectoryRepository; - protected TrajectoryEditableController(IWellService wellService, - IParserService parserService, - TrajectoryExportService trajectoryExportService, + protected TrajectoryEditableController(IWellService wellService, + IParserService parserService, + TrajectoryExportService trajectoryExportService, ITrajectoryEditableRepository trajectoryRepository) : base(wellService, trajectoryExportService, trajectoryRepository) - { - this.parserService = parserService; - this.trajectoryRepository = trajectoryRepository; - } - - /// + { + this.parserService = parserService; + this.trajectoryRepository = trajectoryRepository; + } + + /// /// Возвращает excel шаблон для заполнения строк траектории /// /// Запрашиваемый файл @@ -51,104 +51,104 @@ namespace AsbCloudWebApi.Controllers.Trajectory return File(stream, "application/octet-stream", TemplateFileName); } - /// - /// Импортирует координаты из excel (xlsx) файла - /// - /// id скважины - /// Коллекция из одного файла xlsx - /// Токен отмены задачи - /// количество успешно записанных строк в БД - [HttpPost("parse")] - [ProducesResponseType((int)System.Net.HttpStatusCode.OK)] - [ProducesResponseType(typeof(ValidationProblemDetails), (int)System.Net.HttpStatusCode.BadRequest)] - public async Task>> Parse(int idWell, - [FromForm] IFormFileCollection files, - CancellationToken token) - { - var idUser = User.GetUserId(); + /// + /// Импортирует координаты из excel (xlsx) файла + /// + /// id скважины + /// Коллекция из одного файла xlsx + /// Токен отмены задачи + /// количество успешно записанных строк в БД + [HttpPost("parse")] + [ProducesResponseType((int)System.Net.HttpStatusCode.OK)] + [ProducesResponseType(typeof(ValidationProblemDetails), (int)System.Net.HttpStatusCode.BadRequest)] + public async Task>> Parse(int idWell, + [FromForm] IFormFileCollection files, + CancellationToken token) + { + var idUser = User.GetUserId(); - if (!idUser.HasValue) - return Forbid(); + if (!idUser.HasValue) + return Forbid(); - if (!await CanUserAccessToWellAsync(idWell, token)) - return Forbid(); + if (!await CanUserAccessToWellAsync(idWell, token)) + return Forbid(); - var stream = files.GetExcelFile(); + var stream = files.GetExcelFile(); - try - { - var options = new WellRelatedParserRequest(idWell); - var dto = parserService.Parse(stream, options); - - return Ok(dto); - } - catch (FileFormatException ex) - { - return this.ValidationBadRequest(nameof(files), ex.Message); - } - } - - /// - /// Добавление - /// - /// - /// - /// - /// - [HttpPost] - [ProducesResponseType(typeof(int), (int)System.Net.HttpStatusCode.OK)] - public async Task InsertRangeAsync(int idWell, [FromBody] IEnumerable dtos, CancellationToken token) - { - if (!await CanUserAccessToWellAsync(idWell, token)) - return Forbid(); - - var idUser = User.GetUserId(); - - if (!idUser.HasValue) - return Forbid(); - - foreach (var dto in dtos) - { - dto.IdUser = idUser.Value; - dto.IdWell = idWell; - } + try + { + var options = new WellRelatedParserRequest(idWell); + var dto = parserService.Parse(stream, options); + + return Ok(dto); + } + catch (FileFormatException ex) + { + return this.ValidationBadRequest(nameof(files), ex.Message); + } + } + + /// + /// Добавление + /// + /// + /// + /// + /// + [HttpPost] + [ProducesResponseType(typeof(int), (int)System.Net.HttpStatusCode.OK)] + public async Task InsertRangeAsync(int idWell, [FromBody] IEnumerable dtos, CancellationToken token) + { + if (!await CanUserAccessToWellAsync(idWell, token)) + return Forbid(); + + var idUser = User.GetUserId(); + + if (!idUser.HasValue) + return Forbid(); + + foreach (var dto in dtos) + { + dto.IdUser = idUser.Value; + dto.IdWell = idWell; + } - var result = await trajectoryRepository.AddRangeAsync(dtos, token); - return Ok(result); - } + var result = await trajectoryRepository.AddRangeAsync(dtos, token); + return Ok(result); + } - /// - /// Удалить все по скважине и добавить новые - /// - /// - /// - /// - /// - [HttpPost("replace")] - [ProducesResponseType(typeof(int), (int)System.Net.HttpStatusCode.OK)] - public async Task ClearAndInsertRangeAsync(int idWell, [FromBody] IEnumerable dtos, CancellationToken token) - { - //TODO: это вся радость требует рефакторинга. - //Удаление с добавлением новых записей должно происходить в рамках одной транзакции, да и вообще должно быть реализовано на уровне репозиторий. - //Рефакторинг будет когда доберёмся до журнала изменений для траекторий. - if (!await CanUserAccessToWellAsync(idWell, token)) - return Forbid(); - - var idUser = User.GetUserId(); - - if (!idUser.HasValue) - return Forbid(); - - foreach (var dto in dtos) - { - dto.IdUser = idUser.Value; - dto.IdWell = idWell; - } + /// + /// Удалить все по скважине и добавить новые + /// + /// + /// + /// + /// + [HttpPost("replace")] + [ProducesResponseType(typeof(int), (int)System.Net.HttpStatusCode.OK)] + public async Task ClearAndInsertRangeAsync(int idWell, [FromBody] IEnumerable dtos, CancellationToken token) + { + //TODO: это вся радость требует рефакторинга. + //Удаление с добавлением новых записей должно происходить в рамках одной транзакции, да и вообще должно быть реализовано на уровне репозиторий. + //Рефакторинг будет когда доберёмся до журнала изменений для траекторий. + if (!await CanUserAccessToWellAsync(idWell, token)) + return Forbid(); + + var idUser = User.GetUserId(); + + if (!idUser.HasValue) + return Forbid(); + + foreach (var dto in dtos) + { + dto.IdUser = idUser.Value; + dto.IdWell = idWell; + } - await trajectoryRepository.DeleteByIdWellAsync(idWell, token); - var result = await trajectoryRepository.AddRangeAsync(dtos, token); - return Ok(result); - } + await trajectoryRepository.DeleteByIdWellAsync(idWell, token); + var result = await trajectoryRepository.AddRangeAsync(dtos, token); + return Ok(result); + } /// /// Изменить выбранную строку с координатами diff --git a/AsbCloudWebApi/Controllers/Trajectory/TrajectoryFactManualController.cs b/AsbCloudWebApi/Controllers/Trajectory/TrajectoryFactManualController.cs index d0bd33b5..3f096fb1 100644 --- a/AsbCloudWebApi/Controllers/Trajectory/TrajectoryFactManualController.cs +++ b/AsbCloudWebApi/Controllers/Trajectory/TrajectoryFactManualController.cs @@ -14,13 +14,13 @@ namespace AsbCloudWebApi.Controllers.Trajectory; [Route("api/well/{idWell}/[controller]")] public class TrajectoryFactManualController : TrajectoryEditableController { - protected override string TemplateFileName => "ЕЦП_шаблон_файла_фактическая_траектория.xlsx"; + protected override string TemplateFileName => "ЕЦП_шаблон_файла_фактическая_траектория.xlsx"; - public TrajectoryFactManualController(IWellService wellService, - TrajectoryFactManualExportService trajectoryExportService, - TrajectoryFactManualParser parserService, - ITrajectoryEditableRepository trajectoryRepository) - : base(wellService, parserService, trajectoryExportService, trajectoryRepository) - { - } + public TrajectoryFactManualController(IWellService wellService, + TrajectoryFactManualExportService trajectoryExportService, + TrajectoryFactManualParser parserService, + ITrajectoryEditableRepository trajectoryRepository) + : base(wellService, parserService, trajectoryExportService, trajectoryRepository) + { + } } \ No newline at end of file diff --git a/AsbCloudWebApi/Controllers/Trajectory/TrajectoryPlanController.cs b/AsbCloudWebApi/Controllers/Trajectory/TrajectoryPlanController.cs index 67a54007..10d34ed8 100644 --- a/AsbCloudWebApi/Controllers/Trajectory/TrajectoryPlanController.cs +++ b/AsbCloudWebApi/Controllers/Trajectory/TrajectoryPlanController.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.Trajectory; +using AsbCloudApp.Data.Trajectory; using AsbCloudApp.Repositories; using AsbCloudApp.Services; using AsbCloudInfrastructure.Services.Trajectory; @@ -11,45 +11,45 @@ using AsbCloudInfrastructure.Services.Trajectory.Parser; namespace AsbCloudWebApi.Controllers.Trajectory { - /// - /// Плановая траектория (загрузка и хранение) - /// - [Route("api/well/{idWell}/[controller]")] - [ApiController] - public class TrajectoryPlanController : TrajectoryEditableController - { - private readonly TrajectoryService trajectoryVisualizationService; + /// + /// Плановая траектория (загрузка и хранение) + /// + [Route("api/well/{idWell}/[controller]")] + [ApiController] + public class TrajectoryPlanController : TrajectoryEditableController + { + private readonly TrajectoryService trajectoryVisualizationService; - protected override string TemplateFileName => "ЕЦП_шаблон_файла_плановая_траектория.xlsx"; + protected override string TemplateFileName => "ЕЦП_шаблон_файла_плановая_траектория.xlsx"; - public TrajectoryPlanController(IWellService wellService, - TrajectoryPlanParser parserService, - TrajectoryPlanExportService trajectoryExportService, - ITrajectoryEditableRepository trajectoryRepository, - TrajectoryService trajectoryVisualizationService) - : base(wellService, parserService, trajectoryExportService, trajectoryRepository) - { - this.trajectoryVisualizationService = trajectoryVisualizationService; - } + public TrajectoryPlanController(IWellService wellService, + TrajectoryPlanParser parserService, + TrajectoryPlanExportService trajectoryExportService, + ITrajectoryEditableRepository trajectoryRepository, + TrajectoryService trajectoryVisualizationService) + : base(wellService, parserService, trajectoryExportService, trajectoryRepository) + { + this.trajectoryVisualizationService = trajectoryVisualizationService; + } - /// - /// Получение координат для визуализации траектории (плановой и фактической) - /// - /// - /// - /// - [HttpGet("trajectoryCartesianPlanFact")] - [ProducesResponseType( - typeof(TrajectoryPlanFactDto, IEnumerable>), - (int)System.Net.HttpStatusCode.OK)] - public async Task GetTrajectoryCartesianPlanFactAsync(int idWell, CancellationToken token) - { - if (!await CanUserAccessToWellAsync(idWell, - token).ConfigureAwait(false)) - return Forbid(); + /// + /// Получение координат для визуализации траектории (плановой и фактической) + /// + /// + /// + /// + [HttpGet("trajectoryCartesianPlanFact")] + [ProducesResponseType( + typeof(TrajectoryPlanFactDto, IEnumerable>), + (int)System.Net.HttpStatusCode.OK)] + public async Task GetTrajectoryCartesianPlanFactAsync(int idWell, CancellationToken token) + { + if (!await CanUserAccessToWellAsync(idWell, + token).ConfigureAwait(false)) + return Forbid(); - var result = await trajectoryVisualizationService.GetTrajectoryCartesianAsync(idWell, token); - return Ok(result); - } - } + var result = await trajectoryVisualizationService.GetTrajectoryCartesianAsync(idWell, token); + return Ok(result); + } + } } \ No newline at end of file diff --git a/AsbCloudWebApi/Controllers/UserSettingsController.cs b/AsbCloudWebApi/Controllers/UserSettingsController.cs index f0325b44..04a4d5cb 100644 --- a/AsbCloudWebApi/Controllers/UserSettingsController.cs +++ b/AsbCloudWebApi/Controllers/UserSettingsController.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Exceptions; +using AsbCloudApp.Exceptions; using AsbCloudApp.Services; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; diff --git a/AsbCloudWebApi/Controllers/WITS/WitsControllerAbstract.cs b/AsbCloudWebApi/Controllers/WITS/WitsControllerAbstract.cs index 0e29ddd9..1c050b66 100644 --- a/AsbCloudWebApi/Controllers/WITS/WitsControllerAbstract.cs +++ b/AsbCloudWebApi/Controllers/WITS/WitsControllerAbstract.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Services; using AsbCloudWebApi.SignalR; using Microsoft.AspNetCore.Authorization; diff --git a/AsbCloudWebApi/Controllers/WITS/WitsInfoController.cs b/AsbCloudWebApi/Controllers/WITS/WitsInfoController.cs index c1298cfb..023a4314 100644 --- a/AsbCloudWebApi/Controllers/WITS/WitsInfoController.cs +++ b/AsbCloudWebApi/Controllers/WITS/WitsInfoController.cs @@ -1,4 +1,4 @@ -using AsbCloudInfrastructure.Services; +using AsbCloudInfrastructure.Services; using Microsoft.AspNetCore.Mvc; using System.Collections.Generic; diff --git a/AsbCloudWebApi/Controllers/WITS/WitsRecord1Controller.cs b/AsbCloudWebApi/Controllers/WITS/WitsRecord1Controller.cs index 59191dfb..f1c0043b 100644 --- a/AsbCloudWebApi/Controllers/WITS/WitsRecord1Controller.cs +++ b/AsbCloudWebApi/Controllers/WITS/WitsRecord1Controller.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.WITS; +using AsbCloudApp.Data.WITS; using AsbCloudApp.Services; using AsbCloudWebApi.SignalR; using Microsoft.AspNetCore.Mvc; diff --git a/AsbCloudWebApi/Controllers/WITS/WitsRecord50Controller.cs b/AsbCloudWebApi/Controllers/WITS/WitsRecord50Controller.cs index 0cef1bcc..3a2a04fb 100644 --- a/AsbCloudWebApi/Controllers/WITS/WitsRecord50Controller.cs +++ b/AsbCloudWebApi/Controllers/WITS/WitsRecord50Controller.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.WITS; +using AsbCloudApp.Data.WITS; using AsbCloudApp.Services; using AsbCloudWebApi.SignalR; using Microsoft.AspNetCore.Mvc; diff --git a/AsbCloudWebApi/Controllers/WITS/WitsRecord60Controller.cs b/AsbCloudWebApi/Controllers/WITS/WitsRecord60Controller.cs index 08c796d6..ddbdcaad 100644 --- a/AsbCloudWebApi/Controllers/WITS/WitsRecord60Controller.cs +++ b/AsbCloudWebApi/Controllers/WITS/WitsRecord60Controller.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.WITS; +using AsbCloudApp.Data.WITS; using AsbCloudApp.Services; using AsbCloudWebApi.SignalR; using Microsoft.AspNetCore.Mvc; diff --git a/AsbCloudWebApi/Controllers/WITS/WitsRecord61Controller.cs b/AsbCloudWebApi/Controllers/WITS/WitsRecord61Controller.cs index dc4715c5..51a5e280 100644 --- a/AsbCloudWebApi/Controllers/WITS/WitsRecord61Controller.cs +++ b/AsbCloudWebApi/Controllers/WITS/WitsRecord61Controller.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.WITS; +using AsbCloudApp.Data.WITS; using AsbCloudApp.Services; using AsbCloudWebApi.SignalR; using Microsoft.AspNetCore.Mvc; diff --git a/AsbCloudWebApi/Controllers/WITS/WitsRecord7Controller.cs b/AsbCloudWebApi/Controllers/WITS/WitsRecord7Controller.cs index 05784984..c68ca6ab 100644 --- a/AsbCloudWebApi/Controllers/WITS/WitsRecord7Controller.cs +++ b/AsbCloudWebApi/Controllers/WITS/WitsRecord7Controller.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.WITS; +using AsbCloudApp.Data.WITS; using AsbCloudApp.Services; using AsbCloudWebApi.SignalR; using Microsoft.AspNetCore.Mvc; diff --git a/AsbCloudWebApi/Controllers/WITS/WitsRecord8Controller.cs b/AsbCloudWebApi/Controllers/WITS/WitsRecord8Controller.cs index 67d59ec8..499573ba 100644 --- a/AsbCloudWebApi/Controllers/WITS/WitsRecord8Controller.cs +++ b/AsbCloudWebApi/Controllers/WITS/WitsRecord8Controller.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.WITS; +using AsbCloudApp.Data.WITS; using AsbCloudApp.Services; using AsbCloudWebApi.SignalR; using Microsoft.AspNetCore.Mvc; diff --git a/AsbCloudWebApi/Controllers/WellCompositeController.cs b/AsbCloudWebApi/Controllers/WellCompositeController.cs index 903966dd..59a4b867 100644 --- a/AsbCloudWebApi/Controllers/WellCompositeController.cs +++ b/AsbCloudWebApi/Controllers/WellCompositeController.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Data.ProcessMaps; using AsbCloudApp.Repositories; using AsbCloudApp.Services; @@ -73,7 +73,7 @@ namespace AsbCloudWebApi.Controllers /// [HttpGet("compositeProcessMap")] [Permission] - [ProducesResponseType(typeof(IEnumerable), (int)System.Net.HttpStatusCode.OK)] + [ProducesResponseType(typeof(IEnumerable), (int)System.Net.HttpStatusCode.OK)] public async Task GetCompositeProcessMap(int idWell, CancellationToken token) { if (!await CanUserAccessToWellAsync(idWell, token).ConfigureAwait(false)) diff --git a/AsbCloudWebApi/Controllers/WellCompositeOperationController.cs b/AsbCloudWebApi/Controllers/WellCompositeOperationController.cs index 964addae..07272e5d 100644 --- a/AsbCloudWebApi/Controllers/WellCompositeOperationController.cs +++ b/AsbCloudWebApi/Controllers/WellCompositeOperationController.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Services; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; diff --git a/AsbCloudWebApi/Controllers/WellContactController.cs b/AsbCloudWebApi/Controllers/WellContactController.cs index 7fef14f2..bdb6a7ae 100644 --- a/AsbCloudWebApi/Controllers/WellContactController.cs +++ b/AsbCloudWebApi/Controllers/WellContactController.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Data.User; using AsbCloudApp.Services; using AsbCloudDb.Model; @@ -139,6 +139,34 @@ namespace AsbCloudWebApi.Controllers return Ok(result); } + /// + /// Скопировать контакты в другую скважину + /// + /// ключ скважины, откуда копировать контакты + /// ключ скважины, куда копировать контакты + /// + /// + /// + [HttpPost("copy/{idWellTarget}")] + [Permission] + [ProducesResponseType(typeof(int), (int)System.Net.HttpStatusCode.OK)] + public async Task CopyAsync( + int idWell, + int idWellTarget, + [FromBody] IEnumerable contactIds, + CancellationToken token) + { + if (!await CanUserAccessToWellAsync(idWell, token).ConfigureAwait(false)) + return Forbid(); + + if (!await CanUserAccessToWellAsync(idWellTarget, token).ConfigureAwait(false)) + return Forbid(); + + var result = await wellContactsRepository.CopyAsync(idWell, idWellTarget, contactIds, token); + + return Ok(result); + } + private async Task CanUserAccessToWellAsync(int idWell, CancellationToken token) { int? idCompany = User.GetCompanyId(); diff --git a/AsbCloudWebApi/Controllers/WellController.cs b/AsbCloudWebApi/Controllers/WellController.cs index 2a0ad437..4f00eb98 100644 --- a/AsbCloudWebApi/Controllers/WellController.cs +++ b/AsbCloudWebApi/Controllers/WellController.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Exceptions; using AsbCloudApp.Services; using AsbCloudDb.Model; diff --git a/AsbCloudWebApi/Controllers/WellFinalDocumentsController.cs b/AsbCloudWebApi/Controllers/WellFinalDocumentsController.cs index 3cd7156b..1d16f564 100644 --- a/AsbCloudWebApi/Controllers/WellFinalDocumentsController.cs +++ b/AsbCloudWebApi/Controllers/WellFinalDocumentsController.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Services; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; diff --git a/AsbCloudWebApi/Controllers/WellOperationController.cs b/AsbCloudWebApi/Controllers/WellOperationController.cs index 5c6383a2..eda82a08 100644 --- a/AsbCloudWebApi/Controllers/WellOperationController.cs +++ b/AsbCloudWebApi/Controllers/WellOperationController.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using AsbCloudApp.Repositories; using AsbCloudApp.Requests; using AsbCloudApp.Services; diff --git a/AsbCloudWebApi/Controllers/WellSectionsController.cs b/AsbCloudWebApi/Controllers/WellSectionsController.cs index aa364439..8f86421d 100644 --- a/AsbCloudWebApi/Controllers/WellSectionsController.cs +++ b/AsbCloudWebApi/Controllers/WellSectionsController.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; diff --git a/AsbCloudWebApi/Controllers/WellboreController.cs b/AsbCloudWebApi/Controllers/WellboreController.cs index b3f77810..947c7e2b 100644 --- a/AsbCloudWebApi/Controllers/WellboreController.cs +++ b/AsbCloudWebApi/Controllers/WellboreController.cs @@ -17,12 +17,12 @@ namespace AsbCloudWebApi.Controllers; [Route("api/[controller]")] public class WellboreController : ControllerBase { - private readonly IWellboreService wellboreService; + private readonly IWellboreService wellboreService; - public WellboreController(IWellboreService wellboreService) - { - this.wellboreService = wellboreService; - } + public WellboreController(IWellboreService wellboreService) + { + this.wellboreService = wellboreService; + } /// /// Получение списка стволов скважин @@ -31,12 +31,12 @@ public class WellboreController : ControllerBase /// /// [HttpGet] - [ProducesResponseType(typeof(IEnumerable), StatusCodes.Status200OK)] - public async Task GetAllAsync([FromQuery] IEnumerable idsWells, - CancellationToken cancellationToken) + [ProducesResponseType(typeof(IEnumerable), StatusCodes.Status200OK)] + public async Task GetAllAsync([FromQuery] IEnumerable idsWells, + CancellationToken cancellationToken) { - var result = await wellboreService.GetWellboresAsync(idsWells, cancellationToken); + var result = await wellboreService.GetWellboresAsync(idsWells, cancellationToken); return Ok(result); - } + } } \ No newline at end of file diff --git a/AsbCloudWebApi/Conventions/ApiExplorerGroupPerVersionConvention.cs b/AsbCloudWebApi/Conventions/ApiExplorerGroupPerVersionConvention.cs index 69a912cf..db3de7d8 100644 --- a/AsbCloudWebApi/Conventions/ApiExplorerGroupPerVersionConvention.cs +++ b/AsbCloudWebApi/Conventions/ApiExplorerGroupPerVersionConvention.cs @@ -1,4 +1,4 @@ -using Microsoft.AspNetCore.Mvc.ApplicationModels; +using Microsoft.AspNetCore.Mvc.ApplicationModels; using System.Linq; namespace AsbCloudWebApi.Conventions diff --git a/AsbCloudWebApi/Converters/DateOnlyJsonConverter.cs b/AsbCloudWebApi/Converters/DateOnlyJsonConverter.cs index 81d0d0ff..c2b0282b 100644 --- a/AsbCloudWebApi/Converters/DateOnlyJsonConverter.cs +++ b/AsbCloudWebApi/Converters/DateOnlyJsonConverter.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Text.Json; using System.Text.Json.Serialization; diff --git a/AsbCloudWebApi/Converters/DateOnlyTypeConverter.cs b/AsbCloudWebApi/Converters/DateOnlyTypeConverter.cs index 71d8730d..03f4b552 100644 --- a/AsbCloudWebApi/Converters/DateOnlyTypeConverter.cs +++ b/AsbCloudWebApi/Converters/DateOnlyTypeConverter.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.ComponentModel; using System.Globalization; using System.Text.Json; diff --git a/AsbCloudWebApi/Converters/JsonValueJsonConverter.cs b/AsbCloudWebApi/Converters/JsonValueJsonConverter.cs index 386f1234..6ff6c52b 100644 --- a/AsbCloudWebApi/Converters/JsonValueJsonConverter.cs +++ b/AsbCloudWebApi/Converters/JsonValueJsonConverter.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Globalization; using System.Text.Json.Serialization; using System.Text.Json; diff --git a/AsbCloudWebApi/Converters/TimeOnlyTypeConverter.cs b/AsbCloudWebApi/Converters/TimeOnlyTypeConverter.cs index 02a81ae0..e59b4e2c 100644 --- a/AsbCloudWebApi/Converters/TimeOnlyTypeConverter.cs +++ b/AsbCloudWebApi/Converters/TimeOnlyTypeConverter.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.ComponentModel; using System.Globalization; diff --git a/AsbCloudWebApi/DependencyInjection.cs b/AsbCloudWebApi/DependencyInjection.cs index 8f25ee81..8266ad6e 100644 --- a/AsbCloudWebApi/DependencyInjection.cs +++ b/AsbCloudWebApi/DependencyInjection.cs @@ -1,25 +1,24 @@ -using AsbCloudApp.Data.GTR; +using AsbCloudApp.Data.GTR; +using AsbCloudApp.IntegrationEvents; +using AsbCloudApp.IntegrationEvents.Interfaces; using AsbCloudApp.Repositories; +using AsbCloudApp.Services.Notifications; using AsbCloudDb.Model; using AsbCloudInfrastructure.Services; +using AsbCloudInfrastructure.Services.Email; +using AsbCloudWebApi.SignalR; +using AsbCloudWebApi.SignalR.Services; using Microsoft.AspNetCore.Authentication.JwtBearer; +using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.DependencyInjection; using Microsoft.IdentityModel.Tokens; +using Microsoft.OpenApi.Any; using Microsoft.OpenApi.Models; using System; using System.Collections.Generic; using System.IO; using System.Reflection; using System.Threading.Tasks; -using AsbCloudApp.IntegrationEvents; -using AsbCloudApp.IntegrationEvents.Interfaces; -using AsbCloudApp.Services.Notifications; -using AsbCloudInfrastructure.Services.Email; -using AsbCloudWebApi.SignalR; -using AsbCloudWebApi.SignalR.Services; -using Microsoft.AspNetCore.Mvc; -using Microsoft.OpenApi.Any; -using Swashbuckle.AspNetCore.SwaggerGen; namespace AsbCloudWebApi { diff --git a/AsbCloudWebApi/Docs/about using DateTime[Offset].md b/AsbCloudWebApi/Docs/about using DateTime[Offset].md index 954748b5..e1483fb0 100644 --- a/AsbCloudWebApi/Docs/about using DateTime[Offset].md +++ b/AsbCloudWebApi/Docs/about using DateTime[Offset].md @@ -1,4 +1,4 @@ -## Проблема +## Проблема Скважины и пользователи ЕЦП расположены на различных часовых поясах. В БД время хранится только в UTC. На страницах ЕЦП время везде должно отображаться в часовом поясе скважины. diff --git a/AsbCloudWebApi/Docs/googleDrive publish manual.md b/AsbCloudWebApi/Docs/googleDrive publish manual.md index 8d5b681e..59f8163e 100644 --- a/AsbCloudWebApi/Docs/googleDrive publish manual.md +++ b/AsbCloudWebApi/Docs/googleDrive publish manual.md @@ -1,4 +1,4 @@ -# учетная запись +# учетная запись asbautodrilling@gmail.com asbautodrilling1! diff --git a/AsbCloudWebApi/Extensions.cs b/AsbCloudWebApi/Extensions.cs index a19dcc6e..9446e5d7 100644 --- a/AsbCloudWebApi/Extensions.cs +++ b/AsbCloudWebApi/Extensions.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.User; +using AsbCloudApp.Data.User; using AsbCloudWebApi.Converters; using System; using System.Collections.Generic; @@ -114,7 +114,7 @@ public static class Extensions /// /// Получение Excel /// - /// + /// /// /// public static Stream GetExcelFile(this IFormFile file) diff --git a/AsbCloudWebApi/Middlewares/PermissionsMiddlware.cs b/AsbCloudWebApi/Middlewares/PermissionsMiddlware.cs index 1c352b90..3c4eb9d7 100644 --- a/AsbCloudWebApi/Middlewares/PermissionsMiddlware.cs +++ b/AsbCloudWebApi/Middlewares/PermissionsMiddlware.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Repositories; +using AsbCloudApp.Repositories; using AsbCloudApp.Services; using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Http; diff --git a/AsbCloudWebApi/Middlewares/RequerstTrackerMiddleware.cs b/AsbCloudWebApi/Middlewares/RequerstTrackerMiddleware.cs index 392b3bca..62c3ff56 100644 --- a/AsbCloudWebApi/Middlewares/RequerstTrackerMiddleware.cs +++ b/AsbCloudWebApi/Middlewares/RequerstTrackerMiddleware.cs @@ -1,4 +1,4 @@ -using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Http; using Microsoft.Extensions.DependencyInjection; using System.Linq; using System.Threading.Tasks; diff --git a/AsbCloudWebApi/Middlewares/SimplifyExceptionsMiddleware.cs b/AsbCloudWebApi/Middlewares/SimplifyExceptionsMiddleware.cs index 53191eaf..20c995b3 100644 --- a/AsbCloudWebApi/Middlewares/SimplifyExceptionsMiddleware.cs +++ b/AsbCloudWebApi/Middlewares/SimplifyExceptionsMiddleware.cs @@ -1,4 +1,4 @@ -// Ignore Spelling: Middlewares +// Ignore Spelling: Middlewares using AsbCloudApp.Exceptions; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; diff --git a/AsbCloudWebApi/Middlewares/UserConnectionsLimitMiddlware.cs b/AsbCloudWebApi/Middlewares/UserConnectionsLimitMiddlware.cs index ba24a0c9..f905d4f2 100644 --- a/AsbCloudWebApi/Middlewares/UserConnectionsLimitMiddlware.cs +++ b/AsbCloudWebApi/Middlewares/UserConnectionsLimitMiddlware.cs @@ -1,4 +1,4 @@ -using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Configuration; using System.Collections.Concurrent; using System.Collections.Generic; diff --git a/AsbCloudWebApi/PermissionAttribute.cs b/AsbCloudWebApi/PermissionAttribute.cs index 775617a1..4d192eac 100644 --- a/AsbCloudWebApi/PermissionAttribute.cs +++ b/AsbCloudWebApi/PermissionAttribute.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Concurrent; namespace AsbCloudWebApi diff --git a/AsbCloudWebApi/ProtobufModel.cs b/AsbCloudWebApi/ProtobufModel.cs index fc8b9995..0eeb2c8a 100644 --- a/AsbCloudWebApi/ProtobufModel.cs +++ b/AsbCloudWebApi/ProtobufModel.cs @@ -1,380 +1,377 @@ -using AsbCloudApp.Data.SAUB; +using AsbCloudApp.Data.SAUB; using ProtoBuf.Meta; -namespace AsbCloudWebApi +namespace AsbCloudWebApi; + +public static class ProtobufModel { - public static class ProtobufModel + private static readonly object SyncRoot = new(); + + public static void EnsureRegistered() { - private static readonly object SyncRoot = new(); - - public static void EnshureRegistered() + lock (SyncRoot) { - lock (SyncRoot) - { - EnshureRegisteredDataSpin(); - EnshureRegisteredDataSaub(); - EnshureRegisteredWITS(); - EnshureRegisteredWirelineRunOutBaseDto(); - EnshureRegisteredWirelineRunOutDto(); - } - } - - private static void EnshureRegisteredWirelineRunOutBaseDto() - { - var type = typeof(TelemetryWirelineRunOutBaseDto); - if (RuntimeTypeModel.Default.IsDefined(type)) - return; - RuntimeTypeModel.Default.Add(type, false) - .Add(1, nameof(TelemetryWirelineRunOutBaseDto.DateTime)) - .Add(2, nameof(TelemetryWirelineRunOutBaseDto.Hauling)) - .Add(3, nameof(TelemetryWirelineRunOutBaseDto.HaulingWarnSp)) - .Add(4, nameof(TelemetryWirelineRunOutBaseDto.Replace)) - .Add(5, nameof(TelemetryWirelineRunOutBaseDto.ReplaceWarnSp)); - } - - private static void EnshureRegisteredWirelineRunOutDto() - { - var type = typeof(TelemetryWirelineRunOutDto); - if (RuntimeTypeModel.Default.IsDefined(type)) - return; - RuntimeTypeModel.Default.Add(type, false) - .Add(1, nameof(TelemetryWirelineRunOutDto.DateTime)) - .Add(2, nameof(TelemetryWirelineRunOutDto.Hauling)) - .Add(3, nameof(TelemetryWirelineRunOutDto.HaulingWarnSp)) - .Add(4, nameof(TelemetryWirelineRunOutDto.Replace)) - .Add(5, nameof(TelemetryWirelineRunOutDto.ReplaceWarnSp)); - } - - private static void EnshureRegisteredWITS() - { - EnshureRegisteredRecord1(); - EnshureRegisteredRecord7(); - EnshureRegisteredRecord8(); - EnshureRegisteredRecord50(); - EnshureRegisteredRecord60(); - EnshureRegisteredRecord61(); - } - - private static void EnshureRegisteredRecord1() - { - var type = typeof(AsbCloudApp.Data.WITS.Record1Dto); - if (RuntimeTypeModel.Default.IsDefined(type)) - return; - var i = 1; - RuntimeTypeModel.Default.Add(type, false) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Id)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.IdTelemetry)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.DateTime)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.TimeStamp)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Wellid)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Stknum)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Recid)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Seqid)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Date_)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Time)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Actcod)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Deptbitm)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Deptbitv)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Deptmeas)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Deptvert)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Blkpos)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Ropa)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Hkla)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Hklx)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Woba)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Wobx)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Torqa)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Torqx)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Rpma)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Sppa)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Chkp)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Spm1)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Spm2)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Spm3)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Tvolact)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Tvolcact)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Mfop)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Mfoa)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Mfia)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Mdoa)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Mdia)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Mtoa)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Mtia)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Mcoa)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Mcia)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Stkc)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Lagstks)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Deptretm)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Gasa)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Spare1)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Spare2)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Spare3)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Spare4)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Spare5)) - ; - } - - private static void EnshureRegisteredRecord7() - { - var type = typeof(AsbCloudApp.Data.WITS.Record7Dto); - if (RuntimeTypeModel.Default.IsDefined(type)) - return; - var i = 1; - RuntimeTypeModel.Default.Add(type, false) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Id)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.IdTelemetry)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.DateTime)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.TimeStamp)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Wellid)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Stknum)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Recid)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Seqid)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Date_)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Time)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Actcod)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Deptsvym)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Deptsvyv)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Passnum)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Deptmeas)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Svytype)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Svyinc)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Svyazu)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Svyazc)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Svymtf)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Svygtf)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Svyns)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Svyew)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Svydls)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Svywalk)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Spare1)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Spare2)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Spare3)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Spare4)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Spare5)) - ; - } - - private static void EnshureRegisteredRecord8() - { - var type = typeof(AsbCloudApp.Data.WITS.Record8Dto); - if (RuntimeTypeModel.Default.IsDefined(type)) - return; - var i = 1; - RuntimeTypeModel.Default.Add(type, false) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Id)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.IdTelemetry)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.DateTime)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.TimeStamp)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Wellid)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Stknum)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Recid)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Seqid)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Date_)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Time)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Actcod)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Deptmeas)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Deptvert)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Deptbitm)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Deptbitv)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Passnum)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Deptrs1m)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Deptrs1v)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Mr1)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Mr1c)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Deptrs2m)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Deptrs2v)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Mr2)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Mr2c)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Deptgr1m)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Deptgr1v)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Mg1)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Mg1c)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Deptgr2m)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Deptgr2v)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Mg2)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Mg2c)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Deptp1m)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Deptp1v)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Mpo1)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Deptp2m)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Deptp2v)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Mpo2)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Mftann)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Mftpipe)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Mfrann)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Mfrpipe)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Deptfdm)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Deptfdv)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Mfd)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Deptcalm)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Deptcalv)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Mclp)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Mfpp)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Mffp)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Spare1)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Spare2)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Spare3)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Spare4)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Spare5)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Spare6)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Spare7)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Spare8)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Spare9)) - ; - } - - private static void EnshureRegisteredRecord60() - { - var type = typeof(AsbCloudApp.Data.WITS.Record60Dto); - if (RuntimeTypeModel.Default.IsDefined(type)) - return; - var i = 1; - RuntimeTypeModel.Default.Add(type, false) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record60Dto.Id)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record60Dto.IdTelemetry)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record60Dto.DateTime)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record60Dto.TimeStamp)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record60Dto.Deptbitm)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record60Dto.Deptmeas)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record60Dto.Gtot)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record60Dto.Gx)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record60Dto.Gy)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record60Dto.Gz)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record60Dto.Btot)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record60Dto.Bx)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record60Dto.By)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record60Dto.Bz)) - ; - } - - private static void EnshureRegisteredRecord61() - { - var type = typeof(AsbCloudApp.Data.WITS.Record61Dto); - if (RuntimeTypeModel.Default.IsDefined(type)) - return; - var i = 1; - RuntimeTypeModel.Default.Add(type, false) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record61Dto.Id)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record61Dto.IdTelemetry)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record61Dto.DateTime)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record61Dto.TimeStamp)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record61Dto.Deptbitm)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record61Dto.Deptmeas)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record61Dto.Phl1f1)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record61Dto.Phl1f2)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record61Dto.Phl2f1)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record61Dto.Phl2f2)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record61Dto.Att06h)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record61Dto.Att06l)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record61Dto.Att10h)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record61Dto.Att10l)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record61Dto.Status)) - ; - } - - private static void EnshureRegisteredRecord50() - { - var type = typeof(AsbCloudApp.Data.WITS.Record50Dto); - if (RuntimeTypeModel.Default.IsDefined(type)) - return; - var i = 1; - RuntimeTypeModel.Default.Add(type, false) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record50Dto.Id)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record50Dto.IdTelemetry)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record50Dto.DateTime)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record50Dto.TimeStamp)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record50Dto.Deptbitm)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record50Dto.DeptmeasMcrstat)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record50Dto.Mcrstat)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record50Dto.DeptmeasSlvlMc)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record50Dto.SlvlMc)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record50Dto.DeptmeasGdpMc)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record50Dto.GdpMc)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record50Dto.DeptmeasRa33f2Mc)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record50Dto.Ra33f2Mc)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record50Dto.DeptmeasRp33f2Mc)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record50Dto.Rp33f2Mc)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record50Dto.DeptmeasRa33f4Mc)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record50Dto.Ra33f4Mc)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record50Dto.DeptmeasRp33f4Mc)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record50Dto.Rp33f4Mc)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record50Dto.DeptmeasRa33Mc)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record50Dto.Ra33Mc)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record50Dto.DeptmeasRp33Mc)) - .Add(i++, nameof(AsbCloudApp.Data.WITS.Record50Dto.Rp33Mc)) - ; - } - - - - static void EnshureRegisteredDataSpin() - { - var type = typeof(TelemetryDataSpinDto); - if (RuntimeTypeModel.Default.IsDefined(type)) - return; - RuntimeTypeModel.Default.Add(type, false) - .Add(1, nameof(TelemetryDataSpinDto.IdTelemetry)) - .Add(2, nameof(TelemetryDataSpinDto.DateTime)) - .Add(35, nameof(TelemetryDataSpinDto.Mode)) - .Add(43, nameof(TelemetryDataSpinDto.RevolsRightLimit)) - .Add(44, nameof(TelemetryDataSpinDto.RevolsLeftLimit)) - .Add(45, nameof(TelemetryDataSpinDto.SpeedRightSp)) - .Add(46, nameof(TelemetryDataSpinDto.SpeedLeftSp)) - .Add(47, nameof(TelemetryDataSpinDto.RevolsRightTotal)) - .Add(48, nameof(TelemetryDataSpinDto.RevolsLeftTotal)) - .Add(57, nameof(TelemetryDataSpinDto.PositionZero)) - .Add(58, nameof(TelemetryDataSpinDto.PositionRight)) - .Add(64, nameof(TelemetryDataSpinDto.State)); - } - - static void EnshureRegisteredDataSaub() - { - var type = typeof(TelemetryDataSaubDto); - if (RuntimeTypeModel.Default.IsDefined(type)) - return; - RuntimeTypeModel.Default.Add(type, false) - .Add(1, nameof(TelemetryDataSaubDto.IdTelemetry)) - .Add(2, nameof(TelemetryDataSaubDto.DateTime)) - .Add(3, nameof(TelemetryDataSaubDto.Mode)) - .Add(4, nameof(TelemetryDataSaubDto.User)) - .Add(5, nameof(TelemetryDataSaubDto.WellDepth)) - .Add(6, nameof(TelemetryDataSaubDto.BitDepth)) - .Add(7, nameof(TelemetryDataSaubDto.BlockPosition)) - .Add(8, nameof(TelemetryDataSaubDto.BlockPositionMin)) - .Add(9, nameof(TelemetryDataSaubDto.BlockPositionMax)) - .Add(10, nameof(TelemetryDataSaubDto.BlockSpeed)) - .Add(11, nameof(TelemetryDataSaubDto.BlockSpeedSp)) - .Add(12, nameof(TelemetryDataSaubDto.BlockSpeedSpRotor)) - .Add(13, nameof(TelemetryDataSaubDto.BlockSpeedSpSlide)) - .Add(14, nameof(TelemetryDataSaubDto.BlockSpeedSpDevelop)) - .Add(15, nameof(TelemetryDataSaubDto.Pressure)) - .Add(16, nameof(TelemetryDataSaubDto.PressureIdle)) - .Add(17, nameof(TelemetryDataSaubDto.PressureSp)) - .Add(18, nameof(TelemetryDataSaubDto.PressureSpRotor)) - .Add(19, nameof(TelemetryDataSaubDto.PressureSpSlide)) - .Add(20, nameof(TelemetryDataSaubDto.PressureSpDevelop)) - .Add(21, nameof(TelemetryDataSaubDto.PressureDeltaLimitMax)) - .Add(22, nameof(TelemetryDataSaubDto.AxialLoad)) - .Add(23, nameof(TelemetryDataSaubDto.AxialLoadSp)) - .Add(24, nameof(TelemetryDataSaubDto.AxialLoadLimitMax)) - .Add(25, nameof(TelemetryDataSaubDto.HookWeight)) - .Add(26, nameof(TelemetryDataSaubDto.HookWeightIdle)) - .Add(27, nameof(TelemetryDataSaubDto.HookWeightLimitMin)) - .Add(28, nameof(TelemetryDataSaubDto.HookWeightLimitMax)) - .Add(29, nameof(TelemetryDataSaubDto.RotorTorque)) - .Add(30, nameof(TelemetryDataSaubDto.RotorTorqueIdle)) - .Add(31, nameof(TelemetryDataSaubDto.RotorTorqueSp)) - .Add(32, nameof(TelemetryDataSaubDto.RotorTorqueLimitMax)) - .Add(33, nameof(TelemetryDataSaubDto.RotorSpeed)) - .Add(34, nameof(TelemetryDataSaubDto.Flow)) - .Add(35, nameof(TelemetryDataSaubDto.FlowIdle)) - .Add(36, nameof(TelemetryDataSaubDto.FlowDeltaLimitMax)) - .Add(37, nameof(TelemetryDataSaubDto.IdFeedRegulator)) - .Add(38, nameof(TelemetryDataSaubDto.MseState)) - .Add(39, nameof(TelemetryDataSaubDto.Mse)) - .Add(40, nameof(TelemetryDataSaubDto.Pump0Flow)) - .Add(41, nameof(TelemetryDataSaubDto.Pump1Flow)) - .Add(42, nameof(TelemetryDataSaubDto.Pump2Flow)); + EnsureRegisteredDataSpin(); + EnsureRegisteredDataSaub(); + EnsureRegisteredWITS(); + EnsureRegisteredWirelineRunOutBaseDto(); + EnsureRegisteredWirelineRunOutDto(); } } + + private static void EnsureRegisteredWirelineRunOutBaseDto() + { + var type = typeof(TelemetryWirelineRunOutBaseDto); + if (RuntimeTypeModel.Default.IsDefined(type)) + return; + RuntimeTypeModel.Default.Add(type, false) + .Add(1, nameof(TelemetryWirelineRunOutBaseDto.DateTime)) + .Add(2, nameof(TelemetryWirelineRunOutBaseDto.Hauling)) + .Add(3, nameof(TelemetryWirelineRunOutBaseDto.HaulingWarnSp)) + .Add(4, nameof(TelemetryWirelineRunOutBaseDto.Replace)) + .Add(5, nameof(TelemetryWirelineRunOutBaseDto.ReplaceWarnSp)); + } + + private static void EnsureRegisteredWirelineRunOutDto() + { + var type = typeof(TelemetryWirelineRunOutDto); + if (RuntimeTypeModel.Default.IsDefined(type)) + return; + RuntimeTypeModel.Default.Add(type, false) + .Add(1, nameof(TelemetryWirelineRunOutDto.DateTime)) + .Add(2, nameof(TelemetryWirelineRunOutDto.Hauling)) + .Add(3, nameof(TelemetryWirelineRunOutDto.HaulingWarnSp)) + .Add(4, nameof(TelemetryWirelineRunOutDto.Replace)) + .Add(5, nameof(TelemetryWirelineRunOutDto.ReplaceWarnSp)); + } + + private static void EnsureRegisteredWITS() + { + EnsureRegisteredRecord1(); + EnsureRegisteredRecord7(); + EnsureRegisteredRecord8(); + EnsureRegisteredRecord50(); + EnsureRegisteredRecord60(); + EnsureRegisteredRecord61(); + } + + private static void EnsureRegisteredRecord1() + { + var type = typeof(AsbCloudApp.Data.WITS.Record1Dto); + if (RuntimeTypeModel.Default.IsDefined(type)) + return; + var i = 1; + RuntimeTypeModel.Default.Add(type, false) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Id)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.IdTelemetry)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.DateTime)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.TimeStamp)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Wellid)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Stknum)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Recid)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Seqid)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Date_)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Time)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Actcod)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Deptbitm)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Deptbitv)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Deptmeas)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Deptvert)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Blkpos)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Ropa)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Hkla)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Hklx)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Woba)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Wobx)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Torqa)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Torqx)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Rpma)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Sppa)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Chkp)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Spm1)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Spm2)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Spm3)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Tvolact)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Tvolcact)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Mfop)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Mfoa)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Mfia)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Mdoa)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Mdia)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Mtoa)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Mtia)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Mcoa)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Mcia)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Stkc)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Lagstks)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Deptretm)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Gasa)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Spare1)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Spare2)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Spare3)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Spare4)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record1Dto.Spare5)) + ; + } + + private static void EnsureRegisteredRecord7() + { + var type = typeof(AsbCloudApp.Data.WITS.Record7Dto); + if (RuntimeTypeModel.Default.IsDefined(type)) + return; + var i = 1; + RuntimeTypeModel.Default.Add(type, false) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Id)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.IdTelemetry)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.DateTime)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.TimeStamp)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Wellid)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Stknum)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Recid)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Seqid)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Date_)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Time)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Actcod)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Deptsvym)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Deptsvyv)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Passnum)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Deptmeas)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Svytype)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Svyinc)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Svyazu)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Svyazc)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Svymtf)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Svygtf)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Svyns)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Svyew)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Svydls)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Svywalk)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Spare1)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Spare2)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Spare3)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Spare4)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record7Dto.Spare5)) + ; + } + + private static void EnsureRegisteredRecord8() + { + var type = typeof(AsbCloudApp.Data.WITS.Record8Dto); + if (RuntimeTypeModel.Default.IsDefined(type)) + return; + var i = 1; + RuntimeTypeModel.Default.Add(type, false) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Id)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.IdTelemetry)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.DateTime)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.TimeStamp)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Wellid)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Stknum)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Recid)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Seqid)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Date_)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Time)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Actcod)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Deptmeas)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Deptvert)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Deptbitm)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Deptbitv)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Passnum)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Deptrs1m)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Deptrs1v)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Mr1)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Mr1c)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Deptrs2m)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Deptrs2v)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Mr2)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Mr2c)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Deptgr1m)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Deptgr1v)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Mg1)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Mg1c)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Deptgr2m)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Deptgr2v)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Mg2)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Mg2c)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Deptp1m)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Deptp1v)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Mpo1)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Deptp2m)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Deptp2v)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Mpo2)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Mftann)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Mftpipe)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Mfrann)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Mfrpipe)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Deptfdm)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Deptfdv)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Mfd)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Deptcalm)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Deptcalv)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Mclp)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Mfpp)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Mffp)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Spare1)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Spare2)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Spare3)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Spare4)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Spare5)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Spare6)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Spare7)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Spare8)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record8Dto.Spare9)) + ; + } + + private static void EnsureRegisteredRecord60() + { + var type = typeof(AsbCloudApp.Data.WITS.Record60Dto); + if (RuntimeTypeModel.Default.IsDefined(type)) + return; + var i = 1; + RuntimeTypeModel.Default.Add(type, false) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record60Dto.Id)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record60Dto.IdTelemetry)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record60Dto.DateTime)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record60Dto.TimeStamp)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record60Dto.Deptbitm)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record60Dto.Deptmeas)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record60Dto.Gtot)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record60Dto.Gx)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record60Dto.Gy)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record60Dto.Gz)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record60Dto.Btot)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record60Dto.Bx)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record60Dto.By)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record60Dto.Bz)) + ; + } + + private static void EnsureRegisteredRecord61() + { + var type = typeof(AsbCloudApp.Data.WITS.Record61Dto); + if (RuntimeTypeModel.Default.IsDefined(type)) + return; + var i = 1; + RuntimeTypeModel.Default.Add(type, false) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record61Dto.Id)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record61Dto.IdTelemetry)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record61Dto.DateTime)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record61Dto.TimeStamp)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record61Dto.Deptbitm)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record61Dto.Deptmeas)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record61Dto.Phl1f1)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record61Dto.Phl1f2)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record61Dto.Phl2f1)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record61Dto.Phl2f2)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record61Dto.Att06h)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record61Dto.Att06l)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record61Dto.Att10h)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record61Dto.Att10l)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record61Dto.Status)) + ; + } + + private static void EnsureRegisteredRecord50() + { + var type = typeof(AsbCloudApp.Data.WITS.Record50Dto); + if (RuntimeTypeModel.Default.IsDefined(type)) + return; + var i = 1; + RuntimeTypeModel.Default.Add(type, false) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record50Dto.Id)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record50Dto.IdTelemetry)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record50Dto.DateTime)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record50Dto.TimeStamp)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record50Dto.Deptbitm)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record50Dto.DeptmeasMcrstat)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record50Dto.Mcrstat)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record50Dto.DeptmeasSlvlMc)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record50Dto.SlvlMc)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record50Dto.DeptmeasGdpMc)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record50Dto.GdpMc)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record50Dto.DeptmeasRa33f2Mc)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record50Dto.Ra33f2Mc)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record50Dto.DeptmeasRp33f2Mc)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record50Dto.Rp33f2Mc)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record50Dto.DeptmeasRa33f4Mc)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record50Dto.Ra33f4Mc)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record50Dto.DeptmeasRp33f4Mc)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record50Dto.Rp33f4Mc)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record50Dto.DeptmeasRa33Mc)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record50Dto.Ra33Mc)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record50Dto.DeptmeasRp33Mc)) + .Add(i++, nameof(AsbCloudApp.Data.WITS.Record50Dto.Rp33Mc)) + ; + } + + static void EnsureRegisteredDataSpin() + { + var type = typeof(TelemetryDataSpinDto); + if (RuntimeTypeModel.Default.IsDefined(type)) + return; + RuntimeTypeModel.Default.Add(type, false) + .Add(1, nameof(TelemetryDataSpinDto.IdTelemetry)) + .Add(2, nameof(TelemetryDataSpinDto.DateTime)) + .Add(35, nameof(TelemetryDataSpinDto.Mode)) + .Add(43, nameof(TelemetryDataSpinDto.RevolsRightLimit)) + .Add(44, nameof(TelemetryDataSpinDto.RevolsLeftLimit)) + .Add(45, nameof(TelemetryDataSpinDto.SpeedRightSp)) + .Add(46, nameof(TelemetryDataSpinDto.SpeedLeftSp)) + .Add(47, nameof(TelemetryDataSpinDto.RevolsRightTotal)) + .Add(48, nameof(TelemetryDataSpinDto.RevolsLeftTotal)) + .Add(57, nameof(TelemetryDataSpinDto.PositionZero)) + .Add(58, nameof(TelemetryDataSpinDto.PositionRight)) + .Add(64, nameof(TelemetryDataSpinDto.State)); + } + + static void EnsureRegisteredDataSaub() + { + var type = typeof(TelemetryDataSaubDto); + if (RuntimeTypeModel.Default.IsDefined(type)) + return; + RuntimeTypeModel.Default.Add(type, false) + .Add(1, nameof(TelemetryDataSaubDto.IdTelemetry)) + .Add(2, nameof(TelemetryDataSaubDto.DateTime)) + .Add(3, nameof(TelemetryDataSaubDto.Mode)) + .Add(4, nameof(TelemetryDataSaubDto.User)) + .Add(5, nameof(TelemetryDataSaubDto.WellDepth)) + .Add(6, nameof(TelemetryDataSaubDto.BitDepth)) + .Add(7, nameof(TelemetryDataSaubDto.BlockPosition)) + .Add(8, nameof(TelemetryDataSaubDto.BlockPositionMin)) + .Add(9, nameof(TelemetryDataSaubDto.BlockPositionMax)) + .Add(10, nameof(TelemetryDataSaubDto.BlockSpeed)) + .Add(11, nameof(TelemetryDataSaubDto.BlockSpeedSp)) + .Add(12, nameof(TelemetryDataSaubDto.BlockSpeedSpRotor)) + .Add(13, nameof(TelemetryDataSaubDto.BlockSpeedSpSlide)) + .Add(14, nameof(TelemetryDataSaubDto.BlockSpeedSpDevelop)) + .Add(15, nameof(TelemetryDataSaubDto.Pressure)) + .Add(16, nameof(TelemetryDataSaubDto.PressureIdle)) + .Add(17, nameof(TelemetryDataSaubDto.PressureSp)) + .Add(18, nameof(TelemetryDataSaubDto.PressureSpRotor)) + .Add(19, nameof(TelemetryDataSaubDto.PressureSpSlide)) + .Add(20, nameof(TelemetryDataSaubDto.PressureSpDevelop)) + .Add(21, nameof(TelemetryDataSaubDto.PressureDeltaLimitMax)) + .Add(22, nameof(TelemetryDataSaubDto.AxialLoad)) + .Add(23, nameof(TelemetryDataSaubDto.AxialLoadSp)) + .Add(24, nameof(TelemetryDataSaubDto.AxialLoadLimitMax)) + .Add(25, nameof(TelemetryDataSaubDto.HookWeight)) + .Add(26, nameof(TelemetryDataSaubDto.HookWeightIdle)) + .Add(27, nameof(TelemetryDataSaubDto.HookWeightLimitMin)) + .Add(28, nameof(TelemetryDataSaubDto.HookWeightLimitMax)) + .Add(29, nameof(TelemetryDataSaubDto.RotorTorque)) + .Add(30, nameof(TelemetryDataSaubDto.RotorTorqueIdle)) + .Add(31, nameof(TelemetryDataSaubDto.RotorTorqueSp)) + .Add(32, nameof(TelemetryDataSaubDto.RotorTorqueLimitMax)) + .Add(33, nameof(TelemetryDataSaubDto.RotorSpeed)) + .Add(34, nameof(TelemetryDataSaubDto.Flow)) + .Add(35, nameof(TelemetryDataSaubDto.FlowIdle)) + .Add(36, nameof(TelemetryDataSaubDto.FlowDeltaLimitMax)) + .Add(37, nameof(TelemetryDataSaubDto.IdFeedRegulator)) + .Add(38, nameof(TelemetryDataSaubDto.MseState)) + .Add(39, nameof(TelemetryDataSaubDto.Mse)) + .Add(40, nameof(TelemetryDataSaubDto.Pump0Flow)) + .Add(41, nameof(TelemetryDataSaubDto.Pump1Flow)) + .Add(42, nameof(TelemetryDataSaubDto.Pump2Flow)); + } } diff --git a/AsbCloudWebApi/Rest/DrillTest.http b/AsbCloudWebApi/Rest/DrillTest.http index a5348ead..73fb6c7b 100644 --- a/AsbCloudWebApi/Rest/DrillTest.http +++ b/AsbCloudWebApi/Rest/DrillTest.http @@ -7,7 +7,7 @@ @id = 1 @idWell = 55 -### drill test +### получение данных drill test с панели и сохранение их в ЕЦП POST {{baseUrl}}/api/telemetry/{{uid}}/DrillTest Content-Type: {{contentType}} accept: */* @@ -29,13 +29,13 @@ accept: */* } -### drill test +### Получение списка файлов drill test отчётов GET {{baseUrl}}/api/well/{{idWell}}/DrillTest/all Content-Type: {{contentType}} accept: */* Authorization: {{auth}} -### drill test +### Генерация файла с drill test отчётом GET {{baseUrl}}/api/well/{{idWell}}/DrillTest?id={{id}} Content-Type: {{contentTypeForFiles}} accept: */* diff --git a/AsbCloudWebApi/Rest/Readme.md b/AsbCloudWebApi/Rest/Readme.md index 92f52c05..c7a5e45b 100644 --- a/AsbCloudWebApi/Rest/Readme.md +++ b/AsbCloudWebApi/Rest/Readme.md @@ -1,7 +1,7 @@ -# / web-api. +# Эта папка предназначена для хранения файлов для отладки/проверки web-api. - *.http ( *.rest) endpoint api swagger ( postman). +Файлы *.http (или *.rest) позволяют вызывать endpoint api без swagger (или postman). -[ ](https://marketplace.visualstudio.com/items?itemName=humao.rest-client) +[Документация по созданию файлов](https://marketplace.visualstudio.com/items?itemName=humao.rest-client) - 1 1 . +Желательно создавать 1 файл на 1 контроллер. diff --git a/AsbCloudWebApi/Rest/WellContact.http b/AsbCloudWebApi/Rest/WellContact.http index fb45cf3f..f439dadf 100644 --- a/AsbCloudWebApi/Rest/WellContact.http +++ b/AsbCloudWebApi/Rest/WellContact.http @@ -7,25 +7,25 @@ @idWell = 1 @contactTypeId = 1 -### +### получение списка типов контактов GET {{baseUrl}}/api/well/{{idWell}}/WellContact/type Content-Type: {{contentType}} accept: */* Authorization: {{auth}} -### +### Получение контактов по типу контакта и ключу скважины GET {{baseUrl}}/api/well/{{idWell}}/WellContact/type/{{contactTypeId}} Content-Type: {{contentType}} accept: */* Authorization: {{auth}} -### +### Получение контакта по ключу GET {{baseUrl}}/api/well/{{idWell}}/WellContact/{{id}} Content-Type: {{contentType}} accept: */* Authorization: {{auth}} -### +### добавление нового контакта POST {{baseUrl}}/api/well/{{idWell}}/WellContact Content-Type: {{contentType}} accept: */* @@ -38,11 +38,11 @@ Authorization: {{auth}} "FullName": "batman", "Email": "aa@aa.aa", "Phone": "80000000000", - "Position": "", - "Company": " " + "Position": "Повар", + "Company": "Мишлен лтд" } -### +### изменение контакта PUT {{baseUrl}}/api/well/{{idWell}}/WellContact Content-Type: {{contentType}} accept: */* @@ -52,14 +52,14 @@ Authorization: {{auth}} "id" : 2, "IdCompanyType" : 1, "IdWell": 1, - "FullName": " ", + "FullName": "Бэтман Суперменович", "Email": "bb@bb.bb", "Phone": "80000000001", - "Position": "", - "Company": " " + "Position": "Повар", + "Company": "Мишлен лтд" } -### +### Удаление контакта DELETE {{baseUrl}}/api/well/{{idWell}}/WellContact/{{id}} Content-Type: {{contentType}} accept: */* diff --git a/AsbCloudWebApi/SignalR/BaseHub.cs b/AsbCloudWebApi/SignalR/BaseHub.cs index 28de8ab5..9134ce64 100644 --- a/AsbCloudWebApi/SignalR/BaseHub.cs +++ b/AsbCloudWebApi/SignalR/BaseHub.cs @@ -6,9 +6,9 @@ namespace AsbCloudWebApi.SignalR; public abstract class BaseHub : Hub where T : class { - public virtual Task AddToGroup(string groupName) => - Groups.AddToGroupAsync(Context.ConnectionId, groupName); + public virtual Task AddToGroup(string groupName) => + Groups.AddToGroupAsync(Context.ConnectionId, groupName); - public virtual Task RemoveFromGroup(string groupName) => - Groups.RemoveFromGroupAsync(Context.ConnectionId, groupName); + public virtual Task RemoveFromGroup(string groupName) => + Groups.RemoveFromGroupAsync(Context.ConnectionId, groupName); } diff --git a/AsbCloudWebApi/SignalR/Clients/INotificationHubClient.cs b/AsbCloudWebApi/SignalR/Clients/INotificationHubClient.cs index 09c36851..c4cf6500 100644 --- a/AsbCloudWebApi/SignalR/Clients/INotificationHubClient.cs +++ b/AsbCloudWebApi/SignalR/Clients/INotificationHubClient.cs @@ -1,4 +1,4 @@ -using AsbCloudWebApi.SignalR.Messages; +using AsbCloudWebApi.SignalR.Messages; using SignalRSwaggerGen.Attributes; using System.Threading; using System.Threading.Tasks; diff --git a/AsbCloudWebApi/SignalR/Clients/IReportHubClient.cs b/AsbCloudWebApi/SignalR/Clients/IReportHubClient.cs index dde7da3f..d5b5b58b 100644 --- a/AsbCloudWebApi/SignalR/Clients/IReportHubClient.cs +++ b/AsbCloudWebApi/SignalR/Clients/IReportHubClient.cs @@ -1,4 +1,4 @@ -using SignalRSwaggerGen.Attributes; +using SignalRSwaggerGen.Attributes; using System.Threading; using System.Threading.Tasks; diff --git a/AsbCloudWebApi/SignalR/Clients/ITelemetryHubClient.cs b/AsbCloudWebApi/SignalR/Clients/ITelemetryHubClient.cs index 5e8869cf..0c2e7642 100644 --- a/AsbCloudWebApi/SignalR/Clients/ITelemetryHubClient.cs +++ b/AsbCloudWebApi/SignalR/Clients/ITelemetryHubClient.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.SAUB; +using AsbCloudApp.Data.SAUB; using SignalRSwaggerGen.Attributes; using System.Collections; using System.Collections.Generic; diff --git a/AsbCloudWebApi/SignalR/Clients/IWellInfoHubClient.cs b/AsbCloudWebApi/SignalR/Clients/IWellInfoHubClient.cs index 110143ed..5f5b42e9 100644 --- a/AsbCloudWebApi/SignalR/Clients/IWellInfoHubClient.cs +++ b/AsbCloudWebApi/SignalR/Clients/IWellInfoHubClient.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data; +using AsbCloudApp.Data; using SignalRSwaggerGen.Attributes; using System.Threading; using System.Threading.Tasks; diff --git a/AsbCloudWebApi/SignalR/Messages/NotificationMessage.cs b/AsbCloudWebApi/SignalR/Messages/NotificationMessage.cs index 66efaee0..973ad436 100644 --- a/AsbCloudWebApi/SignalR/Messages/NotificationMessage.cs +++ b/AsbCloudWebApi/SignalR/Messages/NotificationMessage.cs @@ -5,7 +5,7 @@ namespace AsbCloudWebApi.SignalR.Messages; public class NotificationMessage { - public IEnumerable? Notifications { get; set; } - - public int CountUnread { get; set; } + public IEnumerable? Notifications { get; set; } + + public int CountUnread { get; set; } } \ No newline at end of file diff --git a/AsbCloudWebApi/SignalR/NotificationHub.cs b/AsbCloudWebApi/SignalR/NotificationHub.cs index 4deea974..7b6aef9d 100644 --- a/AsbCloudWebApi/SignalR/NotificationHub.cs +++ b/AsbCloudWebApi/SignalR/NotificationHub.cs @@ -12,46 +12,46 @@ namespace AsbCloudWebApi.SignalR; [Authorize] public class NotificationHub : BaseHub { - private readonly ConnectionManagerService connectionManagerService; - private readonly NotificationService notificationService; - private readonly NotificationPublisher notificationPublisher; + private readonly ConnectionManagerService connectionManagerService; + private readonly NotificationService notificationService; + private readonly NotificationPublisher notificationPublisher; - public NotificationHub(ConnectionManagerService connectionManagerService, - NotificationService notificationService, - NotificationPublisher notificationPublisher) - { - this.connectionManagerService = connectionManagerService; - this.notificationService = notificationService; - this.notificationPublisher = notificationPublisher; - } + public NotificationHub(ConnectionManagerService connectionManagerService, + NotificationService notificationService, + NotificationPublisher notificationPublisher) + { + this.connectionManagerService = connectionManagerService; + this.notificationService = notificationService; + this.notificationPublisher = notificationPublisher; + } - public override async Task OnConnectedAsync() - { - var idUser = Context.User?.GetUserId(); + public override async Task OnConnectedAsync() + { + var idUser = Context.User?.GetUserId(); - if (!idUser.HasValue) - return; + if (!idUser.HasValue) + return; - string connectionId = Context.ConnectionId; + string connectionId = Context.ConnectionId; - connectionManagerService.AddOrUpdateConnection(idUser.Value, connectionId); + connectionManagerService.AddOrUpdateConnection(idUser.Value, connectionId); - await base.OnConnectedAsync(); + await base.OnConnectedAsync(); - await notificationPublisher.PublishCountUnreadAsync(idUser.Value, CancellationToken.None); + await notificationPublisher.PublishCountUnreadAsync(idUser.Value, CancellationToken.None); - await notificationService.RenotifyAsync(idUser.Value, - CancellationToken.None); - } + await notificationService.RenotifyAsync(idUser.Value, + CancellationToken.None); + } - public override async Task OnDisconnectedAsync(Exception? exception) - { - var idUser = Context.User?.GetUserId(); + public override async Task OnDisconnectedAsync(Exception? exception) + { + var idUser = Context.User?.GetUserId(); - if (!idUser.HasValue) - return; - - connectionManagerService.RemoveConnection(idUser.Value); - await base.OnDisconnectedAsync(exception); - } + if (!idUser.HasValue) + return; + + connectionManagerService.RemoveConnection(idUser.Value); + await base.OnDisconnectedAsync(exception); + } } \ No newline at end of file diff --git a/AsbCloudWebApi/SignalR/ReportsHub.cs b/AsbCloudWebApi/SignalR/ReportsHub.cs index 2bf098f8..f9972f36 100644 --- a/AsbCloudWebApi/SignalR/ReportsHub.cs +++ b/AsbCloudWebApi/SignalR/ReportsHub.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Requests; +using AsbCloudApp.Requests; using AsbCloudApp.Services; using AsbCloudInfrastructure.Background; using AsbCloudWebApi.SignalR.Clients; diff --git a/AsbCloudWebApi/SignalR/Services/ConnectionManagerService.cs b/AsbCloudWebApi/SignalR/Services/ConnectionManagerService.cs index b85700c3..f451e2d7 100644 --- a/AsbCloudWebApi/SignalR/Services/ConnectionManagerService.cs +++ b/AsbCloudWebApi/SignalR/Services/ConnectionManagerService.cs @@ -4,22 +4,22 @@ namespace AsbCloudWebApi.SignalR.Services; public class ConnectionManagerService { - private readonly ConcurrentDictionary connections = new(); + private readonly ConcurrentDictionary connections = new(); - public void AddOrUpdateConnection(int userId, string connectionId) - { - connections.AddOrUpdate(userId, connectionId, - (key, existingConnectionId) => connectionId); - } + public void AddOrUpdateConnection(int userId, string connectionId) + { + connections.AddOrUpdate(userId, connectionId, + (key, existingConnectionId) => connectionId); + } - public void RemoveConnection(int userId) - { - connections.TryRemove(userId, out _); - } + public void RemoveConnection(int userId) + { + connections.TryRemove(userId, out _); + } - public string? GetConnectionIdByUserId(int userId) - { - connections.TryGetValue(userId, out var connectionId); - return connectionId; - } + public string? GetConnectionIdByUserId(int userId) + { + connections.TryGetValue(userId, out var connectionId); + return connectionId; + } } \ No newline at end of file diff --git a/AsbCloudWebApi/SignalR/Services/NotificationPublisher.cs b/AsbCloudWebApi/SignalR/Services/NotificationPublisher.cs index 05c93a29..6316dff9 100644 --- a/AsbCloudWebApi/SignalR/Services/NotificationPublisher.cs +++ b/AsbCloudWebApi/SignalR/Services/NotificationPublisher.cs @@ -12,65 +12,65 @@ namespace AsbCloudWebApi.SignalR.Services; public class NotificationPublisher { - private readonly ConnectionManagerService connectionManagerService; - private readonly IHubContext notificationHubContext; - private readonly INotificationRepository notificationRepository; + private readonly ConnectionManagerService connectionManagerService; + private readonly IHubContext notificationHubContext; + private readonly INotificationRepository notificationRepository; - public NotificationPublisher(ConnectionManagerService connectionManagerService, - IHubContext notificationHubContext, - INotificationRepository notificationRepository) - { - this.connectionManagerService = connectionManagerService; - this.notificationHubContext = notificationHubContext; - this.notificationRepository = notificationRepository; - } + public NotificationPublisher(ConnectionManagerService connectionManagerService, + IHubContext notificationHubContext, + INotificationRepository notificationRepository) + { + this.connectionManagerService = connectionManagerService; + this.notificationHubContext = notificationHubContext; + this.notificationRepository = notificationRepository; + } - public async Task PublishAsync(IGrouping groupedNotifications, CancellationToken cancellationToken) - { - const int idTransportType = 0; - - var connectionId = connectionManagerService.GetConnectionIdByUserId(groupedNotifications.Key); + public async Task PublishAsync(IGrouping groupedNotifications, CancellationToken cancellationToken) + { + const int idTransportType = 0; + + var connectionId = connectionManagerService.GetConnectionIdByUserId(groupedNotifications.Key); - if (!string.IsNullOrWhiteSpace(connectionId)) - { - foreach (var notification in groupedNotifications) - { - notification.SentDate = DateTimeOffset.UtcNow; - } + if (!string.IsNullOrWhiteSpace(connectionId)) + { + foreach (var notification in groupedNotifications) + { + notification.SentDate = DateTimeOffset.UtcNow; + } - var notifications = groupedNotifications.Select(n => n); - - await notificationRepository.UpdateRangeAsync(notifications, - cancellationToken); - - await PublishMessageAsync(connectionId, new NotificationMessage - { - Notifications = notifications, - CountUnread = await notificationRepository.GetUnreadCountAsync(groupedNotifications.Key, - idTransportType, - cancellationToken) - }, cancellationToken); - } - } + var notifications = groupedNotifications.Select(n => n); + + await notificationRepository.UpdateRangeAsync(notifications, + cancellationToken); + + await PublishMessageAsync(connectionId, new NotificationMessage + { + Notifications = notifications, + CountUnread = await notificationRepository.GetUnreadCountAsync(groupedNotifications.Key, + idTransportType, + cancellationToken) + }, cancellationToken); + } + } - public async Task PublishCountUnreadAsync(int idUser, CancellationToken cancellationToken) - { - var connectionId = connectionManagerService.GetConnectionIdByUserId(idUser); + public async Task PublishCountUnreadAsync(int idUser, CancellationToken cancellationToken) + { + var connectionId = connectionManagerService.GetConnectionIdByUserId(idUser); - if (!string.IsNullOrWhiteSpace(connectionId)) - { - await PublishMessageAsync(connectionId, new NotificationMessage - { - CountUnread = await notificationRepository.GetUnreadCountAsync(idUser, 0, - cancellationToken) - }, cancellationToken); - } - } + if (!string.IsNullOrWhiteSpace(connectionId)) + { + await PublishMessageAsync(connectionId, new NotificationMessage + { + CountUnread = await notificationRepository.GetUnreadCountAsync(idUser, 0, + cancellationToken) + }, cancellationToken); + } + } - private async Task PublishMessageAsync(string connectionId, NotificationMessage message, - CancellationToken cancellationToken) - { - await notificationHubContext.Clients.Client(connectionId) - .ReceiveNotifications(message, cancellationToken); - } + private async Task PublishMessageAsync(string connectionId, NotificationMessage message, + CancellationToken cancellationToken) + { + await notificationHubContext.Clients.Client(connectionId) + .ReceiveNotifications(message, cancellationToken); + } } \ No newline at end of file diff --git a/AsbCloudWebApi/SignalR/Services/SignalRNotificationTransportService.cs b/AsbCloudWebApi/SignalR/Services/SignalRNotificationTransportService.cs index 899d4ad7..98128cfd 100644 --- a/AsbCloudWebApi/SignalR/Services/SignalRNotificationTransportService.cs +++ b/AsbCloudWebApi/SignalR/Services/SignalRNotificationTransportService.cs @@ -12,45 +12,45 @@ namespace AsbCloudWebApi.SignalR.Services; public class SignalRNotificationTransportService : INotificationTransportService { - private readonly NotificationBackgroundWorker backgroundWorker; + private readonly NotificationBackgroundWorker backgroundWorker; - public SignalRNotificationTransportService(NotificationBackgroundWorker backgroundWorker) - { - this.backgroundWorker = backgroundWorker; - } + public SignalRNotificationTransportService(NotificationBackgroundWorker backgroundWorker) + { + this.backgroundWorker = backgroundWorker; + } - public int IdTransportType => 0; + public int IdTransportType => 0; - public Task SendAsync(NotificationDto notification, - CancellationToken cancellationToken) => SendRangeAsync(new[] { notification }, cancellationToken); + public Task SendAsync(NotificationDto notification, + CancellationToken cancellationToken) => SendRangeAsync(new[] { notification }, cancellationToken); - public Task SendRangeAsync(IEnumerable notifications, - CancellationToken cancellationToken) - { - var workId = HashCode.Combine(notifications.Select(n => n.Id)).ToString("x"); + public Task SendRangeAsync(IEnumerable notifications, + CancellationToken cancellationToken) + { + var workId = HashCode.Combine(notifications.Select(n => n.Id)).ToString("x"); - if (backgroundWorker.Works.Any(w => w.Id == workId)) - return Task.CompletedTask; + if (backgroundWorker.Works.Any(w => w.Id == workId)) + return Task.CompletedTask; - var workAction = MakeSignalRSendWorkAction(notifications); - var work = Work.CreateByDelegate(workId, workAction); - backgroundWorker.Enqueue(work); + var workAction = MakeSignalRSendWorkAction(notifications); + var work = Work.CreateByDelegate(workId, workAction); + backgroundWorker.Enqueue(work); - return Task.CompletedTask; - } + return Task.CompletedTask; + } - private Func, CancellationToken, Task> MakeSignalRSendWorkAction(IEnumerable notifications) - { - return async (_, serviceProvider, onProgress, cancellationToken) => - { - var notificationPublisher = serviceProvider.GetRequiredService(); + private Func, CancellationToken, Task> MakeSignalRSendWorkAction(IEnumerable notifications) + { + return async (_, serviceProvider, onProgress, cancellationToken) => + { + var notificationPublisher = serviceProvider.GetRequiredService(); - var groupedNotificationsByUsers = notifications.GroupBy(n => n.IdUser); - - foreach (var groupedNotificationByUser in groupedNotificationsByUsers) - { - await notificationPublisher.PublishAsync(groupedNotificationByUser, cancellationToken); - } - }; - } + var groupedNotificationsByUsers = notifications.GroupBy(n => n.IdUser); + + foreach (var groupedNotificationByUser in groupedNotificationsByUsers) + { + await notificationPublisher.PublishAsync(groupedNotificationByUser, cancellationToken); + } + }; + } } \ No newline at end of file diff --git a/AsbCloudWebApi/SignalR/TelemetryHub.cs b/AsbCloudWebApi/SignalR/TelemetryHub.cs index 69b6c628..df4cab22 100644 --- a/AsbCloudWebApi/SignalR/TelemetryHub.cs +++ b/AsbCloudWebApi/SignalR/TelemetryHub.cs @@ -1,4 +1,4 @@ -using AsbCloudWebApi.SignalR.Clients; +using AsbCloudWebApi.SignalR.Clients; using Microsoft.AspNetCore.Authorization; namespace AsbCloudWebApi.SignalR diff --git a/AsbCloudWebApi/SignalR/WellInfoHub.cs b/AsbCloudWebApi/SignalR/WellInfoHub.cs index 553923fd..b3dc3b2c 100644 --- a/AsbCloudWebApi/SignalR/WellInfoHub.cs +++ b/AsbCloudWebApi/SignalR/WellInfoHub.cs @@ -11,42 +11,42 @@ namespace AsbCloudWebApi.SignalR; public class WellInfoHub : BaseHub, IIntegrationEventHandler { - private readonly IHubContext hubContext; - private readonly IWellService wellService; - private readonly WellInfoService wellInfoService; + private readonly IHubContext hubContext; + private readonly IWellService wellService; + private readonly WellInfoService wellInfoService; - public WellInfoHub(IHubContext hubContext, - IWellService wellService, - WellInfoService wellInfoService) - { - this.hubContext = hubContext; - this.wellService = wellService; - this.wellInfoService = wellInfoService; - } + public WellInfoHub(IHubContext hubContext, + IWellService wellService, + WellInfoService wellInfoService) + { + this.hubContext = hubContext; + this.wellService = wellService; + this.wellInfoService = wellInfoService; + } - public override async Task AddToGroup(string groupName) - { - var idWell = int.Parse(groupName.Split('_')[2]); - - await Groups.AddToGroupAsync(Context.ConnectionId, groupName); + public override async Task AddToGroup(string groupName) + { + var idWell = int.Parse(groupName.Split('_')[2]); + + await Groups.AddToGroupAsync(Context.ConnectionId, groupName); - await HandleAsync(new UpdateWellInfoEvent(idWell), CancellationToken.None); - } + await HandleAsync(new UpdateWellInfoEvent(idWell), CancellationToken.None); + } - public async Task HandleAsync(UpdateWellInfoEvent integrationEvent, CancellationToken cancellationToken) - { - var well = await wellService.GetOrDefaultAsync(integrationEvent.IdWell, cancellationToken); + public async Task HandleAsync(UpdateWellInfoEvent integrationEvent, CancellationToken cancellationToken) + { + var well = await wellService.GetOrDefaultAsync(integrationEvent.IdWell, cancellationToken); - if(well is null) - return; - - var wellInfo = wellInfoService.FirstOrDefault(w => w.Id == well.Id); + if(well is null) + return; + + var wellInfo = wellInfoService.FirstOrDefault(w => w.Id == well.Id); - await hubContext.Clients.Group($"well_info_{integrationEvent.IdWell}") - .UpdateWellInfo(new - { - Well = well, - WellInfo = wellInfo - }, cancellationToken); - } + await hubContext.Clients.Group($"well_info_{integrationEvent.IdWell}") + .UpdateWellInfo(new + { + Well = well, + WellInfo = wellInfo + }, cancellationToken); + } } \ No newline at end of file diff --git a/AsbCloudWebApi/Startup.cs b/AsbCloudWebApi/Startup.cs index c39dc43e..b4830fb9 100644 --- a/AsbCloudWebApi/Startup.cs +++ b/AsbCloudWebApi/Startup.cs @@ -38,7 +38,7 @@ namespace AsbCloudWebApi services.AddControllers(options => options.UseDateOnlyTimeOnlyStringConverters()); - ProtobufModel.EnshureRegistered(); + ProtobufModel.EnsureRegistered(); services.AddSwagger(); diff --git a/SignalRTestClient/Program.cs b/SignalRTestClient/Program.cs index aa61b859..2e68f6a3 100644 --- a/SignalRTestClient/Program.cs +++ b/SignalRTestClient/Program.cs @@ -1,4 +1,4 @@ -using Microsoft.AspNetCore.SignalR.Client; +using Microsoft.AspNetCore.SignalR.Client; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; diff --git a/SignalRTestClient/SignalRTestClient.csproj b/SignalRTestClient/SignalRTestClient.csproj index 5af7effc..f6afeb3c 100644 --- a/SignalRTestClient/SignalRTestClient.csproj +++ b/SignalRTestClient/SignalRTestClient.csproj @@ -8,7 +8,7 @@ - +