From c5aef20dc02c6307beaaadc2fa93ff0191107b4c Mon Sep 17 00:00:00 2001
From: "ai.astrakhantsev" <ai.astrakhantsev@digitaldrilling.ru>
Date: Fri, 18 Nov 2022 14:29:29 +0500
Subject: [PATCH] =?UTF-8?q?#7887519=20=D0=A1=D1=82=D0=B0=D1=82=D0=B8=D1=81?=
 =?UTF-8?q?=D1=82=D0=B8=D0=BA=D0=B0=20=D0=BF=D0=BE=20=D0=BE=D0=B3=D1=80?=
 =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D1=87=D0=B8=D0=B2=D0=B0=D1=8E=D1=89=D0=B8?=
 =?UTF-8?q?=D0=BC=20=D0=BF=D0=B0=D1=80=D0=B0=D0=BC=D0=B5=D1=82=D1=80=D0=B0?=
 =?UTF-8?q?=D0=BC=20backend?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 AsbCloudApp/Data/LimitingParameterDto.cs      |   37 +
 .../ILimitingParameterRepository.cs           |   25 +
 .../Requests/LimitingParameterRequest.cs      |   41 +
 .../Requests/SubsystemOperationTimeRequest.cs |    3 -
 .../Services/ILimitingParameterService.cs     |   24 +
 ..._AddTable_t_limiting_parameter.Designer.cs | 6596 +++++++++++++++++
 ...109104346_AddTable_t_limiting_parameter.cs |   50 +
 .../AsbCloudDbContextModelSnapshot.cs         |   53 +
 AsbCloudDb/Model/AsbCloudDbContext.cs         |    1 +
 AsbCloudDb/Model/IAsbCloudDbContext.cs        |    1 +
 AsbCloudDb/Model/LimitingParameter.cs         |   57 +
 AsbCloudInfrastructure/DependencyInjection.cs |    3 +
 .../Repository/LimitingParameterRepository.cs |  122 +
 .../LimitingParameterBackgroundService.cs     |  178 +
 .../Services/LimitingParameterService.cs      |   35 +
 .../LimitingParameterController.cs            |   50 +
 16 files changed, 7273 insertions(+), 3 deletions(-)
 create mode 100644 AsbCloudApp/Data/LimitingParameterDto.cs
 create mode 100644 AsbCloudApp/Repositories/ILimitingParameterRepository.cs
 create mode 100644 AsbCloudApp/Requests/LimitingParameterRequest.cs
 create mode 100644 AsbCloudApp/Services/ILimitingParameterService.cs
 create mode 100644 AsbCloudDb/Migrations/20221109104346_AddTable_t_limiting_parameter.Designer.cs
 create mode 100644 AsbCloudDb/Migrations/20221109104346_AddTable_t_limiting_parameter.cs
 create mode 100644 AsbCloudDb/Model/LimitingParameter.cs
 create mode 100644 AsbCloudInfrastructure/Repository/LimitingParameterRepository.cs
 create mode 100644 AsbCloudInfrastructure/Services/LimitingParameterBackgroundService.cs
 create mode 100644 AsbCloudInfrastructure/Services/LimitingParameterService.cs
 create mode 100644 AsbCloudWebApi/Controllers/LimitingParameterController.cs

