diff --git a/AsbCloudApp/Data/DetectedOperation/DetectedOperationDto.cs b/AsbCloudApp/Data/DetectedOperation/DetectedOperationDto.cs
index c8b1e15a..13af0e6e 100644
--- a/AsbCloudApp/Data/DetectedOperation/DetectedOperationDto.cs
+++ b/AsbCloudApp/Data/DetectedOperation/DetectedOperationDto.cs
@@ -8,85 +8,84 @@ namespace AsbCloudApp.Data.DetectedOperation;
 /// <summary>
 /// Автоматически определенная операция
 /// </summary>
-public class DetectedOperationDto: IId
+public class DetectedOperationDto : IId
 {
-    /// <inheritdoc/>    
-    [Required]
-    public int Id { get; set; }
+	/// <inheritdoc/>    
+	[Required]
+	public int Id { get; set; }
 
-    /// <summary>
-    /// Id телеметрии
-    /// </summary>
-    [Required]
-    public int IdTelemetry { get; set; }
+	/// <summary>
+	/// Id телеметрии
+	/// </summary>
+	[Required]
+	public int IdTelemetry { get; set; }
 
-    /// <summary>
-    /// Id названия/описания операции
-    /// </summary>
-    [Required]
-    public int IdCategory { get; set; }
+	/// <summary>
+	/// Id названия/описания операции
+	/// </summary>
+	[Required]
+	public int IdCategory { get; set; }
 
-    /// <summary>
-    /// Id пользователя панели на момент начала операции
-    /// </summary>
-    [Required]
-    public int IdUserAtStart { get; set; }
-    
-    /// <summary>
-    /// Пользователь панели оператора
-    /// </summary>
-    public string? TelemetryUserName { get; set; }
+	/// <summary>
+	/// Id пользователя панели на момент начала операции
+	/// </summary>
+	public int? IdUserAtStart { get; set; }
+	
+	/// <summary>
+	/// Id пользователя изменившего операцию
+	/// </summary>
+	public int? IdEditor { get; set; }
 
-    /// <summary>
-    /// Дата завершения операции в часовом поясе скважины
-    /// </summary>
-    [Required]
-    public DateTimeOffset DateEnd { get; set; }
+	/// <summary>
+	/// Дата завершения операции в часовом поясе скважины
+	/// </summary>
+	[Required]
+	public DateTimeOffset DateEnd { get; set; }
 
-    /// <summary>
-    /// Дата начала операции в часовом поясе скважины
-    /// </summary>
-    [Required]
-    public DateTimeOffset DateStart { get; set; }
+	/// <summary>
+	/// Дата начала операции в часовом поясе скважины
+	/// </summary>
+	[Required]
+	public DateTimeOffset DateStart { get; set; }
 
-    /// <summary>
-    /// глубина на завершения операции, м
-    /// </summary>
-    [Required]
-    public double DepthEnd { get; set; }
+	/// <summary>
+	/// глубина на завершения операции, м
+	/// </summary>
+	[Required]
+	public double DepthEnd { get; set; }
 
-    /// <summary>
-    /// глубина на начало операции, м
-    /// </summary>
-    [Required]
-    public double DepthStart { get; set; }
+	/// <summary>
+	/// глубина на начало операции, м
+	/// </summary>
+	[Required]
+	public double DepthStart { get; set; }
 
-    /// <summary>
-    /// Продолжительность операции в минутах
-    /// </summary>
-    [Required]
-    public double DurationMinutes => (DateEnd - DateStart).TotalMinutes;
+	/// <summary>
+	/// Продолжительность операции в минутах
+	/// </summary>
+	[Required]
+	public double DurationMinutes => (DateEnd - DateStart).TotalMinutes;
+	
+	/// <summary>
+	/// название/описание операции
+	/// </summary>
+	[Required]
+	public WellOperationCategoryDto OperationCategory { get; set; } = null!;
+	
+	/// <summary>
+	/// Включенные подсистемы
+	/// </summary>
+	[Required]
+	public EnabledSubsystems EnabledSubsystems { get; set; }
 
-    /// <summary>
-    /// Флаг включенной подсистемы
-    /// </summary>
-    [Required]
-    public int EnabledSubsystems { get; set; }
+	/// <summary>
+	/// Значение ключевой параметра операции
+	/// </summary>
+	[Required]
+	public double Value { get; set; }
 
-    /// <summary>
-    /// название/описание операции
-    /// </summary>
-    [Required]
-    public WellOperationCategoryDto OperationCategory { get; set; } = null!;
-
-    /// <summary>
-    /// Ключевой параметр операции
-    /// </summary>
-    [Required]
-    public double Value { get; set; }
-
-    /// <summary>
-    /// Доп. инфо по операции
-    /// </summary>
-    public IDictionary<string, object> ExtraData { get; set; } = new Dictionary<string, object>();
+	/// <summary>
+	/// Доп. инфо по операции
+	/// </summary>
+	public IDictionary<string, object> ExtraData { get; set; } = new Dictionary<string, object>();
 }
\ No newline at end of file
diff --git a/AsbCloudApp/Data/DetectedOperation/EnabledSubsystems.cs b/AsbCloudApp/Data/DetectedOperation/EnabledSubsystems.cs
new file mode 100644
index 00000000..ee3c3459
--- /dev/null
+++ b/AsbCloudApp/Data/DetectedOperation/EnabledSubsystems.cs
@@ -0,0 +1,105 @@
+namespace AsbCloudApp.Data.DetectedOperation;
+
+/// <summary>
+/// Включённые подсистемы
+/// </summary>
+public struct EnabledSubsystems
+{
+	private int value;
+
+	private EnabledSubsystems(int value)
+	{
+		this.value = value;
+	}
+	
+	/// <inheritdoc/>
+	public static implicit operator int(EnabledSubsystems param) => 
+		param.value;
+
+	/// <inheritdoc/>
+	public static implicit operator EnabledSubsystems(int param) =>
+		new(param);
+
+	/// <summary>
+	/// Бурение ротором
+	/// </summary>
+	public bool IsAutoRotor
+	{
+		get => IsEnabledSubsystem(EnabledSubsystemsFlags.AutoRotor);
+		set => UpdateEnabledSubsystems(value, EnabledSubsystemsFlags.AutoRotor);
+	}
+
+	/// <summary>
+	/// Бурение слайдом
+	/// </summary>
+	public bool IsAutoSlide
+	{
+		get => IsEnabledSubsystem(EnabledSubsystemsFlags.AutoSlide);
+		set => UpdateEnabledSubsystems(value, EnabledSubsystemsFlags.AutoSlide);
+	}
+
+	/// <summary>
+	/// ПРОРАБОТКА
+	/// </summary>
+	public bool IsAutoConditionig
+	{
+		get => IsEnabledSubsystem(EnabledSubsystemsFlags.AutoConditionig);
+		set => UpdateEnabledSubsystems(value, EnabledSubsystemsFlags.AutoConditionig);
+	}
+
+	/// <summary>
+	/// СПУСК СПО
+	/// </summary>
+	public bool IsAutoSinking
+	{
+		get => IsEnabledSubsystem(EnabledSubsystemsFlags.AutoSinking);
+		set => UpdateEnabledSubsystems(value, EnabledSubsystemsFlags.AutoSinking);
+	}
+
+	/// <summary>
+	/// ПОДЪЕМ СПО
+	/// </summary>
+	public bool IsAutoLifting
+	{
+		get => IsEnabledSubsystem(EnabledSubsystemsFlags.AutoLifting);
+		set => UpdateEnabledSubsystems(value, EnabledSubsystemsFlags.AutoLifting);
+	}
+
+	/// <summary>
+	/// ПОДЪЕМ С ПРОРАБОТКОЙ
+	/// </summary>
+	public bool IsAutoLiftingWithConditionig
+	{
+		get => IsEnabledSubsystem(EnabledSubsystemsFlags.AutoLiftingWithConditionig);
+		set => UpdateEnabledSubsystems(value, EnabledSubsystemsFlags.AutoLiftingWithConditionig);
+	}
+
+	/// <summary>
+	/// Блокировка
+	/// </summary>
+	public bool IsAutoBlocknig
+	{
+		get => IsEnabledSubsystem(EnabledSubsystemsFlags.AutoBlocknig);
+		set => UpdateEnabledSubsystems(value, EnabledSubsystemsFlags.AutoBlocknig);
+	}
+
+	/// <summary>
+	/// Осцилляция
+	/// </summary>
+	public bool IsAutoOscillation
+	{
+		get => IsEnabledSubsystem(EnabledSubsystemsFlags.AutoOscillation);
+		set => UpdateEnabledSubsystems(value, EnabledSubsystemsFlags.AutoOscillation);
+	}
+
+	private bool IsEnabledSubsystem(EnabledSubsystemsFlags flag) =>
+		(value & (int)flag) > 0;
+
+	private void UpdateEnabledSubsystems(bool isEnable, EnabledSubsystemsFlags flag)
+	{
+		if (isEnable)
+			value |= (int)flag;
+		else
+			value &= ~(int)flag;
+	}
+}
\ No newline at end of file
diff --git a/AsbCloudApp/Repositories/IDetectedOperationRepository.cs b/AsbCloudApp/Repositories/IDetectedOperationRepository.cs
index d7fe5865..a748984d 100644
--- a/AsbCloudApp/Repositories/IDetectedOperationRepository.cs
+++ b/AsbCloudApp/Repositories/IDetectedOperationRepository.cs
@@ -4,24 +4,40 @@ using AsbCloudApp.Requests;
 using System.Collections.Generic;
 using System.Threading.Tasks;
 using System.Threading;
-using AsbCloudApp.Services;
+using AsbCloudApp.Data;
+using AsbCloudApp.Data.WellOperation;
 
 namespace AsbCloudApp.Repositories;
 
 /// <summary>
 /// Таблица автоматически определенных операций
 /// </summary>
-public interface IDetectedOperationRepository : ICrudRepository<DetectedOperationDto>
+public interface IDetectedOperationRepository
 {
     /// <summary>
-    /// Добавление записей
+    /// Добавление нескольких записей
+    /// </summary>
+    /// <param name="dtos"></param>
+    /// <param name="token"></param>
+    /// <returns>количество добавленных</returns>
+    Task<int> InsertRangeAsync(IEnumerable<DetectedOperationDto> dtos, CancellationToken token);
+    
+    /// <summary>
+    /// Обновить несколько записей
     /// </summary>
-    /// <param name="idUser"></param>
     /// <param name="dtos"></param>
     /// <param name="token"></param>
     /// <returns></returns>
-    Task<int> Insert(int? idUser, IEnumerable<DetectedOperationDto> dtos, CancellationToken token);
+    Task<int> UpdateRangeAsync(IEnumerable<DetectedOperationDto> dtos, CancellationToken token);
 
+    /// <summary>
+    /// Удаление нескольких записей
+    /// </summary>
+    /// <param name="ids"></param>
+    /// <param name="token"></param>
+    /// <returns></returns>
+    Task<int> DeleteRangeAsync(IEnumerable<int> ids, CancellationToken token);
+    
     /// <summary>
     /// Получить автоматически определенные операции по телеметрии
     /// </summary>
@@ -31,40 +47,12 @@ public interface IDetectedOperationRepository : ICrudRepository<DetectedOperatio
     Task<IEnumerable<DetectedOperationDto>> Get(DetectedOperationByTelemetryRequest request, CancellationToken token);
 
     /// <summary>
-    /// Редактирование записей
+    /// Получить страницу списка операций
     /// </summary>
-    /// <param name="idUser"></param>
-    /// <param name="dtos"></param>
-    /// <param name="token"></param>
-    /// <returns></returns>
-    Task<int> Update(int idUser, IEnumerable<DetectedOperationDto> dtos, CancellationToken token);
-
-    /// <summary>
-    /// Добавляет Dto у которых id == 0, изменяет dto у которых id != 0
-    /// </summary>
-    /// <param name="idUser"></param>
-    /// <param name="dtos"></param>
-    /// <param name="token"></param>
-    /// <returns></returns>
-    Task<int> UpdateOrInsert(int idUser, IEnumerable<DetectedOperationDto> dtos, CancellationToken token);
-
-    /// <summary>
-    /// Удалить операции
-    /// </summary>
-    /// <param name="idUser"></param>
     /// <param name="request"></param>
     /// <param name="token"></param>
     /// <returns></returns>
-    Task<int> Delete(int idUser, DetectedOperationByTelemetryRequest request, CancellationToken token);
-
-    /// <summary>
-    /// Удаление записей
-    /// </summary>
-    /// <param name="idUser"></param>
-    /// <param name="ids"></param>
-    /// <param name="token"></param>
-    /// <returns></returns>
-    Task<int> DeleteRange(int idUser, IEnumerable<int> ids, CancellationToken token);
+    Task<PaginationContainer<DetectedOperationDto>> GetPageAsync(DetectedOperationByTelemetryRequest request, CancellationToken token);
 
     /// <summary>
     /// Получение дат последних определённых операций
@@ -72,4 +60,12 @@ public interface IDetectedOperationRepository : ICrudRepository<DetectedOperatio
     /// <param name="token"></param>
     /// <returns></returns>
     Task<IDictionary<int, DateTimeOffset>> GetLastDetectedDatesAsync(CancellationToken token);
+    
+    /// <summary>
+    /// Удалить операции
+    /// </summary>
+    /// <param name="request"></param>
+    /// <param name="token"></param>
+    /// <returns></returns>
+    Task<int> DeleteAsync(DetectedOperationByTelemetryRequest request, CancellationToken token);
 }