diff --git a/AsbCloudApp/Data/LimitingParameterDto.cs b/AsbCloudApp/Data/LimitingParameterDto.cs
new file mode 100644
index 00000000..1eae1730
--- /dev/null
+++ b/AsbCloudApp/Data/LimitingParameterDto.cs
@@ -0,0 +1,37 @@
+using System;
+
+namespace AsbCloudApp.Data
+{
+#nullable enable
+    /// <summary>
+    /// Статистика по ограничивающим параметрам
+    /// </summary>
+    public class LimitingParameterDto
+    {
+        /// <summary>
+        /// Идентификатор скважины
+        /// </summary>
+        public int IdWell { get; set; }
+
+        /// <summary>
+        /// Время бурения
+        /// </summary>
+        public float TimeMinutes { get; set; }
+
+        /// <summary>
+        /// Глубина бурения
+        /// </summary>
+        public float Depth { get; set; }
+
+        /// <summary>
+        /// Количество включений
+        /// </summary>
+        public int NumberInclusions { get; set; }
+
+        /// <summary>
+        /// Идентификатор критерия бурения
+        /// </summary>
+        public short IdFeedRegulator { get; set; }
+    }
+#nullable disable
+}
diff --git a/AsbCloudApp/Repositories/ILimitingParameterRepository.cs b/AsbCloudApp/Repositories/ILimitingParameterRepository.cs
new file mode 100644
index 00000000..4f6a8487
--- /dev/null
+++ b/AsbCloudApp/Repositories/ILimitingParameterRepository.cs
@@ -0,0 +1,25 @@
+using AsbCloudApp.Data;
+using AsbCloudApp.Requests;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using System.Threading;
+
+namespace AsbCloudApp.Repositories
+{
+#nullable enable
+    /// <summary>
+    /// Репозиторий по ограничивающим параметрам с фильтрацией
+    /// </summary>
+    public interface ILimitingParameterRepository
+    {
+        /// <summary>
+        /// Получение информации идентификатору скважины
+        /// </summary>
+        /// <param name="request"></param>
+        /// <param name="wellDto"></param>
+        /// <param name="token"></param>
+        /// <returns></returns>
+        Task<IEnumerable<LimitingParameterDto>> GetInfosAsync(LimitingParameterRequest request, WellDto wellDto, CancellationToken token);
+    }
+#nullable disable
+}
diff --git a/AsbCloudApp/Requests/LimitingParameterRequest.cs b/AsbCloudApp/Requests/LimitingParameterRequest.cs
new file mode 100644
index 00000000..fefb006f
--- /dev/null
+++ b/AsbCloudApp/Requests/LimitingParameterRequest.cs
@@ -0,0 +1,41 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace AsbCloudApp.Requests
+{
+    /// <summary>
+    /// Класс с фильтрами для запроса по ограничивающим параметрам
+    /// </summary>
+    public class LimitingParameterRequest
+    {
+        /// <summary>
+        /// идентификатор скважины
+        /// </summary>
+        [Required]
+        public int IdWell { get; set; }
+
+        /// <summary>
+        /// Больше или равно дате
+        /// </summary>
+        public DateTime? GtDate { get; set; }
+
+        /// <summary>
+        /// Меньше или равно дате
+        /// </summary>
+        public DateTime? LtDate { get; set; }
+
+        /// <summary>
+        /// Больше или равно глубины забоя
+        /// </summary>
+        public double? GtDepth { get; set; }
+
+        /// <summary>
+        /// Меньше или равно глубины забоя
+        /// </summary>
+        public double? LtDepth { get; set; }
+    }
+}
diff --git a/AsbCloudApp/Requests/SubsystemOperationTimeRequest.cs b/AsbCloudApp/Requests/SubsystemOperationTimeRequest.cs
index 567e11cf..2b666467 100644
--- a/AsbCloudApp/Requests/SubsystemOperationTimeRequest.cs
+++ b/AsbCloudApp/Requests/SubsystemOperationTimeRequest.cs
@@ -1,9 +1,6 @@
 using System;
 using System.Collections.Generic;
 using System.ComponentModel.DataAnnotations;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
 
 namespace AsbCloudApp.Requests
 {
diff --git a/AsbCloudApp/Services/ILimitingParameterService.cs b/AsbCloudApp/Services/ILimitingParameterService.cs
new file mode 100644
index 00000000..8b1f7cc3
--- /dev/null
+++ b/AsbCloudApp/Services/ILimitingParameterService.cs
@@ -0,0 +1,24 @@
+using AsbCloudApp.Data;
+using AsbCloudApp.Requests;
+using System.Collections.Generic;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace AsbCloudApp.Services
+{
+#nullable enable
+    /// <summary>
+    /// Сервис по ограничивающим параметрам с фильтрацией
+    /// </summary>
+    public interface ILimitingParameterService
+    {
+        /// <summary>
+        /// Получение информации идентификатору скважины
+        /// </summary>
+        /// <param name="request"></param>
+        /// <param name="token"></param>
+        /// <returns></returns>
+        Task<IEnumerable<LimitingParameterDto>?> GetInfosAsync(LimitingParameterRequest request, CancellationToken token);
+    }
+#nullable disable
+}
diff --git a/AsbCloudDb/Migrations/20221109104346_AddTable_t_limiting_parameter.Designer.cs b/AsbCloudDb/Migrations/20221109104346_AddTable_t_limiting_parameter.Designer.cs
new file mode 100644
index 00000000..7fda59c5
--- /dev/null
+++ b/AsbCloudDb/Migrations/20221109104346_AddTable_t_limiting_parameter.Designer.cs
@@ -0,0 +1,6596 @@
+// <auto-generated />
+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("20221109104346_AddTable_t_limiting_parameter")]
+    partial class AddTable_t_limiting_parameter
+    {
+        protected override void BuildTargetModel(ModelBuilder modelBuilder)
+        {
+#pragma warning disable 612, 618
+            modelBuilder
+                .UseCollation("Russian_Russia.1251")
+                .HasAnnotation("ProductVersion", "6.0.7")
+                .HasAnnotation("Relational:MaxIdentifierLength", 63);
+
+            NpgsqlModelBuilderExtensions.HasPostgresExtension(modelBuilder, "adminpack");
+            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
+
+            modelBuilder.Entity("AsbCloudDb.Model.Cluster", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("Caption")
+                        .HasMaxLength(255)
+                        .HasColumnType("character varying(255)")
+                        .HasColumnName("caption")
+                        .HasComment("Название");
+
+                    b.Property<int?>("IdDeposit")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_deposit");
+
+                    b.Property<double?>("Latitude")
+                        .HasColumnType("double precision")
+                        .HasColumnName("latitude");
+
+                    b.Property<double?>("Longitude")
+                        .HasColumnType("double precision")
+                        .HasColumnName("longitude");
+
+                    b.Property<string>("Timezone")
+                        .HasColumnType("jsonb")
+                        .HasColumnName("timezone")
+                        .HasComment("Смещение часового пояса от UTC");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("IdDeposit");
+
+                    b.ToTable("t_cluster");
+
+                    b.HasComment("Кусты");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.Company", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("Caption")
+                        .HasMaxLength(255)
+                        .HasColumnType("character varying(255)")
+                        .HasColumnName("caption");
+
+                    b.Property<int>("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<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("Caption")
+                        .HasMaxLength(255)
+                        .HasColumnType("character varying(255)")
+                        .HasColumnName("caption");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("t_company_type");
+
+                    b.HasData(
+                        new
+                        {
+                            Id = 1,
+                            Caption = "Недрапользователь"
+                        },
+                        new
+                        {
+                            Id = 2,
+                            Caption = "Буровой подрядчик"
+                        },
+                        new
+                        {
+                            Id = 3,
+                            Caption = "Сервис автоматизации бурения"
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.DailyReport.DailyReport", b =>
+                {
+                    b.Property<int>("IdWell")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_well")
+                        .HasComment("ID скважины");
+
+                    b.Property<DateTimeOffset>("StartDate")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("start_date")
+                        .HasComment("Дата отчёта");
+
+                    b.Property<string>("Info")
+                        .HasColumnType("jsonb")
+                        .HasColumnName("info")
+                        .HasComment("Список параметров для отчёта");
+
+                    b.HasKey("IdWell", "StartDate")
+                        .HasName("t_id_well_date_start_pk");
+
+                    b.ToTable("t_daily_report");
+
+                    b.HasComment("Ежедневные отчёты");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.Deposit", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("Caption")
+                        .HasMaxLength(255)
+                        .HasColumnType("character varying(255)")
+                        .HasColumnName("caption");
+
+                    b.Property<double?>("Latitude")
+                        .HasColumnType("double precision")
+                        .HasColumnName("latitude");
+
+                    b.Property<double?>("Longitude")
+                        .HasColumnType("double precision")
+                        .HasColumnName("longitude");
+
+                    b.Property<string>("Timezone")
+                        .HasColumnType("jsonb")
+                        .HasColumnName("timezone")
+                        .HasComment("Смещение часового пояса от UTC");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("t_deposit");
+
+                    b.HasComment("Месторождение");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.DetectedOperation", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTimeOffset>("DateEnd")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("date_end")
+                        .HasComment("Дата начала операции");
+
+                    b.Property<DateTimeOffset>("DateStart")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("date_start")
+                        .HasComment("Дата начала операции");
+
+                    b.Property<double>("DepthEnd")
+                        .HasColumnType("double precision")
+                        .HasColumnName("depth_end")
+                        .HasComment("Глубина после завершения операции, м");
+
+                    b.Property<double>("DepthStart")
+                        .HasColumnType("double precision")
+                        .HasColumnName("depth_start")
+                        .HasComment("Глубина на начало операции, м");
+
+                    b.Property<int>("IdCategory")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_category")
+                        .HasComment("Id категории операции");
+
+                    b.Property<int>("IdReasonOfEnd")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_reason_of_end")
+                        .HasComment("Код признака окончания операции");
+
+                    b.Property<int>("IdTelemetry")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_telemetry");
+
+                    b.Property<int>("IdUsersAtStart")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_user")
+                        .HasComment("Id пользователя по телеметрии на момент начала операции");
+
+                    b.Property<double>("Value")
+                        .HasColumnType("double precision")
+                        .HasColumnName("value")
+                        .HasComment("Ключевой показатель операции");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("IdCategory");
+
+                    b.HasIndex("IdTelemetry");
+
+                    b.ToTable("t_detected_operation");
+
+                    b.HasComment("автоматически определенные операции по телеметрии");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.Driller", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id")
+                        .HasComment("Идентификатор");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasMaxLength(255)
+                        .HasColumnType("character varying(255)")
+                        .HasColumnName("name")
+                        .HasComment("Имя");
+
+                    b.Property<string>("Patronymic")
+                        .HasMaxLength(255)
+                        .HasColumnType("character varying(255)")
+                        .HasColumnName("patronymic")
+                        .HasComment("Отчество");
+
+                    b.Property<string>("Surname")
+                        .IsRequired()
+                        .HasMaxLength(255)
+                        .HasColumnType("character varying(255)")
+                        .HasColumnName("surname")
+                        .HasComment("Фамилия");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("t_driller");
+
+                    b.HasComment("Бурильщик");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.DrillFlowChart", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<double>("AxialLoadMax")
+                        .HasColumnType("double precision")
+                        .HasColumnName("axial_load_max")
+                        .HasComment("Максимальная нагрузка");
+
+                    b.Property<double>("AxialLoadMin")
+                        .HasColumnType("double precision")
+                        .HasColumnName("axial_load_min")
+                        .HasComment("Минимальная нагрузка");
+
+                    b.Property<double>("DepthEnd")
+                        .HasColumnType("double precision")
+                        .HasColumnName("depth_end")
+                        .HasComment("Глубина окончания интервала");
+
+                    b.Property<double>("DepthStart")
+                        .HasColumnType("double precision")
+                        .HasColumnName("depth_start")
+                        .HasComment("Стартовая глубина");
+
+                    b.Property<double>("FlowMax")
+                        .HasColumnType("double precision")
+                        .HasColumnName("flow_max")
+                        .HasComment("Максимальный расход");
+
+                    b.Property<double>("FlowMin")
+                        .HasColumnType("double precision")
+                        .HasColumnName("flow_min")
+                        .HasComment("Минимальный расход");
+
+                    b.Property<int>("IdWell")
+                        .HasColumnType("integer")
+                        .HasColumnName("well_id")
+                        .HasComment("Id скважины");
+
+                    b.Property<int>("IdWellOperationCategory")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_operation_category")
+                        .HasComment("Id типа операции");
+
+                    b.Property<DateTimeOffset>("LastUpdate")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("last_update")
+                        .HasComment("Дата последнего изменения");
+
+                    b.Property<double>("PressureMax")
+                        .HasColumnType("double precision")
+                        .HasColumnName("pressure_max")
+                        .HasComment("Максимальное давление");
+
+                    b.Property<double>("PressureMin")
+                        .HasColumnType("double precision")
+                        .HasColumnName("pressure_min")
+                        .HasComment("Минимальное давление");
+
+                    b.Property<double>("RotorSpeedMax")
+                        .HasColumnType("double precision")
+                        .HasColumnName("rotor_speed_max")
+                        .HasComment("Максимальные обороты на ВСП");
+
+                    b.Property<double>("RotorSpeedMin")
+                        .HasColumnType("double precision")
+                        .HasColumnName("rotor_speed_min")
+                        .HasComment("Минимальные обороты на ВСП");
+
+                    b.Property<double>("RotorTorqueMax")
+                        .HasColumnType("double precision")
+                        .HasColumnName("rotor_torque_max")
+                        .HasComment("Максимальный момент на ВСП");
+
+                    b.Property<double>("RotorTorqueMin")
+                        .HasColumnType("double precision")
+                        .HasColumnName("rotor_torque_min")
+                        .HasComment("Минимальный момент на ВСП");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("IdWell");
+
+                    b.HasIndex("IdWellOperationCategory");
+
+                    b.ToTable("t_drill_flow_chart");
+
+                    b.HasComment("Параметры коридоров бурения (диапазоны параметров бурения)");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.DrillingProgramPart", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<int>("IdFileCategory")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_file_category");
+
+                    b.Property<int>("IdWell")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_well");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("IdFileCategory");
+
+                    b.HasIndex("IdWell", "IdFileCategory")
+                        .IsUnique();
+
+                    b.ToTable("t_drilling_program_part");
+
+                    b.HasComment("части программ бурения");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.DrillParams", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<double>("AxialLoadAvg")
+                        .HasColumnType("double precision")
+                        .HasColumnName("axial_load_avg")
+                        .HasComment("Средняя нагрузка");
+
+                    b.Property<double>("AxialLoadMax")
+                        .HasColumnType("double precision")
+                        .HasColumnName("axial_load_max")
+                        .HasComment("Максимальная нагрузка");
+
+                    b.Property<double>("AxialLoadMin")
+                        .HasColumnType("double precision")
+                        .HasColumnName("axial_load_min")
+                        .HasComment("Минимальная нагрузка");
+
+                    b.Property<double>("DepthEnd")
+                        .HasColumnType("double precision")
+                        .HasColumnName("depth_end")
+                        .HasComment("Глубина окончания интервала");
+
+                    b.Property<double>("DepthStart")
+                        .HasColumnType("double precision")
+                        .HasColumnName("depth_start")
+                        .HasComment("Стартовая глубина");
+
+                    b.Property<double>("FlowAvg")
+                        .HasColumnType("double precision")
+                        .HasColumnName("flow_avg")
+                        .HasComment("Средний расход");
+
+                    b.Property<double>("FlowMax")
+                        .HasColumnType("double precision")
+                        .HasColumnName("flow_max")
+                        .HasComment("Максимальный расход");
+
+                    b.Property<double>("FlowMin")
+                        .HasColumnType("double precision")
+                        .HasColumnName("flow_min")
+                        .HasComment("Минимальный расход");
+
+                    b.Property<int>("IdWell")
+                        .HasColumnType("integer")
+                        .HasColumnName("well_id")
+                        .HasComment("Id скважины");
+
+                    b.Property<int>("IdWellSectionType")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_wellsection_type")
+                        .HasComment("Id с типом секции скважины");
+
+                    b.Property<double>("PressureAvg")
+                        .HasColumnType("double precision")
+                        .HasColumnName("pressure_avg")
+                        .HasComment("Среднее давление");
+
+                    b.Property<double>("PressureMax")
+                        .HasColumnType("double precision")
+                        .HasColumnName("pressure_max")
+                        .HasComment("Максимальное давление");
+
+                    b.Property<double>("PressureMin")
+                        .HasColumnType("double precision")
+                        .HasColumnName("pressure_min")
+                        .HasComment("Минимальное давление");
+
+                    b.Property<double>("RotorSpeedAvg")
+                        .HasColumnType("double precision")
+                        .HasColumnName("rotor_speed_avg")
+                        .HasComment("Средние обороты на ВСП");
+
+                    b.Property<double>("RotorSpeedMax")
+                        .HasColumnType("double precision")
+                        .HasColumnName("rotor_speed_max")
+                        .HasComment("Максимальные обороты на ВСП");
+
+                    b.Property<double>("RotorSpeedMin")
+                        .HasColumnType("double precision")
+                        .HasColumnName("rotor_speed_min")
+                        .HasComment("Минимальные обороты на ВСП");
+
+                    b.Property<double>("RotorTorqueAvg")
+                        .HasColumnType("double precision")
+                        .HasColumnName("rotor_torque_avg")
+                        .HasComment("Средний момент на ВСП");
+
+                    b.Property<double>("RotorTorqueMax")
+                        .HasColumnType("double precision")
+                        .HasColumnName("rotor_torque_max")
+                        .HasComment("Максимальный момент на ВСП");
+
+                    b.Property<double>("RotorTorqueMin")
+                        .HasColumnType("double precision")
+                        .HasColumnName("rotor_torque_min")
+                        .HasComment("Минимальный момент на ВСП");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("IdWell");
+
+                    b.HasIndex("IdWellSectionType");
+
+                    b.ToTable("t_drill_params");
+
+                    b.HasComment("Режим бурения в секции (диапазоны параметров бурения)");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.FileCategory", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("Name")
+                        .HasColumnType("text")
+                        .HasColumnName("name")
+                        .HasComment("Название категории");
+
+                    b.Property<string>("ShortName")
+                        .HasColumnType("text")
+                        .HasColumnName("short_name")
+                        .HasComment("Короткое название категории");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("t_file_category");
+
+                    b.HasComment("Категории файлов");
+
+                    b.HasData(
+                        new
+                        {
+                            Id = 1,
+                            Name = "Растворный сервис",
+                            ShortName = "fluidService"
+                        },
+                        new
+                        {
+                            Id = 2,
+                            Name = "Цементирование",
+                            ShortName = "cement"
+                        },
+                        new
+                        {
+                            Id = 3,
+                            Name = "ННБ",
+                            ShortName = "nnb"
+                        },
+                        new
+                        {
+                            Id = 4,
+                            Name = "ГТИ",
+                            ShortName = "gti"
+                        },
+                        new
+                        {
+                            Id = 5,
+                            Name = "Документы по скважине",
+                            ShortName = "wellDocuments"
+                        },
+                        new
+                        {
+                            Id = 6,
+                            Name = "Супервайзер",
+                            ShortName = "supervisor"
+                        },
+                        new
+                        {
+                            Id = 7,
+                            Name = "Мастер",
+                            ShortName = "master"
+                        },
+                        new
+                        {
+                            Id = 8,
+                            Name = "Долотный сервис",
+                            ShortName = "toolService"
+                        },
+                        new
+                        {
+                            Id = 9,
+                            Name = "Буровой подрядчик",
+                            ShortName = "drillService"
+                        },
+                        new
+                        {
+                            Id = 10,
+                            Name = "Сервис по заканчиванию скважины",
+                            ShortName = "closingService"
+                        },
+                        new
+                        {
+                            Id = 12,
+                            Name = "Рапорт",
+                            ShortName = "report"
+                        },
+                        new
+                        {
+                            Id = 1000,
+                            Name = "Программа бурения"
+                        },
+                        new
+                        {
+                            Id = 1001,
+                            Name = "Задание от геологов"
+                        },
+                        new
+                        {
+                            Id = 1002,
+                            Name = "Профиль ствола скважины (ННБ)"
+                        },
+                        new
+                        {
+                            Id = 1003,
+                            Name = "Технологические расчеты (ННБ)"
+                        },
+                        new
+                        {
+                            Id = 1004,
+                            Name = "Долотная программа"
+                        },
+                        new
+                        {
+                            Id = 1005,
+                            Name = "Программа по растворам"
+                        },
+                        new
+                        {
+                            Id = 1006,
+                            Name = "Программа геофизических исследований"
+                        },
+                        new
+                        {
+                            Id = 1007,
+                            Name = "Планы спусков обсадных колонн"
+                        },
+                        new
+                        {
+                            Id = 1008,
+                            Name = "Программы цементирования обсадных колонн"
+                        },
+                        new
+                        {
+                            Id = 10000,
+                            Name = "Проект на бурение транспортного и горизонтального участков скважины"
+                        },
+                        new
+                        {
+                            Id = 10001,
+                            Name = "Программа на бурение транспортного и горизонтального участков скважины"
+                        },
+                        new
+                        {
+                            Id = 10002,
+                            Name = "Акт о начале бурения"
+                        },
+                        new
+                        {
+                            Id = 10003,
+                            Name = "План работ спуска и цементирования направления"
+                        },
+                        new
+                        {
+                            Id = 10004,
+                            Name = "Программа цементирования направления"
+                        },
+                        new
+                        {
+                            Id = 10005,
+                            Name = "Мера обсадных труб (направление)"
+                        },
+                        new
+                        {
+                            Id = 10006,
+                            Name = "Акт на выполненные работы по цементированию направления"
+                        },
+                        new
+                        {
+                            Id = 10007,
+                            Name = "Отчет по цементированию направления (график)"
+                        },
+                        new
+                        {
+                            Id = 10008,
+                            Name = "План работ спуска и цементирования кондуктора"
+                        },
+                        new
+                        {
+                            Id = 10009,
+                            Name = "Программа цементирования (кондуктор)"
+                        },
+                        new
+                        {
+                            Id = 10010,
+                            Name = "Мера обсадных труб (кондуктор)"
+                        },
+                        new
+                        {
+                            Id = 10011,
+                            Name = "Карта крепления кондуктора"
+                        },
+                        new
+                        {
+                            Id = 10012,
+                            Name = "Акт на выполненные работы по цементированию кондуктора"
+                        },
+                        new
+                        {
+                            Id = 10013,
+                            Name = "Отчет по цементированию кондуктора (график)"
+                        },
+                        new
+                        {
+                            Id = 10014,
+                            Name = "Акт о замере расстояния от стола ротора до муфты кондуктора"
+                        },
+                        new
+                        {
+                            Id = 10015,
+                            Name = "Акт опресовки цементного кольца за кондуктором"
+                        },
+                        new
+                        {
+                            Id = 10016,
+                            Name = "Акт опресовки ППГ с глухими плашками совместно с кондуктором"
+                        },
+                        new
+                        {
+                            Id = 10017,
+                            Name = "Акт опресовки ПУГ, ППГ с трубными плашками совместно с кондуктором"
+                        },
+                        new
+                        {
+                            Id = 10018,
+                            Name = "План работ на крепление обсадной колонны (эк. колонна)"
+                        },
+                        new
+                        {
+                            Id = 10019,
+                            Name = "Программа цементирования (эк. колонна)"
+                        },
+                        new
+                        {
+                            Id = 10020,
+                            Name = "Мера труб эксплуатационной колонны"
+                        },
+                        new
+                        {
+                            Id = 10021,
+                            Name = "Карта по креплению  скважины (эк. колонна)"
+                        },
+                        new
+                        {
+                            Id = 10022,
+                            Name = "Акт на установку пружинных центраторов"
+                        },
+                        new
+                        {
+                            Id = 10023,
+                            Name = "Отчет по цементированию эксплуатационной колонны (график)"
+                        },
+                        new
+                        {
+                            Id = 10024,
+                            Name = "Акт на выполненные работы по цементированию эксплуатационной колонны"
+                        },
+                        new
+                        {
+                            Id = 10025,
+                            Name = "Акт об испытании эк. колонны на герметичность  (СТОП)"
+                        },
+                        new
+                        {
+                            Id = 10026,
+                            Name = "Акт опресовки ППГ с глухими плашками совместно с э/колонной"
+                        },
+                        new
+                        {
+                            Id = 10027,
+                            Name = "Акт опресовки ПУГ, ППГ с трубными плашками совместно с  э/колонной"
+                        },
+                        new
+                        {
+                            Id = 10028,
+                            Name = "Акт на вскрытие продуктивного пласта"
+                        },
+                        new
+                        {
+                            Id = 10029,
+                            Name = "Акт замера параметров раствора при бурении горизонтального участка"
+                        },
+                        new
+                        {
+                            Id = 10030,
+                            Name = "Разрешение на спуск «хвостовика» (телефонограмма)"
+                        },
+                        new
+                        {
+                            Id = 10031,
+                            Name = "План работ на спуск «хвостовика»"
+                        },
+                        new
+                        {
+                            Id = 10032,
+                            Name = "Акт готовности бурового и энергетического оборудования к спуску «хвостовика»"
+                        },
+                        new
+                        {
+                            Id = 10033,
+                            Name = "Акт шаблонировки ствола скважины перед спуском «хвостовика»"
+                        },
+                        new
+                        {
+                            Id = 10034,
+                            Name = "Мера обсадных труб (хвостовик)"
+                        },
+                        new
+                        {
+                            Id = 10035,
+                            Name = "Акт выполненных работ по спуску хвостовика с закачкой (нефти, солевого раствора"
+                        },
+                        new
+                        {
+                            Id = 10036,
+                            Name = "Акт о переводе скважины на тех. воду"
+                        },
+                        new
+                        {
+                            Id = 10037,
+                            Name = "Акт об окончании бурения"
+                        },
+                        new
+                        {
+                            Id = 10038,
+                            Name = "Акт на передачу скважины в освоение (КРС)"
+                        },
+                        new
+                        {
+                            Id = 10039,
+                            Name = "Акт на опресовку межколонного пространства с КРС"
+                        },
+                        new
+                        {
+                            Id = 10040,
+                            Name = "Акт на сдачу скважины в ЦДНГ"
+                        },
+                        new
+                        {
+                            Id = 10041,
+                            Name = "Паспорт ОУС (заполняется геологами)"
+                        },
+                        new
+                        {
+                            Id = 10042,
+                            Name = "Паспорт скважины (заполняется геологами)"
+                        },
+                        new
+                        {
+                            Id = 10043,
+                            Name = "Фактические данные бурения (вставляются в паспорт скважины)"
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.FileInfo", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<int?>("IdAuthor")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_author")
+                        .HasComment("Id пользователя, загрузившего файл");
+
+                    b.Property<int>("IdCategory")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_category")
+                        .HasComment("id категории файла");
+
+                    b.Property<int>("IdWell")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_well")
+                        .HasComment("id скважины");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("boolean")
+                        .HasColumnName("is_deleted")
+                        .HasComment("Удален ли файл");
+
+                    b.Property<string>("Name")
+                        .HasColumnType("text")
+                        .HasColumnName("name")
+                        .HasComment("Название файла");
+
+                    b.Property<long>("Size")
+                        .HasColumnType("bigint")
+                        .HasColumnName("file_size")
+                        .HasComment("Размер файла");
+
+                    b.Property<DateTimeOffset>("UploadDate")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("date");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("IdAuthor");
+
+                    b.HasIndex("IdCategory");
+
+                    b.HasIndex("IdWell");
+
+                    b.ToTable("t_file_info");
+
+                    b.HasComment("Файлы всех категорий");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.FileMark", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("Comment")
+                        .HasMaxLength(255)
+                        .HasColumnType("character varying(255)")
+                        .HasColumnName("comment")
+                        .HasComment("Комментарий");
+
+                    b.Property<DateTimeOffset>("DateCreated")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("date_created")
+                        .HasComment("Дата совершенного действия");
+
+                    b.Property<int>("IdFile")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_file")
+                        .HasComment("id файла");
+
+                    b.Property<int>("IdMarkType")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_mark_type")
+                        .HasComment("0 - отклонен, 1 - согласован");
+
+                    b.Property<int>("IdUser")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_user")
+                        .HasComment("id пользователя");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("boolean")
+                        .HasColumnName("is_deleted")
+                        .HasComment("Помечен ли файл как удаленный");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("IdFile");
+
+                    b.HasIndex("IdUser");
+
+                    b.ToTable("t_file_mark");
+
+                    b.HasComment("Действия с файлами.");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.LimitingParameter", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTimeOffset?>("DateEnd")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("date_end");
+
+                    b.Property<DateTimeOffset?>("DateStart")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("date_start");
+
+                    b.Property<float?>("DepthEnd")
+                        .HasColumnType("real")
+                        .HasColumnName("depth_end");
+
+                    b.Property<float?>("DepthStart")
+                        .HasColumnType("real")
+                        .HasColumnName("depth_start");
+
+                    b.Property<short>("IdFeedRegulator")
+                        .HasColumnType("smallint")
+                        .HasColumnName("id_feed_regulator");
+
+                    b.Property<int>("IdTelemetry")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_telemetry");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("IdTelemetry");
+
+                    b.ToTable("t_limiting_parameter");
+
+                    b.HasComment("Ограничения по параметрам телеметрии");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.Measure", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("Data")
+                        .HasColumnType("jsonb")
+                        .HasColumnName("data")
+                        .HasComment("Данные таблицы последних данных");
+
+                    b.Property<int>("IdCategory")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_category")
+                        .HasComment("id категории");
+
+                    b.Property<int>("IdWell")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_well")
+                        .HasComment("id скважины");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("boolean")
+                        .HasColumnName("is_deleted")
+                        .HasComment("Пометка удаленным");
+
+                    b.Property<DateTimeOffset>("Timestamp")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("timestamp")
+                        .HasComment("время добавления");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("IdCategory");
+
+                    b.HasIndex("IdWell");
+
+                    b.ToTable("t_measure");
+
+                    b.HasComment("Таблица c данными для вкладки 'Последние данные'");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.MeasureCategory", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("Name")
+                        .HasColumnType("text")
+                        .HasColumnName("name")
+                        .HasComment("Название категории");
+
+                    b.Property<string>("ShortName")
+                        .HasColumnType("text")
+                        .HasColumnName("short_name")
+                        .HasComment("Короткое название категории");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("t_measure_category");
+
+                    b.HasComment("Категория последних данных");
+
+                    b.HasData(
+                        new
+                        {
+                            Id = 1,
+                            Name = "Показатели бурового раствора",
+                            ShortName = "Раствор"
+                        },
+                        new
+                        {
+                            Id = 2,
+                            Name = "Шламограмма",
+                            ShortName = "Шламограмма"
+                        },
+                        new
+                        {
+                            Id = 3,
+                            Name = "ННБ",
+                            ShortName = "ННБ"
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.OperationValue", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id")
+                        .HasComment("Идентификатор");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<double>("DepthEnd")
+                        .HasColumnType("double precision")
+                        .HasColumnName("depth_end")
+                        .HasComment("Конечная глубина");
+
+                    b.Property<double>("DepthStart")
+                        .HasColumnType("double precision")
+                        .HasColumnName("depth_start")
+                        .HasComment("Старотовая глубина");
+
+                    b.Property<int>("IdOperationCategory")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_operation_category")
+                        .HasComment("Ид категории операции");
+
+                    b.Property<int>("IdWell")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_well")
+                        .HasComment("Ид скважины");
+
+                    b.Property<double>("StandardValue")
+                        .HasColumnType("double precision")
+                        .HasColumnName("standard_value")
+                        .HasComment("Нормативный показатель");
+
+                    b.Property<double>("TargetValue")
+                        .HasColumnType("double precision")
+                        .HasColumnName("target_value")
+                        .HasComment("Целевой показатель");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("IdOperationCategory");
+
+                    b.HasIndex("IdWell");
+
+                    b.ToTable("t_operationvalue");
+
+                    b.HasComment("Целевые/нормативные показатели операции");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.Permission", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("Description")
+                        .HasMaxLength(255)
+                        .HasColumnType("character varying(255)")
+                        .HasColumnName("description")
+                        .HasComment("Краткое описание");
+
+                    b.Property<string>("Name")
+                        .HasMaxLength(255)
+                        .HasColumnType("character varying(255)")
+                        .HasColumnName("name")
+                        .HasComment("Название");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("t_permission");
+
+                    b.HasComment("Разрешения на доступ к данным");
+
+                    b.HasData(
+                        new
+                        {
+                            Id = 100,
+                            Description = "Разрешение удалять  админ. Кусты",
+                            Name = "AdminCluster.delete"
+                        },
+                        new
+                        {
+                            Id = 101,
+                            Description = "Разрешение редактировать  админ. Кусты",
+                            Name = "AdminCluster.edit"
+                        },
+                        new
+                        {
+                            Id = 102,
+                            Description = "Разрешение просматривать  админ. Кусты",
+                            Name = "AdminCluster.get"
+                        },
+                        new
+                        {
+                            Id = 103,
+                            Description = "Разрешение удалять  админ. Компании",
+                            Name = "AdminCompany.delete"
+                        },
+                        new
+                        {
+                            Id = 104,
+                            Description = "Разрешение редактировать  админ. Компании",
+                            Name = "AdminCompany.edit"
+                        },
+                        new
+                        {
+                            Id = 105,
+                            Description = "Разрешение просматривать  админ. Компании",
+                            Name = "AdminCompany.get"
+                        },
+                        new
+                        {
+                            Id = 106,
+                            Description = "Разрешение удалять  админ. Типы компаний",
+                            Name = "AdminCompanyType.delete"
+                        },
+                        new
+                        {
+                            Id = 107,
+                            Description = "Разрешение редактировать  админ. Типы компаний",
+                            Name = "AdminCompanyType.edit"
+                        },
+                        new
+                        {
+                            Id = 108,
+                            Description = "Разрешение просматривать  админ. Типы компаний",
+                            Name = "AdminCompanyType.get"
+                        },
+                        new
+                        {
+                            Id = 109,
+                            Description = "Разрешение удалять  админ. Месторождения",
+                            Name = "AdminDeposit.delete"
+                        },
+                        new
+                        {
+                            Id = 110,
+                            Description = "Разрешение редактировать  админ. Месторождения",
+                            Name = "AdminDeposit.edit"
+                        },
+                        new
+                        {
+                            Id = 111,
+                            Description = "Разрешение просматривать  админ. Месторождения",
+                            Name = "AdminDeposit.get"
+                        },
+                        new
+                        {
+                            Id = 112,
+                            Description = "Разрешение удалять  админ. Разрешения",
+                            Name = "AdminPermission.delete"
+                        },
+                        new
+                        {
+                            Id = 113,
+                            Description = "Разрешение редактировать  админ. Разрешения",
+                            Name = "AdminPermission.edit"
+                        },
+                        new
+                        {
+                            Id = 114,
+                            Description = "Разрешение просматривать  админ. Разрешения",
+                            Name = "AdminPermission.get"
+                        },
+                        new
+                        {
+                            Id = 115,
+                            Description = "Разрешение удалять  админ. Телеметрию",
+                            Name = "AdminTelemetry.delete"
+                        },
+                        new
+                        {
+                            Id = 116,
+                            Description = "Разрешение редактировать  админ. Телеметрию",
+                            Name = "AdminTelemetry.edit"
+                        },
+                        new
+                        {
+                            Id = 117,
+                            Description = "Разрешение просматривать  админ. Телеметрию",
+                            Name = "AdminTelemetry.get"
+                        },
+                        new
+                        {
+                            Id = 118,
+                            Description = "Разрешение удалять  админ. Пользователей",
+                            Name = "AdminUser.delete"
+                        },
+                        new
+                        {
+                            Id = 119,
+                            Description = "Разрешение редактировать  админ. Пользователей",
+                            Name = "AdminUser.edit"
+                        },
+                        new
+                        {
+                            Id = 120,
+                            Description = "Разрешение просматривать  админ. Пользователей",
+                            Name = "AdminUser.get"
+                        },
+                        new
+                        {
+                            Id = 121,
+                            Description = "Разрешение удалять  админ. Роли пользователей",
+                            Name = "AdminUserRole.delete"
+                        },
+                        new
+                        {
+                            Id = 122,
+                            Description = "Разрешение редактировать  админ. Роли пользователей",
+                            Name = "AdminUserRole.edit"
+                        },
+                        new
+                        {
+                            Id = 123,
+                            Description = "Разрешение просматривать  админ. Роли пользователей",
+                            Name = "AdminUserRole.get"
+                        },
+                        new
+                        {
+                            Id = 124,
+                            Description = "Разрешение удалять  админ. Скважины",
+                            Name = "AdminWell.delete"
+                        },
+                        new
+                        {
+                            Id = 125,
+                            Description = "Разрешение редактировать  админ. Скважины",
+                            Name = "AdminWell.edit"
+                        },
+                        new
+                        {
+                            Id = 126,
+                            Description = "Разрешение просматривать  админ. Скважины",
+                            Name = "AdminWell.get"
+                        },
+                        new
+                        {
+                            Id = 127,
+                            Description = "Разрешение удалять  админ. Подсистемы",
+                            Name = "AdminSubsytem.delete"
+                        },
+                        new
+                        {
+                            Id = 128,
+                            Description = "Разрешение редактировать  админ. Подсистемы",
+                            Name = "AdminSubsytem.edit"
+                        },
+                        new
+                        {
+                            Id = 129,
+                            Description = "Разрешение просматривать  админ. Подсистемы",
+                            Name = "AdminSubsytem.get"
+                        },
+                        new
+                        {
+                            Id = 200,
+                            Description = "Разрешение редактировать  0",
+                            Name = "Auth.edit"
+                        },
+                        new
+                        {
+                            Id = 201,
+                            Description = "Разрешение просматривать  0",
+                            Name = "Auth.get"
+                        },
+                        new
+                        {
+                            Id = 202,
+                            Description = "Разрешение просматривать  Кусты",
+                            Name = "Cluster.get"
+                        },
+                        new
+                        {
+                            Id = 203,
+                            Description = "Разрешение просматривать  Месторождения",
+                            Name = "Deposit.get"
+                        },
+                        new
+                        {
+                            Id = 204,
+                            Description = "Разрешение удалять  РТК",
+                            Name = "DrillFlowChart.delete"
+                        },
+                        new
+                        {
+                            Id = 205,
+                            Description = "Разрешение редактировать  РТК",
+                            Name = "DrillFlowChart.edit"
+                        },
+                        new
+                        {
+                            Id = 206,
+                            Description = "Разрешение просматривать  РТК",
+                            Name = "DrillFlowChart.get"
+                        },
+                        new
+                        {
+                            Id = 207,
+                            Description = "Разрешение удалять  Программу бурения",
+                            Name = "DrillingProgram.delete"
+                        },
+                        new
+                        {
+                            Id = 208,
+                            Description = "Разрешение редактировать  Программу бурения",
+                            Name = "DrillingProgram.edit"
+                        },
+                        new
+                        {
+                            Id = 209,
+                            Description = "Разрешение просматривать  Программу бурения",
+                            Name = "DrillingProgram.get"
+                        },
+                        new
+                        {
+                            Id = 210,
+                            Description = "Разрешение удалять  Режимы бурения",
+                            Name = "DrillParams.delete"
+                        },
+                        new
+                        {
+                            Id = 211,
+                            Description = "Разрешение редактировать  Режимы бурения",
+                            Name = "DrillParams.edit"
+                        },
+                        new
+                        {
+                            Id = 212,
+                            Description = "Разрешение просматривать  Режимы бурения",
+                            Name = "DrillParams.get"
+                        },
+                        new
+                        {
+                            Id = 213,
+                            Description = "Разрешение удалять  Файлы",
+                            Name = "File.delete"
+                        },
+                        new
+                        {
+                            Id = 214,
+                            Description = "Разрешение редактировать  Файлы",
+                            Name = "File.edit"
+                        },
+                        new
+                        {
+                            Id = 215,
+                            Description = "Разрешение просматривать  Файлы",
+                            Name = "File.get"
+                        },
+                        new
+                        {
+                            Id = 216,
+                            Description = "Разрешение удалять  Измерения",
+                            Name = "Measure.delete"
+                        },
+                        new
+                        {
+                            Id = 217,
+                            Description = "Разрешение редактировать  Измерения",
+                            Name = "Measure.edit"
+                        },
+                        new
+                        {
+                            Id = 218,
+                            Description = "Разрешение просматривать  Измерения",
+                            Name = "Measure.get"
+                        },
+                        new
+                        {
+                            Id = 219,
+                            Description = "Разрешение просматривать  Сообщения телеметрии",
+                            Name = "Message.get"
+                        },
+                        new
+                        {
+                            Id = 220,
+                            Description = "Разрешение просматривать  Статистику по операциям",
+                            Name = "OperationStat.get"
+                        },
+                        new
+                        {
+                            Id = 221,
+                            Description = "Разрешение редактировать  Рапорта",
+                            Name = "Report.edit"
+                        },
+                        new
+                        {
+                            Id = 222,
+                            Description = "Разрешение просматривать  Рапорта",
+                            Name = "Report.get"
+                        },
+                        new
+                        {
+                            Id = 223,
+                            Description = "Разрешение просматривать  админ. Системная статистика",
+                            Name = "RequestTracker.get"
+                        },
+                        new
+                        {
+                            Id = 224,
+                            Description = "Разрешение удалять  Рекомендации уставок",
+                            Name = "Setpoints.delete"
+                        },
+                        new
+                        {
+                            Id = 225,
+                            Description = "Разрешение редактировать  Рекомендации уставок",
+                            Name = "Setpoints.edit"
+                        },
+                        new
+                        {
+                            Id = 226,
+                            Description = "Разрешение просматривать  Рекомендации уставок",
+                            Name = "Setpoints.get"
+                        },
+                        new
+                        {
+                            Id = 227,
+                            Description = "Разрешение редактировать  Телеметрии",
+                            Name = "Telemetry.edit"
+                        },
+                        new
+                        {
+                            Id = 228,
+                            Description = "Разрешение просматривать  Анализ телеметрии",
+                            Name = "TelemetryAnalytics.get"
+                        },
+                        new
+                        {
+                            Id = 229,
+                            Description = "Разрешение редактировать  Данные телеметрии по САУБ",
+                            Name = "TelemetryDataSaub.edit"
+                        },
+                        new
+                        {
+                            Id = 230,
+                            Description = "Разрешение просматривать  Данные телеметрии по САУБ",
+                            Name = "TelemetryDataSaub.get"
+                        },
+                        new
+                        {
+                            Id = 231,
+                            Description = "Разрешение редактировать  Данные телеметрии по SpinMaster",
+                            Name = "TelemetryDataSpin.edit"
+                        },
+                        new
+                        {
+                            Id = 232,
+                            Description = "Разрешение просматривать  Данные телеметрии по SpinMaster",
+                            Name = "TelemetryDataSpin.get"
+                        },
+                        new
+                        {
+                            Id = 233,
+                            Description = "Разрешение редактировать  Скважины",
+                            Name = "Well.edit"
+                        },
+                        new
+                        {
+                            Id = 234,
+                            Description = "Разрешение просматривать  Скважины",
+                            Name = "Well.get"
+                        },
+                        new
+                        {
+                            Id = 235,
+                            Description = "Разрешение редактировать  Композитные скважины",
+                            Name = "WellComposite.edit"
+                        },
+                        new
+                        {
+                            Id = 236,
+                            Description = "Разрешение просматривать  Композитные скважины",
+                            Name = "WellComposite.get"
+                        },
+                        new
+                        {
+                            Id = 237,
+                            Description = "Разрешение удалять  Операции по скважинам",
+                            Name = "WellOperation.delete"
+                        },
+                        new
+                        {
+                            Id = 238,
+                            Description = "Разрешение редактировать  Операции по скважинам",
+                            Name = "WellOperation.edit"
+                        },
+                        new
+                        {
+                            Id = 239,
+                            Description = "Разрешение просматривать  Операции по скважинам",
+                            Name = "WellOperation.get"
+                        },
+                        new
+                        {
+                            Id = 240,
+                            Description = "Разрешение редактировать  Файлы категории 1 (Растворный сервис)",
+                            Name = "File.edit1"
+                        },
+                        new
+                        {
+                            Id = 241,
+                            Description = "Разрешение редактировать  Файлы категории 2 (Цементирование)",
+                            Name = "File.edit2"
+                        },
+                        new
+                        {
+                            Id = 242,
+                            Description = "Разрешение редактировать  Файлы категории 3 (ННБ)",
+                            Name = "File.edit3"
+                        },
+                        new
+                        {
+                            Id = 243,
+                            Description = "Разрешение редактировать  Файлы категории 4 (ГТИ)",
+                            Name = "File.edit4"
+                        },
+                        new
+                        {
+                            Id = 244,
+                            Description = "Разрешение редактировать  Файлы категории 5 (Документы по скважине)",
+                            Name = "File.edit5"
+                        },
+                        new
+                        {
+                            Id = 245,
+                            Description = "Разрешение редактировать  Файлы категории 6 (Супервайзер)",
+                            Name = "File.edit6"
+                        },
+                        new
+                        {
+                            Id = 246,
+                            Description = "Разрешение редактировать  Файлы категории 7 (Мастер)",
+                            Name = "File.edit7"
+                        },
+                        new
+                        {
+                            Id = 247,
+                            Description = "Разрешение редактировать  Файлы категории 8 (Долотный сервис)",
+                            Name = "File.edit8"
+                        },
+                        new
+                        {
+                            Id = 248,
+                            Description = "Разрешение редактировать  Файлы категории 9 (Буровой подрядчик)",
+                            Name = "File.edit9"
+                        },
+                        new
+                        {
+                            Id = 249,
+                            Description = "Разрешение редактировать  Файлы категории 10 (Сервис по заканчиванию скважины)",
+                            Name = "File.edit10"
+                        },
+                        new
+                        {
+                            Id = 250,
+                            Description = "Разрешение редактировать  Файлы категории 11 (Рапорт)",
+                            Name = "File.edit11"
+                        },
+                        new
+                        {
+                            Id = 251,
+                            Description = "Разрешение редактировать  Файлы категории 12",
+                            Name = "File.edit12"
+                        },
+                        new
+                        {
+                            Id = 252,
+                            Description = "Разрешение редактировать  Файлы категории 12",
+                            Name = "File.edit13"
+                        },
+                        new
+                        {
+                            Id = 253,
+                            Description = "Разрешение редактировать  Файлы категории 13",
+                            Name = "File.edit14"
+                        },
+                        new
+                        {
+                            Id = 254,
+                            Description = "Разрешение редактировать  Файлы категории 14",
+                            Name = "File.edit15"
+                        },
+                        new
+                        {
+                            Id = 255,
+                            Description = "Разрешение редактировать  Файлы категории 15",
+                            Name = "File.edit16"
+                        },
+                        new
+                        {
+                            Id = 256,
+                            Description = "Разрешение редактировать  Файлы категории 16",
+                            Name = "File.edit17"
+                        },
+                        new
+                        {
+                            Id = 257,
+                            Description = "Разрешение редактировать  Файлы категории 17",
+                            Name = "File.edit18"
+                        },
+                        new
+                        {
+                            Id = 258,
+                            Description = "Разрешение редактировать  Файлы категории 18",
+                            Name = "File.edit19"
+                        },
+                        new
+                        {
+                            Id = 259,
+                            Description = "Разрешение редактировать  Файлы категории 19",
+                            Name = "File.edit20"
+                        },
+                        new
+                        {
+                            Id = 260,
+                            Description = "Разрешение редактировать  Файлы категории 20",
+                            Name = "File.edit21"
+                        },
+                        new
+                        {
+                            Id = 261,
+                            Description = "Разрешение редактировать  Файлы категории 21",
+                            Name = "File.edit22"
+                        },
+                        new
+                        {
+                            Id = 262,
+                            Description = "Разрешение редактировать  Файлы категории 22",
+                            Name = "File.edit23"
+                        },
+                        new
+                        {
+                            Id = 263,
+                            Description = "Разрешение редактировать  Файлы категории 23",
+                            Name = "File.edit24"
+                        },
+                        new
+                        {
+                            Id = 264,
+                            Description = "Разрешение редактировать  Файлы категории 24",
+                            Name = "File.edit25"
+                        },
+                        new
+                        {
+                            Id = 265,
+                            Description = "Разрешение редактировать  Файлы категории 25",
+                            Name = "File.edit26"
+                        },
+                        new
+                        {
+                            Id = 266,
+                            Description = "Разрешение редактировать  Файлы категории 26",
+                            Name = "File.edit27"
+                        },
+                        new
+                        {
+                            Id = 267,
+                            Description = "Разрешение редактировать  Файлы категории 27",
+                            Name = "File.edit28"
+                        },
+                        new
+                        {
+                            Id = 268,
+                            Description = "Разрешение редактировать  Файлы категории 28",
+                            Name = "File.edit29"
+                        },
+                        new
+                        {
+                            Id = 269,
+                            Description = "Разрешение редактировать  Файлы категории 29",
+                            Name = "File.edit30"
+                        },
+                        new
+                        {
+                            Id = 380,
+                            Description = "Разрешение просматривать список бурильщиков",
+                            Name = "Driller.get"
+                        },
+                        new
+                        {
+                            Id = 381,
+                            Description = "Разрешение редактировать бурильщика",
+                            Name = "Driller.edit"
+                        },
+                        new
+                        {
+                            Id = 382,
+                            Description = "Разрешение удалять бурильщик",
+                            Name = "Driller.delete"
+                        },
+                        new
+                        {
+                            Id = 383,
+                            Description = "Разрешение просматривать графики бурильщиков",
+                            Name = "Schedule.get"
+                        },
+                        new
+                        {
+                            Id = 384,
+                            Description = "Разрешение редактировать график бурильщика",
+                            Name = "Schedule.edit"
+                        },
+                        new
+                        {
+                            Id = 385,
+                            Description = "Разрешение удалять график бурильщика",
+                            Name = "Schedule.delete"
+                        },
+                        new
+                        {
+                            Id = 386,
+                            Description = "Разрешение просматривать суточный рапорт",
+                            Name = "DailyReport.get"
+                        },
+                        new
+                        {
+                            Id = 387,
+                            Description = "Разрешение редактировать суточный рапорт",
+                            Name = "DailyReport.edit"
+                        },
+                        new
+                        {
+                            Id = 388,
+                            Description = "Разрешение просматривать авто. определенные операции",
+                            Name = "DetectedOperation.get"
+                        },
+                        new
+                        {
+                            Id = 389,
+                            Description = "Разрешение просматривать целевые значения",
+                            Name = "OperationValue.get"
+                        },
+                        new
+                        {
+                            Id = 390,
+                            Description = "Разрешение редактировать целевые значения",
+                            Name = "OperationValue.edit"
+                        },
+                        new
+                        {
+                            Id = 391,
+                            Description = "Разрешение удалять целевые значения",
+                            Name = "OperationValue.delete"
+                        },
+                        new
+                        {
+                            Id = 400,
+                            Description = "Разрешение просматривать инфо по wits параметрам",
+                            Name = "WitsInfo.get"
+                        },
+                        new
+                        {
+                            Id = 401,
+                            Description = "Разрешение просматривать WITS record 1",
+                            Name = "WitsRecord1.get"
+                        },
+                        new
+                        {
+                            Id = 407,
+                            Description = "Разрешение просматривать WITS record 7",
+                            Name = "WitsRecord7.get"
+                        },
+                        new
+                        {
+                            Id = 408,
+                            Description = "Разрешение просматривать WITS record 8",
+                            Name = "WitsRecord8.get"
+                        },
+                        new
+                        {
+                            Id = 450,
+                            Description = "Разрешение просматривать WITS record 50",
+                            Name = "WitsRecord50.get"
+                        },
+                        new
+                        {
+                            Id = 460,
+                            Description = "Разрешение просматривать WITS record 60",
+                            Name = "WitsRecord60.get"
+                        },
+                        new
+                        {
+                            Id = 461,
+                            Description = "Разрешение просматривать WITS record 61",
+                            Name = "WitsRecord61.get"
+                        },
+                        new
+                        {
+                            Id = 500,
+                            Description = "Разрешение удалять  Категорий документов файлов",
+                            Name = "FileCategory.delete"
+                        },
+                        new
+                        {
+                            Id = 501,
+                            Description = "Разрешение редактировать  Категорий документов файлов",
+                            Name = "FileCategory.edit"
+                        },
+                        new
+                        {
+                            Id = 502,
+                            Description = "Разрешение просматривать  Категорий документов файлов",
+                            Name = "FileCategory.get"
+                        },
+                        new
+                        {
+                            Id = 503,
+                            Description = "Разрешение удалять  Дело скважины",
+                            Name = "WellFinalDocuments.delete"
+                        },
+                        new
+                        {
+                            Id = 504,
+                            Description = "Разрешение редактировать  Дело скважины",
+                            Name = "WellFinalDocuments.edit"
+                        },
+                        new
+                        {
+                            Id = 505,
+                            Description = "Разрешение просматривать  Дело скважины",
+                            Name = "WellFinalDocuments.get"
+                        },
+                        new
+                        {
+                            Id = 506,
+                            Description = "Разрешение редактировать ответственных за загрузку файла  Дело скважины",
+                            Name = "WellFinalDocuments.editPublisher"
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b =>
+                {
+                    b.Property<int>("IdCompany")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_company");
+
+                    b.Property<int>("IdWell")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_well");
+
+                    b.HasKey("IdCompany", "IdWell");
+
+                    b.HasIndex("IdWell");
+
+                    b.ToTable("t_relation_company_well");
+
+                    b.HasComment("отношение скважин и компаний");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.RelationUserDrillingProgramPart", b =>
+                {
+                    b.Property<int>("IdUser")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_user");
+
+                    b.Property<int>("IdDrillingProgramPart")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_drilling_program_part");
+
+                    b.Property<int>("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");
+
+                    b.HasComment("Отношение пользователей и частей ПБ");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.RelationUserRolePermission", b =>
+                {
+                    b.Property<int>("IdUserRole")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_user_role");
+
+                    b.Property<int>("IdPermission")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_permission");
+
+                    b.HasKey("IdUserRole", "IdPermission");
+
+                    b.HasIndex("IdPermission");
+
+                    b.ToTable("t_relation_user_role_permission");
+
+                    b.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 = 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 = 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
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.RelationUserRoleUserRole", b =>
+                {
+                    b.Property<int>("Id")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_user_role");
+
+                    b.Property<int>("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");
+
+                    b.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<int>("IdUser")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_user");
+
+                    b.Property<int>("IdUserRole")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_user_role");
+
+                    b.HasKey("IdUser", "IdUserRole");
+
+                    b.HasIndex("IdUserRole");
+
+                    b.ToTable("t_relation_user_user_role");
+
+                    b.HasComment("Отношение пользователей и ролей");
+
+                    b.HasData(
+                        new
+                        {
+                            IdUser = 1,
+                            IdUserRole = 1
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.ReportProperty", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTimeOffset>("Begin")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("begin");
+
+                    b.Property<DateTimeOffset>("End")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("end")
+                        .HasComment("timestamp with time zone");
+
+                    b.Property<int>("Format")
+                        .HasColumnType("integer")
+                        .HasColumnName("format")
+                        .HasComment("Формат отчета");
+
+                    b.Property<int>("IdFile")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_file")
+                        .HasComment("id файла-родителя");
+
+                    b.Property<int>("IdWell")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_well")
+                        .HasComment("id скважины");
+
+                    b.Property<int>("Step")
+                        .HasColumnType("integer")
+                        .HasColumnName("step")
+                        .HasComment("размер шага в секундах");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("IdFile");
+
+                    b.HasIndex("IdWell");
+
+                    b.ToTable("t_report_property");
+
+                    b.HasComment("Отчеты с данными по буровым");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.Schedule", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id")
+                        .HasComment("Идентификатор");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTimeOffset>("DrillEnd")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("drill_end")
+                        .HasComment("Конец вахты");
+
+                    b.Property<DateTimeOffset>("DrillStart")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("drill_start")
+                        .HasComment("Начало вахты");
+
+                    b.Property<int>("IdDriller")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_driller")
+                        .HasComment("Идентификатор бурильщика");
+
+                    b.Property<int>("IdWell")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_well")
+                        .HasComment("Идентификатор скважины");
+
+                    b.Property<TimeOnly>("ShiftEnd")
+                        .HasColumnType("time without time zone")
+                        .HasColumnName("shift_end")
+                        .HasComment("Конец смены");
+
+                    b.Property<TimeOnly>("ShiftStart")
+                        .HasColumnType("time without time zone")
+                        .HasColumnName("shift_start")
+                        .HasComment("Начало смены");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("IdDriller");
+
+                    b.HasIndex("IdWell");
+
+                    b.ToTable("t_schedule");
+
+                    b.HasComment("График работы бурильщика");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.SetpointsRequest", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("Comment")
+                        .HasColumnType("text")
+                        .HasColumnName("comment")
+                        .HasComment("комментарий для оператора");
+
+                    b.Property<int>("IdAuthor")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_author")
+                        .HasComment("Id пользователя, загрузившего файл");
+
+                    b.Property<int>("IdState")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_state")
+                        .HasComment("0: неизвестно, 1:ожидает отправки, 2: отправлено, 3: принято оператором, 4: отклонено оператором, 5: устарело");
+
+                    b.Property<int>("IdWell")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_well")
+                        .HasComment("id скважины");
+
+                    b.Property<int>("ObsolescenceSec")
+                        .HasColumnType("integer")
+                        .HasColumnName("obsolescence")
+                        .HasComment("сек. до устаревания");
+
+                    b.Property<string>("Setpoints")
+                        .HasColumnType("jsonb")
+                        .HasColumnName("setpoint_set")
+                        .HasComment("Набор уставок");
+
+                    b.Property<DateTimeOffset>("UploadDate")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("date");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("IdAuthor");
+
+                    b.HasIndex("IdWell");
+
+                    b.ToTable("t_setpoints_rquest");
+
+                    b.HasComment("Запросы на изменение уставок панели оператора");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.Subsystems.Subsystem", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("Description")
+                        .HasMaxLength(255)
+                        .HasColumnType("character varying(255)")
+                        .HasColumnName("description");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasMaxLength(255)
+                        .HasColumnType("character varying(255)")
+                        .HasColumnName("name");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("t_subsystem");
+
+                    b.HasComment("Описание подсистем");
+
+                    b.HasData(
+                        new
+                        {
+                            Id = 1,
+                            Description = "Совместная работа режимов \"Бурение в роторе\" и \"Бурение в слайде\"",
+                            Name = "АКБ"
+                        },
+                        new
+                        {
+                            Id = 2,
+                            Description = "Алгоритм поиска оптимальных параметров бурения САУБ",
+                            Name = "MSE"
+                        },
+                        new
+                        {
+                            Id = 65536,
+                            Description = "Spin master",
+                            Name = "Spin master"
+                        },
+                        new
+                        {
+                            Id = 65537,
+                            Description = "Torque master",
+                            Name = "Torque master"
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.Subsystems.SubsystemOperationTime", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTimeOffset>("DateEnd")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("date_end")
+                        .HasComment("дата/время выключения подсистемы");
+
+                    b.Property<DateTimeOffset>("DateStart")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("date_start")
+                        .HasComment("дата/время включения подсистемы");
+
+                    b.Property<float?>("DepthEnd")
+                        .HasColumnType("real")
+                        .HasColumnName("depth_end")
+                        .HasComment("глубина забоя на момент выключения подсистемы");
+
+                    b.Property<float?>("DepthStart")
+                        .HasColumnType("real")
+                        .HasColumnName("depth_start")
+                        .HasComment("глубина забоя на момент включения подсистемы");
+
+                    b.Property<int>("IdSubsystem")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_subsystem");
+
+                    b.Property<int>("IdTelemetry")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_telemetry")
+                        .HasComment("ИД телеметрии по которой выдается информация");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("IdSubsystem");
+
+                    b.HasIndex("IdTelemetry");
+
+                    b.ToTable("t_subsystem_operation_time");
+
+                    b.HasComment("наработки подсистем");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.Telemetry", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("Info")
+                        .HasColumnType("jsonb")
+                        .HasColumnName("info")
+                        .HasComment("Информация с панели о скважине");
+
+                    b.Property<string>("RemoteUid")
+                        .HasColumnType("text")
+                        .HasColumnName("remote_uid")
+                        .HasComment("Идентификатор передающего устройства. Может повторяться в списке, так как комплекты оборудования переезжают от скв. к скв.");
+
+                    b.Property<string>("TimeZone")
+                        .HasColumnType("jsonb")
+                        .HasColumnName("timezone")
+                        .HasComment("Смещение часового пояса от UTC");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex(new[] { "RemoteUid" }, "t_telemetry_remote_uid_index");
+
+                    b.ToTable("t_telemetry");
+
+                    b.HasComment("таблица привязки телеметрии от комплектов к конкретной скважине.");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaub", b =>
+                {
+                    b.Property<int>("IdTelemetry")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_telemetry");
+
+                    b.Property<DateTimeOffset>("DateTime")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("date")
+                        .HasComment("'2021-10-19 18:23:54+05'");
+
+                    b.Property<float?>("AxialLoad")
+                        .HasColumnType("real")
+                        .HasColumnName("axial_load")
+                        .HasComment("Осевая нагрузка");
+
+                    b.Property<float?>("AxialLoadLimitMax")
+                        .HasColumnType("real")
+                        .HasColumnName("axial_load_limit_max")
+                        .HasComment("Осевая нагрузка. Аварийная макс.");
+
+                    b.Property<float?>("AxialLoadSp")
+                        .HasColumnType("real")
+                        .HasColumnName("axial_load_sp")
+                        .HasComment("Осевая нагрузка. Задание");
+
+                    b.Property<float?>("BitDepth")
+                        .HasColumnType("real")
+                        .HasColumnName("bit_depth")
+                        .HasComment("Положение инструмента");
+
+                    b.Property<float?>("BlockPosition")
+                        .HasColumnType("real")
+                        .HasColumnName("block_position")
+                        .HasComment("Высота талевого блока");
+
+                    b.Property<float?>("BlockPositionMax")
+                        .HasColumnType("real")
+                        .HasColumnName("block_position_max")
+                        .HasComment("Талевый блок. Макс положение");
+
+                    b.Property<float?>("BlockPositionMin")
+                        .HasColumnType("real")
+                        .HasColumnName("block_position_min")
+                        .HasComment("Талевый блок. Мин положение");
+
+                    b.Property<float?>("BlockSpeed")
+                        .HasColumnType("real")
+                        .HasColumnName("block_speed")
+                        .HasComment("Скорость талевого блока");
+
+                    b.Property<float?>("BlockSpeedSp")
+                        .HasColumnType("real")
+                        .HasColumnName("block_speed_sp")
+                        .HasComment("Скорости талевого блока. Задание");
+
+                    b.Property<float?>("BlockSpeedSpDevelop")
+                        .HasColumnType("real")
+                        .HasColumnName("block_speed_sp_develop")
+                        .HasComment("Талевый блок. Задание скорости для проработки");
+
+                    b.Property<float?>("BlockSpeedSpRotor")
+                        .HasColumnType("real")
+                        .HasColumnName("block_speed_sp_rotor")
+                        .HasComment("Талевый блок. Задание скорости для роторного бурения");
+
+                    b.Property<float?>("BlockSpeedSpSlide")
+                        .HasColumnType("real")
+                        .HasColumnName("block_speed_sp_slide")
+                        .HasComment("Талевый блок. Задание скорости для режима слайда");
+
+                    b.Property<float?>("Flow")
+                        .HasColumnType("real")
+                        .HasColumnName("flow")
+                        .HasComment("Расход");
+
+                    b.Property<float?>("FlowDeltaLimitMax")
+                        .HasColumnType("real")
+                        .HasColumnName("flow_delta_limit_max")
+                        .HasComment("Расход. Аварийный макс.");
+
+                    b.Property<float?>("FlowIdle")
+                        .HasColumnType("real")
+                        .HasColumnName("flow_idle")
+                        .HasComment("Расход. Холостой ход");
+
+                    b.Property<float?>("HookWeight")
+                        .HasColumnType("real")
+                        .HasColumnName("hook_weight")
+                        .HasComment("Вес на крюке");
+
+                    b.Property<float?>("HookWeightIdle")
+                        .HasColumnType("real")
+                        .HasColumnName("hook_weight_idle")
+                        .HasComment("Вес на крюке. Холостой ход");
+
+                    b.Property<float?>("HookWeightLimitMax")
+                        .HasColumnType("real")
+                        .HasColumnName("hook_weight_limit_max")
+                        .HasComment("Вес на крюке. Затяжка");
+
+                    b.Property<float?>("HookWeightLimitMin")
+                        .HasColumnType("real")
+                        .HasColumnName("hook_weight_limit_min")
+                        .HasComment("Вес на крюке. Посадка");
+
+                    b.Property<short?>("IdFeedRegulator")
+                        .HasColumnType("smallint")
+                        .HasColumnName("id_feed_regulator")
+                        .HasComment("Текущий критерий бурения");
+
+                    b.Property<int?>("IdUser")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_user")
+                        .HasComment("Пользователь САУБ");
+
+                    b.Property<short?>("Mode")
+                        .HasColumnType("smallint")
+                        .HasColumnName("mode")
+                        .HasComment("Режим САУБ");
+
+                    b.Property<float?>("Mse")
+                        .HasColumnType("real")
+                        .HasColumnName("mse")
+                        .HasComment("MSE");
+
+                    b.Property<short?>("MseState")
+                        .HasColumnType("smallint")
+                        .HasColumnName("mse_state")
+                        .HasComment("Текущее состояние работы MSE");
+
+                    b.Property<float?>("Pressure")
+                        .HasColumnType("real")
+                        .HasColumnName("pressure")
+                        .HasComment("Давление");
+
+                    b.Property<float?>("PressureDeltaLimitMax")
+                        .HasColumnType("real")
+                        .HasColumnName("pressure_delta_limit_max")
+                        .HasComment("Давление дифф. Аварийное макс.");
+
+                    b.Property<float?>("PressureIdle")
+                        .HasColumnType("real")
+                        .HasColumnName("pressure_idle")
+                        .HasComment("Давление. Холостой ход");
+
+                    b.Property<float?>("PressureSp")
+                        .HasColumnType("real")
+                        .HasColumnName("pressure_sp")
+                        .HasComment("Давление. Задание");
+
+                    b.Property<float?>("PressureSpDevelop")
+                        .HasColumnType("real")
+                        .HasColumnName("pressure_sp_develop")
+                        .HasComment("Давление. Задание для проработки");
+
+                    b.Property<float?>("PressureSpRotor")
+                        .HasColumnType("real")
+                        .HasColumnName("pressure_sp_rotor")
+                        .HasComment("Давление. Задание для роторного бурения");
+
+                    b.Property<float?>("PressureSpSlide")
+                        .HasColumnType("real")
+                        .HasColumnName("pressure_sp_slide")
+                        .HasComment("Давление. Задание для режима слайда");
+
+                    b.Property<float?>("RotorSpeed")
+                        .HasColumnType("real")
+                        .HasColumnName("rotor_speed")
+                        .HasComment("Обороты ротора");
+
+                    b.Property<float?>("RotorTorque")
+                        .HasColumnType("real")
+                        .HasColumnName("rotor_torque")
+                        .HasComment("Момент на роторе");
+
+                    b.Property<float?>("RotorTorqueIdle")
+                        .HasColumnType("real")
+                        .HasColumnName("rotor_torque_idle")
+                        .HasComment("Момент на роторе. Холостой ход");
+
+                    b.Property<float?>("RotorTorqueLimitMax")
+                        .HasColumnType("real")
+                        .HasColumnName("rotor_torque_limit_max")
+                        .HasComment("Момент на роторе. Аварийный макс.");
+
+                    b.Property<float?>("RotorTorqueSp")
+                        .HasColumnType("real")
+                        .HasColumnName("rotor_torque_sp")
+                        .HasComment("Момент на роторе. Задание");
+
+                    b.Property<float?>("WellDepth")
+                        .HasColumnType("real")
+                        .HasColumnName("well_depth")
+                        .HasComment("Глубина забоя");
+
+                    b.HasKey("IdTelemetry", "DateTime");
+
+                    b.ToTable("t_telemetry_data_saub");
+
+                    b.HasComment("набор основных данных по SAUB");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaubStat", b =>
+                {
+                    b.Property<long?>("Count")
+                        .HasColumnType("bigint")
+                        .HasColumnName("count_items");
+
+                    b.Property<DateTimeOffset?>("DateMax")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("date_max");
+
+                    b.Property<DateTimeOffset?>("DateMin")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("date_min");
+
+                    b.Property<float?>("DepthMax")
+                        .HasColumnType("real")
+                        .HasColumnName("depth_max");
+
+                    b.Property<float?>("DepthMin")
+                        .HasColumnType("real")
+                        .HasColumnName("depth_min");
+
+                    b.Property<int>("IdTelemetry")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_telemetry");
+
+                    b.ToView("mw_telemetry_datas_saub_stat");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSpin", b =>
+                {
+                    b.Property<int>("IdTelemetry")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_telemetry");
+
+                    b.Property<DateTimeOffset>("DateTime")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("date")
+                        .HasComment("'2021-10-19 18:23:54+05'");
+
+                    b.Property<short?>("Mode")
+                        .HasColumnType("smallint")
+                        .HasColumnName("mode")
+                        .HasComment("Выбранный режим управления");
+
+                    b.Property<float?>("PositionRight")
+                        .HasColumnType("real")
+                        .HasColumnName("position_right")
+                        .HasComment("Крайний правый угол осцилляции");
+
+                    b.Property<float?>("PositionZero")
+                        .HasColumnType("real")
+                        .HasColumnName("position_zero")
+                        .HasComment("Нулевая позиция осцилляции");
+
+                    b.Property<float?>("RevolsLeftLimit")
+                        .HasColumnType("real")
+                        .HasColumnName("revols_left_limit")
+                        .HasComment("Ограничение числа оборотов влево");
+
+                    b.Property<float?>("RevolsLeftTotal")
+                        .HasColumnType("real")
+                        .HasColumnName("revols_left_total")
+                        .HasComment("Суммарное количество оборотов влево");
+
+                    b.Property<float?>("RevolsRightLimit")
+                        .HasColumnType("real")
+                        .HasColumnName("revols_right_limit")
+                        .HasComment("Ограничение числа оборотов вправо");
+
+                    b.Property<float?>("RevolsRightTotal")
+                        .HasColumnType("real")
+                        .HasColumnName("revols_right_total")
+                        .HasComment("Суммарное количество оборотов вправо");
+
+                    b.Property<float?>("SpeedLeftSp")
+                        .HasColumnType("real")
+                        .HasColumnName("speed_left_sp")
+                        .HasComment("Заданная скорость вращения влево");
+
+                    b.Property<float?>("SpeedRightSp")
+                        .HasColumnType("real")
+                        .HasColumnName("speed_right_sp")
+                        .HasComment("Заданная скорость вращения вправо");
+
+                    b.Property<short?>("State")
+                        .HasColumnType("smallint")
+                        .HasColumnName("state")
+                        .HasComment("Переменная этапа");
+
+                    b.HasKey("IdTelemetry", "DateTime");
+
+                    b.ToTable("t_telemetry_data_spin");
+
+                    b.HasComment("набор основных данных по SpinMaster");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.TelemetryEvent", b =>
+                {
+                    b.Property<int>("IdTelemetry")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_telemetry");
+
+                    b.Property<int>("IdEvent")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_event");
+
+                    b.Property<int>("IdCategory")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_category");
+
+                    b.Property<string>("MessageTemplate")
+                        .HasColumnType("text")
+                        .HasColumnName("message_template");
+
+                    b.HasKey("IdTelemetry", "IdEvent");
+
+                    b.ToTable("t_telemetry_event");
+
+                    b.HasComment("Справочник событий. События формируют сообщения. Разделено по версиям посылок от телеметрии.");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.TelemetryMessage", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("Arg0")
+                        .HasMaxLength(255)
+                        .HasColumnType("character varying(255)")
+                        .HasColumnName("arg0")
+                        .HasComment("Аргумент №0 для вставки в шаблон сообщения");
+
+                    b.Property<string>("Arg1")
+                        .HasMaxLength(255)
+                        .HasColumnType("character varying(255)")
+                        .HasColumnName("arg1");
+
+                    b.Property<string>("Arg2")
+                        .HasMaxLength(255)
+                        .HasColumnType("character varying(255)")
+                        .HasColumnName("arg2");
+
+                    b.Property<string>("Arg3")
+                        .HasMaxLength(255)
+                        .HasColumnType("character varying(255)")
+                        .HasColumnName("arg3");
+
+                    b.Property<DateTimeOffset>("DateTime")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("date");
+
+                    b.Property<int>("IdEvent")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_event");
+
+                    b.Property<int>("IdTelemetry")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_telemetry");
+
+                    b.Property<int?>("IdTelemetryUser")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_telemetry_user")
+                        .HasComment("Пользователь панели отправляющей телеметрию. не пользователь облака.");
+
+                    b.Property<double>("WellDepth")
+                        .HasColumnType("double precision")
+                        .HasColumnName("well_depth");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("IdTelemetry");
+
+                    b.ToTable("t_telemetry_message");
+
+                    b.HasComment("Сообщения на буровых");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.TelemetryUser", b =>
+                {
+                    b.Property<int>("IdTelemetry")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_telemetry");
+
+                    b.Property<int>("IdUser")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_user");
+
+                    b.Property<int?>("Level")
+                        .HasColumnType("integer")
+                        .HasColumnName("level");
+
+                    b.Property<string>("Name")
+                        .HasMaxLength(255)
+                        .HasColumnType("character varying(255)")
+                        .HasColumnName("name");
+
+                    b.Property<string>("Patronymic")
+                        .HasMaxLength(255)
+                        .HasColumnType("character varying(255)")
+                        .HasColumnName("patronymic");
+
+                    b.Property<string>("Surname")
+                        .HasMaxLength(255)
+                        .HasColumnType("character varying(255)")
+                        .HasColumnName("surname");
+
+                    b.HasKey("IdTelemetry", "IdUser");
+
+                    b.ToTable("t_telemetry_user");
+
+                    b.HasComment("Пользователи панели САУБ. Для сообщений.");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.User", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("Email")
+                        .HasMaxLength(255)
+                        .HasColumnType("character varying(255)")
+                        .HasColumnName("email")
+                        .HasComment("должность");
+
+                    b.Property<int?>("IdCompany")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_company");
+
+                    b.Property<short?>("IdState")
+                        .HasColumnType("smallint")
+                        .HasColumnName("state")
+                        .HasComment("состояние:\n100 - удален");
+
+                    b.Property<string>("Login")
+                        .HasMaxLength(255)
+                        .HasColumnType("character varying(255)")
+                        .HasColumnName("login");
+
+                    b.Property<string>("Name")
+                        .HasMaxLength(255)
+                        .HasColumnType("character varying(255)")
+                        .HasColumnName("name")
+                        .HasComment("имя");
+
+                    b.Property<string>("PasswordHash")
+                        .HasMaxLength(255)
+                        .HasColumnType("character varying(255)")
+                        .HasColumnName("password_hash")
+                        .HasComment("соленый хэш пароля.\nпервые 5 символов - соль");
+
+                    b.Property<string>("Patronymic")
+                        .HasMaxLength(255)
+                        .HasColumnType("character varying(255)")
+                        .HasColumnName("patronymic")
+                        .HasComment("отчество");
+
+                    b.Property<string>("Phone")
+                        .HasMaxLength(50)
+                        .HasColumnType("character varying(50)")
+                        .HasColumnName("phone")
+                        .HasComment("номер телефона");
+
+                    b.Property<string>("Position")
+                        .HasMaxLength(255)
+                        .HasColumnType("character varying(255)")
+                        .HasColumnName("position")
+                        .HasComment("email");
+
+                    b.Property<string>("Surname")
+                        .HasMaxLength(255)
+                        .HasColumnType("character varying(255)")
+                        .HasColumnName("surname")
+                        .HasComment("фамилия");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("IdCompany");
+
+                    b.HasIndex("Login")
+                        .IsUnique();
+
+                    b.ToTable("t_user");
+
+                    b.HasComment("Пользователи облака");
+
+                    b.HasData(
+                        new
+                        {
+                            Id = 1,
+                            IdCompany = 1,
+                            Login = "dev",
+                            Name = "Разработчик",
+                            PasswordHash = "Vlcj|4fa529103dde7ff72cfe76185f344d4aa87931f8e1b2044e8a7739947c3d18923464eaad93843e4f809c5e126d013072"
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.UserRole", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("Caption")
+                        .HasMaxLength(255)
+                        .HasColumnType("character varying(255)")
+                        .HasColumnName("caption")
+                        .HasComment("Название");
+
+                    b.Property<int>("IdType")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_type")
+                        .HasComment("0-роль из стандартной матрицы, \n1-специальная роль для какого-либо пользователя");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("t_user_role");
+
+                    b.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<int>("IdUser")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_user");
+
+                    b.Property<string>("Key")
+                        .HasMaxLength(255)
+                        .HasColumnType("character varying(255)")
+                        .HasColumnName("key")
+                        .HasComment("Ключ настроек пользователя");
+
+                    b.Property<JsonDocument>("Value")
+                        .HasColumnType("jsonb")
+                        .HasColumnName("setting_value")
+                        .HasComment("Значение настроек пользователя");
+
+                    b.HasKey("IdUser", "Key");
+
+                    b.ToTable("t_user_settings");
+
+                    b.HasComment("настройки интерфейса пользователя");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.Well", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("Caption")
+                        .HasMaxLength(255)
+                        .HasColumnType("character varying(255)")
+                        .HasColumnName("caption");
+
+                    b.Property<int?>("IdCluster")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_cluster");
+
+                    b.Property<int>("IdState")
+                        .HasColumnType("integer")
+                        .HasColumnName("state")
+                        .HasComment("0 - неизвестно, 1 - в работе, 2 - завершена");
+
+                    b.Property<int?>("IdTelemetry")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_telemetry");
+
+                    b.Property<int?>("IdWellType")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_well_type");
+
+                    b.Property<double?>("Latitude")
+                        .HasColumnType("double precision")
+                        .HasColumnName("latitude");
+
+                    b.Property<double?>("Longitude")
+                        .HasColumnType("double precision")
+                        .HasColumnName("longitude");
+
+                    b.Property<string>("Timezone")
+                        .HasColumnType("jsonb")
+                        .HasColumnName("timezone")
+                        .HasComment("Смещение часового пояса от UTC");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("IdCluster");
+
+                    b.HasIndex("IdTelemetry")
+                        .IsUnique();
+
+                    b.HasIndex("IdWellType");
+
+                    b.ToTable("t_well");
+
+                    b.HasComment("скважины");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.WellComposite", b =>
+                {
+                    b.Property<int>("IdWell")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_well")
+                        .HasComment("Id скважины получателя");
+
+                    b.Property<int>("IdWellSrc")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_well_src")
+                        .HasComment("Id скважины композита");
+
+                    b.Property<int>("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");
+
+                    b.HasComment("Композитная скважина");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.WellFinalDocument", b =>
+                {
+                    b.Property<int>("IdWell")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_well");
+
+                    b.Property<int>("IdUser")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_user");
+
+                    b.Property<int>("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");
+
+                    b.HasComment("Дело скважины");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.WellOperation", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("CategoryInfo")
+                        .HasColumnType("text")
+                        .HasColumnName("category_info")
+                        .HasComment("Доп. информация к выбраной категории");
+
+                    b.Property<string>("Comment")
+                        .HasColumnType("text")
+                        .HasColumnName("comment")
+                        .HasComment("Комментарий");
+
+                    b.Property<DateTimeOffset>("DateStart")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("date_start")
+                        .HasComment("Дата начала операции");
+
+                    b.Property<double>("DepthEnd")
+                        .HasColumnType("double precision")
+                        .HasColumnName("depth_end")
+                        .HasComment("Глубина после завершения операции, м");
+
+                    b.Property<double>("DepthStart")
+                        .HasColumnType("double precision")
+                        .HasColumnName("depth_start")
+                        .HasComment("Глубина на начало операции, м");
+
+                    b.Property<double>("DurationHours")
+                        .HasColumnType("double precision")
+                        .HasColumnName("duration_hours")
+                        .HasComment("Продолжительность, часы");
+
+                    b.Property<int>("IdCategory")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_category")
+                        .HasComment("Id категории операции");
+
+                    b.Property<int>("IdType")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_type")
+                        .HasComment("0 = План или 1 = Факт");
+
+                    b.Property<int>("IdWell")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_well")
+                        .HasComment("Id скважины");
+
+                    b.Property<int>("IdWellSectionType")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_well_section_type")
+                        .HasComment("Id тип секции скважины");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("DateStart");
+
+                    b.HasIndex("DepthEnd");
+
+                    b.HasIndex("IdCategory");
+
+                    b.HasIndex("IdWell");
+
+                    b.HasIndex("IdWellSectionType");
+
+                    b.ToTable("t_well_operation");
+
+                    b.HasComment("Данные по операциям на скважине");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.WellOperationCategory", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<int>("Code")
+                        .HasColumnType("integer")
+                        .HasColumnName("code")
+                        .HasComment("Код операции");
+
+                    b.Property<string>("KeyValueName")
+                        .HasMaxLength(32)
+                        .HasColumnType("character varying(32)")
+                        .HasColumnName("key_value_name")
+                        .HasComment("Название ключевого показателя операции");
+
+                    b.Property<string>("KeyValueUnits")
+                        .HasMaxLength(16)
+                        .HasColumnType("character varying(16)")
+                        .HasColumnName("key_value_units")
+                        .HasComment("Единицы измерения ключевого показателя операции");
+
+                    b.Property<string>("Name")
+                        .HasColumnType("text")
+                        .HasColumnName("name")
+                        .HasComment("Название категории операции");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("t_well_operation_category");
+
+                    b.HasComment("Справочник операций на скважине");
+
+                    b.HasData(
+                        new
+                        {
+                            Id = 1,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Невозможно определить операцию"
+                        },
+                        new
+                        {
+                            Id = 2,
+                            Code = 0,
+                            KeyValueName = "МСП",
+                            KeyValueUnits = "м/ч",
+                            Name = "Роторное бурение"
+                        },
+                        new
+                        {
+                            Id = 3,
+                            Code = 0,
+                            KeyValueName = "МСП",
+                            KeyValueUnits = "м/ч",
+                            Name = "Слайдирование"
+                        },
+                        new
+                        {
+                            Id = 4,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Подъем с проработкой"
+                        },
+                        new
+                        {
+                            Id = 5,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Спуск с проработкой"
+                        },
+                        new
+                        {
+                            Id = 6,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Подъем с промывкой"
+                        },
+                        new
+                        {
+                            Id = 7,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Спуск с промывкой"
+                        },
+                        new
+                        {
+                            Id = 8,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Спуск в скважину"
+                        },
+                        new
+                        {
+                            Id = 9,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Спуск с вращением"
+                        },
+                        new
+                        {
+                            Id = 10,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Подъем из скважины"
+                        },
+                        new
+                        {
+                            Id = 11,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Подъем с вращением"
+                        },
+                        new
+                        {
+                            Id = 12,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Промывка в покое"
+                        },
+                        new
+                        {
+                            Id = 13,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Промывка с вращением"
+                        },
+                        new
+                        {
+                            Id = 14,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Удержание в клиньях"
+                        },
+                        new
+                        {
+                            Id = 15,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Неподвижное состояние"
+                        },
+                        new
+                        {
+                            Id = 16,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Вращение без циркуляции"
+                        },
+                        new
+                        {
+                            Id = 17,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "На поверхности"
+                        },
+                        new
+                        {
+                            Id = 18,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Проработка перед наращиванием"
+                        },
+                        new
+                        {
+                            Id = 19,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Шаблонировка перед наращиванием"
+                        },
+                        new
+                        {
+                            Id = 20,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Промывка перед наращиванием"
+                        },
+                        new
+                        {
+                            Id = 21,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Статический замер телесистемы"
+                        },
+                        new
+                        {
+                            Id = 22,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Промывка"
+                        },
+                        new
+                        {
+                            Id = 23,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Шаблонировка при бурении"
+                        },
+                        new
+                        {
+                            Id = 1001,
+                            Code = 0,
+                            KeyValueName = "МСП",
+                            KeyValueUnits = "м/ч",
+                            Name = "Бурение"
+                        },
+                        new
+                        {
+                            Id = 1002,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "ГИС"
+                        },
+                        new
+                        {
+                            Id = 1003,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "ГФР"
+                        },
+                        new
+                        {
+                            Id = 1004,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Монтаж ПВО"
+                        },
+                        new
+                        {
+                            Id = 1005,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Демонтаж ПВО"
+                        },
+                        new
+                        {
+                            Id = 1006,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Установка ФА"
+                        },
+                        new
+                        {
+                            Id = 1007,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Оборудование устья"
+                        },
+                        new
+                        {
+                            Id = 1008,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "ОЗЦ"
+                        },
+                        new
+                        {
+                            Id = 1011,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Начало цикла строительства скважины"
+                        },
+                        new
+                        {
+                            Id = 1012,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Окончание цикла строительства скважины"
+                        },
+                        new
+                        {
+                            Id = 1013,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Опрессовка ПВО"
+                        },
+                        new
+                        {
+                            Id = 1014,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Опрессовка Ц.К."
+                        },
+                        new
+                        {
+                            Id = 1015,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Опрессовка ВЗД"
+                        },
+                        new
+                        {
+                            Id = 1016,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Перевод скв на другой тип промывочной жидкости"
+                        },
+                        new
+                        {
+                            Id = 1017,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Перезапись каротажа"
+                        },
+                        new
+                        {
+                            Id = 1018,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Перетяжка талевого каната"
+                        },
+                        new
+                        {
+                            Id = 1019,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Наращивание, промывка"
+                        },
+                        new
+                        {
+                            Id = 1020,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Подъем инструмента"
+                        },
+                        new
+                        {
+                            Id = 1021,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Подъем инструмента с промывкой"
+                        },
+                        new
+                        {
+                            Id = 1022,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Обратная проработка"
+                        },
+                        new
+                        {
+                            Id = 1023,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Сборка инструмента с мостков"
+                        },
+                        new
+                        {
+                            Id = 1024,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Подготовительные работы"
+                        },
+                        new
+                        {
+                            Id = 1025,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Сборка КНБК"
+                        },
+                        new
+                        {
+                            Id = 1026,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Разборка КНБК"
+                        },
+                        new
+                        {
+                            Id = 1027,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Промывка"
+                        },
+                        new
+                        {
+                            Id = 1028,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Промежуточная промывка"
+                        },
+                        new
+                        {
+                            Id = 1029,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Прокачка пачек"
+                        },
+                        new
+                        {
+                            Id = 1030,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Разбуривание тех.оснастки"
+                        },
+                        new
+                        {
+                            Id = 1031,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Ремонт"
+                        },
+                        new
+                        {
+                            Id = 1032,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Спуск инструмента"
+                        },
+                        new
+                        {
+                            Id = 1033,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Спуск инструмента с промывкой"
+                        },
+                        new
+                        {
+                            Id = 1034,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Прямая проработка"
+                        },
+                        new
+                        {
+                            Id = 1035,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Принудительная проработка"
+                        },
+                        new
+                        {
+                            Id = 1037,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Тех СПО-подъем"
+                        },
+                        new
+                        {
+                            Id = 1038,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Тех СПО-спуск"
+                        },
+                        new
+                        {
+                            Id = 1039,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Техническое обслуживание"
+                        },
+                        new
+                        {
+                            Id = 1040,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Цементаж"
+                        },
+                        new
+                        {
+                            Id = 1041,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Шаблонировка ствола"
+                        },
+                        new
+                        {
+                            Id = 1042,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Геологическое осложнение"
+                        },
+                        new
+                        {
+                            Id = 1043,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "НПВ"
+                        },
+                        new
+                        {
+                            Id = 1044,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "ВМР"
+                        },
+                        new
+                        {
+                            Id = 1045,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Прочее"
+                        },
+                        new
+                        {
+                            Id = 1046,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Спуск КНБК"
+                        },
+                        new
+                        {
+                            Id = 1047,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Подъем КНБК"
+                        },
+                        new
+                        {
+                            Id = 1048,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Спуск ОК"
+                        },
+                        new
+                        {
+                            Id = 1050,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Промывка при спуске ОК"
+                        },
+                        new
+                        {
+                            Id = 1051,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Замер ТС"
+                        },
+                        new
+                        {
+                            Id = 1052,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Тех. отстой"
+                        },
+                        new
+                        {
+                            Id = 1053,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Циркуляция и Обработка БР"
+                        },
+                        new
+                        {
+                            Id = 1054,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Срезка ствола"
+                        },
+                        new
+                        {
+                            Id = 1055,
+                            Code = 0,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Вспомогательные работы"
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.WellSectionType", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("Caption")
+                        .IsRequired()
+                        .HasMaxLength(255)
+                        .HasColumnType("character varying(255)")
+                        .HasColumnName("caption")
+                        .HasComment("Название");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("t_well_section_type");
+
+                    b.HasComment("конструкция секции скважины");
+
+                    b.HasData(
+                        new
+                        {
+                            Id = 1,
+                            Caption = "Пилотный ствол"
+                        },
+                        new
+                        {
+                            Id = 2,
+                            Caption = "Направление"
+                        },
+                        new
+                        {
+                            Id = 3,
+                            Caption = "Кондуктор"
+                        },
+                        new
+                        {
+                            Id = 4,
+                            Caption = "Эксплуатационная колонна"
+                        },
+                        new
+                        {
+                            Id = 5,
+                            Caption = "Транспортный ствол"
+                        },
+                        new
+                        {
+                            Id = 6,
+                            Caption = "Хвостовик"
+                        },
+                        new
+                        {
+                            Id = 7,
+                            Caption = "Пилотный ствол 2"
+                        },
+                        new
+                        {
+                            Id = 8,
+                            Caption = "Направление 2"
+                        },
+                        new
+                        {
+                            Id = 9,
+                            Caption = "Кондуктор 2"
+                        },
+                        new
+                        {
+                            Id = 10,
+                            Caption = "Эксплуатационная колонна 2"
+                        },
+                        new
+                        {
+                            Id = 11,
+                            Caption = "Транспортный ствол 2"
+                        },
+                        new
+                        {
+                            Id = 12,
+                            Caption = "Хвостовик 2"
+                        },
+                        new
+                        {
+                            Id = 13,
+                            Caption = "Пилотный ствол 3"
+                        },
+                        new
+                        {
+                            Id = 14,
+                            Caption = "Направление 3"
+                        },
+                        new
+                        {
+                            Id = 15,
+                            Caption = "Кондуктор 3"
+                        },
+                        new
+                        {
+                            Id = 16,
+                            Caption = "Эксплуатационная колонна 3"
+                        },
+                        new
+                        {
+                            Id = 17,
+                            Caption = "Транспортный ствол 3"
+                        },
+                        new
+                        {
+                            Id = 18,
+                            Caption = "Хвостовик 3"
+                        },
+                        new
+                        {
+                            Id = 19,
+                            Caption = "Пилотный ствол 4"
+                        },
+                        new
+                        {
+                            Id = 20,
+                            Caption = "Направление 4"
+                        },
+                        new
+                        {
+                            Id = 21,
+                            Caption = "Кондуктор 4"
+                        },
+                        new
+                        {
+                            Id = 22,
+                            Caption = "Эксплуатационная колонна 4"
+                        },
+                        new
+                        {
+                            Id = 23,
+                            Caption = "Транспортный ствол 4"
+                        },
+                        new
+                        {
+                            Id = 24,
+                            Caption = "Хвостовик 4"
+                        },
+                        new
+                        {
+                            Id = 25,
+                            Caption = "Пилотный ствол 5"
+                        },
+                        new
+                        {
+                            Id = 26,
+                            Caption = "Направление 5"
+                        },
+                        new
+                        {
+                            Id = 27,
+                            Caption = "Кондуктор 5"
+                        },
+                        new
+                        {
+                            Id = 28,
+                            Caption = "Эксплуатационная колонна 5"
+                        },
+                        new
+                        {
+                            Id = 29,
+                            Caption = "Транспортный ствол 5"
+                        },
+                        new
+                        {
+                            Id = 30,
+                            Caption = "Хвостовик 5"
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.WellType", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("Caption")
+                        .IsRequired()
+                        .HasMaxLength(255)
+                        .HasColumnType("character varying(255)")
+                        .HasColumnName("caption")
+                        .HasComment("Название");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("t_well_type");
+
+                    b.HasComment("конструкция скважины");
+
+                    b.HasData(
+                        new
+                        {
+                            Id = 1,
+                            Caption = "Наклонно-направленная"
+                        },
+                        new
+                        {
+                            Id = 2,
+                            Caption = "Горизонтальная"
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.WITS.RecordBase", b =>
+                {
+                    b.Property<int>("IdTelemetry")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_telemetry");
+
+                    b.Property<DateTimeOffset>("DateTime")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("date");
+
+                    b.Property<short?>("Actcod")
+                        .HasColumnType("smallint")
+                        .HasColumnName("ACTCOD");
+
+                    b.Property<int?>("Date")
+                        .HasColumnType("integer")
+                        .HasColumnName("DATE");
+
+                    b.Property<short?>("Recid")
+                        .HasColumnType("smallint")
+                        .HasColumnName("RECID");
+
+                    b.Property<int?>("Seqid")
+                        .HasColumnType("integer")
+                        .HasColumnName("SEQID");
+
+                    b.Property<short?>("Stknum")
+                        .HasColumnType("smallint")
+                        .HasColumnName("STKNUM");
+
+                    b.Property<int?>("Time")
+                        .HasColumnType("integer")
+                        .HasColumnName("TIME");
+
+                    b.Property<string>("Wellid")
+                        .HasColumnType("text")
+                        .HasColumnName("WELLID");
+
+                    b.HasKey("IdTelemetry", "DateTime");
+
+                    b.ToTable("t_telemetry_wits_base");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.WITS.Record1", b =>
+                {
+                    b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase");
+
+                    b.Property<float?>("Blkpos")
+                        .HasColumnType("real")
+                        .HasColumnName("BLKPOS");
+
+                    b.Property<float?>("Chkp")
+                        .HasColumnType("real")
+                        .HasColumnName("CHKP");
+
+                    b.Property<float?>("Deptbitm")
+                        .HasColumnType("real")
+                        .HasColumnName("DEPTBITM");
+
+                    b.Property<float?>("Deptbitv")
+                        .HasColumnType("real")
+                        .HasColumnName("DEPTBITV");
+
+                    b.Property<float?>("Deptmeas")
+                        .HasColumnType("real")
+                        .HasColumnName("DEPTMEAS");
+
+                    b.Property<float?>("Deptretm")
+                        .HasColumnType("real")
+                        .HasColumnName("DEPTRETM");
+
+                    b.Property<float?>("Deptvert")
+                        .HasColumnType("real")
+                        .HasColumnName("DEPTVERT");
+
+                    b.Property<float?>("Gasa")
+                        .HasColumnType("real")
+                        .HasColumnName("GASA");
+
+                    b.Property<float?>("Hkla")
+                        .HasColumnType("real")
+                        .HasColumnName("HKLA");
+
+                    b.Property<float?>("Hklx")
+                        .HasColumnType("real")
+                        .HasColumnName("HKLX");
+
+                    b.Property<short?>("Lagstks")
+                        .HasColumnType("smallint")
+                        .HasColumnName("LAGSTKS");
+
+                    b.Property<float?>("Mcia")
+                        .HasColumnType("real")
+                        .HasColumnName("MCIA");
+
+                    b.Property<float?>("Mcoa")
+                        .HasColumnType("real")
+                        .HasColumnName("MCOA");
+
+                    b.Property<float?>("Mdia")
+                        .HasColumnType("real")
+                        .HasColumnName("MDIA");
+
+                    b.Property<float?>("Mdoa")
+                        .HasColumnType("real")
+                        .HasColumnName("MDOA");
+
+                    b.Property<float?>("Mfia")
+                        .HasColumnType("real")
+                        .HasColumnName("MFIA");
+
+                    b.Property<float?>("Mfoa")
+                        .HasColumnType("real")
+                        .HasColumnName("MFOA");
+
+                    b.Property<short?>("Mfop")
+                        .HasColumnType("smallint")
+                        .HasColumnName("MFOP");
+
+                    b.Property<float?>("Mtia")
+                        .HasColumnType("real")
+                        .HasColumnName("MTIA");
+
+                    b.Property<float?>("Mtoa")
+                        .HasColumnType("real")
+                        .HasColumnName("MTOA");
+
+                    b.Property<float?>("Ropa")
+                        .HasColumnType("real")
+                        .HasColumnName("ROPA");
+
+                    b.Property<short?>("Rpma")
+                        .HasColumnType("smallint")
+                        .HasColumnName("RPMA");
+
+                    b.Property<float?>("Spare1")
+                        .HasColumnType("real")
+                        .HasColumnName("SPARE1");
+
+                    b.Property<float?>("Spare2")
+                        .HasColumnType("real")
+                        .HasColumnName("SPARE2");
+
+                    b.Property<float?>("Spare3")
+                        .HasColumnType("real")
+                        .HasColumnName("SPARE3");
+
+                    b.Property<float?>("Spare4")
+                        .HasColumnType("real")
+                        .HasColumnName("SPARE4");
+
+                    b.Property<float?>("Spare5")
+                        .HasColumnType("real")
+                        .HasColumnName("SPARE5");
+
+                    b.Property<short?>("Spm1")
+                        .HasColumnType("smallint")
+                        .HasColumnName("SPM1");
+
+                    b.Property<short?>("Spm2")
+                        .HasColumnType("smallint")
+                        .HasColumnName("SPM2");
+
+                    b.Property<short?>("Spm3")
+                        .HasColumnType("smallint")
+                        .HasColumnName("SPM3");
+
+                    b.Property<float?>("Sppa")
+                        .HasColumnType("real")
+                        .HasColumnName("SPPA");
+
+                    b.Property<int?>("Stkc")
+                        .HasColumnType("integer")
+                        .HasColumnName("STKC");
+
+                    b.Property<int?>("TelemetryId")
+                        .HasColumnType("integer");
+
+                    b.Property<float?>("Torqa")
+                        .HasColumnType("real")
+                        .HasColumnName("TORQA");
+
+                    b.Property<float?>("Torqx")
+                        .HasColumnType("real")
+                        .HasColumnName("TORQX");
+
+                    b.Property<float?>("Tvolact")
+                        .HasColumnType("real")
+                        .HasColumnName("TVOLACT");
+
+                    b.Property<float?>("Tvolcact")
+                        .HasColumnType("real")
+                        .HasColumnName("TVOLCACT");
+
+                    b.Property<float?>("Woba")
+                        .HasColumnType("real")
+                        .HasColumnName("WOBA");
+
+                    b.Property<float?>("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<float?>("Deptbitm")
+                        .HasColumnType("real")
+                        .HasColumnName("DEPTBITM");
+
+                    b.Property<float?>("DeptmeasGdpMc")
+                        .HasColumnType("real")
+                        .HasColumnName("DEPTMEAS_GDP_mc");
+
+                    b.Property<float?>("DeptmeasMcrstat")
+                        .HasColumnType("real")
+                        .HasColumnName("DEPTMEAS_MCRSTAT");
+
+                    b.Property<float?>("DeptmeasRa33Mc")
+                        .HasColumnType("real")
+                        .HasColumnName("DEPTMEAS_RA33_mc");
+
+                    b.Property<float?>("DeptmeasRa33f2Mc")
+                        .HasColumnType("real")
+                        .HasColumnName("DEPTMEAS_RA33F2_mc");
+
+                    b.Property<float?>("DeptmeasRa33f4Mc")
+                        .HasColumnType("real")
+                        .HasColumnName("DEPTMEAS_RA33F4_mc");
+
+                    b.Property<float?>("DeptmeasRp33Mc")
+                        .HasColumnType("real")
+                        .HasColumnName("DEPTMEAS_RP33_mc");
+
+                    b.Property<float?>("DeptmeasRp33f2Mc")
+                        .HasColumnType("real")
+                        .HasColumnName("DEPTMEAS_RP33F2_mc");
+
+                    b.Property<float?>("DeptmeasRp33f4Mc")
+                        .HasColumnType("real")
+                        .HasColumnName("DEPTMEAS_RP33F4_mc");
+
+                    b.Property<float?>("DeptmeasSlvlMc")
+                        .HasColumnType("real")
+                        .HasColumnName("DEPTMEAS_SLVL_mc");
+
+                    b.Property<float?>("GdpMc")
+                        .HasColumnType("real")
+                        .HasColumnName("GDP_mc");
+
+                    b.Property<float?>("Mcrstat")
+                        .HasColumnType("real")
+                        .HasColumnName("MCRSTAT");
+
+                    b.Property<float?>("Ra33Mc")
+                        .HasColumnType("real")
+                        .HasColumnName("RA33_mc");
+
+                    b.Property<float?>("Ra33f2Mc")
+                        .HasColumnType("real")
+                        .HasColumnName("RA33F2_mc");
+
+                    b.Property<float?>("Ra33f4Mc")
+                        .HasColumnType("real")
+                        .HasColumnName("RA33F4_mc");
+
+                    b.Property<float?>("Rp33Mc")
+                        .HasColumnType("real")
+                        .HasColumnName("RP33_mc");
+
+                    b.Property<float?>("Rp33f2Mc")
+                        .HasColumnType("real")
+                        .HasColumnName("RP33F2_mc");
+
+                    b.Property<float?>("Rp33f4Mc")
+                        .HasColumnType("real")
+                        .HasColumnName("RP33F4_mc");
+
+                    b.Property<float?>("SlvlMc")
+                        .HasColumnType("real")
+                        .HasColumnName("SLVL_mc");
+
+                    b.Property<int?>("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<float?>("Btot")
+                        .HasColumnType("real")
+                        .HasColumnName("Btot");
+
+                    b.Property<float?>("Bx")
+                        .HasColumnType("real")
+                        .HasColumnName("Bx");
+
+                    b.Property<float?>("By")
+                        .HasColumnType("real")
+                        .HasColumnName("By");
+
+                    b.Property<float?>("Bz")
+                        .HasColumnType("real")
+                        .HasColumnName("Bz");
+
+                    b.Property<float?>("Deptbitm")
+                        .HasColumnType("real")
+                        .HasColumnName("DEPTBITM");
+
+                    b.Property<float?>("Deptmeas")
+                        .HasColumnType("real")
+                        .HasColumnName("DEPTMEAS");
+
+                    b.Property<float?>("Gtot")
+                        .HasColumnType("real")
+                        .HasColumnName("Gtot");
+
+                    b.Property<float?>("Gx")
+                        .HasColumnType("real")
+                        .HasColumnName("Gx");
+
+                    b.Property<float?>("Gy")
+                        .HasColumnType("real")
+                        .HasColumnName("Gy");
+
+                    b.Property<float?>("Gz")
+                        .HasColumnType("real")
+                        .HasColumnName("Gz");
+
+                    b.Property<int?>("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<float?>("Att06h")
+                        .HasColumnType("real")
+                        .HasColumnName("ATT06H");
+
+                    b.Property<float?>("Att06l")
+                        .HasColumnType("real")
+                        .HasColumnName("ATT06L");
+
+                    b.Property<float?>("Att10h")
+                        .HasColumnType("real")
+                        .HasColumnName("ATT10H");
+
+                    b.Property<float?>("Att10l")
+                        .HasColumnType("real")
+                        .HasColumnName("ATT10L");
+
+                    b.Property<float?>("Deptbitm")
+                        .HasColumnType("real")
+                        .HasColumnName("DEPTBITM");
+
+                    b.Property<float?>("Deptmeas")
+                        .HasColumnType("real")
+                        .HasColumnName("DEPTMEAS");
+
+                    b.Property<float?>("Phl1f1")
+                        .HasColumnType("real")
+                        .HasColumnName("PHL1F1");
+
+                    b.Property<float?>("Phl1f2")
+                        .HasColumnType("real")
+                        .HasColumnName("PHL1F2");
+
+                    b.Property<float?>("Phl2f1")
+                        .HasColumnType("real")
+                        .HasColumnName("PHL2F1");
+
+                    b.Property<float?>("Phl2f2")
+                        .HasColumnType("real")
+                        .HasColumnName("PHL2F2");
+
+                    b.Property<float?>("Status")
+                        .HasColumnType("real")
+                        .HasColumnName("Status");
+
+                    b.Property<int?>("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<float?>("Deptmeas")
+                        .HasColumnType("real")
+                        .HasColumnName("DEPTMEAS");
+
+                    b.Property<float?>("Deptsvym")
+                        .HasColumnType("real")
+                        .HasColumnName("DEPTSVYM");
+
+                    b.Property<float?>("Deptsvyv")
+                        .HasColumnType("real")
+                        .HasColumnName("DEPTSVYV");
+
+                    b.Property<short?>("Passnum")
+                        .HasColumnType("smallint")
+                        .HasColumnName("PASSNUM");
+
+                    b.Property<float?>("Spare1")
+                        .HasColumnType("real")
+                        .HasColumnName("SPARE1");
+
+                    b.Property<float?>("Spare2")
+                        .HasColumnType("real")
+                        .HasColumnName("SPARE2");
+
+                    b.Property<float?>("Spare3")
+                        .HasColumnType("real")
+                        .HasColumnName("SPARE3");
+
+                    b.Property<float?>("Spare4")
+                        .HasColumnType("real")
+                        .HasColumnName("SPARE4");
+
+                    b.Property<float?>("Spare5")
+                        .HasColumnType("real")
+                        .HasColumnName("SPARE5");
+
+                    b.Property<float?>("Svyazc")
+                        .HasColumnType("real")
+                        .HasColumnName("SVYAZC");
+
+                    b.Property<float?>("Svyazu")
+                        .HasColumnType("real")
+                        .HasColumnName("SVYAZU");
+
+                    b.Property<float?>("Svydls")
+                        .HasColumnType("real")
+                        .HasColumnName("SVYDLS");
+
+                    b.Property<float?>("Svyew")
+                        .HasColumnType("real")
+                        .HasColumnName("SVYEW");
+
+                    b.Property<float?>("Svygtf")
+                        .HasColumnType("real")
+                        .HasColumnName("SVYGTF");
+
+                    b.Property<float?>("Svyinc")
+                        .HasColumnType("real")
+                        .HasColumnName("SVYINC");
+
+                    b.Property<float?>("Svymtf")
+                        .HasColumnType("real")
+                        .HasColumnName("SVYMTF");
+
+                    b.Property<float?>("Svyns")
+                        .HasColumnType("real")
+                        .HasColumnName("SVYNS");
+
+                    b.Property<string>("Svytype")
+                        .HasColumnType("text")
+                        .HasColumnName("SVYTYPE");
+
+                    b.Property<float?>("Svywalk")
+                        .HasColumnType("real")
+                        .HasColumnName("SVYWALK");
+
+                    b.Property<int?>("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<float?>("Deptbitm")
+                        .HasColumnType("real")
+                        .HasColumnName("DEPTBITM");
+
+                    b.Property<float?>("Deptbitv")
+                        .HasColumnType("real")
+                        .HasColumnName("DEPTBITV");
+
+                    b.Property<float?>("Deptcalm")
+                        .HasColumnType("real")
+                        .HasColumnName("DEPTCALM");
+
+                    b.Property<float?>("Deptcalv")
+                        .HasColumnType("real")
+                        .HasColumnName("DEPTCALV");
+
+                    b.Property<float?>("Deptfdm")
+                        .HasColumnType("real")
+                        .HasColumnName("DEPTFDM");
+
+                    b.Property<float?>("Deptfdv")
+                        .HasColumnType("real")
+                        .HasColumnName("DEPTFDV");
+
+                    b.Property<float?>("Deptgr1m")
+                        .HasColumnType("real")
+                        .HasColumnName("DEPTGR1M");
+
+                    b.Property<float?>("Deptgr1v")
+                        .HasColumnType("real")
+                        .HasColumnName("DEPTGR1V");
+
+                    b.Property<float?>("Deptgr2m")
+                        .HasColumnType("real")
+                        .HasColumnName("DEPTGR2M");
+
+                    b.Property<float?>("Deptgr2v")
+                        .HasColumnType("real")
+                        .HasColumnName("DEPTGR2V");
+
+                    b.Property<float?>("Deptmeas")
+                        .HasColumnType("real")
+                        .HasColumnName("DEPTMEAS");
+
+                    b.Property<float?>("Deptp1m")
+                        .HasColumnType("real")
+                        .HasColumnName("DEPTP1M");
+
+                    b.Property<float?>("Deptp1v")
+                        .HasColumnType("real")
+                        .HasColumnName("DEPTP1V");
+
+                    b.Property<float?>("Deptp2m")
+                        .HasColumnType("real")
+                        .HasColumnName("DEPTP2M");
+
+                    b.Property<float?>("Deptp2v")
+                        .HasColumnType("real")
+                        .HasColumnName("DEPTP2V");
+
+                    b.Property<float?>("Deptrs1m")
+                        .HasColumnType("real")
+                        .HasColumnName("DEPTRS1M");
+
+                    b.Property<float?>("Deptrs1v")
+                        .HasColumnType("real")
+                        .HasColumnName("DEPTRS1V");
+
+                    b.Property<float?>("Deptrs2m")
+                        .HasColumnType("real")
+                        .HasColumnName("DEPTRS2M");
+
+                    b.Property<float?>("Deptrs2v")
+                        .HasColumnType("real")
+                        .HasColumnName("DEPTRS2V");
+
+                    b.Property<float?>("Deptvert")
+                        .HasColumnType("real")
+                        .HasColumnName("DEPTVERT");
+
+                    b.Property<float?>("Mclp")
+                        .HasColumnType("real")
+                        .HasColumnName("MCLP");
+
+                    b.Property<float?>("Mfd")
+                        .HasColumnType("real")
+                        .HasColumnName("MFD");
+
+                    b.Property<float?>("Mffp")
+                        .HasColumnType("real")
+                        .HasColumnName("MFFP");
+
+                    b.Property<float?>("Mfpp")
+                        .HasColumnType("real")
+                        .HasColumnName("MFPP");
+
+                    b.Property<float?>("Mfrann")
+                        .HasColumnType("real")
+                        .HasColumnName("MFRANN");
+
+                    b.Property<float?>("Mfrpipe")
+                        .HasColumnType("real")
+                        .HasColumnName("MFRPIPE");
+
+                    b.Property<float?>("Mftann")
+                        .HasColumnType("real")
+                        .HasColumnName("MFTANN");
+
+                    b.Property<float?>("Mftpipe")
+                        .HasColumnType("real")
+                        .HasColumnName("MFTPIPE");
+
+                    b.Property<float?>("Mg1")
+                        .HasColumnType("real")
+                        .HasColumnName("MG1");
+
+                    b.Property<float?>("Mg1c")
+                        .HasColumnType("real")
+                        .HasColumnName("MG1C");
+
+                    b.Property<float?>("Mg2")
+                        .HasColumnType("real")
+                        .HasColumnName("MG2");
+
+                    b.Property<float?>("Mg2c")
+                        .HasColumnType("real")
+                        .HasColumnName("MG2C");
+
+                    b.Property<float?>("Mpo1")
+                        .HasColumnType("real")
+                        .HasColumnName("MPO1");
+
+                    b.Property<float?>("Mpo2")
+                        .HasColumnType("real")
+                        .HasColumnName("MPO2");
+
+                    b.Property<float?>("Mr1")
+                        .HasColumnType("real")
+                        .HasColumnName("MR1");
+
+                    b.Property<float?>("Mr1c")
+                        .HasColumnType("real")
+                        .HasColumnName("MR1C");
+
+                    b.Property<float?>("Mr2")
+                        .HasColumnType("real")
+                        .HasColumnName("MR2");
+
+                    b.Property<float?>("Mr2c")
+                        .HasColumnType("real")
+                        .HasColumnName("MR2C");
+
+                    b.Property<short?>("Passnum")
+                        .HasColumnType("smallint")
+                        .HasColumnName("PASSNUM");
+
+                    b.Property<float?>("Spare1")
+                        .HasColumnType("real")
+                        .HasColumnName("SPARE1");
+
+                    b.Property<float?>("Spare2")
+                        .HasColumnType("real")
+                        .HasColumnName("SPARE2");
+
+                    b.Property<float?>("Spare3")
+                        .HasColumnType("real")
+                        .HasColumnName("SPARE3");
+
+                    b.Property<float?>("Spare4")
+                        .HasColumnType("real")
+                        .HasColumnName("SPARE4");
+
+                    b.Property<float?>("Spare5")
+                        .HasColumnType("real")
+                        .HasColumnName("SPARE5");
+
+                    b.Property<float?>("Spare6")
+                        .HasColumnType("real")
+                        .HasColumnName("SPARE6");
+
+                    b.Property<float?>("Spare7")
+                        .HasColumnType("real")
+                        .HasColumnName("SPARE7");
+
+                    b.Property<float?>("Spare8")
+                        .HasColumnType("real")
+                        .HasColumnName("SPARE8");
+
+                    b.Property<float?>("Spare9")
+                        .HasColumnType("real")
+                        .HasColumnName("SPARE9");
+
+                    b.Property<int?>("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")
+                        .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.DailyReport.DailyReport", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.Well", "Well")
+                        .WithMany()
+                        .HasForeignKey("IdWell")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Well");
+                });
+
+            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.DrillFlowChart", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.Well", "Well")
+                        .WithMany()
+                        .HasForeignKey("IdWell")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Well");
+                });
+
+            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.DrillParams", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.Well", "Well")
+                        .WithMany()
+                        .HasForeignKey("IdWell")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType")
+                        .WithMany("DrillParamsCollection")
+                        .HasForeignKey("IdWellSectionType")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("t_drill_params_t_well_section_type_id_fk");
+
+                    b.Navigation("Well");
+
+                    b.Navigation("WellSectionType");
+                });
+
+            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.LimitingParameter", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry")
+                        .WithMany()
+                        .HasForeignKey("IdTelemetry")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Telemetry");
+                });
+
+            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.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.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.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.Subsystems.SubsystemOperationTime", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.Subsystems.Subsystem", "Subsystem")
+                        .WithMany()
+                        .HasForeignKey("IdSubsystem")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry")
+                        .WithMany()
+                        .HasForeignKey("IdTelemetry")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Subsystem");
+
+                    b.Navigation("Telemetry");
+                });
+
+            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.User", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.Company", "Company")
+                        .WithMany("Users")
+                        .HasForeignKey("IdCompany")
+                        .OnDelete(DeleteBehavior.SetNull)
+                        .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")
+                        .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");
+
+                    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.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("Well");
+
+                    b.Navigation("WellSectionType");
+                });
+
+            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");
+                });
+
+            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.MeasureCategory", b =>
+                {
+                    b.Navigation("Measures");
+                });
+
+            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("RelationUsersUserRoles");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.UserRole", b =>
+                {
+                    b.Navigation("RelationUserRolePermissions");
+
+                    b.Navigation("RelationUserRoleUserRoles");
+
+                    b.Navigation("RelationUsersUserRoles");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.Well", b =>
+                {
+                    b.Navigation("DrillingProgramParts");
+
+                    b.Navigation("RelationCompaniesWells");
+
+                    b.Navigation("WellCompositeSrcs");
+
+                    b.Navigation("WellComposites");
+
+                    b.Navigation("WellOperations");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.WellSectionType", b =>
+                {
+                    b.Navigation("DrillParamsCollection");
+
+                    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/20221109104346_AddTable_t_limiting_parameter.cs b/AsbCloudDb/Migrations/20221109104346_AddTable_t_limiting_parameter.cs
new file mode 100644
index 00000000..ac1134e8
--- /dev/null
+++ b/AsbCloudDb/Migrations/20221109104346_AddTable_t_limiting_parameter.cs
@@ -0,0 +1,50 @@
+using System;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
+
+#nullable disable
+
+namespace AsbCloudDb.Migrations
+{
+    public partial class AddTable_t_limiting_parameter : Migration
+    {
+        protected override void Up(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.CreateTable(
+                name: "t_limiting_parameter",
+                columns: table => new
+                {
+                    id = table.Column<int>(type: "integer", nullable: false)
+                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+                    id_telemetry = table.Column<int>(type: "integer", nullable: false),
+                    date_start = table.Column<DateTimeOffset>(type: "timestamp with time zone", nullable: true),
+                    date_end = table.Column<DateTimeOffset>(type: "timestamp with time zone", nullable: true),
+                    depth_start = table.Column<float>(type: "real", nullable: true),
+                    depth_end = table.Column<float>(type: "real", nullable: true),
+                    id_feed_regulator = table.Column<short>(type: "smallint", nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_t_limiting_parameter", x => x.id);
+                    table.ForeignKey(
+                        name: "FK_t_limiting_parameter_t_telemetry_id_telemetry",
+                        column: x => x.id_telemetry,
+                        principalTable: "t_telemetry",
+                        principalColumn: "id",
+                        onDelete: ReferentialAction.Cascade);
+                },
+                comment: "Ограничения по параметрам телеметрии");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_t_limiting_parameter_id_telemetry",
+                table: "t_limiting_parameter",
+                column: "id_telemetry");
+        }
+
+        protected override void Down(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.DropTable(
+                name: "t_limiting_parameter");
+        }
+    }
+}
diff --git a/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs b/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs
index af644955..d6df756b 100644
--- a/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs
+++ b/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs
@@ -1002,6 +1002,48 @@ namespace AsbCloudDb.Migrations
                     b.HasComment("Действия с файлами.");
                 });
 
+            modelBuilder.Entity("AsbCloudDb.Model.LimitingParameter", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTimeOffset?>("DateEnd")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("date_end");
+
+                    b.Property<DateTimeOffset?>("DateStart")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("date_start");
+
+                    b.Property<float?>("DepthEnd")
+                        .HasColumnType("real")
+                        .HasColumnName("depth_end");
+
+                    b.Property<float?>("DepthStart")
+                        .HasColumnType("real")
+                        .HasColumnName("depth_start");
+
+                    b.Property<short>("IdFeedRegulator")
+                        .HasColumnType("smallint")
+                        .HasColumnName("id_feed_regulator");
+
+                    b.Property<int>("IdTelemetry")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_telemetry");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("IdTelemetry");
+
+                    b.ToTable("t_limiting_parameter");
+
+                    b.HasComment("Ограничения по параметрам телеметрии");
+                });
+
             modelBuilder.Entity("AsbCloudDb.Model.Measure", b =>
                 {
                     b.Property<int>("Id")
@@ -5937,6 +5979,17 @@ namespace AsbCloudDb.Migrations
                     b.Navigation("User");
                 });
 
+            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.Measure", b =>
                 {
                     b.HasOne("AsbCloudDb.Model.MeasureCategory", "Category")
diff --git a/AsbCloudDb/Model/AsbCloudDbContext.cs b/AsbCloudDb/Model/AsbCloudDbContext.cs
index dc68f38c..058b9110 100644
--- a/AsbCloudDb/Model/AsbCloudDbContext.cs
+++ b/AsbCloudDb/Model/AsbCloudDbContext.cs
@@ -51,6 +51,7 @@ namespace AsbCloudDb.Model
         public virtual DbSet<Schedule> Schedule => Set<Schedule>();
         public virtual DbSet<OperationValue> OperationValues => Set<OperationValue>();
         public virtual DbSet<WellFinalDocument> WellFinalDocuments => Set<WellFinalDocument>();
+        public virtual DbSet<LimitingParameter> LimitingParameter => Set<LimitingParameter>();
 
         // WITS
         public DbSet<WITS.Record1> Record1 => Set<WITS.Record1>();
diff --git a/AsbCloudDb/Model/IAsbCloudDbContext.cs b/AsbCloudDb/Model/IAsbCloudDbContext.cs
index 5bab3c21..1dabe023 100644
--- a/AsbCloudDb/Model/IAsbCloudDbContext.cs
+++ b/AsbCloudDb/Model/IAsbCloudDbContext.cs
@@ -51,6 +51,7 @@ namespace AsbCloudDb.Model
         DbSet<Schedule> Schedule { get; }
         DbSet<OperationValue> OperationValues { get; }
         DbSet<WellFinalDocument> WellFinalDocuments { get; }
+        DbSet<LimitingParameter> LimitingParameter { get; }
 
         DbSet<Record1> Record1 { get; }
         DbSet<Record7> Record7 { get; }
diff --git a/AsbCloudDb/Model/LimitingParameter.cs b/AsbCloudDb/Model/LimitingParameter.cs
new file mode 100644
index 00000000..08df3ee5
--- /dev/null
+++ b/AsbCloudDb/Model/LimitingParameter.cs
@@ -0,0 +1,57 @@
+using Microsoft.EntityFrameworkCore;
+using System;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Text.Json.Serialization;
+
+namespace AsbCloudDb.Model
+{
+#nullable disable
+    [Table("t_limiting_parameter"), Comment("Ограничения по параметрам телеметрии")]
+    public class LimitingParameter : IId
+    {
+        [Column("id"), Key]
+        public int Id { get; set; }
+
+        [Column("id_telemetry")]
+        public int IdTelemetry { get; set; }
+
+        [Column("date_start")]
+        public DateTimeOffset? DateStart { get; set; }
+
+        [Column("date_end")]
+        public DateTimeOffset? DateEnd { get; set; }
+
+        [Column("depth_start")]
+        public float? DepthStart { get; set; }
+
+        [Column("depth_end")]
+        public float? DepthEnd { get; set; }
+
+        [Column("id_feed_regulator")]
+        public short IdFeedRegulator { get; set; }
+
+        [JsonIgnore]
+        [ForeignKey(nameof(IdTelemetry))]
+        public virtual Telemetry Telemetry { get; set; } = null!;
+
+        public float? GetDepth(DateTimeOffset date)
+        {
+            var a = (date - DateStart.Value).TotalSeconds;
+            var b = (DateEnd.Value - DateStart.Value).TotalSeconds;
+            var c = DepthEnd - DepthStart;
+            var result = DepthStart + (a / b) * c;
+            return (float?)result;
+        }
+
+        public DateTimeOffset? GetDate(double depth)
+        {
+            var a = depth - DepthStart;
+            var b = DepthEnd - DepthStart;
+            var c = (DateEnd.Value - DateStart.Value);
+            var result = DateStart + (a / b) * c;
+            return result;
+        }
+    }
+#nullable disable
+}
diff --git a/AsbCloudInfrastructure/DependencyInjection.cs b/AsbCloudInfrastructure/DependencyInjection.cs
index a9e521ca..706ceb37 100644
--- a/AsbCloudInfrastructure/DependencyInjection.cs
+++ b/AsbCloudInfrastructure/DependencyInjection.cs
@@ -97,6 +97,7 @@ namespace AsbCloudInfrastructure
 
             services.AddHostedService<OperationDetectionBackgroundService>();
             services.AddHostedService<SubsystemOperationTimeBackgroundService>();
+            services.AddHostedService<LimitingParameterBackgroundService>();
             services.AddSingleton(new WitsInfoService());
             services.AddSingleton(new CacheDb());
             services.AddSingleton(new InstantDataRepository());
@@ -132,6 +133,7 @@ namespace AsbCloudInfrastructure
             services.AddTransient<IUserSettingsRepository, UserSettingsRepository>();
             services.AddTransient<IWellFinalDocumentsService, WellFinalDocumentsService>();
             services.AddTransient<IFileCategoryService, FileCategoryService>();
+            services.AddTransient<ILimitingParameterService, LimitingParameterService>();
 
             // admin crud services:
             services.AddTransient<ICrudService<TelemetryDto>, CrudServiceBase<TelemetryDto, Telemetry>>(s =>
@@ -163,6 +165,7 @@ namespace AsbCloudInfrastructure
             services.AddTransient<IWellCompositeRepository, WellCompositeRepository>();
             services.AddTransient<IUserRoleRepository, UserRoleRepository>();
             services.AddTransient<IUserRepository, UserRepository>();
+            services.AddTransient<ILimitingParameterRepository, LimitingParameterRepository>();
             // Subsystem service
             services.AddTransient<ICrudService<SubsystemDto>, CrudCacheServiceBase<SubsystemDto, Subsystem>>();
             services.AddTransient<ISubsystemService, SubsystemService>();
diff --git a/AsbCloudInfrastructure/Repository/LimitingParameterRepository.cs b/AsbCloudInfrastructure/Repository/LimitingParameterRepository.cs
new file mode 100644
index 00000000..f017d79b
--- /dev/null
+++ b/AsbCloudInfrastructure/Repository/LimitingParameterRepository.cs
@@ -0,0 +1,122 @@
+using AsbCloudApp.Data;
+using AsbCloudApp.Repositories;
+using AsbCloudApp.Requests;
+using AsbCloudDb;
+using AsbCloudDb.Model;
+using AsbCloudDb.Model.Subsystems;
+using AsbCloudInfrastructure.Services;
+using Microsoft.EntityFrameworkCore;
+using Org.BouncyCastle.Asn1.Ocsp;
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace AsbCloudInfrastructure.Repository
+{
+#nullable enable
+    public class LimitingParameterRepository : ILimitingParameterRepository
+    {
+        private readonly IAsbCloudDbContext context;
+
+        public LimitingParameterRepository(IAsbCloudDbContext context)
+        { 
+            this.context = context;
+        }
+        public async Task<IEnumerable<LimitingParameterDto>> GetInfosAsync(LimitingParameterRequest request, WellDto wellDto, CancellationToken token)
+        {
+            var query = BuildQuery(request, wellDto);
+
+            if (query is null)
+                return Enumerable.Empty<LimitingParameterDto>();
+
+            var data = (await query.ToListAsync(token))
+                .GroupBy(x => x.IdFeedRegulator);
+
+            List<LimitingParameterDto> result = new List<LimitingParameterDto>();
+            foreach (var item in data)
+            {
+                var trimData = TrimLimitingParameters(item, request);
+
+                var allItemDepths = trimData.Sum(x => x.DepthEnd - x.DepthStart);
+                var allItemDates = trimData.Sum(x => {
+                    if (x.DateEnd is not null && x.DateStart is not null)
+                        return (x.DateEnd.Value - x.DateStart.Value).TotalMinutes;
+                    else return default(long);
+                });
+
+                result.Add(new LimitingParameterDto { 
+                    IdWell = wellDto.Id,
+                    IdFeedRegulator = item.Key,
+                    NumberInclusions = trimData.Count(),
+                    Depth = allItemDepths.HasValue ? allItemDepths.Value : 0,
+                    TimeMinutes = (float)allItemDates
+                });
+            }
+
+            return result;
+        }
+
+        private IEnumerable<LimitingParameter> TrimLimitingParameters(IEnumerable<LimitingParameter> data, LimitingParameterRequest request)
+        {
+            var result = data.Select((x) =>
+            {
+                if (request.GtDate.HasValue && x.DateStart < request.GtDate.Value)
+                {
+                    x.DepthStart = x.GetDepth(request.GtDate.Value);
+                    x.DateStart = request.GtDate.Value;
+                }
+                if (request.LtDate.HasValue && x.DateEnd > request.LtDate.Value)
+                {
+                    x.DepthEnd = x.GetDepth(request.LtDate.Value);
+                    x.DateEnd = request.LtDate.Value;
+                }
+
+                if (request.GtDepth.HasValue && x.DepthStart < request.GtDepth.Value)
+                {
+                    x.DateStart = x.GetDate(request.GtDepth.Value);
+                    x.DepthStart = (float)request.GtDepth.Value;
+                }
+                if (request.LtDepth.HasValue && x.DepthEnd > request.LtDepth.Value)
+                {
+                    x.DateEnd = x.GetDate(request.LtDepth.Value);
+                    x.DepthEnd = (float)request.LtDepth.Value;
+                }
+                return x;
+            }).ToList();
+            return result;
+        }
+
+        private IQueryable<LimitingParameter>? BuildQuery(LimitingParameterRequest request, WellDto wellDto)
+        {
+            var query = context.LimitingParameter
+                .OrderBy(x => x.Id)
+                .Where(x => x.IdTelemetry == wellDto.IdTelemetry)
+                .AsNoTracking();
+
+            if (request.GtDate.HasValue)
+            {
+                var gtDate = request.GtDate.Value.ToUtcDateTimeOffset(wellDto.Timezone.Hours);
+                query = query.Where(x => x.DateEnd >= gtDate);
+            }
+
+            if (request.LtDate.HasValue)
+            {
+                var ltDate = request.LtDate.Value.ToUtcDateTimeOffset(wellDto.Timezone.Hours);
+                query = query.Where(x => x.DateStart <= ltDate);
+            }
+
+            if (request.GtDepth.HasValue)
+                query = query.Where(x => x.DepthEnd >= request.GtDepth.Value);
+
+            if (request.LtDepth.HasValue)
+                query = query.Where(x => x.DepthStart <= request.LtDepth.Value);
+
+            return query;
+        }
+    }
+#nullable disable
+}
diff --git a/AsbCloudInfrastructure/Services/LimitingParameterBackgroundService.cs b/AsbCloudInfrastructure/Services/LimitingParameterBackgroundService.cs
new file mode 100644
index 00000000..df479ee3
--- /dev/null
+++ b/AsbCloudInfrastructure/Services/LimitingParameterBackgroundService.cs
@@ -0,0 +1,178 @@
+using AsbCloudDb.Model;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.Hosting;
+using System;
+using System.Data.Common;
+using System.Data;
+using System.Diagnostics;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using System.Collections.Generic;
+
+namespace AsbCloudInfrastructure.Services
+{
+#nullable enable
+    internal class LimitingParameterBackgroundService : BackgroundService
+    {
+        private readonly string connectionString;
+        private readonly TimeSpan period = TimeSpan.FromHours(1);
+
+        public LimitingParameterBackgroundService(IConfiguration configuration)
+        {
+            connectionString = configuration.GetConnectionString("DefaultConnection");
+        }
+
+        protected override async Task ExecuteAsync(CancellationToken token)
+        {
+            var timeToStart = DateTime.Now;
+            var options = new DbContextOptionsBuilder<AsbCloudDbContext>()
+                .UseNpgsql(connectionString)
+                .Options;
+            while (!token.IsCancellationRequested)
+            {
+                if (DateTime.Now > timeToStart)
+                {
+                    timeToStart = DateTime.Now + period;
+                    try
+                    {
+                        using var context = new AsbCloudDbContext(options);
+                        var added = await LimitingParameterAsync(context, token);
+                        Trace.TraceInformation($"Total limiting parameter complete. Added {added} limiting parameters.");
+                    }
+                    catch (Exception ex)
+                    {
+                        Trace.TraceError(ex.Message);
+                    }
+                    GC.Collect();
+                }
+                var ms = (int)(timeToStart - DateTime.Now).TotalMilliseconds;
+                ms = ms > 100 ? ms : 100;
+                await Task.Delay(ms, token).ConfigureAwait(false);
+            }
+        }
+
+        private static async Task<int> LimitingParameterAsync(IAsbCloudDbContext context, CancellationToken token)
+        {
+            var lastDetectedDates = await context.LimitingParameter
+                .GroupBy(o => o.IdTelemetry)
+                .Select(g => new
+                {
+                    IdTelemetry = g.Key,
+                    LastDate = g.Max(o => o.DateEnd)
+                })
+                .ToListAsync(token);
+
+            var telemetryIds = await context.Telemetries
+                .Where(t => t.Info != null && t.TimeZone != null)
+                .Select(t => t.Id)
+                .ToListAsync(token);
+
+            var telemetryLastDetectedDates = telemetryIds
+                .GroupJoin(lastDetectedDates,
+                    t => t,
+                    o => o.IdTelemetry,
+                    (outer, inner) => new
+                    {
+                        IdTelemetry = outer,
+                        inner.SingleOrDefault()?.LastDate,
+                    });
+
+            var affected = 0;
+            foreach (var item in telemetryLastDetectedDates)
+            {
+                var newLimitingParameters = await GetLimitingParameterAsync(item.IdTelemetry, item.LastDate ?? DateTimeOffset.MinValue, context, token);
+                if (newLimitingParameters?.Any() == true)
+                {
+                    context.LimitingParameter.AddRange(newLimitingParameters);
+                    affected += await context.SaveChangesAsync(token);
+                }
+            }
+            return affected;
+        }
+
+        private static async Task<IEnumerable<LimitingParameter>> GetLimitingParameterAsync(int idTelemetry, DateTimeOffset begin, IAsbCloudDbContext db, CancellationToken token)
+        {
+            var query = 
+                $"select " +
+                    $"limiting_parameters.date, limiting_parameters.id_feed_regulator, limiting_parameters.well_depth " +
+                $"from ( " +
+                    $"select " +
+                    $"date, id_feed_regulator, well_depth, " +
+                    $"lag(id_feed_regulator, 1) over (order by date) as id_feed_regulator_lag, " +
+                    $"lead(id_feed_regulator, 1) over (order by date) as id_feed_regulator_lead " +
+                        $"from t_telemetry_data_saub " +
+                        $"where id_telemetry = {idTelemetry}" +
+                            $"and date >= '{begin:u}'" +
+                        $"order by date) as limiting_parameters " +
+                $"where id_feed_regulator_lag is null " +
+                        $"or (id_feed_regulator != id_feed_regulator_lag and id_feed_regulator_lead != id_feed_regulator_lag) " +
+                $"order by date;";
+
+            var rows = new List<(short? IdLimiting, DateTimeOffset Date, float? WellDepth)>(32);
+            {
+                using var result = await ExecuteReaderAsync(db, query, token);
+                int? idLimitingLast = null;
+                while (result.Read())
+                {
+                    var idLimiting = result.GetFieldValue<short?>(1);
+                    var wellDepth = result.GetFieldValue<float?>(2);
+                    if (idLimitingLast != idLimiting)
+                    {
+                        idLimitingLast = idLimiting;
+                        var date = result.GetFieldValue<DateTimeOffset>(0);
+                        rows.Add((idLimiting, date, wellDepth));
+                    }
+                }
+                await result.DisposeAsync();
+            }
+
+            if (rows.Count < 2)
+                return Enumerable.Empty<LimitingParameter>();
+
+            var limitingParameters = new List<LimitingParameter>(32);
+
+            for (int i = 1; i < rows.Count; i++)
+            {
+                var r0 = rows[i - 1];
+                var r1 = rows[i];
+                if (r0.IdLimiting is not null && r0.IdLimiting != r1.IdLimiting)
+                {
+                    var limitingParameter = new LimitingParameter()
+                    {
+                        IdTelemetry = idTelemetry,
+                        DateStart = r0.Date,
+                        DateEnd = r1.Date,
+                        DepthStart = r0.WellDepth,
+                        DepthEnd = r1.WellDepth,
+                        IdFeedRegulator = (short)r0.IdLimiting
+                    };
+
+                    limitingParameters.Add(limitingParameter);
+                }
+            }
+
+            return limitingParameters;
+        }
+
+        private static async Task<DbDataReader> ExecuteReaderAsync(IAsbCloudDbContext db, string query, CancellationToken token)
+        {
+            var connection = db.Database.GetDbConnection();
+            if (
+                connection?.State is null ||
+                connection.State == ConnectionState.Broken ||
+                connection.State == ConnectionState.Closed)
+            {
+                await db.Database.OpenConnectionAsync(token);
+                connection = db.Database.GetDbConnection();
+            }
+            using var command = connection.CreateCommand();
+            command.CommandText = query;
+
+            var result = await command.ExecuteReaderAsync(token);
+            return result;
+        }
+    }
+#nullable disable
+}
diff --git a/AsbCloudInfrastructure/Services/LimitingParameterService.cs b/AsbCloudInfrastructure/Services/LimitingParameterService.cs
new file mode 100644
index 00000000..80082fca
--- /dev/null
+++ b/AsbCloudInfrastructure/Services/LimitingParameterService.cs
@@ -0,0 +1,35 @@
+using AsbCloudApp.Data;
+using AsbCloudApp.Repositories;
+using AsbCloudApp.Requests;
+using AsbCloudApp.Services;
+using System;
+using System.Collections.Generic;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace AsbCloudInfrastructure.Services
+{
+#nullable enable
+    public class LimitingParameterService : ILimitingParameterService
+    {
+        private readonly ILimitingParameterRepository limitingParameterRepository;
+        private readonly IWellService wellService;
+
+        public LimitingParameterService(ILimitingParameterRepository limitingParameterRepository,
+            IWellService wellService)
+        {
+            this.limitingParameterRepository = limitingParameterRepository;
+            this.wellService = wellService;
+        }
+
+        public async Task<IEnumerable<LimitingParameterDto>?> GetInfosAsync(LimitingParameterRequest request, CancellationToken token)
+        {
+            var well = await wellService.GetOrDefaultAsync(request.IdWell, token);
+            if (well?.IdTelemetry is null || well.Timezone is null)
+                return null;
+
+            return await limitingParameterRepository.GetInfosAsync(request, well, token);
+        }
+    }
+#nullable disable
+}
diff --git a/AsbCloudWebApi/Controllers/LimitingParameterController.cs b/AsbCloudWebApi/Controllers/LimitingParameterController.cs
new file mode 100644
index 00000000..6dcbe838
--- /dev/null
+++ b/AsbCloudWebApi/Controllers/LimitingParameterController.cs
@@ -0,0 +1,50 @@
+using AsbCloudApp.Data;
+using AsbCloudApp.Requests;
+using AsbCloudApp.Services;
+using AsbCloudApp.Services.Subsystems;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using System.Threading;
+using AsbCloudDb.Model;
+using AsbCloudInfrastructure.Services;
+
+namespace AsbCloudWebApi.Controllers
+{
+    [Route("api/[controller]")]
+    [ApiController]
+    [Authorize]
+    public class LimitingParameterController : ControllerBase
+    {
+        private readonly ILimitingParameterService limitingParameterService;
+        private readonly IWellService wellService;
+
+        public LimitingParameterController(ILimitingParameterService limitingParameterService,
+            IWellService wellService)
+        { 
+            this.limitingParameterService = limitingParameterService;
+            this.wellService = wellService;
+        }
+
+        [HttpGet("info")]
+        [ProducesResponseType(typeof(IEnumerable<LimitingParameterDto>), (int)System.Net.HttpStatusCode.OK)]
+        public async Task<IActionResult> GetInfosAsync([FromQuery] LimitingParameterRequest request, CancellationToken token = default)
+        {
+            if (!await UserHasAccesToWellAsync(request.IdWell, token))
+                return Forbid();
+            var subsystemResult = await limitingParameterService.GetInfosAsync(request, token);
+            return Ok(subsystemResult);
+        }
+
+        protected async Task<bool> UserHasAccesToWellAsync(int idWell, CancellationToken token)
+        {
+            var idCompany = User.GetCompanyId();
+            if (idCompany is not null &&
+                await wellService.IsCompanyInvolvedInWellAsync((int)idCompany, idWell, token)
+                    .ConfigureAwait(false))
+                return true;
+            return false;
+        }
+    }
+}