diff --git a/AsbCloudApp/Services/IDetectedOperationService.cs b/AsbCloudApp/Services/IDetectedOperationService.cs
index 208706f7..9ab9189e 100644
--- a/AsbCloudApp/Services/IDetectedOperationService.cs
+++ b/AsbCloudApp/Services/IDetectedOperationService.cs
@@ -13,6 +13,26 @@ namespace AsbCloudApp.Services
     /// </summary>
     public interface IDetectedOperationService
     {
+        /// <summary>
+        /// Добавление операций
+        /// </summary>
+        /// <param name="idEditor"></param>
+        /// <param name="idWell"></param>
+        /// <param name="dtos"></param>
+        /// <param name="token"></param>
+        /// <returns></returns>
+        Task<int> InsertRangeManualAsync(int idEditor, int idWell, IEnumerable<DetectedOperationDto> dtos, CancellationToken token);
+
+        /// <summary>
+        /// Редактирование операций
+        /// </summary>
+        /// <param name="idEditor"></param>
+        /// <param name="idWell"></param>
+        /// <param name="dtos"></param>
+        /// <param name="token"></param>
+        /// <returns></returns>
+        Task<int> UpdateRangeManualAsync(int idEditor, int idWell, IEnumerable<DetectedOperationDto> dtos, CancellationToken token);
+
         /// <summary>
         /// Список названий операций.
         /// Если указан idWell, то возвращается список названий операций найденных на указанной скважине.
diff --git a/AsbCloudDb/Migrations/20240401094602_Update_DetectedOperation.Designer.cs b/AsbCloudDb/Migrations/20240401094602_Update_DetectedOperation.Designer.cs
new file mode 100644
index 00000000..7b762673
--- /dev/null
+++ b/AsbCloudDb/Migrations/20240401094602_Update_DetectedOperation.Designer.cs
@@ -0,0 +1,9399 @@
+// <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("20240401094602_Update_DetectedOperation")]
+    partial class Update_DetectedOperation
+    {
+        /// <inheritdoc />
+        protected override void BuildTargetModel(ModelBuilder modelBuilder)
+        {
+#pragma warning disable 612, 618
+            modelBuilder
+                .UseCollation("Russian_Russia.1251")
+                .HasAnnotation("ProductVersion", "8.0.2")
+                .HasAnnotation("Relational:MaxIdentifierLength", 63);
+
+            NpgsqlModelBuilderExtensions.HasPostgresExtension(modelBuilder, "adminpack");
+            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
+
+            modelBuilder.Entity("AsbCloudDb.Model.Cluster", b =>
+                {
+                    b.Property<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.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")
+                        .IsRequired()
+                        .HasColumnType("jsonb")
+                        .HasColumnName("timezone")
+                        .HasComment("Смещение часового пояса от UTC");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("IdDeposit");
+
+                    b.ToTable("t_cluster", t =>
+                        {
+                            t.HasComment("Кусты");
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.Company", b =>
+                {
+                    b.Property<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");
+
+                    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")
+                        .IsRequired()
+                        .HasMaxLength(255)
+                        .HasColumnType("character varying(255)")
+                        .HasColumnName("caption");
+
+                    b.Property<bool>("IsContact")
+                        .HasColumnType("boolean")
+                        .HasColumnName("is_contact");
+
+                    b.Property<int>("Order")
+                        .HasColumnType("integer")
+                        .HasColumnName("order");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("t_company_type");
+
+                    b.HasData(
+                        new
+                        {
+                            Id = 1,
+                            Caption = "Недропользователь",
+                            IsContact = true,
+                            Order = 3
+                        },
+                        new
+                        {
+                            Id = 2,
+                            Caption = "Буровой подрядчик",
+                            IsContact = true,
+                            Order = 2
+                        },
+                        new
+                        {
+                            Id = 3,
+                            Caption = "Сервис автоматизации бурения",
+                            IsContact = true,
+                            Order = 0
+                        },
+                        new
+                        {
+                            Id = 4,
+                            Caption = "Сервис по ГТИ",
+                            IsContact = true,
+                            Order = 6
+                        },
+                        new
+                        {
+                            Id = 5,
+                            Caption = "Растворный сервис",
+                            IsContact = true,
+                            Order = 4
+                        },
+                        new
+                        {
+                            Id = 6,
+                            Caption = "Сервис по ННБ",
+                            IsContact = true,
+                            Order = 5
+                        },
+                        new
+                        {
+                            Id = 7,
+                            Caption = "Служба супервайзинга",
+                            IsContact = false,
+                            Order = 1
+                        },
+                        new
+                        {
+                            Id = 9,
+                            Caption = "Сервис по цементированию",
+                            IsContact = true,
+                            Order = 7
+                        },
+                        new
+                        {
+                            Id = 11,
+                            Caption = "Дизельный сервис",
+                            IsContact = false,
+                            Order = 9
+                        },
+                        new
+                        {
+                            Id = 12,
+                            Caption = "Сервис по обслуживанию верхних силовых приводов",
+                            IsContact = true,
+                            Order = 8
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.Contact", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("Company")
+                        .IsRequired()
+                        .HasMaxLength(255)
+                        .HasColumnType("character varying(255)")
+                        .HasColumnName("company")
+                        .HasComment("компания");
+
+                    b.Property<string>("Email")
+                        .HasMaxLength(255)
+                        .HasColumnType("character varying(255)")
+                        .HasColumnName("email")
+                        .HasComment("email");
+
+                    b.Property<string>("FullName")
+                        .IsRequired()
+                        .HasMaxLength(255)
+                        .HasColumnType("character varying(255)")
+                        .HasColumnName("full_name")
+                        .HasComment("ФИО");
+
+                    b.Property<int>("IdCompanyType")
+                        .HasMaxLength(255)
+                        .HasColumnType("integer")
+                        .HasColumnName("id_company_type")
+                        .HasComment("вид деятельности");
+
+                    b.Property<int>("IdWell")
+                        .HasMaxLength(255)
+                        .HasColumnType("integer")
+                        .HasColumnName("id_well")
+                        .HasComment("ключ скважины");
+
+                    b.Property<string>("Phone")
+                        .HasMaxLength(50)
+                        .HasColumnType("character varying(50)")
+                        .HasColumnName("phone")
+                        .HasComment("номер телефона");
+
+                    b.Property<string>("Position")
+                        .IsRequired()
+                        .HasMaxLength(255)
+                        .HasColumnType("character varying(255)")
+                        .HasColumnName("position")
+                        .HasComment("должность");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("IdCompanyType");
+
+                    b.HasIndex("IdWell");
+
+                    b.ToTable("t_contact", t =>
+                        {
+                            t.HasComment("Контакты");
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.DailyReports.DailyReport", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateOnly>("Date")
+                        .HasColumnType("date")
+                        .HasColumnName("date")
+                        .HasComment("Дата формирования отчёта");
+
+                    b.Property<DateTime?>("DateLastUpdate")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("date_last_update")
+                        .HasComment("Дата последнего обновления");
+
+                    b.Property<int>("IdWell")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_well")
+                        .HasComment("ID скважины");
+
+                    b.Property<string>("SignBlock")
+                        .HasColumnType("jsonb")
+                        .HasColumnName("sign_block")
+                        .HasComment("Подпись");
+
+                    b.Property<string>("SubsystemBlock")
+                        .HasColumnType("jsonb")
+                        .HasColumnName("subsystem_block")
+                        .HasComment("Наработкой подсистем");
+
+                    b.Property<string>("TimeBalanceBlock")
+                        .HasColumnType("jsonb")
+                        .HasColumnName("time_balance_block")
+                        .HasComment("Баланс времени");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("IdWell", "Date")
+                        .IsUnique();
+
+                    b.ToTable("t_daily_report", t =>
+                        {
+                            t.HasComment("Ежедневные отчёты");
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.DataSaubStat", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<double>("AxialLoad")
+                        .HasColumnType("double precision")
+                        .HasColumnName("axial_load")
+                        .HasComment("Фактическая нагрузка");
+
+                    b.Property<double?>("AxialLoadLimitMax")
+                        .HasColumnType("double precision")
+                        .HasColumnName("axial_load_limit_max")
+                        .HasComment("Максимально допустимая нагрузка");
+
+                    b.Property<double?>("AxialLoadSp")
+                        .HasColumnType("double precision")
+                        .HasColumnName("axial_load_sp")
+                        .HasComment("Ограничение факт. нагрузки");
+
+                    b.Property<double?>("BlockSpeedSp")
+                        .HasColumnType("double precision")
+                        .HasColumnName("block_speed_sp")
+                        .HasComment("Ограничение скорости блока");
+
+                    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>("EnabledSubsystems")
+                        .HasColumnType("integer")
+                        .HasColumnName("enabled_subsystems")
+                        .HasComment("Флаги подсистем");
+
+                    b.Property<double>("Flow")
+                        .HasColumnType("double precision")
+                        .HasColumnName("flow")
+                        .HasComment("Фактический расход");
+
+                    b.Property<bool>("HasOscillation")
+                        .HasColumnType("boolean")
+                        .HasColumnName("has_oscillation")
+                        .HasComment("Наличие или отсутствие осцилляции");
+
+                    b.Property<int>("IdCategory")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_category")
+                        .HasComment("Название автоопределённой операции");
+
+                    b.Property<short?>("IdFeedRegulator")
+                        .HasColumnType("smallint")
+                        .HasColumnName("id_feed_regulator")
+                        .HasComment("Работа при достижении ограничения");
+
+                    b.Property<int>("IdTelemetry")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_telemetry")
+                        .HasComment("Ключ телеметрии");
+
+                    b.Property<double>("Pressure")
+                        .HasColumnType("double precision")
+                        .HasColumnName("pressure")
+                        .HasComment("Давление");
+
+                    b.Property<double?>("PressureIdle")
+                        .HasColumnType("double precision")
+                        .HasColumnName("pressure_idle")
+                        .HasComment("Давление холостого хода");
+
+                    b.Property<double?>("PressureSp")
+                        .HasColumnType("double precision")
+                        .HasColumnName("pressure_sp")
+                        .HasComment("Ограничение фактического давления");
+
+                    b.Property<double>("RotorSpeed")
+                        .HasColumnType("double precision")
+                        .HasColumnName("rotor_speed")
+                        .HasComment("Фактическая скорость оборотов ВСП");
+
+                    b.Property<double>("RotorTorque")
+                        .HasColumnType("double precision")
+                        .HasColumnName("rotor_torque")
+                        .HasComment("Фактический момент");
+
+                    b.Property<double?>("RotorTorqueLimitMax")
+                        .HasColumnType("double precision")
+                        .HasColumnName("rotor_torque_limit_max")
+                        .HasComment("Максимально допустимый момент");
+
+                    b.Property<double?>("RotorTorqueSp")
+                        .HasColumnType("double precision")
+                        .HasColumnName("rotor_torque_sp")
+                        .HasComment("Ограничение факт. момента");
+
+                    b.Property<double>("Speed")
+                        .HasColumnType("double precision")
+                        .HasColumnName("speed")
+                        .HasComment("Скорость бурения");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("IdCategory");
+
+                    b.HasIndex("IdTelemetry");
+
+                    b.ToTable("t_data_saub_stat", t =>
+                        {
+                            t.HasComment("Кеш-таблица для хранения данных для РТК-отчета");
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.Deposit", b =>
+                {
+                    b.Property<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");
+
+                    b.Property<double?>("Latitude")
+                        .HasColumnType("double precision")
+                        .HasColumnName("latitude");
+
+                    b.Property<double?>("Longitude")
+                        .HasColumnType("double precision")
+                        .HasColumnName("longitude");
+
+                    b.Property<string>("Timezone")
+                        .IsRequired()
+                        .HasColumnType("jsonb")
+                        .HasColumnName("timezone")
+                        .HasComment("Смещение часового пояса от UTC");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("t_deposit", t =>
+                        {
+                            t.HasComment("Месторождение");
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.DetectedOperation", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTimeOffset>("Creation")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("creation")
+                        .HasComment("дата создания");
+
+                    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>("EnabledSubsystems")
+                        .HasColumnType("integer")
+                        .HasColumnName("enabled_subsystems")
+                        .HasComment("флаги включенных подсистем");
+
+                    b.Property<string>("ExtraData")
+                        .IsRequired()
+                        .HasColumnType("jsonb")
+                        .HasColumnName("extra_data")
+                        .HasComment("доп. инфо по операции");
+
+                    b.Property<int>("IdCategory")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_category")
+                        .HasComment("Id категории операции");
+
+                    b.Property<int?>("IdEditor")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_editor")
+                        .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", t =>
+                        {
+                            t.HasComment("автоматически определенные операции по телеметрии");
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.DrillTest", b =>
+                {
+                    b.Property<int>("Id")
+                        .HasColumnType("integer")
+                        .HasColumnName("id")
+                        .HasComment("Идентификатор");
+
+                    b.Property<int>("IdTelemetry")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_telemetry")
+                        .HasComment("Идентификатор телеметрии");
+
+                    b.Property<float>("DepthStart")
+                        .HasColumnType("real")
+                        .HasColumnName("depthStart")
+                        .HasComment("Глубина начала");
+
+                    b.Property<string>("Params")
+                        .IsRequired()
+                        .HasColumnType("jsonb")
+                        .HasColumnName("t_drill_test_params")
+                        .HasComment("Параметры записи drill test");
+
+                    b.Property<DateTimeOffset>("TimeStampStart")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("timestamp_start")
+                        .HasComment("Время начала");
+
+                    b.HasKey("Id", "IdTelemetry");
+
+                    b.HasIndex("IdTelemetry");
+
+                    b.ToTable("t_drill_test", t =>
+                        {
+                            t.HasComment("Drill_test");
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.Driller", b =>
+                {
+                    b.Property<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", t =>
+                        {
+                            t.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", t =>
+                        {
+                            t.HasComment("части программ бурения");
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.Faq", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id")
+                        .HasComment("Идентификатор");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("Answer")
+                        .HasColumnType("text")
+                        .HasColumnName("answer")
+                        .HasComment("Текст ответа");
+
+                    b.Property<int>("CounterQuestion")
+                        .HasColumnType("integer")
+                        .HasColumnName("counter_question")
+                        .HasComment("Счетчик повторений вопроса");
+
+                    b.Property<DateTimeOffset?>("DateAnswer")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("date_answer")
+                        .HasComment("Дата ответа");
+
+                    b.Property<DateTimeOffset>("DateCreatedQuestion")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("date_created_question")
+                        .HasComment("Дата создания вопроса");
+
+                    b.Property<DateTimeOffset>("DateLastEditedQuestion")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("date_last_edited_question")
+                        .HasComment("Дата последнего редактирования вопроса");
+
+                    b.Property<int?>("IdAuthorAnswer")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_author_answer")
+                        .HasComment("id автора ответа");
+
+                    b.Property<int>("IdAuthorQuestion")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_author_question")
+                        .HasComment("id автора вопроса");
+
+                    b.Property<int?>("IdReplacementQuestion")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_replacement_question")
+                        .HasComment("Ключ заменяющего вопроса");
+
+                    b.Property<bool>("IsFrequently")
+                        .HasColumnType("boolean")
+                        .HasColumnName("is_frequently")
+                        .HasComment("Частый вопрос");
+
+                    b.Property<string>("Question")
+                        .IsRequired()
+                        .HasColumnType("text")
+                        .HasColumnName("question")
+                        .HasComment("Текст вопроса");
+
+                    b.Property<int>("State")
+                        .HasColumnType("integer")
+                        .HasColumnName("state")
+                        .HasComment("Статус вопроса");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("IdAuthorAnswer");
+
+                    b.HasIndex("IdAuthorQuestion");
+
+                    b.ToTable("t_faq", t =>
+                        {
+                            t.HasComment("вопросы пользователей");
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.FileCategory", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasColumnType("text")
+                        .HasColumnName("name")
+                        .HasComment("Название категории");
+
+                    b.Property<string>("ShortName")
+                        .HasColumnType("text")
+                        .HasColumnName("short_name")
+                        .HasComment("Короткое название категории");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("t_file_category", t =>
+                        {
+                            t.HasComment("Категории файлов");
+                        });
+
+                    b.HasData(
+                        new
+                        {
+                            Id = 1,
+                            Name = "Растворный сервис",
+                            ShortName = "fluidService"
+                        },
+                        new
+                        {
+                            Id = 2,
+                            Name = "Цементирование",
+                            ShortName = "cement"
+                        },
+                        new
+                        {
+                            Id = 3,
+                            Name = "ННБ",
+                            ShortName = "nnb"
+                        },
+                        new
+                        {
+                            Id = 4,
+                            Name = "ГТИ",
+                            ShortName = "gti"
+                        },
+                        new
+                        {
+                            Id = 5,
+                            Name = "Документы по скважине",
+                            ShortName = "wellDocuments"
+                        },
+                        new
+                        {
+                            Id = 6,
+                            Name = "Супервайзер",
+                            ShortName = "supervisor"
+                        },
+                        new
+                        {
+                            Id = 7,
+                            Name = "Мастер",
+                            ShortName = "master"
+                        },
+                        new
+                        {
+                            Id = 8,
+                            Name = "Долотный сервис",
+                            ShortName = "toolService"
+                        },
+                        new
+                        {
+                            Id = 9,
+                            Name = "Буровой подрядчик",
+                            ShortName = "drillService"
+                        },
+                        new
+                        {
+                            Id = 10,
+                            Name = "Сервис по заканчиванию скважины",
+                            ShortName = "closingService"
+                        },
+                        new
+                        {
+                            Id = 12,
+                            Name = "Рапорт",
+                            ShortName = "report"
+                        },
+                        new
+                        {
+                            Id = 1000,
+                            Name = "Программа бурения"
+                        },
+                        new
+                        {
+                            Id = 1001,
+                            Name = "Задание от геологов"
+                        },
+                        new
+                        {
+                            Id = 1002,
+                            Name = "Профиль ствола скважины (ННБ)"
+                        },
+                        new
+                        {
+                            Id = 1003,
+                            Name = "Технологические расчеты (ННБ)"
+                        },
+                        new
+                        {
+                            Id = 1004,
+                            Name = "Долотная программа"
+                        },
+                        new
+                        {
+                            Id = 1005,
+                            Name = "Программа по растворам"
+                        },
+                        new
+                        {
+                            Id = 1006,
+                            Name = "Программа геофизических исследований"
+                        },
+                        new
+                        {
+                            Id = 1007,
+                            Name = "Планы спусков обсадных колонн"
+                        },
+                        new
+                        {
+                            Id = 1008,
+                            Name = "Программы цементирования обсадных колонн"
+                        },
+                        new
+                        {
+                            Id = 10000,
+                            Name = "Проект на бурение транспортного и горизонтального участков скважины"
+                        },
+                        new
+                        {
+                            Id = 10001,
+                            Name = "Программа на бурение транспортного и горизонтального участков скважины"
+                        },
+                        new
+                        {
+                            Id = 10002,
+                            Name = "Акт о начале бурения"
+                        },
+                        new
+                        {
+                            Id = 10003,
+                            Name = "План работ спуска и цементирования направления"
+                        },
+                        new
+                        {
+                            Id = 10004,
+                            Name = "Программа цементирования направления"
+                        },
+                        new
+                        {
+                            Id = 10005,
+                            Name = "Мера обсадных труб (направление)"
+                        },
+                        new
+                        {
+                            Id = 10006,
+                            Name = "Акт на выполненные работы по цементированию направления"
+                        },
+                        new
+                        {
+                            Id = 10007,
+                            Name = "Отчет по цементированию направления (график)"
+                        },
+                        new
+                        {
+                            Id = 10008,
+                            Name = "План работ спуска и цементирования кондуктора"
+                        },
+                        new
+                        {
+                            Id = 10009,
+                            Name = "Программа цементирования (кондуктор)"
+                        },
+                        new
+                        {
+                            Id = 10010,
+                            Name = "Мера обсадных труб (кондуктор)"
+                        },
+                        new
+                        {
+                            Id = 10011,
+                            Name = "Карта крепления кондуктора"
+                        },
+                        new
+                        {
+                            Id = 10012,
+                            Name = "Акт на выполненные работы по цементированию кондуктора"
+                        },
+                        new
+                        {
+                            Id = 10013,
+                            Name = "Отчет по цементированию кондуктора (график)"
+                        },
+                        new
+                        {
+                            Id = 10014,
+                            Name = "Акт о замере расстояния от стола ротора до муфты кондуктора"
+                        },
+                        new
+                        {
+                            Id = 10015,
+                            Name = "Акт опресовки цементного кольца за кондуктором"
+                        },
+                        new
+                        {
+                            Id = 10016,
+                            Name = "Акт опресовки ППГ с глухими плашками совместно с кондуктором"
+                        },
+                        new
+                        {
+                            Id = 10017,
+                            Name = "Акт опресовки ПУГ, ППГ с трубными плашками совместно с кондуктором"
+                        },
+                        new
+                        {
+                            Id = 10018,
+                            Name = "План работ на крепление обсадной колонны (эк. колонна)"
+                        },
+                        new
+                        {
+                            Id = 10019,
+                            Name = "Программа цементирования (эк. колонна)"
+                        },
+                        new
+                        {
+                            Id = 10020,
+                            Name = "Мера труб эксплуатационной колонны"
+                        },
+                        new
+                        {
+                            Id = 10021,
+                            Name = "Карта по креплению  скважины (эк. колонна)"
+                        },
+                        new
+                        {
+                            Id = 10022,
+                            Name = "Акт на установку пружинных центраторов"
+                        },
+                        new
+                        {
+                            Id = 10023,
+                            Name = "Отчет по цементированию эксплуатационной колонны (график)"
+                        },
+                        new
+                        {
+                            Id = 10024,
+                            Name = "Акт на выполненные работы по цементированию эксплуатационной колонны"
+                        },
+                        new
+                        {
+                            Id = 10025,
+                            Name = "Акт об испытании эк. колонны на герметичность  (СТОП)"
+                        },
+                        new
+                        {
+                            Id = 10026,
+                            Name = "Акт опресовки ППГ с глухими плашками совместно с э/колонной"
+                        },
+                        new
+                        {
+                            Id = 10027,
+                            Name = "Акт опресовки ПУГ, ППГ с трубными плашками совместно с  э/колонной"
+                        },
+                        new
+                        {
+                            Id = 10028,
+                            Name = "Акт на вскрытие продуктивного пласта"
+                        },
+                        new
+                        {
+                            Id = 10029,
+                            Name = "Акт замера параметров раствора при бурении горизонтального участка"
+                        },
+                        new
+                        {
+                            Id = 10030,
+                            Name = "Разрешение на спуск «хвостовика» (телефонограмма)"
+                        },
+                        new
+                        {
+                            Id = 10031,
+                            Name = "План работ на спуск «хвостовика»"
+                        },
+                        new
+                        {
+                            Id = 10032,
+                            Name = "Акт готовности бурового и энергетического оборудования к спуску «хвостовика»"
+                        },
+                        new
+                        {
+                            Id = 10033,
+                            Name = "Акт шаблонировки ствола скважины перед спуском «хвостовика»"
+                        },
+                        new
+                        {
+                            Id = 10034,
+                            Name = "Мера обсадных труб (хвостовик)"
+                        },
+                        new
+                        {
+                            Id = 10035,
+                            Name = "Акт выполненных работ по спуску хвостовика с закачкой (нефти, солевого раствора"
+                        },
+                        new
+                        {
+                            Id = 10036,
+                            Name = "Акт о переводе скважины на тех. воду"
+                        },
+                        new
+                        {
+                            Id = 10037,
+                            Name = "Акт об окончании бурения"
+                        },
+                        new
+                        {
+                            Id = 10038,
+                            Name = "Акт на передачу скважины в освоение (КРС)"
+                        },
+                        new
+                        {
+                            Id = 10039,
+                            Name = "Акт на опресовку межколонного пространства с КРС"
+                        },
+                        new
+                        {
+                            Id = 10040,
+                            Name = "Акт на сдачу скважины в ЦДНГ"
+                        },
+                        new
+                        {
+                            Id = 10041,
+                            Name = "Паспорт ОУС (заполняется геологами)"
+                        },
+                        new
+                        {
+                            Id = 10042,
+                            Name = "Паспорт скважины (заполняется геологами)"
+                        },
+                        new
+                        {
+                            Id = 10043,
+                            Name = "Фактические данные бурения (вставляются в паспорт скважины)"
+                        },
+                        new
+                        {
+                            Id = 20000,
+                            Name = "Справки по страницам"
+                        },
+                        new
+                        {
+                            Id = 30000,
+                            Name = "Инструкции"
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.FileInfo", b =>
+                {
+                    b.Property<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")
+                        .IsRequired()
+                        .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", t =>
+                        {
+                            t.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", t =>
+                        {
+                            t.HasComment("Действия с файлами.");
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemFloat", b =>
+                {
+                    b.Property<int>("IdTelemetry")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_telemetry");
+
+                    b.Property<int>("IdRecord")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_record");
+
+                    b.Property<int>("IdItem")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_item");
+
+                    b.Property<DateTimeOffset>("DateTime")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("date");
+
+                    b.Property<float>("Value")
+                        .HasColumnType("real")
+                        .HasColumnName("value");
+
+                    b.HasKey("IdTelemetry", "IdRecord", "IdItem", "DateTime");
+
+                    b.ToTable("t_wits_float", t =>
+                        {
+                            t.HasComment("таблица данных ГТИ с типом значения float");
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemInt", b =>
+                {
+                    b.Property<int>("IdTelemetry")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_telemetry");
+
+                    b.Property<int>("IdRecord")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_record");
+
+                    b.Property<int>("IdItem")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_item");
+
+                    b.Property<DateTimeOffset>("DateTime")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("date");
+
+                    b.Property<int>("Value")
+                        .HasColumnType("integer")
+                        .HasColumnName("value");
+
+                    b.HasKey("IdTelemetry", "IdRecord", "IdItem", "DateTime");
+
+                    b.ToTable("t_wits_int", t =>
+                        {
+                            t.HasComment("таблица данных ГТИ с типом значения int");
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemString", b =>
+                {
+                    b.Property<int>("IdTelemetry")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_telemetry");
+
+                    b.Property<int>("IdRecord")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_record");
+
+                    b.Property<int>("IdItem")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_item");
+
+                    b.Property<DateTimeOffset>("DateTime")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("date");
+
+                    b.Property<string>("Value")
+                        .IsRequired()
+                        .HasColumnType("text")
+                        .HasColumnName("value");
+
+                    b.HasKey("IdTelemetry", "IdRecord", "IdItem", "DateTime");
+
+                    b.ToTable("t_wits_string", t =>
+                        {
+                            t.HasComment("таблица данных ГТИ с типом значения string");
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.HelpPage", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<int>("IdCategory")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_category")
+                        .HasComment("Id категории файла");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasColumnType("text")
+                        .HasColumnName("name")
+                        .HasComment("Название файла");
+
+                    b.Property<long>("Size")
+                        .HasColumnType("bigint")
+                        .HasColumnName("file_size")
+                        .HasComment("Размер файла");
+
+                    b.Property<string>("UrlPage")
+                        .IsRequired()
+                        .HasColumnType("text")
+                        .HasColumnName("url_page")
+                        .HasComment("Url страницы");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("IdCategory");
+
+                    b.ToTable("t_help_page", t =>
+                        {
+                            t.HasComment("Справки");
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.LimitingParameter", b =>
+                {
+                    b.Property<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", t =>
+                        {
+                            t.HasComment("Ограничения по параметрам телеметрии");
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.Manuals.Manual", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime>("DateDownload")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("date_download")
+                        .HasComment("Дата загрузки");
+
+                    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>("IdDirectory")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_directory")
+                        .HasComment("Id директории");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasColumnType("text")
+                        .HasColumnName("name")
+                        .HasComment("Название");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("IdAuthor");
+
+                    b.HasIndex("IdCategory");
+
+                    b.HasIndex("IdDirectory");
+
+                    b.ToTable("t_manual", t =>
+                        {
+                            t.HasComment("Инструкции");
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.Manuals.ManualDirectory", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<int?>("IdParent")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_parent")
+                        .HasComment("Id родительской директории");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasColumnType("text")
+                        .HasColumnName("name")
+                        .HasComment("Название");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("IdParent");
+
+                    b.ToTable("t_manual_directory", t =>
+                        {
+                            t.HasComment("Директория для инструкций");
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.Measure", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("Data")
+                        .IsRequired()
+                        .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", t =>
+                        {
+                            t.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")
+                        .IsRequired()
+                        .HasColumnType("text")
+                        .HasColumnName("name")
+                        .HasComment("Название категории");
+
+                    b.Property<string>("ShortName")
+                        .HasColumnType("text")
+                        .HasColumnName("short_name")
+                        .HasComment("Короткое название категории");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("t_measure_category", t =>
+                        {
+                            t.HasComment("Категория последних данных");
+                        });
+
+                    b.HasData(
+                        new
+                        {
+                            Id = 1,
+                            Name = "Показатели бурового раствора",
+                            ShortName = "Раствор"
+                        },
+                        new
+                        {
+                            Id = 2,
+                            Name = "Шламограмма",
+                            ShortName = "Шламограмма"
+                        },
+                        new
+                        {
+                            Id = 3,
+                            Name = "ННБ",
+                            ShortName = "ННБ"
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.Notification", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<int>("IdNotificationCategory")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_notification_category")
+                        .HasComment("Id категории уведомления");
+
+                    b.Property<int>("IdTransportType")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_transport_type")
+                        .HasComment("Id типа доставки уведомления");
+
+                    b.Property<int>("IdUser")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_user")
+                        .HasComment("Id получателя");
+
+                    b.Property<string>("Message")
+                        .IsRequired()
+                        .HasColumnType("text")
+                        .HasColumnName("message")
+                        .HasComment("Сообщение уведомления");
+
+                    b.Property<DateTime?>("ReadDate")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("read_date")
+                        .HasComment("Дата прочтения уведомления");
+
+                    b.Property<DateTime>("RegistrationDate")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("registration_date")
+                        .HasComment("Дата регистрации уведомления");
+
+                    b.Property<DateTime?>("SentDate")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("sent_date")
+                        .HasComment("Дата отправки уведомления");
+
+                    b.Property<string>("Title")
+                        .IsRequired()
+                        .HasColumnType("text")
+                        .HasColumnName("title")
+                        .HasComment("Заголовок уведомления");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("IdNotificationCategory");
+
+                    b.HasIndex("IdUser");
+
+                    b.ToTable("t_notification", t =>
+                        {
+                            t.HasComment("Уведомления");
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.NotificationCategory", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasColumnType("text")
+                        .HasColumnName("name");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("t_notification_category", t =>
+                        {
+                            t.HasComment("Категории уведомлений");
+                        });
+
+                    b.HasData(
+                        new
+                        {
+                            Id = 1,
+                            Name = "Системные уведомления"
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.OperationValue", b =>
+                {
+                    b.Property<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", t =>
+                        {
+                            t.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")
+                        .IsRequired()
+                        .HasMaxLength(255)
+                        .HasColumnType("character varying(255)")
+                        .HasColumnName("name")
+                        .HasComment("Название");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("t_permission", t =>
+                        {
+                            t.HasComment("Разрешения на доступ к данным");
+                        });
+
+                    b.HasData(
+                        new
+                        {
+                            Id = 100,
+                            Description = "Разрешение удалять  админ. Кусты",
+                            Name = "AdminCluster.delete"
+                        },
+                        new
+                        {
+                            Id = 101,
+                            Description = "Разрешение редактировать  админ. Кусты",
+                            Name = "AdminCluster.edit"
+                        },
+                        new
+                        {
+                            Id = 102,
+                            Description = "Разрешение просматривать  админ. Кусты",
+                            Name = "AdminCluster.get"
+                        },
+                        new
+                        {
+                            Id = 103,
+                            Description = "Разрешение удалять  админ. Компании",
+                            Name = "AdminCompany.delete"
+                        },
+                        new
+                        {
+                            Id = 104,
+                            Description = "Разрешение редактировать  админ. Компании",
+                            Name = "AdminCompany.edit"
+                        },
+                        new
+                        {
+                            Id = 105,
+                            Description = "Разрешение просматривать  админ. Компании",
+                            Name = "AdminCompany.get"
+                        },
+                        new
+                        {
+                            Id = 106,
+                            Description = "Разрешение удалять  админ. Типы компаний",
+                            Name = "AdminCompanyType.delete"
+                        },
+                        new
+                        {
+                            Id = 107,
+                            Description = "Разрешение редактировать  админ. Типы компаний",
+                            Name = "AdminCompanyType.edit"
+                        },
+                        new
+                        {
+                            Id = 108,
+                            Description = "Разрешение просматривать  админ. Типы компаний",
+                            Name = "AdminCompanyType.get"
+                        },
+                        new
+                        {
+                            Id = 109,
+                            Description = "Разрешение удалять  админ. Месторождения",
+                            Name = "AdminDeposit.delete"
+                        },
+                        new
+                        {
+                            Id = 110,
+                            Description = "Разрешение редактировать  админ. Месторождения",
+                            Name = "AdminDeposit.edit"
+                        },
+                        new
+                        {
+                            Id = 111,
+                            Description = "Разрешение просматривать  админ. Месторождения",
+                            Name = "AdminDeposit.get"
+                        },
+                        new
+                        {
+                            Id = 112,
+                            Description = "Разрешение удалять  админ. Разрешения",
+                            Name = "AdminPermission.delete"
+                        },
+                        new
+                        {
+                            Id = 113,
+                            Description = "Разрешение редактировать  админ. Разрешения",
+                            Name = "AdminPermission.edit"
+                        },
+                        new
+                        {
+                            Id = 114,
+                            Description = "Разрешение просматривать  админ. Разрешения",
+                            Name = "AdminPermission.get"
+                        },
+                        new
+                        {
+                            Id = 115,
+                            Description = "Разрешение удалять  админ. Телеметрию",
+                            Name = "AdminTelemetry.delete"
+                        },
+                        new
+                        {
+                            Id = 116,
+                            Description = "Разрешение редактировать  админ. Телеметрию",
+                            Name = "AdminTelemetry.edit"
+                        },
+                        new
+                        {
+                            Id = 117,
+                            Description = "Разрешение просматривать  админ. Телеметрию",
+                            Name = "AdminTelemetry.get"
+                        },
+                        new
+                        {
+                            Id = 118,
+                            Description = "Разрешение удалять  админ. Пользователей",
+                            Name = "AdminUser.delete"
+                        },
+                        new
+                        {
+                            Id = 119,
+                            Description = "Разрешение редактировать  админ. Пользователей",
+                            Name = "AdminUser.edit"
+                        },
+                        new
+                        {
+                            Id = 120,
+                            Description = "Разрешение просматривать  админ. Пользователей",
+                            Name = "AdminUser.get"
+                        },
+                        new
+                        {
+                            Id = 121,
+                            Description = "Разрешение удалять  админ. Роли пользователей",
+                            Name = "AdminUserRole.delete"
+                        },
+                        new
+                        {
+                            Id = 122,
+                            Description = "Разрешение редактировать  админ. Роли пользователей",
+                            Name = "AdminUserRole.edit"
+                        },
+                        new
+                        {
+                            Id = 123,
+                            Description = "Разрешение просматривать  админ. Роли пользователей",
+                            Name = "AdminUserRole.get"
+                        },
+                        new
+                        {
+                            Id = 124,
+                            Description = "Разрешение удалять  админ. Скважины",
+                            Name = "AdminWell.delete"
+                        },
+                        new
+                        {
+                            Id = 125,
+                            Description = "Разрешение редактировать  админ. Скважины",
+                            Name = "AdminWell.edit"
+                        },
+                        new
+                        {
+                            Id = 126,
+                            Description = "Разрешение просматривать  админ. Скважины",
+                            Name = "AdminWell.get"
+                        },
+                        new
+                        {
+                            Id = 127,
+                            Description = "Разрешение удалять  админ. Подсистемы",
+                            Name = "AdminSubsytem.delete"
+                        },
+                        new
+                        {
+                            Id = 128,
+                            Description = "Разрешение редактировать  админ. Подсистемы",
+                            Name = "AdminSubsytem.edit"
+                        },
+                        new
+                        {
+                            Id = 129,
+                            Description = "Разрешение просматривать  админ. Подсистемы",
+                            Name = "AdminSubsytem.get"
+                        },
+                        new
+                        {
+                            Id = 200,
+                            Description = "Разрешение редактировать  0",
+                            Name = "Auth.edit"
+                        },
+                        new
+                        {
+                            Id = 201,
+                            Description = "Разрешение просматривать  0",
+                            Name = "Auth.get"
+                        },
+                        new
+                        {
+                            Id = 202,
+                            Description = "Разрешение просматривать  Кусты",
+                            Name = "Cluster.get"
+                        },
+                        new
+                        {
+                            Id = 203,
+                            Description = "Разрешение просматривать  Месторождения",
+                            Name = "Deposit.get"
+                        },
+                        new
+                        {
+                            Id = 204,
+                            Description = "Разрешение удалять  РТК",
+                            Name = "DrillFlowChart.delete"
+                        },
+                        new
+                        {
+                            Id = 205,
+                            Description = "Разрешение редактировать  РТК",
+                            Name = "DrillFlowChart.edit"
+                        },
+                        new
+                        {
+                            Id = 206,
+                            Description = "Разрешение просматривать  РТК",
+                            Name = "DrillFlowChart.get"
+                        },
+                        new
+                        {
+                            Id = 207,
+                            Description = "Разрешение удалять  Программу бурения",
+                            Name = "DrillingProgram.delete"
+                        },
+                        new
+                        {
+                            Id = 208,
+                            Description = "Разрешение редактировать  Программу бурения",
+                            Name = "DrillingProgram.edit"
+                        },
+                        new
+                        {
+                            Id = 209,
+                            Description = "Разрешение просматривать  Программу бурения",
+                            Name = "DrillingProgram.get"
+                        },
+                        new
+                        {
+                            Id = 210,
+                            Description = "Разрешение удалять  Режимы бурения",
+                            Name = "DrillParams.delete"
+                        },
+                        new
+                        {
+                            Id = 211,
+                            Description = "Разрешение редактировать  Режимы бурения",
+                            Name = "DrillParams.edit"
+                        },
+                        new
+                        {
+                            Id = 212,
+                            Description = "Разрешение просматривать  Режимы бурения",
+                            Name = "DrillParams.get"
+                        },
+                        new
+                        {
+                            Id = 213,
+                            Description = "Разрешение удалять  Файлы",
+                            Name = "File.delete"
+                        },
+                        new
+                        {
+                            Id = 214,
+                            Description = "Разрешение редактировать  Файлы",
+                            Name = "File.edit"
+                        },
+                        new
+                        {
+                            Id = 215,
+                            Description = "Разрешение просматривать  Файлы",
+                            Name = "File.get"
+                        },
+                        new
+                        {
+                            Id = 216,
+                            Description = "Разрешение удалять  Измерения",
+                            Name = "Measure.delete"
+                        },
+                        new
+                        {
+                            Id = 217,
+                            Description = "Разрешение редактировать  Измерения",
+                            Name = "Measure.edit"
+                        },
+                        new
+                        {
+                            Id = 218,
+                            Description = "Разрешение просматривать  Измерения",
+                            Name = "Measure.get"
+                        },
+                        new
+                        {
+                            Id = 219,
+                            Description = "Разрешение просматривать  Сообщения телеметрии",
+                            Name = "Message.get"
+                        },
+                        new
+                        {
+                            Id = 220,
+                            Description = "Разрешение просматривать  Статистику по операциям",
+                            Name = "OperationStat.get"
+                        },
+                        new
+                        {
+                            Id = 221,
+                            Description = "Разрешение редактировать  Рапорта",
+                            Name = "Report.edit"
+                        },
+                        new
+                        {
+                            Id = 222,
+                            Description = "Разрешение просматривать  Рапорта",
+                            Name = "Report.get"
+                        },
+                        new
+                        {
+                            Id = 223,
+                            Description = "Разрешение просматривать  админ. Системная статистика",
+                            Name = "RequestTracker.get"
+                        },
+                        new
+                        {
+                            Id = 224,
+                            Description = "Разрешение удалять  Рекомендации уставок",
+                            Name = "Setpoints.delete"
+                        },
+                        new
+                        {
+                            Id = 225,
+                            Description = "Разрешение редактировать  Рекомендации уставок",
+                            Name = "Setpoints.edit"
+                        },
+                        new
+                        {
+                            Id = 226,
+                            Description = "Разрешение просматривать  Рекомендации уставок",
+                            Name = "Setpoints.get"
+                        },
+                        new
+                        {
+                            Id = 227,
+                            Description = "Разрешение редактировать  Телеметрии",
+                            Name = "Telemetry.edit"
+                        },
+                        new
+                        {
+                            Id = 228,
+                            Description = "Разрешение просматривать  Анализ телеметрии",
+                            Name = "TelemetryAnalytics.get"
+                        },
+                        new
+                        {
+                            Id = 229,
+                            Description = "Разрешение редактировать  Данные телеметрии по САУБ",
+                            Name = "TelemetryDataSaub.edit"
+                        },
+                        new
+                        {
+                            Id = 230,
+                            Description = "Разрешение просматривать  Данные телеметрии по САУБ",
+                            Name = "TelemetryDataSaub.get"
+                        },
+                        new
+                        {
+                            Id = 231,
+                            Description = "Разрешение редактировать  Данные телеметрии по SpinMaster",
+                            Name = "TelemetryDataSpin.edit"
+                        },
+                        new
+                        {
+                            Id = 232,
+                            Description = "Разрешение просматривать  Данные телеметрии по SpinMaster",
+                            Name = "TelemetryDataSpin.get"
+                        },
+                        new
+                        {
+                            Id = 233,
+                            Description = "Разрешение редактировать  Скважины",
+                            Name = "Well.edit"
+                        },
+                        new
+                        {
+                            Id = 234,
+                            Description = "Разрешение просматривать  Скважины",
+                            Name = "Well.get"
+                        },
+                        new
+                        {
+                            Id = 235,
+                            Description = "Разрешение редактировать  Композитные скважины",
+                            Name = "WellComposite.edit"
+                        },
+                        new
+                        {
+                            Id = 236,
+                            Description = "Разрешение просматривать  Композитные скважины",
+                            Name = "WellComposite.get"
+                        },
+                        new
+                        {
+                            Id = 237,
+                            Description = "Разрешение удалять  Операции по скважинам",
+                            Name = "WellOperation.delete"
+                        },
+                        new
+                        {
+                            Id = 238,
+                            Description = "Разрешение редактировать  Операции по скважинам",
+                            Name = "WellOperation.edit"
+                        },
+                        new
+                        {
+                            Id = 239,
+                            Description = "Разрешение просматривать  Операции по скважинам",
+                            Name = "WellOperation.get"
+                        },
+                        new
+                        {
+                            Id = 240,
+                            Description = "Разрешение редактировать  Файлы категории 1 (Растворный сервис)",
+                            Name = "File.edit1"
+                        },
+                        new
+                        {
+                            Id = 241,
+                            Description = "Разрешение редактировать  Файлы категории 2 (Цементирование)",
+                            Name = "File.edit2"
+                        },
+                        new
+                        {
+                            Id = 242,
+                            Description = "Разрешение редактировать  Файлы категории 3 (ННБ)",
+                            Name = "File.edit3"
+                        },
+                        new
+                        {
+                            Id = 243,
+                            Description = "Разрешение редактировать  Файлы категории 4 (ГТИ)",
+                            Name = "File.edit4"
+                        },
+                        new
+                        {
+                            Id = 244,
+                            Description = "Разрешение редактировать  Файлы категории 5 (Документы по скважине)",
+                            Name = "File.edit5"
+                        },
+                        new
+                        {
+                            Id = 245,
+                            Description = "Разрешение редактировать  Файлы категории 6 (Супервайзер)",
+                            Name = "File.edit6"
+                        },
+                        new
+                        {
+                            Id = 246,
+                            Description = "Разрешение редактировать  Файлы категории 7 (Мастер)",
+                            Name = "File.edit7"
+                        },
+                        new
+                        {
+                            Id = 247,
+                            Description = "Разрешение редактировать  Файлы категории 8 (Долотный сервис)",
+                            Name = "File.edit8"
+                        },
+                        new
+                        {
+                            Id = 248,
+                            Description = "Разрешение редактировать  Файлы категории 9 (Буровой подрядчик)",
+                            Name = "File.edit9"
+                        },
+                        new
+                        {
+                            Id = 249,
+                            Description = "Разрешение редактировать  Файлы категории 10 (Сервис по заканчиванию скважины)",
+                            Name = "File.edit10"
+                        },
+                        new
+                        {
+                            Id = 250,
+                            Description = "Разрешение редактировать  Файлы категории 11 (Рапорт)",
+                            Name = "File.edit11"
+                        },
+                        new
+                        {
+                            Id = 251,
+                            Description = "Разрешение редактировать  Файлы категории 12",
+                            Name = "File.edit12"
+                        },
+                        new
+                        {
+                            Id = 252,
+                            Description = "Разрешение редактировать  Файлы категории 12",
+                            Name = "File.edit13"
+                        },
+                        new
+                        {
+                            Id = 253,
+                            Description = "Разрешение редактировать  Файлы категории 13",
+                            Name = "File.edit14"
+                        },
+                        new
+                        {
+                            Id = 254,
+                            Description = "Разрешение редактировать  Файлы категории 14",
+                            Name = "File.edit15"
+                        },
+                        new
+                        {
+                            Id = 255,
+                            Description = "Разрешение редактировать  Файлы категории 15",
+                            Name = "File.edit16"
+                        },
+                        new
+                        {
+                            Id = 256,
+                            Description = "Разрешение редактировать  Файлы категории 16",
+                            Name = "File.edit17"
+                        },
+                        new
+                        {
+                            Id = 257,
+                            Description = "Разрешение редактировать  Файлы категории 17",
+                            Name = "File.edit18"
+                        },
+                        new
+                        {
+                            Id = 258,
+                            Description = "Разрешение редактировать  Файлы категории 18",
+                            Name = "File.edit19"
+                        },
+                        new
+                        {
+                            Id = 259,
+                            Description = "Разрешение редактировать  Файлы категории 19",
+                            Name = "File.edit20"
+                        },
+                        new
+                        {
+                            Id = 260,
+                            Description = "Разрешение редактировать  Файлы категории 20",
+                            Name = "File.edit21"
+                        },
+                        new
+                        {
+                            Id = 261,
+                            Description = "Разрешение редактировать  Файлы категории 21",
+                            Name = "File.edit22"
+                        },
+                        new
+                        {
+                            Id = 262,
+                            Description = "Разрешение редактировать  Файлы категории 22",
+                            Name = "File.edit23"
+                        },
+                        new
+                        {
+                            Id = 263,
+                            Description = "Разрешение редактировать  Файлы категории 23",
+                            Name = "File.edit24"
+                        },
+                        new
+                        {
+                            Id = 264,
+                            Description = "Разрешение редактировать  Файлы категории 24",
+                            Name = "File.edit25"
+                        },
+                        new
+                        {
+                            Id = 265,
+                            Description = "Разрешение редактировать  Файлы категории 25",
+                            Name = "File.edit26"
+                        },
+                        new
+                        {
+                            Id = 266,
+                            Description = "Разрешение редактировать  Файлы категории 26",
+                            Name = "File.edit27"
+                        },
+                        new
+                        {
+                            Id = 267,
+                            Description = "Разрешение редактировать  Файлы категории 27",
+                            Name = "File.edit28"
+                        },
+                        new
+                        {
+                            Id = 268,
+                            Description = "Разрешение редактировать  Файлы категории 28",
+                            Name = "File.edit29"
+                        },
+                        new
+                        {
+                            Id = 269,
+                            Description = "Разрешение редактировать  Файлы категории 29",
+                            Name = "File.edit30"
+                        },
+                        new
+                        {
+                            Id = 380,
+                            Description = "Разрешение просматривать список бурильщиков",
+                            Name = "Driller.get"
+                        },
+                        new
+                        {
+                            Id = 381,
+                            Description = "Разрешение редактировать бурильщика",
+                            Name = "Driller.edit"
+                        },
+                        new
+                        {
+                            Id = 382,
+                            Description = "Разрешение удалять бурильщик",
+                            Name = "Driller.delete"
+                        },
+                        new
+                        {
+                            Id = 383,
+                            Description = "Разрешение просматривать графики бурильщиков",
+                            Name = "Schedule.get"
+                        },
+                        new
+                        {
+                            Id = 384,
+                            Description = "Разрешение редактировать график бурильщика",
+                            Name = "Schedule.edit"
+                        },
+                        new
+                        {
+                            Id = 385,
+                            Description = "Разрешение удалять график бурильщика",
+                            Name = "Schedule.delete"
+                        },
+                        new
+                        {
+                            Id = 386,
+                            Description = "Разрешение просматривать суточный рапорт",
+                            Name = "DailyReport.get"
+                        },
+                        new
+                        {
+                            Id = 387,
+                            Description = "Разрешение редактировать суточный рапорт",
+                            Name = "DailyReport.edit"
+                        },
+                        new
+                        {
+                            Id = 388,
+                            Description = "Разрешение просматривать авто. определенные операции",
+                            Name = "DetectedOperation.get"
+                        },
+                        new
+                        {
+                            Id = 389,
+                            Description = "Разрешение просматривать целевые значения",
+                            Name = "OperationValue.get"
+                        },
+                        new
+                        {
+                            Id = 390,
+                            Description = "Разрешение редактировать целевые значения",
+                            Name = "OperationValue.edit"
+                        },
+                        new
+                        {
+                            Id = 391,
+                            Description = "Разрешение удалять целевые значения",
+                            Name = "OperationValue.delete"
+                        },
+                        new
+                        {
+                            Id = 400,
+                            Description = "Разрешение просматривать инфо по wits параметрам",
+                            Name = "WitsInfo.get"
+                        },
+                        new
+                        {
+                            Id = 401,
+                            Description = "Разрешение просматривать WITS record 1",
+                            Name = "WitsRecord1.get"
+                        },
+                        new
+                        {
+                            Id = 407,
+                            Description = "Разрешение просматривать WITS record 7",
+                            Name = "WitsRecord7.get"
+                        },
+                        new
+                        {
+                            Id = 408,
+                            Description = "Разрешение просматривать WITS record 8",
+                            Name = "WitsRecord8.get"
+                        },
+                        new
+                        {
+                            Id = 450,
+                            Description = "Разрешение просматривать WITS record 50",
+                            Name = "WitsRecord50.get"
+                        },
+                        new
+                        {
+                            Id = 460,
+                            Description = "Разрешение просматривать WITS record 60",
+                            Name = "WitsRecord60.get"
+                        },
+                        new
+                        {
+                            Id = 461,
+                            Description = "Разрешение просматривать WITS record 61",
+                            Name = "WitsRecord61.get"
+                        },
+                        new
+                        {
+                            Id = 500,
+                            Description = "Разрешение удалять  Категорий документов файлов",
+                            Name = "FileCategory.delete"
+                        },
+                        new
+                        {
+                            Id = 501,
+                            Description = "Разрешение редактировать  Категорий документов файлов",
+                            Name = "FileCategory.edit"
+                        },
+                        new
+                        {
+                            Id = 502,
+                            Description = "Разрешение просматривать  Категорий документов файлов",
+                            Name = "FileCategory.get"
+                        },
+                        new
+                        {
+                            Id = 503,
+                            Description = "Разрешение удалять  Дело скважины",
+                            Name = "WellFinalDocuments.delete"
+                        },
+                        new
+                        {
+                            Id = 504,
+                            Description = "Разрешение редактировать  Дело скважины",
+                            Name = "WellFinalDocuments.edit"
+                        },
+                        new
+                        {
+                            Id = 505,
+                            Description = "Разрешение просматривать  Дело скважины",
+                            Name = "WellFinalDocuments.get"
+                        },
+                        new
+                        {
+                            Id = 506,
+                            Description = "Разрешение редактировать ответственных за загрузку файла  Дело скважины",
+                            Name = "WellFinalDocuments.editPublisher"
+                        },
+                        new
+                        {
+                            Id = 507,
+                            Description = "Разрешение просматривать наработка талевого каната",
+                            Name = "TelemetryWirelineRunOut.get"
+                        },
+                        new
+                        {
+                            Id = 510,
+                            Description = "Разрешение просматривать плановая траектория",
+                            Name = "PlannedTrajectory.get"
+                        },
+                        new
+                        {
+                            Id = 511,
+                            Description = "Разрешение редактировать плановая траектория",
+                            Name = "PlannedTrajectory.edit"
+                        },
+                        new
+                        {
+                            Id = 512,
+                            Description = "Разрешение удалять плановая траектория",
+                            Name = "PlannedTrajectory.delete"
+                        },
+                        new
+                        {
+                            Id = 516,
+                            Description = "Разрешение просматривать статистику вопросов",
+                            Name = "FaqStatistics.get"
+                        },
+                        new
+                        {
+                            Id = 517,
+                            Description = "Разрешение редактировать вопрос",
+                            Name = "FaqStatistics.edit"
+                        },
+                        new
+                        {
+                            Id = 518,
+                            Description = "Разрешение удалять вопрос",
+                            Name = "FaqStatistics.delete"
+                        },
+                        new
+                        {
+                            Id = 519,
+                            Description = "Разрешение просматривать список контактов",
+                            Name = "WellContact.get"
+                        },
+                        new
+                        {
+                            Id = 520,
+                            Description = "Разрешение редактировать список контактов",
+                            Name = "WellContact.edit"
+                        },
+                        new
+                        {
+                            Id = 521,
+                            Description = "Разрешить создание справок по страницам",
+                            Name = "HelpPage.edit"
+                        },
+                        new
+                        {
+                            Id = 522,
+                            Description = "Разрешить удаление всех настроек пользователя",
+                            Name = "UserSettings.delete"
+                        },
+                        new
+                        {
+                            Id = 523,
+                            Description = "Разрешить редактирование инструкций",
+                            Name = "Manual.edit"
+                        },
+                        new
+                        {
+                            Id = 524,
+                            Description = "Разрешить получение инструкций",
+                            Name = "Manual.get"
+                        },
+                        new
+                        {
+                            Id = 525,
+                            Description = "Разрешение на редактирование РТК у завершенной скважины",
+                            Name = "ProcessMap.editCompletedWell"
+                        },
+                        new
+                        {
+                            Id = 526,
+                            Description = "Разрешение на редактирование операций у завершенной скважины",
+                            Name = "WellOperation.editCompletedWell"
+                        },
+                        new
+                        {
+                            Id = 527,
+                            Description = "Разрешение на удаление инструкций",
+                            Name = "Manual.delete"
+                        },
+                        new
+                        {
+                            Id = 528,
+                            Description = "Разрешение на удаление контакта",
+                            Name = "WellContact.delete"
+                        },
+                        new
+                        {
+                            Id = 530,
+                            Description = "Разрешение на редактирование плановой конструкции скважины",
+                            Name = "WellSectionPlan.edit"
+                        },
+                        new
+                        {
+                            Id = 531,
+                            Description = "Разрешение на удаление плановой конструкции скважины",
+                            Name = "WellSectionPlan.delete"
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.ProcessMaps.ProcessMapPlanDrilling", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id")
+                        .HasComment("Идентификатор");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<double>("AxialLoadLimitMax")
+                        .HasColumnType("double precision")
+                        .HasColumnName("axial_load_limit_max")
+                        .HasComment("Осевая нагрузка, т, допустимый максимум");
+
+                    b.Property<double>("AxialLoadPlan")
+                        .HasColumnType("double precision")
+                        .HasColumnName("axial_load_plan")
+                        .HasComment("Осевая нагрузка, т, план");
+
+                    b.Property<string>("Comment")
+                        .IsRequired()
+                        .HasMaxLength(1024)
+                        .HasColumnType("character varying(1024)")
+                        .HasColumnName("comment")
+                        .HasComment("Комментарий");
+
+                    b.Property<DateTimeOffset>("Creation")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("creation")
+                        .HasComment("дата создания");
+
+                    b.Property<double>("DeltaPressureLimitMax")
+                        .HasColumnType("double precision")
+                        .HasColumnName("delta_pressure_limit_max")
+                        .HasComment("Перепад давления, атм, допустимый максимум");
+
+                    b.Property<double>("DeltaPressurePlan")
+                        .HasColumnType("double precision")
+                        .HasColumnName("delta_pressure_plan")
+                        .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>("FlowLimitMax")
+                        .HasColumnType("double precision")
+                        .HasColumnName("flow_limit_max")
+                        .HasComment("Расход, л/с, допустимый максимум");
+
+                    b.Property<double>("FlowPlan")
+                        .HasColumnType("double precision")
+                        .HasColumnName("flow_plan")
+                        .HasComment("Расход, л/с, план");
+
+                    b.Property<int>("IdAuthor")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_author")
+                        .HasComment("Автор");
+
+                    b.Property<int?>("IdEditor")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_editor")
+                        .HasComment("Редактор");
+
+                    b.Property<int>("IdMode")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_mode")
+                        .HasComment("Id режима (1- ротор, 2 слайд)");
+
+                    b.Property<int?>("IdPrevious")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_previous")
+                        .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная");
+
+                    b.Property<int>("IdState")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_state")
+                        .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная");
+
+                    b.Property<int>("IdWell")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_well")
+                        .HasComment("Id скважины");
+
+                    b.Property<int>("IdWellSectionType")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_wellsection_type")
+                        .HasComment("Тип секции");
+
+                    b.Property<DateTimeOffset?>("Obsolete")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("obsolete")
+                        .HasComment("дата устаревания");
+
+                    b.Property<double>("RopPlan")
+                        .HasColumnType("double precision")
+                        .HasColumnName("rop_plan")
+                        .HasComment("Плановая механическая скорость, м/ч");
+
+                    b.Property<double>("TopDriveSpeedLimitMax")
+                        .HasColumnType("double precision")
+                        .HasColumnName("top_drive_speed_limit_max")
+                        .HasComment("Обороты на ВСП, допустимый максимум");
+
+                    b.Property<double>("TopDriveSpeedPlan")
+                        .HasColumnType("double precision")
+                        .HasColumnName("top_drive_speed_plan")
+                        .HasComment("Обороты на ВСП, план");
+
+                    b.Property<double>("TopDriveTorqueLimitMax")
+                        .HasColumnType("double precision")
+                        .HasColumnName("top_drive_torque_limit_max")
+                        .HasComment("Момент на ВСП, допустимый максимум");
+
+                    b.Property<double>("TopDriveTorquePlan")
+                        .HasColumnType("double precision")
+                        .HasColumnName("top_drive_torque_plan")
+                        .HasComment("Момент на ВСП, план");
+
+                    b.Property<double>("UsageSaub")
+                        .HasColumnType("double precision")
+                        .HasColumnName("usage_saub")
+                        .HasComment("Плановый процент использования АКБ");
+
+                    b.Property<double>("UsageSpin")
+                        .HasColumnType("double precision")
+                        .HasColumnName("usage_spin")
+                        .HasComment("Плановый процент использования spin master");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("IdAuthor");
+
+                    b.HasIndex("IdEditor");
+
+                    b.HasIndex("IdPrevious");
+
+                    b.HasIndex("IdWell");
+
+                    b.HasIndex("IdWellSectionType");
+
+                    b.ToTable("t_process_map_plan_drilling", t =>
+                        {
+                            t.HasComment("РТК план бурение");
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.ProcessMaps.ProcessMapPlanReam", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id")
+                        .HasComment("Идентификатор");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTimeOffset>("Creation")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("creation")
+                        .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>("IdAuthor")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_author")
+                        .HasComment("Автор");
+
+                    b.Property<int?>("IdEditor")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_editor")
+                        .HasComment("Редактор");
+
+                    b.Property<int?>("IdPrevious")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_previous")
+                        .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная");
+
+                    b.Property<int>("IdState")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_state")
+                        .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная");
+
+                    b.Property<int>("IdWell")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_well")
+                        .HasComment("Id скважины");
+
+                    b.Property<int>("IdWellSectionType")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_wellsection_type")
+                        .HasComment("Тип секции");
+
+                    b.Property<DateTimeOffset?>("Obsolete")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("obsolete")
+                        .HasComment("дата устаревания");
+
+                    b.Property<double>("Pressure")
+                        .HasColumnType("double precision")
+                        .HasColumnName("pressure")
+                        .HasComment("Давление, атм");
+
+                    b.Property<double>("Repeats")
+                        .HasColumnType("double precision")
+                        .HasColumnName("repeats")
+                        .HasComment("Количество повторений");
+
+                    b.Property<double>("SetpointDrag")
+                        .HasColumnType("double precision")
+                        .HasColumnName("setpoint_drag")
+                        .HasComment("Уставка зятяжки, т");
+
+                    b.Property<double>("SetpointTight")
+                        .HasColumnType("double precision")
+                        .HasColumnName("setpoint_tight")
+                        .HasComment("Уставка посадки, т");
+
+                    b.Property<double>("SpeedDownward")
+                        .HasColumnType("double precision")
+                        .HasColumnName("speed_downward")
+                        .HasComment("Скорость спуска, м/ч");
+
+                    b.Property<double>("SpeedUpward")
+                        .HasColumnType("double precision")
+                        .HasColumnName("speed_upward")
+                        .HasComment("Скорость подъёма, м/ч");
+
+                    b.Property<double>("SpinDownward")
+                        .HasColumnType("double precision")
+                        .HasColumnName("spin_downward")
+                        .HasComment("Вращение при движении вниз, об/мин");
+
+                    b.Property<double>("SpinUpward")
+                        .HasColumnType("double precision")
+                        .HasColumnName("spin_upward")
+                        .HasComment("Вращение при движении вверх, об/мин");
+
+                    b.Property<double>("Torque")
+                        .HasColumnType("double precision")
+                        .HasColumnName("torque")
+                        .HasComment("Момент, кН*м");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("IdAuthor");
+
+                    b.HasIndex("IdEditor");
+
+                    b.HasIndex("IdWell");
+
+                    b.HasIndex("IdWellSectionType");
+
+                    b.ToTable("t_process_map_plan_ream", t =>
+                        {
+                            t.HasComment("РТК проработка скважины");
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.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", t =>
+                        {
+                            t.HasComment("отношение скважин и компаний");
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.RelationContactWell", b =>
+                {
+                    b.Property<int>("IdWell")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_well");
+
+                    b.Property<int>("IdUser")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_user");
+
+                    b.HasKey("IdWell", "IdUser");
+
+                    b.HasIndex("IdUser");
+
+                    b.ToTable("t_relation_contact_well");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.RelationUserDrillingProgramPart", b =>
+                {
+                    b.Property<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", t =>
+                        {
+                            t.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", t =>
+                        {
+                            t.HasComment("Отношение ролей пользователей и разрешений доступа");
+                        });
+
+                    b.HasData(
+                        new
+                        {
+                            IdUserRole = 1100,
+                            IdPermission = 102
+                        },
+                        new
+                        {
+                            IdUserRole = 1100,
+                            IdPermission = 111
+                        },
+                        new
+                        {
+                            IdUserRole = 1101,
+                            IdPermission = 101
+                        },
+                        new
+                        {
+                            IdUserRole = 1101,
+                            IdPermission = 100
+                        },
+                        new
+                        {
+                            IdUserRole = 1102,
+                            IdPermission = 105
+                        },
+                        new
+                        {
+                            IdUserRole = 1102,
+                            IdPermission = 108
+                        },
+                        new
+                        {
+                            IdUserRole = 1103,
+                            IdPermission = 104
+                        },
+                        new
+                        {
+                            IdUserRole = 1103,
+                            IdPermission = 103
+                        },
+                        new
+                        {
+                            IdUserRole = 1104,
+                            IdPermission = 108
+                        },
+                        new
+                        {
+                            IdUserRole = 1105,
+                            IdPermission = 107
+                        },
+                        new
+                        {
+                            IdUserRole = 1105,
+                            IdPermission = 106
+                        },
+                        new
+                        {
+                            IdUserRole = 1106,
+                            IdPermission = 111
+                        },
+                        new
+                        {
+                            IdUserRole = 1107,
+                            IdPermission = 110
+                        },
+                        new
+                        {
+                            IdUserRole = 1107,
+                            IdPermission = 109
+                        },
+                        new
+                        {
+                            IdUserRole = 1108,
+                            IdPermission = 114
+                        },
+                        new
+                        {
+                            IdUserRole = 1109,
+                            IdPermission = 113
+                        },
+                        new
+                        {
+                            IdUserRole = 1109,
+                            IdPermission = 112
+                        },
+                        new
+                        {
+                            IdUserRole = 1110,
+                            IdPermission = 123
+                        },
+                        new
+                        {
+                            IdUserRole = 1110,
+                            IdPermission = 114
+                        },
+                        new
+                        {
+                            IdUserRole = 1111,
+                            IdPermission = 122
+                        },
+                        new
+                        {
+                            IdUserRole = 1111,
+                            IdPermission = 121
+                        },
+                        new
+                        {
+                            IdUserRole = 1112,
+                            IdPermission = 117
+                        },
+                        new
+                        {
+                            IdUserRole = 1113,
+                            IdPermission = 105
+                        },
+                        new
+                        {
+                            IdUserRole = 1113,
+                            IdPermission = 123
+                        },
+                        new
+                        {
+                            IdUserRole = 1113,
+                            IdPermission = 120
+                        },
+                        new
+                        {
+                            IdUserRole = 1114,
+                            IdPermission = 119
+                        },
+                        new
+                        {
+                            IdUserRole = 1114,
+                            IdPermission = 118
+                        },
+                        new
+                        {
+                            IdUserRole = 1114,
+                            IdPermission = 200
+                        },
+                        new
+                        {
+                            IdUserRole = 1115,
+                            IdPermission = 223
+                        },
+                        new
+                        {
+                            IdUserRole = 1116,
+                            IdPermission = 105
+                        },
+                        new
+                        {
+                            IdUserRole = 1116,
+                            IdPermission = 102
+                        },
+                        new
+                        {
+                            IdUserRole = 1116,
+                            IdPermission = 117
+                        },
+                        new
+                        {
+                            IdUserRole = 1116,
+                            IdPermission = 126
+                        },
+                        new
+                        {
+                            IdUserRole = 1117,
+                            IdPermission = 125
+                        },
+                        new
+                        {
+                            IdUserRole = 1117,
+                            IdPermission = 124
+                        },
+                        new
+                        {
+                            IdUserRole = 1200,
+                            IdPermission = 203
+                        },
+                        new
+                        {
+                            IdUserRole = 1200,
+                            IdPermission = 230
+                        },
+                        new
+                        {
+                            IdUserRole = 1201,
+                            IdPermission = 202
+                        },
+                        new
+                        {
+                            IdUserRole = 1201,
+                            IdPermission = 203
+                        },
+                        new
+                        {
+                            IdUserRole = 1201,
+                            IdPermission = 220
+                        },
+                        new
+                        {
+                            IdUserRole = 1202,
+                            IdPermission = 203
+                        },
+                        new
+                        {
+                            IdUserRole = 1202,
+                            IdPermission = 220
+                        },
+                        new
+                        {
+                            IdUserRole = 1202,
+                            IdPermission = 236
+                        },
+                        new
+                        {
+                            IdUserRole = 1202,
+                            IdPermission = 212
+                        },
+                        new
+                        {
+                            IdUserRole = 1203,
+                            IdPermission = 235
+                        },
+                        new
+                        {
+                            IdUserRole = 1204,
+                            IdPermission = 202
+                        },
+                        new
+                        {
+                            IdUserRole = 1204,
+                            IdPermission = 203
+                        },
+                        new
+                        {
+                            IdUserRole = 1205,
+                            IdPermission = 215
+                        },
+                        new
+                        {
+                            IdUserRole = 1206,
+                            IdPermission = 203
+                        },
+                        new
+                        {
+                            IdUserRole = 1206,
+                            IdPermission = 206
+                        },
+                        new
+                        {
+                            IdUserRole = 1207,
+                            IdPermission = 205
+                        },
+                        new
+                        {
+                            IdUserRole = 1208,
+                            IdPermission = 218
+                        },
+                        new
+                        {
+                            IdUserRole = 1209,
+                            IdPermission = 217
+                        },
+                        new
+                        {
+                            IdUserRole = 1210,
+                            IdPermission = 203
+                        },
+                        new
+                        {
+                            IdUserRole = 1210,
+                            IdPermission = 230
+                        },
+                        new
+                        {
+                            IdUserRole = 1210,
+                            IdPermission = 219
+                        },
+                        new
+                        {
+                            IdUserRole = 1211,
+                            IdPermission = 203
+                        },
+                        new
+                        {
+                            IdUserRole = 1211,
+                            IdPermission = 220
+                        },
+                        new
+                        {
+                            IdUserRole = 1211,
+                            IdPermission = 239
+                        },
+                        new
+                        {
+                            IdUserRole = 1212,
+                            IdPermission = 238
+                        },
+                        new
+                        {
+                            IdUserRole = 1212,
+                            IdPermission = 237
+                        },
+                        new
+                        {
+                            IdUserRole = 1213,
+                            IdPermission = 203
+                        },
+                        new
+                        {
+                            IdUserRole = 1213,
+                            IdPermission = 239
+                        },
+                        new
+                        {
+                            IdUserRole = 1213,
+                            IdPermission = 212
+                        },
+                        new
+                        {
+                            IdUserRole = 1214,
+                            IdPermission = 211
+                        },
+                        new
+                        {
+                            IdUserRole = 1214,
+                            IdPermission = 210
+                        },
+                        new
+                        {
+                            IdUserRole = 1215,
+                            IdPermission = 203
+                        },
+                        new
+                        {
+                            IdUserRole = 1215,
+                            IdPermission = 222
+                        },
+                        new
+                        {
+                            IdUserRole = 1216,
+                            IdPermission = 221
+                        },
+                        new
+                        {
+                            IdUserRole = 1217,
+                            IdPermission = 226
+                        },
+                        new
+                        {
+                            IdUserRole = 1218,
+                            IdPermission = 225
+                        },
+                        new
+                        {
+                            IdUserRole = 1218,
+                            IdPermission = 224
+                        },
+                        new
+                        {
+                            IdUserRole = 1219,
+                            IdPermission = 203
+                        },
+                        new
+                        {
+                            IdUserRole = 1219,
+                            IdPermission = 206
+                        },
+                        new
+                        {
+                            IdUserRole = 1219,
+                            IdPermission = 230
+                        },
+                        new
+                        {
+                            IdUserRole = 1219,
+                            IdPermission = 232
+                        },
+                        new
+                        {
+                            IdUserRole = 1220,
+                            IdPermission = 203
+                        },
+                        new
+                        {
+                            IdUserRole = 1220,
+                            IdPermission = 228
+                        },
+                        new
+                        {
+                            IdUserRole = 1221,
+                            IdPermission = 202
+                        },
+                        new
+                        {
+                            IdUserRole = 1221,
+                            IdPermission = 203
+                        },
+                        new
+                        {
+                            IdUserRole = 1221,
+                            IdPermission = 220
+                        },
+                        new
+                        {
+                            IdUserRole = 1221,
+                            IdPermission = 234
+                        },
+                        new
+                        {
+                            IdUserRole = 1500,
+                            IdPermission = 507
+                        },
+                        new
+                        {
+                            IdUserRole = 1500,
+                            IdPermission = 510
+                        },
+                        new
+                        {
+                            IdUserRole = 1501,
+                            IdPermission = 214
+                        },
+                        new
+                        {
+                            IdUserRole = 1501,
+                            IdPermission = 213
+                        },
+                        new
+                        {
+                            IdUserRole = 1502,
+                            IdPermission = 207
+                        },
+                        new
+                        {
+                            IdUserRole = 1502,
+                            IdPermission = 208
+                        },
+                        new
+                        {
+                            IdUserRole = 2000,
+                            IdPermission = 205
+                        },
+                        new
+                        {
+                            IdUserRole = 2000,
+                            IdPermission = 204
+                        },
+                        new
+                        {
+                            IdUserRole = 2000,
+                            IdPermission = 245
+                        },
+                        new
+                        {
+                            IdUserRole = 2001,
+                            IdPermission = 244
+                        },
+                        new
+                        {
+                            IdUserRole = 2001,
+                            IdPermission = 245
+                        },
+                        new
+                        {
+                            IdUserRole = 2002,
+                            IdPermission = 244
+                        },
+                        new
+                        {
+                            IdUserRole = 2002,
+                            IdPermission = 246
+                        },
+                        new
+                        {
+                            IdUserRole = 2002,
+                            IdPermission = 237
+                        },
+                        new
+                        {
+                            IdUserRole = 2002,
+                            IdPermission = 238
+                        },
+                        new
+                        {
+                            IdUserRole = 2003,
+                            IdPermission = 240
+                        },
+                        new
+                        {
+                            IdUserRole = 2003,
+                            IdPermission = 217
+                        },
+                        new
+                        {
+                            IdUserRole = 2003,
+                            IdPermission = 216
+                        },
+                        new
+                        {
+                            IdUserRole = 2004,
+                            IdPermission = 242
+                        },
+                        new
+                        {
+                            IdUserRole = 2004,
+                            IdPermission = 217
+                        },
+                        new
+                        {
+                            IdUserRole = 2004,
+                            IdPermission = 216
+                        },
+                        new
+                        {
+                            IdUserRole = 2004,
+                            IdPermission = 205
+                        },
+                        new
+                        {
+                            IdUserRole = 2004,
+                            IdPermission = 204
+                        },
+                        new
+                        {
+                            IdUserRole = 2005,
+                            IdPermission = 247
+                        },
+                        new
+                        {
+                            IdUserRole = 2005,
+                            IdPermission = 205
+                        },
+                        new
+                        {
+                            IdUserRole = 2005,
+                            IdPermission = 204
+                        },
+                        new
+                        {
+                            IdUserRole = 2006,
+                            IdPermission = 243
+                        },
+                        new
+                        {
+                            IdUserRole = 2006,
+                            IdPermission = 205
+                        },
+                        new
+                        {
+                            IdUserRole = 2006,
+                            IdPermission = 204
+                        },
+                        new
+                        {
+                            IdUserRole = 2007,
+                            IdPermission = 241
+                        },
+                        new
+                        {
+                            IdUserRole = 2007,
+                            IdPermission = 205
+                        },
+                        new
+                        {
+                            IdUserRole = 2007,
+                            IdPermission = 204
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 100
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 101
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 102
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 103
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 104
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 105
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 106
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 107
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 108
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 109
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 110
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 111
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 112
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 113
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 114
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 115
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 116
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 117
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 118
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 119
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 120
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 121
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 122
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 123
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 124
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 125
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 126
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 127
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 128
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 129
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 200
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 201
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 202
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 203
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 204
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 205
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 206
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 207
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 208
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 209
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 210
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 211
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 212
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 213
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 214
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 215
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 216
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 217
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 218
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 219
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 220
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 221
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 222
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 223
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 224
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 225
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 226
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 227
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 228
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 229
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 230
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 231
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 232
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 233
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 234
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 235
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 236
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 237
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 238
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 239
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 240
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 241
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 242
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 243
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 244
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 245
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 246
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 247
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 248
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 249
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 250
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 251
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 252
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 253
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 254
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 255
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 256
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 257
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 258
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 259
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 260
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 261
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 262
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 263
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 264
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 265
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 266
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 267
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 268
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 269
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 380
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 381
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 382
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 383
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 384
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 385
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 386
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 387
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 388
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 389
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 390
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 391
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 400
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 401
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 407
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 408
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 450
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 460
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 461
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 500
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 501
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 502
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 503
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 504
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 505
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 506
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 507
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 510
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 511
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 512
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 516
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 517
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 518
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 519
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 520
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 521
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 522
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 523
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 524
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 525
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 526
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 527
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 528
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 530
+                        },
+                        new
+                        {
+                            IdUserRole = 1,
+                            IdPermission = 531
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.RelationUserRoleUserRole", b =>
+                {
+                    b.Property<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", t =>
+                        {
+                            t.HasComment("Отношение ролей к ролям");
+                        });
+
+                    b.HasData(
+                        new
+                        {
+                            Id = 1101,
+                            IdInclude = 1100
+                        },
+                        new
+                        {
+                            Id = 1103,
+                            IdInclude = 1102
+                        },
+                        new
+                        {
+                            Id = 1105,
+                            IdInclude = 1104
+                        },
+                        new
+                        {
+                            Id = 1107,
+                            IdInclude = 1106
+                        },
+                        new
+                        {
+                            Id = 1109,
+                            IdInclude = 1108
+                        },
+                        new
+                        {
+                            Id = 1111,
+                            IdInclude = 1110
+                        },
+                        new
+                        {
+                            Id = 1114,
+                            IdInclude = 1113
+                        },
+                        new
+                        {
+                            Id = 1117,
+                            IdInclude = 1116
+                        },
+                        new
+                        {
+                            Id = 1203,
+                            IdInclude = 1202
+                        },
+                        new
+                        {
+                            Id = 1207,
+                            IdInclude = 1206
+                        },
+                        new
+                        {
+                            Id = 1209,
+                            IdInclude = 1208
+                        },
+                        new
+                        {
+                            Id = 1212,
+                            IdInclude = 1211
+                        },
+                        new
+                        {
+                            Id = 1214,
+                            IdInclude = 1213
+                        },
+                        new
+                        {
+                            Id = 1216,
+                            IdInclude = 1215
+                        },
+                        new
+                        {
+                            Id = 1218,
+                            IdInclude = 1217
+                        },
+                        new
+                        {
+                            Id = 2000,
+                            IdInclude = 1200
+                        },
+                        new
+                        {
+                            Id = 2000,
+                            IdInclude = 1201
+                        },
+                        new
+                        {
+                            Id = 2000,
+                            IdInclude = 1202
+                        },
+                        new
+                        {
+                            Id = 2000,
+                            IdInclude = 1204
+                        },
+                        new
+                        {
+                            Id = 2000,
+                            IdInclude = 1205
+                        },
+                        new
+                        {
+                            Id = 2000,
+                            IdInclude = 1206
+                        },
+                        new
+                        {
+                            Id = 2000,
+                            IdInclude = 1208
+                        },
+                        new
+                        {
+                            Id = 2000,
+                            IdInclude = 1210
+                        },
+                        new
+                        {
+                            Id = 2000,
+                            IdInclude = 1211
+                        },
+                        new
+                        {
+                            Id = 2000,
+                            IdInclude = 1213
+                        },
+                        new
+                        {
+                            Id = 2000,
+                            IdInclude = 1215
+                        },
+                        new
+                        {
+                            Id = 2000,
+                            IdInclude = 1217
+                        },
+                        new
+                        {
+                            Id = 2000,
+                            IdInclude = 1219
+                        },
+                        new
+                        {
+                            Id = 2000,
+                            IdInclude = 1220
+                        },
+                        new
+                        {
+                            Id = 2000,
+                            IdInclude = 1221
+                        },
+                        new
+                        {
+                            Id = 2000,
+                            IdInclude = 1500
+                        },
+                        new
+                        {
+                            Id = 2000,
+                            IdInclude = 1501
+                        },
+                        new
+                        {
+                            Id = 2000,
+                            IdInclude = 1502
+                        },
+                        new
+                        {
+                            Id = 2001,
+                            IdInclude = 1500
+                        },
+                        new
+                        {
+                            Id = 2001,
+                            IdInclude = 1501
+                        },
+                        new
+                        {
+                            Id = 2001,
+                            IdInclude = 1502
+                        },
+                        new
+                        {
+                            Id = 2002,
+                            IdInclude = 1500
+                        },
+                        new
+                        {
+                            Id = 2002,
+                            IdInclude = 1501
+                        },
+                        new
+                        {
+                            Id = 2002,
+                            IdInclude = 1502
+                        },
+                        new
+                        {
+                            Id = 2003,
+                            IdInclude = 1500
+                        },
+                        new
+                        {
+                            Id = 2003,
+                            IdInclude = 1501
+                        },
+                        new
+                        {
+                            Id = 2003,
+                            IdInclude = 1502
+                        },
+                        new
+                        {
+                            Id = 2004,
+                            IdInclude = 1500
+                        },
+                        new
+                        {
+                            Id = 2004,
+                            IdInclude = 1501
+                        },
+                        new
+                        {
+                            Id = 2004,
+                            IdInclude = 1502
+                        },
+                        new
+                        {
+                            Id = 2005,
+                            IdInclude = 1500
+                        },
+                        new
+                        {
+                            Id = 2005,
+                            IdInclude = 1501
+                        },
+                        new
+                        {
+                            Id = 2005,
+                            IdInclude = 1502
+                        },
+                        new
+                        {
+                            Id = 2006,
+                            IdInclude = 1500
+                        },
+                        new
+                        {
+                            Id = 2006,
+                            IdInclude = 1501
+                        },
+                        new
+                        {
+                            Id = 2006,
+                            IdInclude = 1502
+                        },
+                        new
+                        {
+                            Id = 2007,
+                            IdInclude = 1500
+                        },
+                        new
+                        {
+                            Id = 2007,
+                            IdInclude = 1501
+                        },
+                        new
+                        {
+                            Id = 2007,
+                            IdInclude = 1502
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.RelationUserUserRole", b =>
+                {
+                    b.Property<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", t =>
+                        {
+                            t.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", t =>
+                        {
+                            t.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", t =>
+                        {
+                            t.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")
+                        .IsRequired()
+                        .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", t =>
+                        {
+                            t.HasComment("Запросы на изменение уставок панели оператора");
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.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", t =>
+                        {
+                            t.HasComment("Описание подсистем");
+                        });
+
+                    b.HasData(
+                        new
+                        {
+                            Id = 1,
+                            Description = "Совместная работа режимов \"Бурение в роторе\" и \"Бурение в слайде\"",
+                            Name = "АПД"
+                        },
+                        new
+                        {
+                            Id = 11,
+                            Description = "Режим работы \"Бурение в роторе\"",
+                            Name = "АПД ротор"
+                        },
+                        new
+                        {
+                            Id = 12,
+                            Description = "Режим работы \"Бурение в слайде\"",
+                            Name = "АПД слайд"
+                        },
+                        new
+                        {
+                            Id = 65536,
+                            Description = "Осцилляция",
+                            Name = "Осцилляция"
+                        },
+                        new
+                        {
+                            Id = 65537,
+                            Description = "Демпфер",
+                            Name = "Демпфер"
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.Telemetry", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("Info")
+                        .IsRequired()
+                        .HasColumnType("jsonb")
+                        .HasColumnName("info")
+                        .HasComment("Информация с панели о скважине");
+
+                    b.Property<string>("RemoteUid")
+                        .IsRequired()
+                        .HasColumnType("text")
+                        .HasColumnName("remote_uid")
+                        .HasComment("Идентификатор передающего устройства. Может повторяться в списке, так как комплекты оборудования переезжают от скв. к скв.");
+
+                    b.Property<string>("TimeZone")
+                        .IsRequired()
+                        .HasColumnType("jsonb")
+                        .HasColumnName("timezone")
+                        .HasComment("Смещение часового пояса от UTC");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex(new[] { "RemoteUid" }, "t_telemetry_remote_uid_index");
+
+                    b.ToTable("t_telemetry", t =>
+                        {
+                            t.HasComment("таблица привязки телеметрии от комплектов к конкретной скважине.");
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaub", b =>
+                {
+                    b.Property<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?>("Pump0Flow")
+                        .HasColumnType("real")
+                        .HasColumnName("pump0_flow")
+                        .HasComment("Расход. Буровой насос 1");
+
+                    b.Property<float?>("Pump1Flow")
+                        .HasColumnType("real")
+                        .HasColumnName("pump1_flow")
+                        .HasComment("Расход. Буровой насос 2");
+
+                    b.Property<float?>("Pump2Flow")
+                        .HasColumnType("real")
+                        .HasColumnName("pump2_flow")
+                        .HasComment("Расход. Буровой насос 3");
+
+                    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", t =>
+                        {
+                            t.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.ToTable((string)null);
+
+                    b.ToView("mw_telemetry_datas_saub_stat", (string)null);
+                });
+
+            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", t =>
+                        {
+                            t.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")
+                        .IsRequired()
+                        .HasColumnType("text")
+                        .HasColumnName("message_template");
+
+                    b.HasKey("IdTelemetry", "IdEvent");
+
+                    b.ToTable("t_telemetry_event", t =>
+                        {
+                            t.HasComment("Справочник событий. События формируют сообщения. Разделено по версиям посылок от телеметрии.");
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.TelemetryMessage", b =>
+                {
+                    b.Property<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", t =>
+                        {
+                            t.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")
+                        .IsRequired()
+                        .HasMaxLength(255)
+                        .HasColumnType("character varying(255)")
+                        .HasColumnName("surname");
+
+                    b.HasKey("IdTelemetry", "IdUser");
+
+                    b.ToTable("t_telemetry_user", t =>
+                        {
+                            t.HasComment("Пользователи панели САУБ. Для сообщений.");
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.TelemetryWirelineRunOut", b =>
+                {
+                    b.Property<int>("IdTelemetry")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id_telemetry")
+                        .HasComment("Идентификатор телеметрии");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("IdTelemetry"));
+
+                    b.Property<DateTimeOffset>("DateTime")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("date_time")
+                        .HasComment("Отметка времени");
+
+                    b.Property<float>("Hauling")
+                        .HasColumnType("real")
+                        .HasColumnName("hauling")
+                        .HasComment("Наработка талевого каната с момента перетяжки каната, т*км");
+
+                    b.Property<float>("HaulingWarnSp")
+                        .HasColumnType("real")
+                        .HasColumnName("hauling_warn_sp")
+                        .HasComment("Наработка талевого каната до сигнализации о необходимости перетяжки, т*км");
+
+                    b.Property<float>("Replace")
+                        .HasColumnType("real")
+                        .HasColumnName("replace")
+                        .HasComment("Наработка талевого каната с момента замены каната, т*км");
+
+                    b.Property<float>("ReplaceWarnSp")
+                        .HasColumnType("real")
+                        .HasColumnName("replace_warn_sp")
+                        .HasComment("Наработка талевого каната до сигнализации о необходимости замены, т*км");
+
+                    b.HasKey("IdTelemetry");
+
+                    b.ToTable("t_telemetry_wireline_run_out", t =>
+                        {
+                            t.HasComment("Наработка талевого каната");
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.Trajectory.TrajectoryFact", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<double>("AzimuthGeo")
+                        .HasColumnType("double precision")
+                        .HasColumnName("azimuth_geo")
+                        .HasComment("Азимут Географ.");
+
+                    b.Property<double>("AzimuthMagnetic")
+                        .HasColumnType("double precision")
+                        .HasColumnName("azimuth_magnetic")
+                        .HasComment("Азимут Магнитный");
+
+                    b.Property<string>("Comment")
+                        .HasColumnType("text")
+                        .HasColumnName("comment")
+                        .HasComment("Комментарии");
+
+                    b.Property<int>("IdUser")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_user")
+                        .HasComment("ID пользователя который внес/изменил запись");
+
+                    b.Property<int>("IdWell")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_well")
+                        .HasComment("ID скважины");
+
+                    b.Property<DateTimeOffset>("UpdateDate")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("update_date")
+                        .HasComment("Дата загрузки траектории");
+
+                    b.Property<double>("VerticalDepth")
+                        .HasColumnType("double precision")
+                        .HasColumnName("vertical_depth")
+                        .HasComment("Глубина вертикальная");
+
+                    b.Property<double>("WellboreDepth")
+                        .HasColumnType("double precision")
+                        .HasColumnName("wellbore_depth")
+                        .HasComment("Глубина по стволу");
+
+                    b.Property<double>("ZenithAngle")
+                        .HasColumnType("double precision")
+                        .HasColumnName("zenith_angle")
+                        .HasComment("Угол зенитный");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("IdUser");
+
+                    b.HasIndex("IdWell");
+
+                    b.ToTable("t_trajectory_fact", t =>
+                        {
+                            t.HasComment("Загрузка фактической траектории");
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.Trajectory.TrajectoryPlan", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<double>("AzimuthGeo")
+                        .HasColumnType("double precision")
+                        .HasColumnName("azimuth_geo")
+                        .HasComment("Азимут Географ.");
+
+                    b.Property<double>("AzimuthMagnetic")
+                        .HasColumnType("double precision")
+                        .HasColumnName("azimuth_magnetic")
+                        .HasComment("Азимут Магнитный");
+
+                    b.Property<string>("Comment")
+                        .HasColumnType("text")
+                        .HasColumnName("comment")
+                        .HasComment("Комментарии");
+
+                    b.Property<int>("IdUser")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_user")
+                        .HasComment("ID пользователя который внес/изменил запись");
+
+                    b.Property<int>("IdWell")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_well")
+                        .HasComment("ID скважины");
+
+                    b.Property<double?>("Radius")
+                        .HasColumnType("double precision")
+                        .HasColumnName("radius")
+                        .HasComment("Радиус цели");
+
+                    b.Property<DateTimeOffset>("UpdateDate")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("update_date")
+                        .HasComment("Дата загрузки траектории");
+
+                    b.Property<double>("VerticalDepth")
+                        .HasColumnType("double precision")
+                        .HasColumnName("vertical_depth")
+                        .HasComment("Глубина вертикальная");
+
+                    b.Property<double>("WellboreDepth")
+                        .HasColumnType("double precision")
+                        .HasColumnName("wellbore_depth")
+                        .HasComment("Глубина по стволу");
+
+                    b.Property<double>("ZenithAngle")
+                        .HasColumnType("double precision")
+                        .HasColumnName("zenith_angle")
+                        .HasComment("Угол зенитный");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("IdUser");
+
+                    b.HasIndex("IdWell");
+
+                    b.ToTable("t_trajectory_plan", t =>
+                        {
+                            t.HasComment("Загрузка плановой траектории");
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.User", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<string>("Email")
+                        .IsRequired()
+                        .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("состояние:\n0 - не активен, \n1 - активен, \n2 - заблокирован");
+
+                    b.Property<string>("Login")
+                        .IsRequired()
+                        .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")
+                        .IsRequired()
+                        .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", t =>
+                        {
+                            t.HasComment("Пользователи облака");
+                        });
+
+                    b.HasData(
+                        new
+                        {
+                            Id = 1,
+                            Email = "",
+                            IdCompany = 1,
+                            IdState = (short)1,
+                            Login = "dev",
+                            Name = "Разработчик",
+                            PasswordHash = "Vlcj|4fa529103dde7ff72cfe76185f344d4aa87931f8e1b2044e8a7739947c3d18923464eaad93843e4f809c5e126d013072"
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.UserRole", b =>
+                {
+                    b.Property<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.Property<int>("IdType")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_type")
+                        .HasComment("0-роль из стандартной матрицы, \n1-специальная роль для какого-либо пользователя");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("t_user_role", t =>
+                        {
+                            t.HasComment("Роли пользователей в системе");
+                        });
+
+                    b.HasData(
+                        new
+                        {
+                            Id = 1,
+                            Caption = "root",
+                            IdType = 1
+                        },
+                        new
+                        {
+                            Id = 1100,
+                            Caption = "admin_cluster.view",
+                            IdType = 1
+                        },
+                        new
+                        {
+                            Id = 1101,
+                            Caption = "admin_cluster.edit",
+                            IdType = 1
+                        },
+                        new
+                        {
+                            Id = 1102,
+                            Caption = "admin_company.view",
+                            IdType = 1
+                        },
+                        new
+                        {
+                            Id = 1103,
+                            Caption = "admin_company.edit",
+                            IdType = 1
+                        },
+                        new
+                        {
+                            Id = 1104,
+                            Caption = "admin_company_type.view",
+                            IdType = 1
+                        },
+                        new
+                        {
+                            Id = 1105,
+                            Caption = "admin_company_type.edit",
+                            IdType = 1
+                        },
+                        new
+                        {
+                            Id = 1106,
+                            Caption = "admin_deposit.view",
+                            IdType = 1
+                        },
+                        new
+                        {
+                            Id = 1107,
+                            Caption = "admin_deposit.edit",
+                            IdType = 1
+                        },
+                        new
+                        {
+                            Id = 1108,
+                            Caption = "admin_permission.view",
+                            IdType = 1
+                        },
+                        new
+                        {
+                            Id = 1109,
+                            Caption = "admin_permission.edit",
+                            IdType = 1
+                        },
+                        new
+                        {
+                            Id = 1110,
+                            Caption = "admin_role.view",
+                            IdType = 1
+                        },
+                        new
+                        {
+                            Id = 1111,
+                            Caption = "admin_role.edit",
+                            IdType = 1
+                        },
+                        new
+                        {
+                            Id = 1112,
+                            Caption = "admin_telemetry.view",
+                            IdType = 1
+                        },
+                        new
+                        {
+                            Id = 1113,
+                            Caption = "admin_user.view",
+                            IdType = 1
+                        },
+                        new
+                        {
+                            Id = 1114,
+                            Caption = "admin_user.edit",
+                            IdType = 1
+                        },
+                        new
+                        {
+                            Id = 1115,
+                            Caption = "admin_visit_log.view",
+                            IdType = 1
+                        },
+                        new
+                        {
+                            Id = 1116,
+                            Caption = "admin_well.view",
+                            IdType = 1
+                        },
+                        new
+                        {
+                            Id = 1117,
+                            Caption = "admin_well.edit",
+                            IdType = 1
+                        },
+                        new
+                        {
+                            Id = 1200,
+                            Caption = "archive.view",
+                            IdType = 1
+                        },
+                        new
+                        {
+                            Id = 1201,
+                            Caption = "cluster.view",
+                            IdType = 1
+                        },
+                        new
+                        {
+                            Id = 1202,
+                            Caption = "composite.view",
+                            IdType = 1
+                        },
+                        new
+                        {
+                            Id = 1203,
+                            Caption = "composite.edit",
+                            IdType = 1
+                        },
+                        new
+                        {
+                            Id = 1204,
+                            Caption = "deposit.view",
+                            IdType = 1
+                        },
+                        new
+                        {
+                            Id = 1205,
+                            Caption = "document.view",
+                            IdType = 1
+                        },
+                        new
+                        {
+                            Id = 1206,
+                            Caption = "drillProcessFlow.view",
+                            IdType = 1
+                        },
+                        new
+                        {
+                            Id = 1207,
+                            Caption = "drillProcessFlow.edit",
+                            IdType = 1
+                        },
+                        new
+                        {
+                            Id = 1208,
+                            Caption = "measure.view",
+                            IdType = 1
+                        },
+                        new
+                        {
+                            Id = 1209,
+                            Caption = "measure.edit",
+                            IdType = 1
+                        },
+                        new
+                        {
+                            Id = 1210,
+                            Caption = "message.view",
+                            IdType = 1
+                        },
+                        new
+                        {
+                            Id = 1211,
+                            Caption = "operations.view",
+                            IdType = 1
+                        },
+                        new
+                        {
+                            Id = 1212,
+                            Caption = "operations.edit",
+                            IdType = 1
+                        },
+                        new
+                        {
+                            Id = 1213,
+                            Caption = "params.view",
+                            IdType = 1
+                        },
+                        new
+                        {
+                            Id = 1214,
+                            Caption = "params.edit",
+                            IdType = 1
+                        },
+                        new
+                        {
+                            Id = 1215,
+                            Caption = "report.view",
+                            IdType = 1
+                        },
+                        new
+                        {
+                            Id = 1216,
+                            Caption = "report.edit",
+                            IdType = 1
+                        },
+                        new
+                        {
+                            Id = 1217,
+                            Caption = "setpoints.view",
+                            IdType = 1
+                        },
+                        new
+                        {
+                            Id = 1218,
+                            Caption = "setpoints.edit",
+                            IdType = 1
+                        },
+                        new
+                        {
+                            Id = 1219,
+                            Caption = "telemetry.view",
+                            IdType = 1
+                        },
+                        new
+                        {
+                            Id = 1220,
+                            Caption = "telemetryAnalysis.view",
+                            IdType = 1
+                        },
+                        new
+                        {
+                            Id = 1221,
+                            Caption = "well.view",
+                            IdType = 1
+                        },
+                        new
+                        {
+                            Id = 1500,
+                            Caption = "Просмотр всего",
+                            IdType = 1
+                        },
+                        new
+                        {
+                            Id = 1501,
+                            Caption = "file.edit",
+                            IdType = 1
+                        },
+                        new
+                        {
+                            Id = 1502,
+                            Caption = "drillingProgram.edit",
+                            IdType = 1
+                        },
+                        new
+                        {
+                            Id = 2000,
+                            Caption = "Заказчик",
+                            IdType = 0
+                        },
+                        new
+                        {
+                            Id = 2001,
+                            Caption = "Супервайзер",
+                            IdType = 0
+                        },
+                        new
+                        {
+                            Id = 2002,
+                            Caption = "Буровой  подрядчик",
+                            IdType = 0
+                        },
+                        new
+                        {
+                            Id = 2003,
+                            Caption = "Растворщик",
+                            IdType = 0
+                        },
+                        new
+                        {
+                            Id = 2004,
+                            Caption = "Телеметрист",
+                            IdType = 0
+                        },
+                        new
+                        {
+                            Id = 2005,
+                            Caption = "Долотный сервис",
+                            IdType = 0
+                        },
+                        new
+                        {
+                            Id = 2006,
+                            Caption = "ГТИ",
+                            IdType = 0
+                        },
+                        new
+                        {
+                            Id = 2007,
+                            Caption = "Цементирование",
+                            IdType = 0
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.UserSetting", b =>
+                {
+                    b.Property<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", t =>
+                        {
+                            t.HasComment("настройки интерфейса пользователя");
+                        });
+                });
+
+            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");
+
+                    b.UseTptMappingStrategy();
+                });
+
+            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")
+                        .IsRequired()
+                        .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")
+                        .IsRequired()
+                        .HasColumnType("jsonb")
+                        .HasColumnName("timezone")
+                        .HasComment("Смещение часового пояса от UTC");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("IdCluster");
+
+                    b.HasIndex("IdTelemetry")
+                        .IsUnique();
+
+                    b.HasIndex("IdWellType");
+
+                    b.ToTable("t_well", t =>
+                        {
+                            t.HasComment("скважины");
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.WellComposite", b =>
+                {
+                    b.Property<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", t =>
+                        {
+                            t.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", t =>
+                        {
+                            t.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?>("IdPlan")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_plan")
+                        .HasComment("Id плановой операции");
+
+                    b.Property<int>("IdType")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_type")
+                        .HasComment("0 = План или 1 = Факт");
+
+                    b.Property<int?>("IdUser")
+                        .HasColumnType("integer");
+
+                    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.Property<DateTimeOffset>("LastUpdateDate")
+                        .HasColumnType("timestamp with time zone");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("DateStart");
+
+                    b.HasIndex("DepthEnd");
+
+                    b.HasIndex("IdCategory");
+
+                    b.HasIndex("IdPlan");
+
+                    b.HasIndex("IdWell");
+
+                    b.HasIndex("IdWellSectionType");
+
+                    b.ToTable("t_well_operation", t =>
+                        {
+                            t.HasComment("Данные по операциям на скважине");
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.WellOperationCategory", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<int?>("IdParent")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_parent")
+                        .HasComment("id родительской категории");
+
+                    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")
+                        .IsRequired()
+                        .HasColumnType("text")
+                        .HasColumnName("name")
+                        .HasComment("Название категории операции");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("IdParent");
+
+                    b.ToTable("t_well_operation_category", t =>
+                        {
+                            t.HasComment("Справочник операций на скважине");
+                        });
+
+                    b.HasData(
+                        new
+                        {
+                            Id = 3000,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "м/ч",
+                            Name = "БУРЕНИЕ"
+                        },
+                        new
+                        {
+                            Id = 3001,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "СПО"
+                        },
+                        new
+                        {
+                            Id = 3002,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "КРЕПЛЕНИЕ"
+                        },
+                        new
+                        {
+                            Id = 3003,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "ГФР"
+                        },
+                        new
+                        {
+                            Id = 3004,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Вспомогательные операции"
+                        },
+                        new
+                        {
+                            Id = 3005,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Непроизводительное время (НПВ)"
+                        },
+                        new
+                        {
+                            Id = 4000,
+                            IdParent = 3000,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "КНБК"
+                        },
+                        new
+                        {
+                            Id = 4001,
+                            IdParent = 3000,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "м/ч",
+                            Name = "Механическое. бурение"
+                        },
+                        new
+                        {
+                            Id = 4002,
+                            IdParent = 3000,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Статический замер"
+                        },
+                        new
+                        {
+                            Id = 4003,
+                            IdParent = 3000,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Нормализация диаметра скважины"
+                        },
+                        new
+                        {
+                            Id = 4004,
+                            IdParent = 3000,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Наращивание"
+                        },
+                        new
+                        {
+                            Id = 4005,
+                            IdParent = 3001,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "СПО"
+                        },
+                        new
+                        {
+                            Id = 4006,
+                            IdParent = 3002,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Спуск обсадной колонны"
+                        },
+                        new
+                        {
+                            Id = 4018,
+                            IdParent = 3002,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Крепление"
+                        },
+                        new
+                        {
+                            Id = 4007,
+                            IdParent = 3002,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Цементирование"
+                        },
+                        new
+                        {
+                            Id = 4008,
+                            IdParent = 3002,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Вспомогательные работы при креплении"
+                        },
+                        new
+                        {
+                            Id = 4009,
+                            IdParent = 3003,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Сборка/разборка приборов ГИС"
+                        },
+                        new
+                        {
+                            Id = 4010,
+                            IdParent = 3003,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "СПО"
+                        },
+                        new
+                        {
+                            Id = 4011,
+                            IdParent = 3003,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "ГИС"
+                        },
+                        new
+                        {
+                            Id = 4012,
+                            IdParent = 3004,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Промывка, ОБР"
+                        },
+                        new
+                        {
+                            Id = 4013,
+                            IdParent = 3004,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Вспомогательные работы"
+                        },
+                        new
+                        {
+                            Id = 4014,
+                            IdParent = 3005,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Ремонт оборудования"
+                        },
+                        new
+                        {
+                            Id = 4015,
+                            IdParent = 3005,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Аварийные работы"
+                        },
+                        new
+                        {
+                            Id = 4016,
+                            IdParent = 3005,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Осложнение"
+                        },
+                        new
+                        {
+                            Id = 4017,
+                            IdParent = 3005,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Незаложенные в ГГД операции"
+                        },
+                        new
+                        {
+                            Id = 5000,
+                            IdParent = 4000,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Разборка КНБК"
+                        },
+                        new
+                        {
+                            Id = 5001,
+                            IdParent = 4000,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Сборка КНБК"
+                        },
+                        new
+                        {
+                            Id = 5002,
+                            IdParent = 4001,
+                            KeyValueName = "МСП",
+                            KeyValueUnits = "м/ч",
+                            Name = "Бурение слайдом"
+                        },
+                        new
+                        {
+                            Id = 5003,
+                            IdParent = 4001,
+                            KeyValueName = "МСП",
+                            KeyValueUnits = "м/ч",
+                            Name = "Бурение ротором"
+                        },
+                        new
+                        {
+                            Id = 5004,
+                            IdParent = 4002,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Замер ЗТС (запись MWD)"
+                        },
+                        new
+                        {
+                            Id = 5005,
+                            IdParent = 4003,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Промывка перед наращиванием"
+                        },
+                        new
+                        {
+                            Id = 5006,
+                            IdParent = 4003,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Проработка во время бурения"
+                        },
+                        new
+                        {
+                            Id = 5007,
+                            IdParent = 4003,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Проработка перед наращиванием"
+                        },
+                        new
+                        {
+                            Id = 5008,
+                            IdParent = 4003,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Шаблонировка во время бурения"
+                        },
+                        new
+                        {
+                            Id = 5009,
+                            IdParent = 4003,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Шаблонировка перед наращиванием"
+                        },
+                        new
+                        {
+                            Id = 5010,
+                            IdParent = 4004,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Наращивание"
+                        },
+                        new
+                        {
+                            Id = 5011,
+                            IdParent = 4004,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Удержание в клиньях"
+                        },
+                        new
+                        {
+                            Id = 5012,
+                            IdParent = 4005,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Подъем инструмента"
+                        },
+                        new
+                        {
+                            Id = 5013,
+                            IdParent = 4005,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Подъем КНБК"
+                        },
+                        new
+                        {
+                            Id = 5014,
+                            IdParent = 4005,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Спуск инструмента"
+                        },
+                        new
+                        {
+                            Id = 5015,
+                            IdParent = 4005,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Спуск КНБК"
+                        },
+                        new
+                        {
+                            Id = 5016,
+                            IdParent = 4006,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Промывка при спуске ОК"
+                        },
+                        new
+                        {
+                            Id = 5017,
+                            IdParent = 4006,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Спуск ОК"
+                        },
+                        new
+                        {
+                            Id = 5018,
+                            IdParent = 4007,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "ОЗЦ"
+                        },
+                        new
+                        {
+                            Id = 5019,
+                            IdParent = 4007,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Цементирование"
+                        },
+                        new
+                        {
+                            Id = 5020,
+                            IdParent = 4008,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Опрессовка БИ"
+                        },
+                        new
+                        {
+                            Id = 5021,
+                            IdParent = 4008,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Опрессовка ОК"
+                        },
+                        new
+                        {
+                            Id = 5022,
+                            IdParent = 4008,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "ПЗР при спуске ОК"
+                        },
+                        new
+                        {
+                            Id = 5023,
+                            IdParent = 4008,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "ПЗР при цементировании"
+                        },
+                        new
+                        {
+                            Id = 5024,
+                            IdParent = 4009,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Разборка комплекса приборов ГИС"
+                        },
+                        new
+                        {
+                            Id = 5025,
+                            IdParent = 4009,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Сборка комплекса приборов ГИС"
+                        },
+                        new
+                        {
+                            Id = 5026,
+                            IdParent = 4010,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Подъем приборов ГИС  (на трубах)"
+                        },
+                        new
+                        {
+                            Id = 5027,
+                            IdParent = 4010,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Спуск приборов ГИС (на трубах)"
+                        },
+                        new
+                        {
+                            Id = 5028,
+                            IdParent = 4011,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Комплекс ГИС на жестком кабеле"
+                        },
+                        new
+                        {
+                            Id = 5029,
+                            IdParent = 4011,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Комплекс ГИС на кабеле"
+                        },
+                        new
+                        {
+                            Id = 5030,
+                            IdParent = 4011,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Комплекс ГИС на трубах"
+                        },
+                        new
+                        {
+                            Id = 5031,
+                            IdParent = 4012,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Закачка/прокачка пачки"
+                        },
+                        new
+                        {
+                            Id = 5032,
+                            IdParent = 4012,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Обработка БР"
+                        },
+                        new
+                        {
+                            Id = 5033,
+                            IdParent = 4012,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Ориентирование ТС при бурении"
+                        },
+                        new
+                        {
+                            Id = 5034,
+                            IdParent = 4012,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Перезапись гаммы-каротажа"
+                        },
+                        new
+                        {
+                            Id = 5035,
+                            IdParent = 4012,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Приготовление БР"
+                        },
+                        new
+                        {
+                            Id = 5036,
+                            IdParent = 4012,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Промывка"
+                        },
+                        new
+                        {
+                            Id = 5037,
+                            IdParent = 4012,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Разбуривание тех.оснастки"
+                        },
+                        new
+                        {
+                            Id = 5038,
+                            IdParent = 4012,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Спуск инструмента с проработкой"
+                        },
+                        new
+                        {
+                            Id = 5039,
+                            IdParent = 4013,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "ВМР"
+                        },
+                        new
+                        {
+                            Id = 5040,
+                            IdParent = 4013,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Демонтаж ПВО"
+                        },
+                        new
+                        {
+                            Id = 5041,
+                            IdParent = 4013,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Долив затруба при подъёме"
+                        },
+                        new
+                        {
+                            Id = 5042,
+                            IdParent = 4013,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Монтаж ПВО"
+                        },
+                        new
+                        {
+                            Id = 5043,
+                            IdParent = 4013,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Наработка жёлоба"
+                        },
+                        new
+                        {
+                            Id = 5044,
+                            IdParent = 4013,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Обвязка устья с циркуляционной системой"
+                        },
+                        new
+                        {
+                            Id = 5045,
+                            IdParent = 4013,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Оборудование устья"
+                        },
+                        new
+                        {
+                            Id = 5046,
+                            IdParent = 4013,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Опрессовка ПВО"
+                        },
+                        new
+                        {
+                            Id = 5047,
+                            IdParent = 4013,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Перемонтаж ПВО "
+                        },
+                        new
+                        {
+                            Id = 5048,
+                            IdParent = 4013,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Перетяжка талевого каната"
+                        },
+                        new
+                        {
+                            Id = 5049,
+                            IdParent = 4013,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "ПЗР при сборке КНБК"
+                        },
+                        new
+                        {
+                            Id = 5050,
+                            IdParent = 4013,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Полная замена талевого каната"
+                        },
+                        new
+                        {
+                            Id = 5051,
+                            IdParent = 4013,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "ПР перед забуркой направления"
+                        },
+                        new
+                        {
+                            Id = 5052,
+                            IdParent = 4013,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Продувка манифольда"
+                        },
+                        new
+                        {
+                            Id = 5053,
+                            IdParent = 4013,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Срезка"
+                        },
+                        new
+                        {
+                            Id = 5054,
+                            IdParent = 4013,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Тайм-дриллинг"
+                        },
+                        new
+                        {
+                            Id = 5055,
+                            IdParent = 4013,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Тех.отстой"
+                        },
+                        new
+                        {
+                            Id = 5056,
+                            IdParent = 4013,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Учебная тревога \"Выброс\""
+                        },
+                        new
+                        {
+                            Id = 5057,
+                            IdParent = 4013,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Чистка ЦСГО/емкостного блока"
+                        },
+                        new
+                        {
+                            Id = 5058,
+                            IdParent = 4014,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Ремонт бурового оборудования"
+                        },
+                        new
+                        {
+                            Id = 5059,
+                            IdParent = 4015,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Ловильные работы"
+                        },
+                        new
+                        {
+                            Id = 5060,
+                            IdParent = 4015,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Ожидание"
+                        },
+                        new
+                        {
+                            Id = 5061,
+                            IdParent = 4015,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Определение места прихвата и ЛМ"
+                        },
+                        new
+                        {
+                            Id = 5062,
+                            IdParent = 4015,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Работа яссом"
+                        },
+                        new
+                        {
+                            Id = 5063,
+                            IdParent = 4015,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Расхаживание"
+                        },
+                        new
+                        {
+                            Id = 5064,
+                            IdParent = 4015,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "СПО - колокол"
+                        },
+                        new
+                        {
+                            Id = 5065,
+                            IdParent = 4015,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "СПО - метчик"
+                        },
+                        new
+                        {
+                            Id = 5066,
+                            IdParent = 4015,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "СПО - овершот"
+                        },
+                        new
+                        {
+                            Id = 5067,
+                            IdParent = 4015,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "СПО - труболовка"
+                        },
+                        new
+                        {
+                            Id = 5068,
+                            IdParent = 4015,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Торпедирование (встряхивание)"
+                        },
+                        new
+                        {
+                            Id = 5069,
+                            IdParent = 4015,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Торпедирование (отстрел)"
+                        },
+                        new
+                        {
+                            Id = 5070,
+                            IdParent = 4015,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Установка ванн"
+                        },
+                        new
+                        {
+                            Id = 5071,
+                            IdParent = 4015,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Фрезеровка"
+                        },
+                        new
+                        {
+                            Id = 5072,
+                            IdParent = 4016,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Контролируемое ГНВП"
+                        },
+                        new
+                        {
+                            Id = 5073,
+                            IdParent = 4016,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Поглощение"
+                        },
+                        new
+                        {
+                            Id = 5074,
+                            IdParent = 4016,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Сальникообразование"
+                        },
+                        new
+                        {
+                            Id = 5075,
+                            IdParent = 4016,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Утяжеление БР"
+                        },
+                        new
+                        {
+                            Id = 5076,
+                            IdParent = 4017,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "НПВ / прочее"
+                        },
+                        new
+                        {
+                            Id = 5077,
+                            IdParent = 4017,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Обработка раствора (несоответствие параметров)"
+                        },
+                        new
+                        {
+                            Id = 5078,
+                            IdParent = 4017,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "подъем ОК"
+                        },
+                        new
+                        {
+                            Id = 5079,
+                            IdParent = 4017,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Ревизия КНБК/инструмента/ЗТС"
+                        },
+                        new
+                        {
+                            Id = 5082,
+                            IdParent = 4000,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Сборка устройства ориентирования КО"
+                        },
+                        new
+                        {
+                            Id = 5083,
+                            IdParent = 4003,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Проработка принудительная"
+                        },
+                        new
+                        {
+                            Id = 5084,
+                            IdParent = 4005,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Шаблонировка подъем БИ, продувка"
+                        },
+                        new
+                        {
+                            Id = 5085,
+                            IdParent = 4005,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Спуск бурильного инструмента со сборкой с мостков"
+                        },
+                        new
+                        {
+                            Id = 5086,
+                            IdParent = 4005,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Подъем БИ с выбросом на мостки"
+                        },
+                        new
+                        {
+                            Id = 5087,
+                            IdParent = 4005,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Спуск БИ со сборкой с мостков"
+                        },
+                        new
+                        {
+                            Id = 5088,
+                            IdParent = 4005,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Сборка и спуск ТБТ"
+                        },
+                        new
+                        {
+                            Id = 5089,
+                            IdParent = 4005,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Спуск КО на транспотрной колонне"
+                        },
+                        new
+                        {
+                            Id = 5090,
+                            IdParent = 4008,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Отворот допускной трубы"
+                        },
+                        new
+                        {
+                            Id = 5091,
+                            IdParent = 4008,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Активация подвески, опрессовка"
+                        },
+                        new
+                        {
+                            Id = 5092,
+                            IdParent = 4008,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Монтаж, опрессовка ФА"
+                        },
+                        new
+                        {
+                            Id = 5093,
+                            IdParent = 4008,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Сборка хвостовика 114мм (согласно схеме)"
+                        },
+                        new
+                        {
+                            Id = 5094,
+                            IdParent = 4008,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "ПЗР к спуску УЭЦН"
+                        },
+                        new
+                        {
+                            Id = 5095,
+                            IdParent = 4008,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Активация подвески  (потайной колонны, хвостовика)"
+                        },
+                        new
+                        {
+                            Id = 5096,
+                            IdParent = 4008,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Шаблонирование перед спуском"
+                        },
+                        new
+                        {
+                            Id = 5097,
+                            IdParent = 4012,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Промывка - перевод скважины на новый раствор"
+                        },
+                        new
+                        {
+                            Id = 5098,
+                            IdParent = 4013,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Сборка БИ с мостков на подсвечник"
+                        },
+                        new
+                        {
+                            Id = 5099,
+                            IdParent = 4013,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Подготовка ствола скважины. Перезапись ГК в интервале установки КО."
+                        },
+                        new
+                        {
+                            Id = 5100,
+                            IdParent = 4013,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Смена рабочего переводника ВСП"
+                        },
+                        new
+                        {
+                            Id = 5101,
+                            IdParent = 4014,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Ремонт"
+                        },
+                        new
+                        {
+                            Id = 5102,
+                            IdParent = 4018,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Спуск пакера"
+                        },
+                        new
+                        {
+                            Id = 5103,
+                            IdParent = 4011,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Запись гамма-каратожа"
+                        },
+                        new
+                        {
+                            Id = 5104,
+                            IdParent = 4013,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Шаблонирование спуск БИ"
+                        },
+                        new
+                        {
+                            Id = 5105,
+                            IdParent = 4018,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Сборка клин-отклонителя"
+                        },
+                        new
+                        {
+                            Id = 5106,
+                            IdParent = 4018,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Ориентирование и посадка клина-отклонителя"
+                        },
+                        new
+                        {
+                            Id = 5107,
+                            IdParent = 4018,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Протяжка подъемного патрубка подвески"
+                        },
+                        new
+                        {
+                            Id = 5108,
+                            IdParent = 4018,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Подъем клина-отклонителя"
+                        },
+                        new
+                        {
+                            Id = 5109,
+                            IdParent = 4018,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Стыковка стингера с хвостовиком основного ствола"
+                        },
+                        new
+                        {
+                            Id = 5110,
+                            IdParent = 4018,
+                            KeyValueName = "dT",
+                            KeyValueUnits = "мин",
+                            Name = "Ориентирование и установка стыковочного узла хвостовика"
+                        },
+                        new
+                        {
+                            Id = 5111,
+                            IdParent = 4001,
+                            KeyValueName = "МСП",
+                            KeyValueUnits = "м/ч",
+                            Name = "Бурение с отбором керна"
+                        },
+                        new
+                        {
+                            Id = 5112,
+                            IdParent = 4018,
+                            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.Property<float>("Order")
+                        .HasColumnType("real")
+                        .HasColumnName("order")
+                        .HasComment("Порядок");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("t_well_section_type", t =>
+                        {
+                            t.HasComment("конструкция секции скважины");
+                        });
+
+                    b.HasData(
+                        new
+                        {
+                            Id = 1,
+                            Caption = "Пилотный ствол",
+                            Order = 4f
+                        },
+                        new
+                        {
+                            Id = 2,
+                            Caption = "Направление",
+                            Order = 0f
+                        },
+                        new
+                        {
+                            Id = 3,
+                            Caption = "Кондуктор",
+                            Order = 1f
+                        },
+                        new
+                        {
+                            Id = 4,
+                            Caption = "Эксплуатационная колонна",
+                            Order = 3f
+                        },
+                        new
+                        {
+                            Id = 5,
+                            Caption = "Транспортный ствол",
+                            Order = 5f
+                        },
+                        new
+                        {
+                            Id = 6,
+                            Caption = "Хвостовик",
+                            Order = 6f
+                        },
+                        new
+                        {
+                            Id = 7,
+                            Caption = "Пилотный ствол 2",
+                            Order = 4.1f
+                        },
+                        new
+                        {
+                            Id = 8,
+                            Caption = "Направление 2",
+                            Order = 0.1f
+                        },
+                        new
+                        {
+                            Id = 9,
+                            Caption = "Кондуктор 2",
+                            Order = 1.1f
+                        },
+                        new
+                        {
+                            Id = 10,
+                            Caption = "Эксплуатационная колонна 2",
+                            Order = 3.1f
+                        },
+                        new
+                        {
+                            Id = 11,
+                            Caption = "Транспортный ствол 2",
+                            Order = 5.1f
+                        },
+                        new
+                        {
+                            Id = 12,
+                            Caption = "Хвостовик 2",
+                            Order = 6.1f
+                        },
+                        new
+                        {
+                            Id = 13,
+                            Caption = "Пилотный ствол 3",
+                            Order = 4.2f
+                        },
+                        new
+                        {
+                            Id = 14,
+                            Caption = "Направление 3",
+                            Order = 0.2f
+                        },
+                        new
+                        {
+                            Id = 15,
+                            Caption = "Кондуктор 3",
+                            Order = 1.2f
+                        },
+                        new
+                        {
+                            Id = 16,
+                            Caption = "Эксплуатационная колонна 3",
+                            Order = 3.2f
+                        },
+                        new
+                        {
+                            Id = 17,
+                            Caption = "Транспортный ствол 3",
+                            Order = 5.2f
+                        },
+                        new
+                        {
+                            Id = 18,
+                            Caption = "Хвостовик 3",
+                            Order = 6.2f
+                        },
+                        new
+                        {
+                            Id = 19,
+                            Caption = "Пилотный ствол 4",
+                            Order = 4.3f
+                        },
+                        new
+                        {
+                            Id = 20,
+                            Caption = "Направление 4",
+                            Order = 0.3f
+                        },
+                        new
+                        {
+                            Id = 21,
+                            Caption = "Кондуктор 4",
+                            Order = 1.3f
+                        },
+                        new
+                        {
+                            Id = 22,
+                            Caption = "Эксплуатационная колонна 4",
+                            Order = 3.3f
+                        },
+                        new
+                        {
+                            Id = 23,
+                            Caption = "Транспортный ствол 4",
+                            Order = 5.3f
+                        },
+                        new
+                        {
+                            Id = 24,
+                            Caption = "Хвостовик 4",
+                            Order = 6.3f
+                        },
+                        new
+                        {
+                            Id = 25,
+                            Caption = "Пилотный ствол 5",
+                            Order = 4.4f
+                        },
+                        new
+                        {
+                            Id = 26,
+                            Caption = "Направление 5",
+                            Order = 0.4f
+                        },
+                        new
+                        {
+                            Id = 27,
+                            Caption = "Кондуктор 5",
+                            Order = 1.4f
+                        },
+                        new
+                        {
+                            Id = 28,
+                            Caption = "Эксплуатационная колонна 5",
+                            Order = 3.4f
+                        },
+                        new
+                        {
+                            Id = 29,
+                            Caption = "Транспортный ствол 5",
+                            Order = 5.4f
+                        },
+                        new
+                        {
+                            Id = 30,
+                            Caption = "Хвостовик 5",
+                            Order = 6.4f
+                        },
+                        new
+                        {
+                            Id = 31,
+                            Caption = "Техническая колонна",
+                            Order = 2f
+                        },
+                        new
+                        {
+                            Id = 32,
+                            Caption = "Техническая колонна 2",
+                            Order = 2.1f
+                        },
+                        new
+                        {
+                            Id = 33,
+                            Caption = "Техническая колонна 3",
+                            Order = 2.2f
+                        },
+                        new
+                        {
+                            Id = 34,
+                            Caption = "Хвостовик 6",
+                            Order = 6.5f
+                        },
+                        new
+                        {
+                            Id = 35,
+                            Caption = "Хвостовик 7",
+                            Order = 6.6f
+                        },
+                        new
+                        {
+                            Id = 36,
+                            Caption = "Хвостовик 8",
+                            Order = 6.7f
+                        },
+                        new
+                        {
+                            Id = 37,
+                            Caption = "Хвостовик 9",
+                            Order = 6.8f
+                        },
+                        new
+                        {
+                            Id = 38,
+                            Caption = "Хвостовик 10",
+                            Order = 6.9f
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.WellSections.WellSectionPlan", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer")
+                        .HasColumnName("id");
+
+                    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>("IdSectionType")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_section_type")
+                        .HasComment("Тип секции");
+
+                    b.Property<int>("IdUser")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_user")
+                        .HasComment("Id пользователя");
+
+                    b.Property<int>("IdWell")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_well")
+                        .HasComment("Id скважины");
+
+                    b.Property<double?>("InnerDiameter")
+                        .HasColumnType("double precision")
+                        .HasColumnName("inner_diameter")
+                        .HasComment("Внутренний диаметр");
+
+                    b.Property<DateTimeOffset?>("LastUpdateDate")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("date_last_update")
+                        .HasComment("Дата последнего обновления");
+
+                    b.Property<double?>("OuterDiameter")
+                        .HasColumnType("double precision")
+                        .HasColumnName("outer_diameter")
+                        .HasComment("Внешний диаметр");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("IdSectionType");
+
+                    b.HasIndex("IdWell", "IdSectionType")
+                        .IsUnique();
+
+                    b.ToTable("t_well_section_plan");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.WellType", b =>
+                {
+                    b.Property<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", t =>
+                        {
+                            t.HasComment("конструкция скважины");
+                        });
+
+                    b.HasData(
+                        new
+                        {
+                            Id = 1,
+                            Caption = "Наклонно-направленная"
+                        },
+                        new
+                        {
+                            Id = 2,
+                            Caption = "Горизонтальная"
+                        });
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.WITS.Record1", b =>
+                {
+                    b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase");
+
+                    b.Property<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")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("t_cluster_t_deposit_id_fk");
+
+                    b.Navigation("Deposit");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.Company", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.CompanyType", "CompanyType")
+                        .WithMany("Companies")
+                        .HasForeignKey("IdCompanyType")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("CompanyType");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.Contact", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.CompanyType", "CompanyType")
+                        .WithMany("Contacts")
+                        .HasForeignKey("IdCompanyType")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("AsbCloudDb.Model.Well", "Well")
+                        .WithMany("Contacts")
+                        .HasForeignKey("IdWell")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("CompanyType");
+
+                    b.Navigation("Well");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.DailyReports.DailyReport", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.Well", "Well")
+                        .WithMany()
+                        .HasForeignKey("IdWell")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Well");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.DataSaubStat", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory")
+                        .WithMany()
+                        .HasForeignKey("IdCategory")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry")
+                        .WithMany()
+                        .HasForeignKey("IdTelemetry")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("OperationCategory");
+
+                    b.Navigation("Telemetry");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.DetectedOperation", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory")
+                        .WithMany()
+                        .HasForeignKey("IdCategory")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry")
+                        .WithMany()
+                        .HasForeignKey("IdTelemetry")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("OperationCategory");
+
+                    b.Navigation("Telemetry");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.DrillTest", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry")
+                        .WithMany()
+                        .HasForeignKey("IdTelemetry")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Telemetry");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.DrillingProgramPart", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.FileCategory", "FileCategory")
+                        .WithMany()
+                        .HasForeignKey("IdFileCategory")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("AsbCloudDb.Model.Well", "Well")
+                        .WithMany("DrillingProgramParts")
+                        .HasForeignKey("IdWell")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("FileCategory");
+
+                    b.Navigation("Well");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.Faq", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.User", "AuthorAnswer")
+                        .WithMany()
+                        .HasForeignKey("IdAuthorAnswer");
+
+                    b.HasOne("AsbCloudDb.Model.User", "AuthorQuestion")
+                        .WithMany()
+                        .HasForeignKey("IdAuthorQuestion")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("AuthorAnswer");
+
+                    b.Navigation("AuthorQuestion");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.FileInfo", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.User", "Author")
+                        .WithMany("Files")
+                        .HasForeignKey("IdAuthor");
+
+                    b.HasOne("AsbCloudDb.Model.FileCategory", "FileCategory")
+                        .WithMany()
+                        .HasForeignKey("IdCategory")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("AsbCloudDb.Model.Well", "Well")
+                        .WithMany()
+                        .HasForeignKey("IdWell")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Author");
+
+                    b.Navigation("FileCategory");
+
+                    b.Navigation("Well");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.FileMark", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.FileInfo", "FileInfo")
+                        .WithMany("FileMarks")
+                        .HasForeignKey("IdFile")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("t_file_mark_t_file_info_fk");
+
+                    b.HasOne("AsbCloudDb.Model.User", "User")
+                        .WithMany("FileMarks")
+                        .HasForeignKey("IdUser")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("t_user_t_file_mark_fk");
+
+                    b.Navigation("FileInfo");
+
+                    b.Navigation("User");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemFloat", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry")
+                        .WithMany()
+                        .HasForeignKey("IdTelemetry")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Telemetry");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemInt", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry")
+                        .WithMany()
+                        .HasForeignKey("IdTelemetry")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Telemetry");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemString", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry")
+                        .WithMany()
+                        .HasForeignKey("IdTelemetry")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Telemetry");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.HelpPage", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.FileCategory", "FileCategory")
+                        .WithMany()
+                        .HasForeignKey("IdCategory")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("FileCategory");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.LimitingParameter", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry")
+                        .WithMany()
+                        .HasForeignKey("IdTelemetry")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Telemetry");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.Manuals.Manual", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.User", "Author")
+                        .WithMany()
+                        .HasForeignKey("IdAuthor")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("AsbCloudDb.Model.FileCategory", "Category")
+                        .WithMany()
+                        .HasForeignKey("IdCategory")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("AsbCloudDb.Model.Manuals.ManualDirectory", "Directory")
+                        .WithMany("Manuals")
+                        .HasForeignKey("IdDirectory")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Author");
+
+                    b.Navigation("Category");
+
+                    b.Navigation("Directory");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.Manuals.ManualDirectory", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.Manuals.ManualDirectory", "Parent")
+                        .WithMany("Children")
+                        .HasForeignKey("IdParent")
+                        .OnDelete(DeleteBehavior.Cascade);
+
+                    b.Navigation("Parent");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.Measure", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.MeasureCategory", "Category")
+                        .WithMany("Measures")
+                        .HasForeignKey("IdCategory")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("AsbCloudDb.Model.Well", "Well")
+                        .WithMany()
+                        .HasForeignKey("IdWell")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Category");
+
+                    b.Navigation("Well");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.Notification", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.NotificationCategory", "NotificationCategory")
+                        .WithMany("Notifications")
+                        .HasForeignKey("IdNotificationCategory")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("AsbCloudDb.Model.User", "User")
+                        .WithMany()
+                        .HasForeignKey("IdUser")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("NotificationCategory");
+
+                    b.Navigation("User");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.OperationValue", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory")
+                        .WithMany()
+                        .HasForeignKey("IdOperationCategory")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("AsbCloudDb.Model.Well", "Well")
+                        .WithMany()
+                        .HasForeignKey("IdWell")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("OperationCategory");
+
+                    b.Navigation("Well");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.ProcessMaps.ProcessMapPlanDrilling", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.User", "Author")
+                        .WithMany()
+                        .HasForeignKey("IdAuthor")
+                        .OnDelete(DeleteBehavior.Restrict)
+                        .IsRequired();
+
+                    b.HasOne("AsbCloudDb.Model.User", "Editor")
+                        .WithMany()
+                        .HasForeignKey("IdEditor")
+                        .OnDelete(DeleteBehavior.Restrict);
+
+                    b.HasOne("AsbCloudDb.Model.ProcessMaps.ProcessMapPlanDrilling", "Previous")
+                        .WithMany()
+                        .HasForeignKey("IdPrevious");
+
+                    b.HasOne("AsbCloudDb.Model.Well", "Well")
+                        .WithMany()
+                        .HasForeignKey("IdWell")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType")
+                        .WithMany()
+                        .HasForeignKey("IdWellSectionType")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Author");
+
+                    b.Navigation("Editor");
+
+                    b.Navigation("Previous");
+
+                    b.Navigation("Well");
+
+                    b.Navigation("WellSectionType");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.ProcessMaps.ProcessMapPlanReam", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.User", "Author")
+                        .WithMany()
+                        .HasForeignKey("IdAuthor")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("AsbCloudDb.Model.User", "Editor")
+                        .WithMany()
+                        .HasForeignKey("IdEditor");
+
+                    b.HasOne("AsbCloudDb.Model.Well", "Well")
+                        .WithMany()
+                        .HasForeignKey("IdWell")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType")
+                        .WithMany()
+                        .HasForeignKey("IdWellSectionType")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Author");
+
+                    b.Navigation("Editor");
+
+                    b.Navigation("Well");
+
+                    b.Navigation("WellSectionType");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.Company", "Company")
+                        .WithMany("RelationCompaniesWells")
+                        .HasForeignKey("IdCompany")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("t_relation_company_well_t_company_id_fk");
+
+                    b.HasOne("AsbCloudDb.Model.Well", "Well")
+                        .WithMany("RelationCompaniesWells")
+                        .HasForeignKey("IdWell")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("t_relation_company_well_t_well_id_fk");
+
+                    b.Navigation("Company");
+
+                    b.Navigation("Well");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.RelationContactWell", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.User", "User")
+                        .WithMany("RelationContactsWells")
+                        .HasForeignKey("IdUser")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("AsbCloudDb.Model.Well", "Well")
+                        .WithMany()
+                        .HasForeignKey("IdWell")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("User");
+
+                    b.Navigation("Well");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.RelationUserDrillingProgramPart", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.DrillingProgramPart", "DrillingProgramPart")
+                        .WithMany("RelatedUsers")
+                        .HasForeignKey("IdDrillingProgramPart")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("AsbCloudDb.Model.User", "User")
+                        .WithMany()
+                        .HasForeignKey("IdUser")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("DrillingProgramPart");
+
+                    b.Navigation("User");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.RelationUserRolePermission", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.Permission", "Permission")
+                        .WithMany("RelationUserRolePermissions")
+                        .HasForeignKey("IdPermission")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("AsbCloudDb.Model.UserRole", "UserRole")
+                        .WithMany("RelationUserRolePermissions")
+                        .HasForeignKey("IdUserRole")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Permission");
+
+                    b.Navigation("UserRole");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.RelationUserRoleUserRole", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.UserRole", "Role")
+                        .WithMany("RelationUserRoleUserRoles")
+                        .HasForeignKey("Id")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("AsbCloudDb.Model.UserRole", "IncludeRole")
+                        .WithMany()
+                        .HasForeignKey("IdInclude")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("IncludeRole");
+
+                    b.Navigation("Role");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.RelationUserUserRole", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.User", "User")
+                        .WithMany("RelationUsersUserRoles")
+                        .HasForeignKey("IdUser")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("AsbCloudDb.Model.UserRole", "UserRole")
+                        .WithMany("RelationUsersUserRoles")
+                        .HasForeignKey("IdUserRole")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("User");
+
+                    b.Navigation("UserRole");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.ReportProperty", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.FileInfo", "File")
+                        .WithMany()
+                        .HasForeignKey("IdFile")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("AsbCloudDb.Model.Well", "Well")
+                        .WithMany()
+                        .HasForeignKey("IdWell")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("File");
+
+                    b.Navigation("Well");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.Schedule", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.Driller", "Driller")
+                        .WithMany("Schedule")
+                        .HasForeignKey("IdDriller")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("t_schedule_t_driller_id_driller");
+
+                    b.HasOne("AsbCloudDb.Model.Well", "Well")
+                        .WithMany()
+                        .HasForeignKey("IdWell")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Driller");
+
+                    b.Navigation("Well");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.SetpointsRequest", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.User", "Author")
+                        .WithMany()
+                        .HasForeignKey("IdAuthor")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("AsbCloudDb.Model.Well", "Well")
+                        .WithMany()
+                        .HasForeignKey("IdWell")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Author");
+
+                    b.Navigation("Well");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaub", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry")
+                        .WithMany("DataSaub")
+                        .HasForeignKey("IdTelemetry")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("t_telemetry_data_saub_t_telemetry_id_fk");
+
+                    b.Navigation("Telemetry");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSpin", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry")
+                        .WithMany("DataSpin")
+                        .HasForeignKey("IdTelemetry")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("t_telemetry_data_spin_t_telemetry_id_fk");
+
+                    b.Navigation("Telemetry");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.TelemetryEvent", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry")
+                        .WithMany("Events")
+                        .HasForeignKey("IdTelemetry")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("t_event_t_telemetry_id_fk");
+
+                    b.Navigation("Telemetry");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.TelemetryMessage", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry")
+                        .WithMany("Messages")
+                        .HasForeignKey("IdTelemetry")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("t_messages_t_telemetry_id_fk");
+
+                    b.Navigation("Telemetry");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.TelemetryUser", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry")
+                        .WithMany("Users")
+                        .HasForeignKey("IdTelemetry")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("t_telemetry_user_t_telemetry_id_fk");
+
+                    b.Navigation("Telemetry");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.Trajectory.TrajectoryFact", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.User", "User")
+                        .WithMany()
+                        .HasForeignKey("IdUser")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("AsbCloudDb.Model.Well", "Well")
+                        .WithMany()
+                        .HasForeignKey("IdWell")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("User");
+
+                    b.Navigation("Well");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.Trajectory.TrajectoryPlan", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.User", "User")
+                        .WithMany()
+                        .HasForeignKey("IdUser")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("AsbCloudDb.Model.Well", "Well")
+                        .WithMany()
+                        .HasForeignKey("IdWell")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("User");
+
+                    b.Navigation("Well");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.User", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.Company", "Company")
+                        .WithMany("Users")
+                        .HasForeignKey("IdCompany")
+                        .OnDelete(DeleteBehavior.SetNull)
+                        .IsRequired()
+                        .HasConstraintName("t_user_t_company_id_fk");
+
+                    b.Navigation("Company");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.UserSetting", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.User", "User")
+                        .WithMany()
+                        .HasForeignKey("IdUser")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("User");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.Well", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.Cluster", "Cluster")
+                        .WithMany("Wells")
+                        .HasForeignKey("IdCluster")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("t_well_t_cluster_id_fk");
+
+                    b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry")
+                        .WithOne("Well")
+                        .HasForeignKey("AsbCloudDb.Model.Well", "IdTelemetry")
+                        .OnDelete(DeleteBehavior.SetNull)
+                        .HasConstraintName("t_well_t_telemetry_id_fk");
+
+                    b.HasOne("AsbCloudDb.Model.WellType", "WellType")
+                        .WithMany("Wells")
+                        .HasForeignKey("IdWellType")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Cluster");
+
+                    b.Navigation("Telemetry");
+
+                    b.Navigation("WellType");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.WellComposite", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.Well", "Well")
+                        .WithMany("WellComposites")
+                        .HasForeignKey("IdWell")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("t_well_сomposite_t_well_id_fk");
+
+                    b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType")
+                        .WithMany("WellComposites")
+                        .HasForeignKey("IdWellSectionType")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("t_well_сomposite_t_well_section_type_id_fk");
+
+                    b.HasOne("AsbCloudDb.Model.Well", "WellSrc")
+                        .WithMany("WellCompositeSrcs")
+                        .HasForeignKey("IdWellSrc")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired()
+                        .HasConstraintName("t_well_сomposite_src_t_well_id_fk");
+
+                    b.Navigation("Well");
+
+                    b.Navigation("WellSectionType");
+
+                    b.Navigation("WellSrc");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.WellFinalDocument", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.FileCategory", "Category")
+                        .WithMany()
+                        .HasForeignKey("IdCategory")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("AsbCloudDb.Model.User", "User")
+                        .WithMany()
+                        .HasForeignKey("IdUser")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("AsbCloudDb.Model.Well", "Well")
+                        .WithMany()
+                        .HasForeignKey("IdWell")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Category");
+
+                    b.Navigation("User");
+
+                    b.Navigation("Well");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.WellOperation", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory")
+                        .WithMany()
+                        .HasForeignKey("IdCategory")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("AsbCloudDb.Model.WellOperation", "OperationPlan")
+                        .WithMany()
+                        .HasForeignKey("IdPlan")
+                        .OnDelete(DeleteBehavior.SetNull);
+
+                    b.HasOne("AsbCloudDb.Model.Well", "Well")
+                        .WithMany("WellOperations")
+                        .HasForeignKey("IdWell")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType")
+                        .WithMany("WellOperations")
+                        .HasForeignKey("IdWellSectionType")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("OperationCategory");
+
+                    b.Navigation("OperationPlan");
+
+                    b.Navigation("Well");
+
+                    b.Navigation("WellSectionType");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.WellOperationCategory", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.WellOperationCategory", "Parent")
+                        .WithMany()
+                        .HasForeignKey("IdParent");
+
+                    b.Navigation("Parent");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.WellSections.WellSectionPlan", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.WellSectionType", "SectionType")
+                        .WithMany()
+                        .HasForeignKey("IdSectionType")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.HasOne("AsbCloudDb.Model.Well", "Well")
+                        .WithMany()
+                        .HasForeignKey("IdWell")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("SectionType");
+
+                    b.Navigation("Well");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.WITS.Record1", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry")
+                        .WithMany()
+                        .HasForeignKey("TelemetryId");
+
+                    b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null)
+                        .WithOne()
+                        .HasForeignKey("AsbCloudDb.Model.WITS.Record1", "IdTelemetry", "DateTime")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Telemetry");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.WITS.Record50", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry")
+                        .WithMany()
+                        .HasForeignKey("TelemetryId");
+
+                    b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null)
+                        .WithOne()
+                        .HasForeignKey("AsbCloudDb.Model.WITS.Record50", "IdTelemetry", "DateTime")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Telemetry");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.WITS.Record60", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry")
+                        .WithMany()
+                        .HasForeignKey("TelemetryId");
+
+                    b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null)
+                        .WithOne()
+                        .HasForeignKey("AsbCloudDb.Model.WITS.Record60", "IdTelemetry", "DateTime")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Telemetry");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.WITS.Record61", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry")
+                        .WithMany()
+                        .HasForeignKey("TelemetryId");
+
+                    b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null)
+                        .WithOne()
+                        .HasForeignKey("AsbCloudDb.Model.WITS.Record61", "IdTelemetry", "DateTime")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Telemetry");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.WITS.Record7", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry")
+                        .WithMany()
+                        .HasForeignKey("TelemetryId");
+
+                    b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null)
+                        .WithOne()
+                        .HasForeignKey("AsbCloudDb.Model.WITS.Record7", "IdTelemetry", "DateTime")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Telemetry");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.WITS.Record8", b =>
+                {
+                    b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry")
+                        .WithMany()
+                        .HasForeignKey("TelemetryId");
+
+                    b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null)
+                        .WithOne()
+                        .HasForeignKey("AsbCloudDb.Model.WITS.Record8", "IdTelemetry", "DateTime")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("Telemetry");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.Cluster", b =>
+                {
+                    b.Navigation("Wells");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.Company", b =>
+                {
+                    b.Navigation("RelationCompaniesWells");
+
+                    b.Navigation("Users");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.CompanyType", b =>
+                {
+                    b.Navigation("Companies");
+
+                    b.Navigation("Contacts");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.Deposit", b =>
+                {
+                    b.Navigation("Clusters");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.Driller", b =>
+                {
+                    b.Navigation("Schedule");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.DrillingProgramPart", b =>
+                {
+                    b.Navigation("RelatedUsers");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.FileInfo", b =>
+                {
+                    b.Navigation("FileMarks");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.Manuals.ManualDirectory", b =>
+                {
+                    b.Navigation("Children");
+
+                    b.Navigation("Manuals");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.MeasureCategory", b =>
+                {
+                    b.Navigation("Measures");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.NotificationCategory", b =>
+                {
+                    b.Navigation("Notifications");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.Permission", b =>
+                {
+                    b.Navigation("RelationUserRolePermissions");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.Telemetry", b =>
+                {
+                    b.Navigation("DataSaub");
+
+                    b.Navigation("DataSpin");
+
+                    b.Navigation("Events");
+
+                    b.Navigation("Messages");
+
+                    b.Navigation("Users");
+
+                    b.Navigation("Well");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.User", b =>
+                {
+                    b.Navigation("FileMarks");
+
+                    b.Navigation("Files");
+
+                    b.Navigation("RelationContactsWells");
+
+                    b.Navigation("RelationUsersUserRoles");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.UserRole", b =>
+                {
+                    b.Navigation("RelationUserRolePermissions");
+
+                    b.Navigation("RelationUserRoleUserRoles");
+
+                    b.Navigation("RelationUsersUserRoles");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.Well", b =>
+                {
+                    b.Navigation("Contacts");
+
+                    b.Navigation("DrillingProgramParts");
+
+                    b.Navigation("RelationCompaniesWells");
+
+                    b.Navigation("WellCompositeSrcs");
+
+                    b.Navigation("WellComposites");
+
+                    b.Navigation("WellOperations");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.WellSectionType", b =>
+                {
+                    b.Navigation("WellComposites");
+
+                    b.Navigation("WellOperations");
+                });
+
+            modelBuilder.Entity("AsbCloudDb.Model.WellType", b =>
+                {
+                    b.Navigation("Wells");
+                });
+#pragma warning restore 612, 618
+        }
+    }
+}
diff --git a/AsbCloudDb/Migrations/20240401094602_Update_DetectedOperation.cs b/AsbCloudDb/Migrations/20240401094602_Update_DetectedOperation.cs
new file mode 100644
index 00000000..570f957e
--- /dev/null
+++ b/AsbCloudDb/Migrations/20240401094602_Update_DetectedOperation.cs
@@ -0,0 +1,64 @@
+using System;
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace AsbCloudDb.Migrations
+{
+    /// <inheritdoc />
+    public partial class Update_DetectedOperation : Migration
+    {
+        /// <inheritdoc />
+        protected override void Up(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.AlterColumn<int>(
+                name: "id_user",
+                table: "t_detected_operation",
+                type: "integer",
+                nullable: true,
+                comment: "Id пользователя по телеметрии на момент начала операции",
+                oldClrType: typeof(int),
+                oldType: "integer",
+                oldComment: "Id пользователя по телеметрии на момент начала операции");
+
+            migrationBuilder.AddColumn<DateTimeOffset>(
+                name: "creation",
+                table: "t_detected_operation",
+                type: "timestamp with time zone",
+                nullable: false,
+                defaultValue: new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)),
+                comment: "дата создания");
+
+            migrationBuilder.AddColumn<int>(
+                name: "id_editor",
+                table: "t_detected_operation",
+                type: "integer",
+                nullable: true,
+                comment: "Редактор");
+        }
+
+        /// <inheritdoc />
+        protected override void Down(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.DropColumn(
+                name: "creation",
+                table: "t_detected_operation");
+
+            migrationBuilder.DropColumn(
+                name: "id_editor",
+                table: "t_detected_operation");
+
+            migrationBuilder.AlterColumn<int>(
+                name: "id_user",
+                table: "t_detected_operation",
+                type: "integer",
+                nullable: false,
+                defaultValue: 0,
+                comment: "Id пользователя по телеметрии на момент начала операции",
+                oldClrType: typeof(int),
+                oldType: "integer",
+                oldNullable: true,
+                oldComment: "Id пользователя по телеметрии на момент начала операции");
+        }
+    }
+}
diff --git a/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs b/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs
index 949de090..640170a2 100644
--- a/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs
+++ b/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs
@@ -19,7 +19,7 @@ namespace AsbCloudDb.Migrations
 #pragma warning disable 612, 618
             modelBuilder
                 .UseCollation("Russian_Russia.1251")
-                .HasAnnotation("ProductVersion", "6.0.22")
+                .HasAnnotation("ProductVersion", "8.0.2")
                 .HasAnnotation("Relational:MaxIdentifierLength", 63);
 
             NpgsqlModelBuilderExtensions.HasPostgresExtension(modelBuilder, "adminpack");
@@ -482,7 +482,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasKey("Id");
 
-                    b.ToTable("t_deposit", null, t =>
+                    b.ToTable("t_deposit", t =>
                         {
                             t.HasComment("Месторождение");
                         });
@@ -497,6 +497,11 @@ namespace AsbCloudDb.Migrations
 
                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
 
+                    b.Property<DateTimeOffset>("Creation")
+                        .HasColumnType("timestamp with time zone")
+                        .HasColumnName("creation")
+                        .HasComment("дата создания");
+
                     b.Property<DateTimeOffset>("DateEnd")
                         .HasColumnType("timestamp with time zone")
                         .HasColumnName("date_end")
@@ -533,11 +538,16 @@ namespace AsbCloudDb.Migrations
                         .HasColumnName("id_category")
                         .HasComment("Id категории операции");
 
+                    b.Property<int?>("IdEditor")
+                        .HasColumnType("integer")
+                        .HasColumnName("id_editor")
+                        .HasComment("Редактор");
+
                     b.Property<int>("IdTelemetry")
                         .HasColumnType("integer")
                         .HasColumnName("id_telemetry");
 
-                    b.Property<int>("IdUsersAtStart")
+                    b.Property<int?>("IdUsersAtStart")
                         .HasColumnType("integer")
                         .HasColumnName("id_user")
                         .HasComment("Id пользователя по телеметрии на момент начала операции");
@@ -553,7 +563,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasIndex("IdTelemetry");
 
-                    b.ToTable("t_detected_operation", null, t =>
+                    b.ToTable("t_detected_operation", t =>
                         {
                             t.HasComment("автоматически определенные операции по телеметрии");
                         });
@@ -591,7 +601,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasIndex("IdTelemetry");
 
-                    b.ToTable("t_drill_test", null, t =>
+                    b.ToTable("t_drill_test", t =>
                         {
                             t.HasComment("Drill_test");
                         });
@@ -629,7 +639,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasKey("Id");
 
-                    b.ToTable("t_driller", null, t =>
+                    b.ToTable("t_driller", t =>
                         {
                             t.HasComment("Бурильщик");
                         });
@@ -659,7 +669,7 @@ namespace AsbCloudDb.Migrations
                     b.HasIndex("IdWell", "IdFileCategory")
                         .IsUnique();
 
-                    b.ToTable("t_drilling_program_part", null, t =>
+                    b.ToTable("t_drilling_program_part", t =>
                         {
                             t.HasComment("части программ бурения");
                         });
@@ -737,7 +747,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasIndex("IdAuthorQuestion");
 
-                    b.ToTable("t_faq", null, t =>
+                    b.ToTable("t_faq", t =>
                         {
                             t.HasComment("вопросы пользователей");
                         });
@@ -765,7 +775,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasKey("Id");
 
-                    b.ToTable("t_file_category", null, t =>
+                    b.ToTable("t_file_category", t =>
                         {
                             t.HasComment("Категории файлов");
                         });
@@ -1166,7 +1176,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasIndex("IdWell");
 
-                    b.ToTable("t_file_info", null, t =>
+                    b.ToTable("t_file_info", t =>
                         {
                             t.HasComment("Файлы всех категорий");
                         });
@@ -1218,7 +1228,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasIndex("IdUser");
 
-                    b.ToTable("t_file_mark", null, t =>
+                    b.ToTable("t_file_mark", t =>
                         {
                             t.HasComment("Действия с файлами.");
                         });
@@ -1248,7 +1258,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasKey("IdTelemetry", "IdRecord", "IdItem", "DateTime");
 
-                    b.ToTable("t_wits_float", null, t =>
+                    b.ToTable("t_wits_float", t =>
                         {
                             t.HasComment("таблица данных ГТИ с типом значения float");
                         });
@@ -1278,7 +1288,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasKey("IdTelemetry", "IdRecord", "IdItem", "DateTime");
 
-                    b.ToTable("t_wits_int", null, t =>
+                    b.ToTable("t_wits_int", t =>
                         {
                             t.HasComment("таблица данных ГТИ с типом значения int");
                         });
@@ -1309,7 +1319,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasKey("IdTelemetry", "IdRecord", "IdItem", "DateTime");
 
-                    b.ToTable("t_wits_string", null, t =>
+                    b.ToTable("t_wits_string", t =>
                         {
                             t.HasComment("таблица данных ГТИ с типом значения string");
                         });
@@ -1350,7 +1360,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasIndex("IdCategory");
 
-                    b.ToTable("t_help_page", null, t =>
+                    b.ToTable("t_help_page", t =>
                         {
                             t.HasComment("Справки");
                         });
@@ -1393,7 +1403,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasIndex("IdTelemetry");
 
-                    b.ToTable("t_limiting_parameter", null, t =>
+                    b.ToTable("t_limiting_parameter", t =>
                         {
                             t.HasComment("Ограничения по параметрам телеметрии");
                         });
@@ -1442,7 +1452,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasIndex("IdDirectory");
 
-                    b.ToTable("t_manual", null, t =>
+                    b.ToTable("t_manual", t =>
                         {
                             t.HasComment("Инструкции");
                         });
@@ -1472,7 +1482,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasIndex("IdParent");
 
-                    b.ToTable("t_manual_directory", null, t =>
+                    b.ToTable("t_manual_directory", t =>
                         {
                             t.HasComment("Директория для инструкций");
                         });
@@ -1519,7 +1529,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasIndex("IdWell");
 
-                    b.ToTable("t_measure", null, t =>
+                    b.ToTable("t_measure", t =>
                         {
                             t.HasComment("Таблица c данными для вкладки 'Последние данные'");
                         });
@@ -1547,7 +1557,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasKey("Id");
 
-                    b.ToTable("t_measure_category", null, t =>
+                    b.ToTable("t_measure_category", t =>
                         {
                             t.HasComment("Категория последних данных");
                         });
@@ -1630,7 +1640,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasIndex("IdUser");
 
-                    b.ToTable("t_notification", null, t =>
+                    b.ToTable("t_notification", t =>
                         {
                             t.HasComment("Уведомления");
                         });
@@ -1652,7 +1662,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasKey("Id");
 
-                    b.ToTable("t_notification_category", null, t =>
+                    b.ToTable("t_notification_category", t =>
                         {
                             t.HasComment("Категории уведомлений");
                         });
@@ -1711,7 +1721,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasIndex("IdWell");
 
-                    b.ToTable("t_operationvalue", null, t =>
+                    b.ToTable("t_operationvalue", t =>
                         {
                             t.HasComment("Целевые/нормативные показатели операции");
                         });
@@ -1741,7 +1751,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasKey("Id");
 
-                    b.ToTable("t_permission", null, t =>
+                    b.ToTable("t_permission", t =>
                         {
                             t.HasComment("Разрешения на доступ к данным");
                         });
@@ -2768,7 +2778,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasIndex("IdWellSectionType");
 
-                    b.ToTable("t_process_map_plan_drilling", null, t =>
+                    b.ToTable("t_process_map_plan_drilling", t =>
                         {
                             t.HasComment("РТК план бурение");
                         });
@@ -2889,7 +2899,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasIndex("IdWellSectionType");
 
-                    b.ToTable("t_process_map_plan_ream", null, t =>
+                    b.ToTable("t_process_map_plan_ream", t =>
                         {
                             t.HasComment("РТК проработка скважины");
                         });
@@ -2909,7 +2919,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasIndex("IdWell");
 
-                    b.ToTable("t_relation_company_well", null, t =>
+                    b.ToTable("t_relation_company_well", t =>
                         {
                             t.HasComment("отношение скважин и компаний");
                         });
@@ -2929,7 +2939,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasIndex("IdUser");
 
-                    b.ToTable("t_relation_contact_well", (string)null);
+                    b.ToTable("t_relation_contact_well");
                 });
 
             modelBuilder.Entity("AsbCloudDb.Model.RelationUserDrillingProgramPart", b =>
@@ -2952,7 +2962,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasIndex("IdDrillingProgramPart");
 
-                    b.ToTable("t_relation_user_drilling_program_part", null, t =>
+                    b.ToTable("t_relation_user_drilling_program_part", t =>
                         {
                             t.HasComment("Отношение пользователей и частей ПБ");
                         });
@@ -2972,7 +2982,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasIndex("IdPermission");
 
-                    b.ToTable("t_relation_user_role_permission", null, t =>
+                    b.ToTable("t_relation_user_role_permission", t =>
                         {
                             t.HasComment("Отношение ролей пользователей и разрешений доступа");
                         });
@@ -4290,7 +4300,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasIndex("IdInclude");
 
-                    b.ToTable("t_relation_user_role_user_role", null, t =>
+                    b.ToTable("t_relation_user_role_user_role", t =>
                         {
                             t.HasComment("Отношение ролей к ролям");
                         });
@@ -4582,7 +4592,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasIndex("IdUserRole");
 
-                    b.ToTable("t_relation_user_user_role", null, t =>
+                    b.ToTable("t_relation_user_user_role", t =>
                         {
                             t.HasComment("Отношение пользователей и ролей");
                         });
@@ -4639,7 +4649,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasIndex("IdWell");
 
-                    b.ToTable("t_report_property", null, t =>
+                    b.ToTable("t_report_property", t =>
                         {
                             t.HasComment("Отчеты с данными по буровым");
                         });
@@ -4691,7 +4701,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasIndex("IdWell");
 
-                    b.ToTable("t_schedule", null, t =>
+                    b.ToTable("t_schedule", t =>
                         {
                             t.HasComment("График работы бурильщика");
                         });
@@ -4747,7 +4757,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasIndex("IdWell");
 
-                    b.ToTable("t_setpoints_rquest", null, t =>
+                    b.ToTable("t_setpoints_rquest", t =>
                         {
                             t.HasComment("Запросы на изменение уставок панели оператора");
                         });
@@ -4775,7 +4785,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasKey("Id");
 
-                    b.ToTable("t_subsystem", null, t =>
+                    b.ToTable("t_subsystem", t =>
                         {
                             t.HasComment("Описание подсистем");
                         });
@@ -4844,7 +4854,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasIndex(new[] { "RemoteUid" }, "t_telemetry_remote_uid_index");
 
-                    b.ToTable("t_telemetry", null, t =>
+                    b.ToTable("t_telemetry", t =>
                         {
                             t.HasComment("таблица привязки телеметрии от комплектов к конкретной скважине.");
                         });
@@ -5063,7 +5073,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasKey("IdTelemetry", "DateTime");
 
-                    b.ToTable("t_telemetry_data_saub", null, t =>
+                    b.ToTable("t_telemetry_data_saub", t =>
                         {
                             t.HasComment("набор основных данных по SAUB");
                         });
@@ -5163,7 +5173,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasKey("IdTelemetry", "DateTime");
 
-                    b.ToTable("t_telemetry_data_spin", null, t =>
+                    b.ToTable("t_telemetry_data_spin", t =>
                         {
                             t.HasComment("набор основных данных по SpinMaster");
                         });
@@ -5190,7 +5200,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasKey("IdTelemetry", "IdEvent");
 
-                    b.ToTable("t_telemetry_event", null, t =>
+                    b.ToTable("t_telemetry_event", t =>
                         {
                             t.HasComment("Справочник событий. События формируют сообщения. Разделено по версиям посылок от телеметрии.");
                         });
@@ -5251,7 +5261,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasIndex("IdTelemetry");
 
-                    b.ToTable("t_telemetry_message", null, t =>
+                    b.ToTable("t_telemetry_message", t =>
                         {
                             t.HasComment("Сообщения на буровых");
                         });
@@ -5289,7 +5299,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasKey("IdTelemetry", "IdUser");
 
-                    b.ToTable("t_telemetry_user", null, t =>
+                    b.ToTable("t_telemetry_user", t =>
                         {
                             t.HasComment("Пользователи панели САУБ. Для сообщений.");
                         });
@@ -5332,7 +5342,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasKey("IdTelemetry");
 
-                    b.ToTable("t_telemetry_wireline_run_out", null, t =>
+                    b.ToTable("t_telemetry_wireline_run_out", t =>
                         {
                             t.HasComment("Наработка талевого каната");
                         });
@@ -5398,7 +5408,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasIndex("IdWell");
 
-                    b.ToTable("t_trajectory_fact", null, t =>
+                    b.ToTable("t_trajectory_fact", t =>
                         {
                             t.HasComment("Загрузка фактической траектории");
                         });
@@ -5469,7 +5479,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasIndex("IdWell");
 
-                    b.ToTable("t_trajectory_plan", null, t =>
+                    b.ToTable("t_trajectory_plan", t =>
                         {
                             t.HasComment("Загрузка плановой траектории");
                         });
@@ -5550,7 +5560,7 @@ namespace AsbCloudDb.Migrations
                     b.HasIndex("Login")
                         .IsUnique();
 
-                    b.ToTable("t_user", null, t =>
+                    b.ToTable("t_user", t =>
                         {
                             t.HasComment("Пользователи облака");
                         });
@@ -5591,7 +5601,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasKey("Id");
 
-                    b.ToTable("t_user_role", null, t =>
+                    b.ToTable("t_user_role", t =>
                         {
                             t.HasComment("Роли пользователей в системе");
                         });
@@ -5930,7 +5940,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasKey("IdUser", "Key");
 
-                    b.ToTable("t_user_settings", null, t =>
+                    b.ToTable("t_user_settings", t =>
                         {
                             t.HasComment("настройки интерфейса пользователя");
                         });
@@ -5976,7 +5986,9 @@ namespace AsbCloudDb.Migrations
 
                     b.HasKey("IdTelemetry", "DateTime");
 
-                    b.ToTable("t_telemetry_wits_base", (string)null);
+                    b.ToTable("t_telemetry_wits_base");
+
+                    b.UseTptMappingStrategy();
                 });
 
             modelBuilder.Entity("AsbCloudDb.Model.Well", b =>
@@ -6034,7 +6046,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasIndex("IdWellType");
 
-                    b.ToTable("t_well", null, t =>
+                    b.ToTable("t_well", t =>
                         {
                             t.HasComment("скважины");
                         });
@@ -6063,7 +6075,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasIndex("IdWellSrc");
 
-                    b.ToTable("t_well_composite", null, t =>
+                    b.ToTable("t_well_composite", t =>
                         {
                             t.HasComment("Композитная скважина");
                         });
@@ -6090,7 +6102,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasIndex("IdUser");
 
-                    b.ToTable("t_well_final_documents", null, t =>
+                    b.ToTable("t_well_final_documents", t =>
                         {
                             t.HasComment("Дело скважины");
                         });
@@ -6180,7 +6192,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasIndex("IdWellSectionType");
 
-                    b.ToTable("t_well_operation", null, t =>
+                    b.ToTable("t_well_operation", t =>
                         {
                             t.HasComment("Данные по операциям на скважине");
                         });
@@ -6222,7 +6234,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasIndex("IdParent");
 
-                    b.ToTable("t_well_operation_category", null, t =>
+                    b.ToTable("t_well_operation_category", t =>
                         {
                             t.HasComment("Справочник операций на скважине");
                         });
@@ -7335,7 +7347,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasKey("Id");
 
-                    b.ToTable("t_well_section_type", null, t =>
+                    b.ToTable("t_well_section_type", t =>
                         {
                             t.HasComment("конструкция секции скважины");
                         });
@@ -7627,7 +7639,7 @@ namespace AsbCloudDb.Migrations
                     b.HasIndex("IdWell", "IdSectionType")
                         .IsUnique();
 
-                    b.ToTable("t_well_section_plan", (string)null);
+                    b.ToTable("t_well_section_plan");
                 });
 
             modelBuilder.Entity("AsbCloudDb.Model.WellType", b =>
@@ -7648,7 +7660,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasKey("Id");
 
-                    b.ToTable("t_well_type", null, t =>
+                    b.ToTable("t_well_type", t =>
                         {
                             t.HasComment("конструкция скважины");
                         });
@@ -7827,7 +7839,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasIndex("TelemetryId");
 
-                    b.ToTable("t_telemetry_wits_1", (string)null);
+                    b.ToTable("t_telemetry_wits_1");
                 });
 
             modelBuilder.Entity("AsbCloudDb.Model.WITS.Record50", b =>
@@ -7915,7 +7927,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasIndex("TelemetryId");
 
-                    b.ToTable("t_telemetry_wits_50", (string)null);
+                    b.ToTable("t_telemetry_wits_50");
                 });
 
             modelBuilder.Entity("AsbCloudDb.Model.WITS.Record60", b =>
@@ -7967,7 +7979,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasIndex("TelemetryId");
 
-                    b.ToTable("t_telemetry_wits_60", (string)null);
+                    b.ToTable("t_telemetry_wits_60");
                 });
 
             modelBuilder.Entity("AsbCloudDb.Model.WITS.Record61", b =>
@@ -8023,7 +8035,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasIndex("TelemetryId");
 
-                    b.ToTable("t_telemetry_wits_61", (string)null);
+                    b.ToTable("t_telemetry_wits_61");
                 });
 
             modelBuilder.Entity("AsbCloudDb.Model.WITS.Record7", b =>
@@ -8111,7 +8123,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasIndex("TelemetryId");
 
-                    b.ToTable("t_telemetry_wits_7", (string)null);
+                    b.ToTable("t_telemetry_wits_7");
                 });
 
             modelBuilder.Entity("AsbCloudDb.Model.WITS.Record8", b =>
@@ -8315,7 +8327,7 @@ namespace AsbCloudDb.Migrations
 
                     b.HasIndex("TelemetryId");
 
-                    b.ToTable("t_telemetry_wits_8", (string)null);
+                    b.ToTable("t_telemetry_wits_8");
                 });
 
             modelBuilder.Entity("AsbCloudDb.Model.Cluster", b =>
diff --git a/AsbCloudDb/Model/DetectedOperation.cs b/AsbCloudDb/Model/DetectedOperation.cs
index df5abbb1..611e933d 100644
--- a/AsbCloudDb/Model/DetectedOperation.cs
+++ b/AsbCloudDb/Model/DetectedOperation.cs
@@ -19,6 +19,12 @@ namespace AsbCloudDb.Model
 
         [Column("id_category"), Comment("Id категории операции")]
         public int IdCategory { get; set; }
+        
+        [Column("id_editor"), Comment("Редактор")]
+        public int? IdEditor { get; set; }
+        
+        [Column("creation"), Comment("дата создания")]
+        public DateTimeOffset Creation { get; set; }
 
         [Column("date_start", TypeName = "timestamp with time zone"), Comment("Дата начала операции")]
         public DateTimeOffset DateStart { get; set; }
@@ -27,7 +33,7 @@ namespace AsbCloudDb.Model
         public DateTimeOffset DateEnd { get; set; }
         
         [Column("id_user"), Comment("Id пользователя по телеметрии на момент начала операции")]
-        public int IdUsersAtStart { get; set; }
+        public int? IdUsersAtStart { get; set; }
 
         [NotMapped]
         public double DurationMinutes => (DateEnd - DateStart).TotalMinutes;
diff --git a/AsbCloudInfrastructure/Background/PeriodicWorks/WorkDataSaubStat.cs b/AsbCloudInfrastructure/Background/PeriodicWorks/WorkDataSaubStat.cs
index 074c26ca..35979165 100644
--- a/AsbCloudInfrastructure/Background/PeriodicWorks/WorkDataSaubStat.cs
+++ b/AsbCloudInfrastructure/Background/PeriodicWorks/WorkDataSaubStat.cs
@@ -151,8 +151,6 @@ namespace AsbCloudInfrastructure.Background.PeriodicWorks
 
         private static DataSaubStatDto CalcStat(DetectedOperationDto operation, Span<TelemetryDataSaubDto> span)
         {
-            var hasOscillation = EnabledSubsystemsFlags.AutoOscillation.HasEnabledSubsystems(operation.EnabledSubsystems);
-
             var aggregatedValues = CalcAggregate(span);
             var dateStart = span[0].DateTime;
             var dateEnd = span[^1].DateTime;
@@ -181,7 +179,7 @@ namespace AsbCloudInfrastructure.Background.PeriodicWorks
                 RotorSpeed = aggregatedValues.RotorSpeed,
                 IdCategory = operation.IdCategory,
                 EnabledSubsystems = operation.EnabledSubsystems,
-                HasOscillation = hasOscillation,
+                HasOscillation = operation.EnabledSubsystems.IsAutoOscillation,
                 IdTelemetry = operation.IdTelemetry,
                 Flow = aggregatedValues.Flow
             };
diff --git a/AsbCloudInfrastructure/DependencyInjection.cs b/AsbCloudInfrastructure/DependencyInjection.cs
index 1139dd3a..6e8b3e89 100644
--- a/AsbCloudInfrastructure/DependencyInjection.cs
+++ b/AsbCloudInfrastructure/DependencyInjection.cs
@@ -42,6 +42,7 @@ using Microsoft.Extensions.Caching.Memory;
 using Microsoft.Extensions.Configuration;
 using Microsoft.Extensions.DependencyInjection;
 using System;
+using AsbCloudApp.Data.DetectedOperation;
 using AsbCloudInfrastructure.Services.ProcessMapPlan.Export;
 using AsbCloudInfrastructure.Services.WellOperations.Factories;
 
@@ -51,6 +52,10 @@ namespace AsbCloudInfrastructure
     {
         public static void MapsterSetup()
         {
+            TypeAdapterConfig.GlobalSettings.Default.Config
+               .ForType<DetectedOperationDto, DetectedOperation>()
+               .Ignore(source => source.OperationCategory);
+            
             TypeAdapterConfig.GlobalSettings.Default.Config
                .ForType<ScheduleDto, Schedule>()
                .Ignore(source => source.Driller);
diff --git a/AsbCloudInfrastructure/Repository/CrudRepositoryBase.cs b/AsbCloudInfrastructure/Repository/CrudRepositoryBase.cs
index f5d11f38..900e181c 100644
--- a/AsbCloudInfrastructure/Repository/CrudRepositoryBase.cs
+++ b/AsbCloudInfrastructure/Repository/CrudRepositoryBase.cs
@@ -7,6 +7,7 @@ using System.Collections.Generic;
 using System.Linq;
 using System.Threading;
 using System.Threading.Tasks;
+using AsbCloudApp.Exceptions;
 using Microsoft.EntityFrameworkCore.ChangeTracking;
 
 namespace AsbCloudInfrastructure.Repository
@@ -120,15 +121,26 @@ namespace AsbCloudInfrastructure.Repository
         {
             if (!dtos.Any())
                 return 0;
-		
-            var ids = dtos.Select(d => d.Id);
-
-            var countExistingEntities = await dbSet
-                .Where(d => ids.Contains(d.Id))
+            
+            var ids = dtos
+                .Select(o => o.Id)
+                .Distinct()
+                .ToArray();
+            
+            if (ids.Any(id => id == default))
+                throw new ArgumentInvalidException(nameof(dtos), "Все записи должны иметь Id");
+            
+            if (ids.Length != dtos.Count())
+                throw new ArgumentInvalidException(nameof(dtos), "Все записи должны иметь уникальные Id");
+            
+            var dbSet = dbContext.Set<TEntity>();
+            
+            var existingEntitiesCount = await dbSet
+                .Where(o => ids.Contains(o.Id))
                 .CountAsync(token);
-
-            if (ids.Count() > countExistingEntities)
-                return ICrudRepository<TDto>.ErrorIdNotFound;
+            
+            if (ids.Length != existingEntitiesCount)
+                throw new ArgumentInvalidException(nameof(dtos), "Все записи должны существовать в БД");
             
             var entities = dtos.Select(Convert);
             var entries = entities.Select(entity => dbSet.Update(entity)).Cast<EntityEntry>().ToList();
@@ -145,9 +157,8 @@ namespace AsbCloudInfrastructure.Repository
                 .FirstOrDefault(e => e.Id == id);
             if (entity == default)
                 return Task.FromResult(ICrudRepository<TDto>.ErrorIdNotFound);
-            var entry = dbSet.Remove(entity);
+            dbSet.Remove(entity);
             var affected = dbContext.SaveChangesAsync(token);
-            entry.State = EntityState.Detached;
             return affected;
         }
 
@@ -164,10 +175,8 @@ namespace AsbCloudInfrastructure.Repository
                 return ICrudRepository<TDto>.ErrorIdNotFound;
             
             var entities = dbContext.Set<TEntity>().Where(e => ids.Contains(e.Id));
-            var entries = entities.Select(entity => dbSet.Remove(entity)).Cast<EntityEntry>().ToList();
-            var affected = await dbContext.SaveChangesAsync(token);
-            entries.ForEach(e => e.State = EntityState.Detached);
-            return affected;
+            dbContext.Set<TEntity>().RemoveRange(entities);
+            return await dbContext.SaveChangesAsync(token);
         }
 
         protected virtual TDto Convert(TEntity src) => src.Adapt<TDto>();
diff --git a/AsbCloudInfrastructure/Repository/DetectedOperationRepository.cs b/AsbCloudInfrastructure/Repository/DetectedOperationRepository.cs
index 21db64ba..3864b4e1 100644
--- a/AsbCloudInfrastructure/Repository/DetectedOperationRepository.cs
+++ b/AsbCloudInfrastructure/Repository/DetectedOperationRepository.cs
@@ -1,5 +1,4 @@
 using AsbCloudApp.Data.DetectedOperation;
-using AsbCloudApp.Exceptions;
 using AsbCloudApp.Repositories;
 using AsbCloudApp.Requests;
 using AsbCloudApp.Services;
@@ -12,11 +11,11 @@ using System.Collections.Generic;
 using System.Linq;
 using System.Threading;
 using System.Threading.Tasks;
+using AsbCloudApp.Data;
 
 namespace AsbCloudInfrastructure.Repository;
 
-public class DetectedOperationRepository : CrudRepositoryBase<DetectedOperationDto, DetectedOperation>,
-    IDetectedOperationRepository
+public class DetectedOperationRepository : CrudRepositoryBase<DetectedOperationDto, DetectedOperation>, IDetectedOperationRepository
 {
     private readonly ITelemetryService telemetryService;
 
@@ -26,23 +25,37 @@ public class DetectedOperationRepository : CrudRepositoryBase<DetectedOperationD
     {
         this.telemetryService = telemetryService;
     }
-
-    public async Task<int> Delete(int idUser, DetectedOperationByTelemetryRequest request, CancellationToken token)
+    
+    public async Task<int> DeleteAsync(DetectedOperationByTelemetryRequest request, CancellationToken token)
     {
         var query = BuildQuery(request);
         dbContext.Set<DetectedOperation>().RemoveRange(query);
         return await dbContext.SaveChangesAsync(token);
     }
 
-    public async Task<int> DeleteRange(int idUser, IEnumerable<int> ids, CancellationToken token)
+    public async Task<PaginationContainer<DetectedOperationDto>> GetPageAsync(DetectedOperationByTelemetryRequest request, CancellationToken token)
     {
-        var query = dbContext.Set<DetectedOperation>()
-            .Where(e => ids.Contains( e.Id));
+        var skip = request.Skip ?? 0;
+        var take = request.Take ?? 32;
 
-        dbContext.Set<DetectedOperation>()
-            .RemoveRange(query);
+        var query = BuildQuery(request);
 
-        return await dbContext.SaveChangesAsync(token);
+        var entities = await query.Skip(skip)
+            .Take(take)
+            .AsNoTracking()
+            .ToArrayAsync(token);
+
+        var offset = telemetryService.GetTimezone(request.IdTelemetry).Offset;
+        
+        var paginationContainer = new PaginationContainer<DetectedOperationDto>
+        {
+            Skip = skip,
+            Take = take,
+            Count = await query.CountAsync(token),
+            Items = entities.Select(o => Convert(o, offset))
+        };
+
+        return paginationContainer;
     }
 
     public async Task<IDictionary<int, DateTimeOffset>> GetLastDetectedDatesAsync(CancellationToken token) =>
@@ -59,88 +72,18 @@ public class DetectedOperationRepository : CrudRepositoryBase<DetectedOperationD
     {
         var query = BuildQuery(request)
             .Include(o => o.OperationCategory);
-        var entities = await query.ToArrayAsync(token);
+        var entities = await query.AsNoTracking().ToArrayAsync(token);
         var offset = telemetryService.GetTimezone(request.IdTelemetry).Offset;
         var dtos = entities.Select(o => Convert(o, offset));
 
         return dtos;
     }
-
-    public async Task<int> Insert(int? idUser, IEnumerable<DetectedOperationDto> dtos, CancellationToken token)
-    {
-        if(!dtos.Any())
-            return 0;
-
-        var entities = dtos.Select(Convert);
-        var dbset = dbContext.Set<DetectedOperation>();
-        foreach(var entity in entities)
-        {
-            entity.Id = default;
-            dbset.Add(entity);
-        }
-
-        return await dbContext.SaveChangesWithExceptionHandling(token);
-    }
-
-    public async Task<int> Update(int idUser, IEnumerable<DetectedOperationDto> dtos, CancellationToken token)
-    {
-        if (!dtos.Any())
-            return 0;
-
-        var ids = dtos
-            .Select(o => o.Id)
-            .Distinct()
-            .ToArray();
-
-        if (ids.Any(id => id == default))
-            throw new ArgumentInvalidException(nameof(dtos), "Все записи должны иметь Id");
-
-        if (ids.Length != dtos.Count())
-            throw new ArgumentInvalidException(nameof(dtos), "Все записи должны иметь уникальные Id");
-
-        var dbSet = dbContext.Set<DetectedOperation>();
-        
-        var existingEntitiesCount = await dbSet
-            .Where(o => ids.Contains(o.Id))
-            .CountAsync(token);
-
-        if (ids.Length != existingEntitiesCount)
-            throw new ArgumentInvalidException(nameof(dtos), "Все записи должны существовать в БД");
-
-        var entities = dtos
-            .Select(Convert)
-            .ToArray();
-
-        var entries = new Microsoft.EntityFrameworkCore.ChangeTracking.EntityEntry<DetectedOperation>[entities.Length];
-        for(var i = 0; i < entities.Length; i++)
-            entries[i] = dbSet.Update(entities[i]);       
-
-        var result = await dbContext.SaveChangesWithExceptionHandling(token);
-        
-        for (var i = 0; i < entries.Length; i++)
-            entries[i].State = EntityState.Detached;
-
-        return result;
-    }
-
-    public async Task<int> UpdateOrInsert(int idUser, IEnumerable<DetectedOperationDto> dtos, CancellationToken token)
-    {
-        var result = 0;
-
-        var itemsToInsert = dtos.Where(e => e.Id == 0);
-        if (itemsToInsert.Any())
-            result += await Insert(idUser, itemsToInsert, token);
-
-        var itemsToUpdate = dtos.Where(e => e.Id != 0);
-        if (itemsToUpdate.Any())
-            result += await Update(idUser, itemsToUpdate, token);
-
-        return result;
-    }
-
+    
     private IQueryable<DetectedOperation> BuildQuery(DetectedOperationByTelemetryRequest request)
     {
         var query = dbContext.Set<DetectedOperation>()
+            .OrderBy(o => o.DateStart)
+            .ThenBy(o => o.DepthStart)
             .Where(o => o.IdTelemetry == request.IdTelemetry);
 
         if (request.IdsCategories.Any())
@@ -165,28 +108,17 @@ public class DetectedOperationRepository : CrudRepositoryBase<DetectedOperationD
         }
 
         if (request.SortFields?.Any() == true)
-        {
             query = query.SortBy(request.SortFields);
-        }
-        else
-            query = query
-                .OrderBy(o => o.DateStart)
-                .ThenBy(o => o.DepthStart);
-
-        if (request.Skip.HasValue)
-            query = query.Skip((int)request.Skip);
-
-        if (request.Take.HasValue)
-            query = query.Take((int)request.Take);
 
         return query;
     }
-
-    protected virtual DetectedOperationDto Convert(DetectedOperation src, TimeSpan offset)
+    
+    private static DetectedOperationDto Convert(DetectedOperation src, TimeSpan offset)
     {
         var dto = src.Adapt<DetectedOperationDto>();
         dto.DateStart = src.DateStart.ToOffset(offset);
         dto.DateEnd = src.DateEnd.ToOffset(offset);
+        dto.EnabledSubsystems = src.EnabledSubsystems;
         return dto;
     }
 
@@ -197,4 +129,4 @@ public class DetectedOperationRepository : CrudRepositoryBase<DetectedOperationD
         entity.DateEnd = src.DateEnd.ToUniversalTime();
         return entity;
     }
-}
+}
\ No newline at end of file
diff --git a/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationExportService.cs b/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationExportService.cs
index 6ed731f6..00baba7f 100644
--- a/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationExportService.cs
+++ b/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationExportService.cs
@@ -162,8 +162,7 @@ public class DetectedOperationExportService
     private static string GetCategoryName(IEnumerable<WellOperationCategoryDto> wellOperationCategories, DetectedOperationDto current)
     {
 		var idCategory = current.IdCategory;
-		if (idCategory == WellOperationCategory.IdSlide &&
-			EnabledSubsystemsFlags.AutoOscillation.HasEnabledSubsystems(current.EnabledSubsystems))
+		if (idCategory == WellOperationCategory.IdSlide && current.EnabledSubsystems.IsAutoOscillation)
 			return "Бурение в слайде с осцилляцией";
 
         var category = wellOperationCategories.FirstOrDefault(o => o.Id == current.IdCategory);
diff --git a/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationService.cs b/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationService.cs
index b07b6af9..167dc4de 100644
--- a/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationService.cs
+++ b/AsbCloudInfrastructure/Services/DetectOperations/DetectedOperationService.cs
@@ -11,6 +11,7 @@ using System.Linq;
 using System.Threading;
 using System.Threading.Tasks;
 using AsbCloudApp.Data.WellOperation;
+using AsbCloudApp.Exceptions;
 using AsbCloudInfrastructure.Services.DetectOperations.Detectors;
 
 namespace AsbCloudInfrastructure.Services.DetectOperations;
@@ -80,6 +81,43 @@ public class DetectedOperationService : IDetectedOperationService
         return dtos;
     }
 
+    public async Task<int> InsertRangeManualAsync(int idEditor, int idWell, IEnumerable<DetectedOperationDto> dtos, CancellationToken token)
+    {
+        var idTelemetry = await GetIdTelemetryByWell(idWell, token);
+        
+        foreach (var dto in dtos)
+        {
+            dto.IdEditor = idEditor;
+            dto.IdTelemetry = idTelemetry;
+        }
+
+        return await operationRepository.InsertRangeAsync(dtos, token);
+    }
+
+    public async Task<int> UpdateRangeManualAsync(int idEditor, int idWell, IEnumerable<DetectedOperationDto> dtos, CancellationToken token)
+    {
+        var idTelemetry = await GetIdTelemetryByWell(idWell, token);
+        
+        foreach (var dto in dtos)
+        {
+            dto.IdEditor = idEditor;
+            dto.IdTelemetry = idTelemetry;
+        }
+
+        return await operationRepository.UpdateRangeAsync(dtos, token);
+    }
+    
+    private async Task<int> GetIdTelemetryByWell(int idWell, CancellationToken token)
+    {
+        var well = await wellService.GetOrDefaultAsync(idWell, token) ??
+                   throw new ArgumentInvalidException(nameof(idWell), "Well doesn`t exist");
+
+        var idTelemetry = well.IdTelemetry ??
+                          throw new ArgumentInvalidException(nameof(idWell), "У скважины отсутствует телеметрия");
+
+        return idTelemetry;
+    }
+
     public async Task<IEnumerable<WellOperationCategoryDto>> GetCategoriesAsync(int? idWell, CancellationToken token)
     {
         if(idWell is null)
@@ -213,7 +251,7 @@ public class DetectedOperationService : IDetectedOperationService
             return 0;
 
         var requestByTelemetry = new DetectedOperationByTelemetryRequest(well.IdTelemetry.Value, request);
-        var result = await operationRepository.Delete(-1, requestByTelemetry, token);
+        var result = await operationRepository.DeleteAsync(requestByTelemetry, token);
         return result;
     }
 
diff --git a/AsbCloudWebApi.IntegrationTests/Clients/IDetectedOperationClient.cs b/AsbCloudWebApi.IntegrationTests/Clients/IDetectedOperationClient.cs
new file mode 100644
index 00000000..ecf37d37
--- /dev/null
+++ b/AsbCloudWebApi.IntegrationTests/Clients/IDetectedOperationClient.cs
@@ -0,0 +1,23 @@
+using AsbCloudApp.Data;
+using AsbCloudApp.Data.DetectedOperation;
+using AsbCloudApp.Requests;
+using Refit;
+
+namespace AsbCloudWebApi.IntegrationTests.Clients;
+
+public interface IDetectedOperationClient
+{
+	private const string BaseRoute = "/api/well/{idWell}/DetectedOperation";
+
+	[Post(BaseRoute)]
+	Task<IApiResponse<int>> InsertRangeAsync(int idWell, IEnumerable<DetectedOperationDto> dtos);
+
+	[Put(BaseRoute)]
+	Task<IApiResponse<int>> UpdateRangeAsync(int idWell, IEnumerable<DetectedOperationDto> dtos);
+
+	[Delete(BaseRoute)]
+	Task<IApiResponse<int>> DeleteRangeAsync(int idWell, [Body] IEnumerable<int> ids);
+
+	[Get(BaseRoute)]
+	Task<IApiResponse<PaginationContainer<DetectedOperationDto>>> GetAsync(int idWell, [Query] DetectedOperationRequest request);
+}
\ No newline at end of file
diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/DetectedOperationControllerTests.cs b/AsbCloudWebApi.IntegrationTests/Controllers/DetectedOperationControllerTests.cs
new file mode 100644
index 00000000..5f518884
--- /dev/null
+++ b/AsbCloudWebApi.IntegrationTests/Controllers/DetectedOperationControllerTests.cs
@@ -0,0 +1,182 @@
+using System.Net;
+using AsbCloudApp.Data.DetectedOperation;
+using AsbCloudApp.Data.WellOperation;
+using AsbCloudApp.Requests;
+using AsbCloudDb.Model;
+using AsbCloudWebApi.IntegrationTests.Clients;
+using AsbCloudWebApi.IntegrationTests.Data;
+using Mapster;
+using Microsoft.EntityFrameworkCore;
+using Xunit;
+
+namespace AsbCloudWebApi.IntegrationTests.Controllers;
+
+public class DetectedOperationControllerTests : BaseIntegrationTest
+{
+	private readonly IDetectedOperationClient client;
+
+	private readonly DetectedOperationDto dto = new()
+	{
+		IdCategory = WellOperationCategory.IdRotor,
+		DateStart = new DateTimeOffset(new DateTime(2023, 5, 12, 1,0,0, DateTimeKind.Utc)),
+		DateEnd = new DateTimeOffset(new DateTime(2023, 5, 12, 1,0,0, DateTimeKind.Utc)),
+		DepthStart = 0,
+		DepthEnd = 80,
+		OperationCategory = new WellOperationCategoryDto
+		{
+			Id = WellOperationCategory.IdRotor,
+			IdParent = WellOperationCategory.IdDrilling,
+			Name = "Бурение ротором"
+		},
+		EnabledSubsystems = new EnabledSubsystems
+		{
+			IsAutoRotor = true
+		},
+		Value = 400,
+	};
+
+	public DetectedOperationControllerTests(WebAppFactoryFixture factory)
+		: base(factory)
+	{
+		client = factory.GetAuthorizedHttpClient<IDetectedOperationClient>(string.Empty);
+
+		dbContext.CleanupDbSet<DetectedOperation>();
+	}
+
+	[Fact]
+	public async Task InsertRangeAsync_returns_success()
+	{
+		//arrange
+		var well = dbContext.Wells.First();
+		dto.IdTelemetry = well.IdTelemetry!.Value;
+
+		//act
+		var response = await client.InsertRangeAsync(well.Id, new[] { dto });
+
+		//assert
+		Assert.Equal(HttpStatusCode.OK, response.StatusCode);
+		Assert.NotNull(response.Content);
+		Assert.Equal(1, response.Content);
+	}
+
+	[Fact]
+	public async Task UpdateRangeAsync_returns_success()
+	{
+		//arrange
+		var well = dbContext.Wells.First();
+		dto.IdTelemetry = well.IdTelemetry!.Value;
+
+		var entity = dto.Adapt<DetectedOperation>();
+		dbContext.DetectedOperations.Add(entity);
+		await dbContext.SaveChangesAsync();
+		dto.Id = entity.Id;
+
+		//act
+		var response = await client.UpdateRangeAsync(well.Id, new[] { dto });
+
+		//assert
+		Assert.Equal(HttpStatusCode.OK, response.StatusCode);
+		Assert.NotNull(response.Content);
+		Assert.Equal(1, response.Content);
+	}
+
+	[Fact]
+	public async Task UpdateRangeAsync_returns_bad_request_when_id_is_invalid()
+	{
+		//arrange
+		var well = dbContext.Wells.First();
+
+		//act
+		var response = await client.UpdateRangeAsync(well.Id, new[] { dto });
+
+		//assert
+		Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
+	}
+
+
+	[Fact]
+	public async Task DeleteRangeAsync_returns_success()
+	{
+		//arrange
+		var well = dbContext.Wells.First();
+		dto.IdTelemetry = well.IdTelemetry!.Value;
+
+		var entity = dto.Adapt<DetectedOperation>();
+		dbContext.DetectedOperations.Add(entity);
+		await dbContext.SaveChangesAsync();
+
+		var ids = await dbContext.DetectedOperations.Select(d => d.Id).ToArrayAsync();
+
+		//act
+		var response = await client.DeleteRangeAsync(well.Id, ids);
+
+		//assert
+		Assert.Equal(HttpStatusCode.OK, response.StatusCode);
+		Assert.NotNull(response.Content);
+		Assert.Equal(1, response.Content);
+	}
+
+	[Fact]
+	public async Task GetAsync_returns_first_page()
+	{
+		//arrange
+		const int pageSize = 10;
+		const int pageIndex = 0;
+
+		var request = new DetectedOperationRequest
+		{
+			Skip = pageIndex,
+			Take = pageSize,
+			IdsCategories = new[] { dto.IdCategory }
+		};
+
+		var well = dbContext.Wells.First();
+		dto.IdTelemetry = well.IdTelemetry!.Value;
+		
+		var entity = dto.Adapt<DetectedOperation>();
+		dbContext.DetectedOperations.Add(entity);
+		await dbContext.SaveChangesAsync();
+
+		//act
+		var response = await client.GetAsync(well.Id, request);
+
+		//assert
+		Assert.Equal(HttpStatusCode.OK, response.StatusCode);
+		Assert.NotNull(response.Content);
+
+		var totalExpected = response.Content.Count - pageSize * pageIndex;
+
+		Assert.Equal(totalExpected, response.Content.Items.Count());
+	}
+	
+	[Fact]
+	public async Task GetAsync_returns_first_operation()
+	{
+		//arrange
+		var well = dbContext.Wells.First();
+		dto.IdTelemetry = well.IdTelemetry!.Value;
+		
+		var entity = dto.Adapt<DetectedOperation>();
+		dbContext.DetectedOperations.Add(entity);
+		await dbContext.SaveChangesAsync();
+
+		var request = new DetectedOperationRequest
+		{
+			IdsCategories = new[] { dto.IdCategory }
+		};
+		
+		//act
+		var response = await client.GetAsync(well.Id, request);
+		
+		//assert
+		Assert.Equal(HttpStatusCode.OK, response.StatusCode);
+		Assert.NotNull(response.Content);
+
+		var firstOperation = response.Content.Items.ElementAt(0);
+		
+		Assert.Equal(well.IdTelemetry, firstOperation.IdTelemetry);
+		Assert.Equal(dto.EnabledSubsystems, firstOperation.EnabledSubsystems);
+		Assert.Equal(dto.DateStart.ToOffset(TimeSpan.FromHours(Defaults.Timezone.Hours)), firstOperation.DateStart);
+		Assert.Equal(dto.DateEnd.ToOffset(TimeSpan.FromHours(Defaults.Timezone.Hours)), firstOperation.DateEnd);
+	}
+}
\ No newline at end of file
diff --git a/AsbCloudWebApi.Tests/Services/DetectedOperations/EnabledSubsystemsTests.cs b/AsbCloudWebApi.Tests/Services/DetectedOperations/EnabledSubsystemsTests.cs
new file mode 100644
index 00000000..97f459aa
--- /dev/null
+++ b/AsbCloudWebApi.Tests/Services/DetectedOperations/EnabledSubsystemsTests.cs
@@ -0,0 +1,42 @@
+using AsbCloudApp.Data.DetectedOperation;
+using Xunit;
+
+namespace AsbCloudWebApi.Tests.Services.DetectedOperations;
+
+public class EnabledSubsystemsTests
+{
+	[Fact]
+	public void Create_enable_subsystem_with_the_systems_turned_off()
+	{
+		//act
+		EnabledSubsystems enableSubsystem = 0;
+		
+		//arrange
+		Assert.False(enableSubsystem.IsAutoRotor);
+		Assert.False(enableSubsystem.IsAutoSlide);
+		Assert.False(enableSubsystem.IsAutoConditionig);
+		Assert.False(enableSubsystem.IsAutoSinking);
+		Assert.False(enableSubsystem.IsAutoLifting);
+		Assert.False(enableSubsystem.IsAutoLiftingWithConditionig);
+		Assert.False(enableSubsystem.IsAutoBlocknig);
+		Assert.False(enableSubsystem.IsAutoOscillation);
+	}
+	
+	[Fact]
+	public void Create_enable_subsystem_with_the_auto_slide_subsystem()
+	{
+		//act
+		EnabledSubsystems enableSubsystem = 2;
+		
+		//arrange
+		Assert.True(enableSubsystem.IsAutoSlide);
+		
+		Assert.False(enableSubsystem.IsAutoRotor);
+		Assert.False(enableSubsystem.IsAutoConditionig);
+		Assert.False(enableSubsystem.IsAutoSinking);
+		Assert.False(enableSubsystem.IsAutoLifting);
+		Assert.False(enableSubsystem.IsAutoLiftingWithConditionig);
+		Assert.False(enableSubsystem.IsAutoBlocknig);
+		Assert.False(enableSubsystem.IsAutoOscillation);
+	}
+}
\ No newline at end of file
diff --git a/AsbCloudWebApi/Controllers/SAUB/DetectedOperationController.cs b/AsbCloudWebApi/Controllers/SAUB/DetectedOperationController.cs
index 9b478a2d..11d7451d 100644
--- a/AsbCloudWebApi/Controllers/SAUB/DetectedOperationController.cs
+++ b/AsbCloudWebApi/Controllers/SAUB/DetectedOperationController.cs
@@ -6,138 +6,192 @@ using Microsoft.AspNetCore.Mvc;
 using System.Collections.Generic;
 using System.Threading;
 using System.Threading.Tasks;
+using AsbCloudApp.Data;
 using AsbCloudApp.Data.WellOperation;
+using AsbCloudApp.Exceptions;
+using AsbCloudApp.Repositories;
 using AsbCloudInfrastructure.Services.DetectOperations;
 using Microsoft.AspNetCore.Http;
 
 namespace AsbCloudWebApi.Controllers.SAUB
 {
-    /// <summary>
-    /// Операции определенные по телеметрии САУБ
-    /// </summary>
-    [Route("api/[controller]")]
-    [ApiController]
-    [Authorize]
-    public class DetectedOperationController : ControllerBase
-    {
-        private readonly IDetectedOperationService detectedOperationService;
-        private readonly IWellService wellService;
-        private readonly DetectedOperationExportService detectedOperationExportService;
-        
-        public DetectedOperationController(IDetectedOperationService detectedOperationService, IWellService wellService,
-            DetectedOperationExportService detectedOperationExportService)
-        {
-            this.detectedOperationService = detectedOperationService;
-            this.wellService = wellService;
-            this.detectedOperationExportService = detectedOperationExportService;
-        }
+	/// <summary>
+	/// Операции определенные по телеметрии САУБ
+	/// </summary>
+	[Route("api/well/{idWell}/[controller]")]
+	[ApiController]
+	[Authorize]
+	public class DetectedOperationController : ControllerBase
+	{
+		private readonly IDetectedOperationRepository detectedOperationRepository;
+		private readonly IDetectedOperationService detectedOperationService;
+		private readonly IWellService wellService;
+		private readonly DetectedOperationExportService detectedOperationExportService;
 
-        /// <summary>
-        /// получить справочник операций. Отличается от операций заводимых вручную.
-        /// При задании id скважины вернет только те операции, которые определились в телеметрии этой скважины.
-        /// </summary>
-        /// <param name="idWell">[опционально] id скважины</param>
-        /// <param name="token"></param>
-        /// <returns></returns>
-        [HttpGet("categories")]
-        [ProducesResponseType(typeof(IEnumerable<WellOperationCategoryDto>), (int)System.Net.HttpStatusCode.OK)]
-        public async Task<IActionResult> GetCategoriesAsync([FromQuery] int? idWell, CancellationToken token)
-        {
-            var result = await detectedOperationService.GetCategoriesAsync(idWell, token);
-            return Ok(result);
-        }
+		public DetectedOperationController(IDetectedOperationService detectedOperationService,
+			IWellService wellService,
+			DetectedOperationExportService detectedOperationExportService,
+			IDetectedOperationRepository detectedOperationRepository)
+		{
+			this.detectedOperationService = detectedOperationService;
+			this.wellService = wellService;
+			this.detectedOperationExportService = detectedOperationExportService;
+			this.detectedOperationRepository = detectedOperationRepository;
+		}
 
-        /// <summary>
-        /// Получить фильтрованный список операций по телеметрии САУБ
-        /// </summary>
-        /// <param name="request"></param>
-        /// <param name="token"></param>
-        /// <returns></returns>
-        [HttpGet]
-        [ProducesResponseType(typeof(DetectedOperationListDto), (int)System.Net.HttpStatusCode.OK)]
-        public async Task<IActionResult> GetAsync(
-            [FromQuery] DetectedOperationByWellRequest request,
-            CancellationToken token)
-        {
-            if (!await UserHasAccessToWellAsync(request.IdWell, token))
-                return Forbid();
+		/// <summary>
+		/// Добавить операции
+		/// </summary>
+		/// <param name="idWell"></param>
+		/// <param name="dtos"></param>
+		/// <param name="token"></param>
+		/// <returns></returns>
+		[HttpPost]
+		[ProducesResponseType(typeof(int), StatusCodes.Status200OK)]
+		public async Task<IActionResult> InsertRangeAsync(int idWell, IEnumerable<DetectedOperationDto> dtos, CancellationToken token)
+		{
+			var idUser = await AssertUserHasAccessToWellAsync(idWell, token);
 
-            var result = await detectedOperationService.GetAsync(request, token);
-            return Ok(result);
-        }
+			var result = await detectedOperationService.InsertRangeManualAsync(idUser, idWell, dtos, token);
 
-        /// <summary>
-        /// Получить статистику по фильтрованному списку операций по телеметрии САУБ
-        /// </summary>
-        /// <param name="request"></param>
-        /// <param name="token"></param>
-        /// <returns></returns>
-        [HttpGet("stat")]
-        [ProducesResponseType(typeof(IEnumerable<DetectedOperationStatDto>), (int)System.Net.HttpStatusCode.OK)]
-        public async Task<IActionResult> GetStatAsync(
-            [FromQuery] DetectedOperationByWellRequest request,
-            CancellationToken token)
-        {
-            if (!await UserHasAccessToWellAsync(request.IdWell, token))
-                return Forbid();
+			return Ok(result);
+		}
 
-            var result = await detectedOperationService.GetOperationsStatAsync(request, token);
-            return Ok(result);
-        }
+		/// <summary>
+		/// Обновить операции
+		/// </summary>
+		/// <param name="idWell"></param>
+		/// <param name="dtos"></param>
+		/// <param name="token"></param>
+		/// <returns></returns>
+		[HttpPut]
+		[ProducesResponseType(typeof(int), StatusCodes.Status200OK)]
+		public async Task<IActionResult> UpdateRangeAsync(int idWell, IEnumerable<DetectedOperationDto> dtos, CancellationToken token)
+		{
+			var idUser = await AssertUserHasAccessToWellAsync(idWell, token);
 
-        /// <summary>
-        /// Удалить операции.
-        /// Удаленные операции будут определены повторно сервисом автоматизированного определения операций.
-        /// Может потребоваться при изменении алгоритмов определения
-        /// </summary>
-        /// <param name="request"></param>
-        /// <param name="token"></param>
-        /// <returns></returns>
-        [HttpDelete]
-        [Permission]
-        [ProducesResponseType(typeof(int), (int)System.Net.HttpStatusCode.OK)]
-        public async Task<IActionResult> DeleteAsync(
-            [FromQuery] DetectedOperationByWellRequest request,
-            CancellationToken token)
-        {
-            if (!await UserHasAccessToWellAsync(request.IdWell, token))
-                return Forbid();
+			var result = await detectedOperationService.UpdateRangeManualAsync(idUser, idWell, dtos, token);
 
-            var result = await detectedOperationService.DeleteAsync(request, token);
-            return Ok(result);
-        }
+			return Ok(result);
+		}
 
-        protected async Task<bool> UserHasAccessToWellAsync(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;
-        }
+		/// <summary>
+		/// Удалить операции
+		/// </summary>
+		/// <param name="idWell"></param>
+		/// <param name="ids"></param>
+		/// <param name="token"></param>
+		/// <returns></returns>
+		[HttpDelete]
+		[ProducesResponseType(typeof(int), StatusCodes.Status200OK)]
+		public async Task<IActionResult> DeleteRangeAsync(int idWell, IEnumerable<int> ids, CancellationToken token)
+		{
+			await AssertUserHasAccessToWellAsync(idWell, token);
 
-        /// <summary>
-        /// Создает excel файл с операциями по скважине
-        /// </summary>
-        /// <param name="idWell">id скважины</param>
-        /// <param name="token"></param>
-        [HttpGet("export")]
-        [Permission]
-        [ProducesResponseType(typeof(PhysicalFileResult), (int)System.Net.HttpStatusCode.OK, "application/octet-stream")]
-        [ProducesResponseType(StatusCodes.Status204NoContent)]
-        [ProducesResponseType(typeof(ValidationProblemDetails), (int)System.Net.HttpStatusCode.BadRequest)]
-        public async Task<IActionResult> ExportAsync(int idWell, CancellationToken token)
-        {
-            var idCompany = User.GetCompanyId();
+			var result = await detectedOperationRepository.DeleteRangeAsync(ids, token);
 
-            if (idCompany is null)
-                return Forbid();
+			return Ok(result);
+		}
 
-            var host = $"{HttpContext.Request.Scheme}://{HttpContext.Request.Host}";
-            var stream = await detectedOperationExportService.ExportAsync(idWell, host, token);
-            
-            return File(stream, "application/octet-stream", "operations.xlsx");
-        }
-    }
-}
+		/// <summary>
+		/// получить справочник операций. Отличается от операций заводимых вручную.
+		/// При задании id скважины вернет только те операции, которые определились в телеметрии этой скважины.
+		/// </summary>
+		/// <param name="idWell">[опционально] id скважины</param>
+		/// <param name="token"></param>
+		/// <returns></returns>
+		[HttpGet]
+		[Route("/api/well/[controller]/categories")]
+		[ProducesResponseType(typeof(IEnumerable<WellOperationCategoryDto>), StatusCodes.Status200OK)]
+		public async Task<IActionResult> GetCategoriesAsync([FromQuery] int? idWell, CancellationToken token)
+		{
+			var result = await detectedOperationService.GetCategoriesAsync(idWell, token);
+			return Ok(result);
+		}
+
+		/// <summary>
+		/// Получить фильтрованный список операций по телеметрии САУБ
+		/// </summary>
+		/// <param name="idWell"></param>
+		/// <param name="request"></param>
+		/// <param name="token"></param>
+		/// <returns></returns>
+		[HttpGet]
+		[ProducesResponseType(typeof(PaginationContainer<DetectedOperationDto>), StatusCodes.Status200OK)]
+		public async Task<IActionResult> GetAsync(int idWell, [FromQuery] DetectedOperationRequest request,
+			CancellationToken token)
+		{
+			await AssertUserHasAccessToWellAsync(idWell, token);
+
+			var well = await wellService.GetOrDefaultAsync(idWell, token);
+
+			if (well?.IdTelemetry is null)
+				return NoContent();
+
+			var requestToService = new DetectedOperationByTelemetryRequest(well.IdTelemetry.Value, request);
+
+			var result = await detectedOperationRepository.GetPageAsync(requestToService, token);
+			return Ok(result);
+		}
+
+		/// <summary>
+		/// Получить статистику по фильтрованному списку операций по телеметрии САУБ
+		/// </summary>
+		/// <param name="idWell"></param>
+		/// <param name="request"></param>
+		/// <param name="token"></param>
+		/// <returns></returns>
+		[HttpGet("stat")]
+		[ProducesResponseType(typeof(IEnumerable<DetectedOperationStatDto>), StatusCodes.Status200OK)]
+		public async Task<IActionResult> GetStatAsync(int idWell, [FromQuery] DetectedOperationRequest request,
+			CancellationToken token)
+		{
+			await AssertUserHasAccessToWellAsync(idWell, token);
+
+			var requestToService = new DetectedOperationByWellRequest(idWell, request);
+
+			var result = await detectedOperationService.GetOperationsStatAsync(requestToService, token);
+			return Ok(result);
+		}
+
+		/// <summary>
+		/// Создает excel файл с операциями по скважине
+		/// </summary>
+		/// <param name="idWell">id скважины</param>
+		/// <param name="token"></param>
+		[HttpGet("export")]
+		[Permission]
+		[ProducesResponseType(typeof(PhysicalFileResult), StatusCodes.Status200OK, "application/octet-stream")]
+		[ProducesResponseType(StatusCodes.Status204NoContent)]
+		[ProducesResponseType(typeof(ValidationProblemDetails), (int)System.Net.HttpStatusCode.BadRequest)]
+		public async Task<IActionResult> ExportAsync(int idWell, CancellationToken token)
+		{
+			var idCompany = User.GetCompanyId();
+
+			if (idCompany is null)
+				return Forbid();
+
+			var host = $"{HttpContext.Request.Scheme}://{HttpContext.Request.Host}";
+			var stream = await detectedOperationExportService.ExportAsync(idWell, host, token);
+
+			return File(stream, "application/octet-stream", "operations.xlsx");
+		}
+
+		private async Task<int> AssertUserHasAccessToWellAsync(int idWell, CancellationToken token)
+		{
+			var idUser = User.GetUserId();
+			var idCompany = User.GetCompanyId();
+
+			if (!idUser.HasValue)
+				throw new ForbidException("Неизвестный пользователь");
+
+			if (!idCompany.HasValue)
+				throw new ForbidException("Нет доступа к скважине");
+
+			if (!await wellService.IsCompanyInvolvedInWellAsync(idCompany.Value, idWell, token))
+				throw new ForbidException("Нет доступа к скважине");
+
+			return idUser.Value;
+		}
+	}
+}
\ No newline at end of file