From 7d788276a907dfc2bec4f9ce35cf938f01bab0f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B5=D0=BF=D0=B0=D0=BD=D0=BE=D0=B2=20=D0=94?= =?UTF-8?q?=D0=BC=D0=B8=D1=82=D1=80=D0=B8=D0=B9?= Date: Thu, 23 Nov 2023 14:26:51 +0500 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D1=8B=20=D0=BD=D0=BE=D0=B2=D1=8B=D0=B5=20=D0=BA=D0=B0?= =?UTF-8?q?=D1=82=D0=B5=D0=B3=D0=BE=D1=80=D0=B8=D0=B8=20=D0=BE=D0=BF=D0=B5?= =?UTF-8?q?=D1=80=D0=B0=D1=86=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...dd_New_WellOperationCategories.Designer.cs | 8988 +++++++++++++++++ ...3085551_Add_New_WellOperationCategories.cs | 94 + .../AsbCloudDbContextModelSnapshot.cs | 96 + .../DefaultData/WellOperationCategories.xlsx | Bin 0 -> 17331 bytes AsbCloudDb/Model/WellOperationCategory.cs | 12 + .../Files/Dictionaries/Operations.txt | 13 +- .../Files/WellOperationImportTemplate.xlsx | Bin 62838 -> 75874 bytes 7 files changed, 9202 insertions(+), 1 deletion(-) create mode 100644 AsbCloudDb/Migrations/20231123085551_Add_New_WellOperationCategories.Designer.cs create mode 100644 AsbCloudDb/Migrations/20231123085551_Add_New_WellOperationCategories.cs create mode 100644 AsbCloudDb/Model/DefaultData/WellOperationCategories.xlsx diff --git a/AsbCloudDb/Migrations/20231123085551_Add_New_WellOperationCategories.Designer.cs b/AsbCloudDb/Migrations/20231123085551_Add_New_WellOperationCategories.Designer.cs new file mode 100644 index 00000000..a74ef02e --- /dev/null +++ b/AsbCloudDb/Migrations/20231123085551_Add_New_WellOperationCategories.Designer.cs @@ -0,0 +1,8988 @@ +// +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("20231123085551_Add_New_WellOperationCategories")] + partial class Add_New_WellOperationCategories + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .UseCollation("Russian_Russia.1251") + .HasAnnotation("ProductVersion", "6.0.25") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.HasPostgresExtension(modelBuilder, "adminpack"); + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("AsbCloudDb.Model.Cluster", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Caption") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("caption") + .HasComment("Название"); + + b.Property("IdDeposit") + .HasColumnType("integer") + .HasColumnName("id_deposit"); + + b.Property("Latitude") + .HasColumnType("double precision") + .HasColumnName("latitude"); + + b.Property("Longitude") + .HasColumnType("double precision") + .HasColumnName("longitude"); + + b.Property("Timezone") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("timezone") + .HasComment("Смещение часового пояса от UTC"); + + b.HasKey("Id"); + + b.HasIndex("IdDeposit"); + + b.ToTable("t_cluster"); + + b.HasComment("Кусты"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Company", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Caption") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("caption"); + + b.Property("IdCompanyType") + .HasMaxLength(255) + .HasColumnType("integer") + .HasColumnName("id_company_type") + .HasComment("вид деятельности"); + + b.HasKey("Id"); + + b.HasIndex("IdCompanyType"); + + b.ToTable("t_company"); + + b.HasData( + new + { + Id = 1, + Caption = "ООО \"АСБ\"", + IdCompanyType = 3 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.CompanyType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Caption") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("caption"); + + b.Property("IsContact") + .HasColumnType("boolean") + .HasColumnName("is_contact"); + + b.Property("Order") + .HasColumnType("integer") + .HasColumnName("order"); + + b.HasKey("Id"); + + b.ToTable("t_company_type"); + + b.HasData( + new + { + Id = 1, + Caption = "Недропользователь", + IsContact = true, + Order = 3 + }, + new + { + Id = 2, + Caption = "Буровой подрядчик", + IsContact = true, + Order = 2 + }, + new + { + Id = 3, + Caption = "Сервис автоматизации бурения", + IsContact = true, + Order = 0 + }, + new + { + Id = 4, + Caption = "Сервис по ГТИ", + IsContact = true, + Order = 6 + }, + new + { + Id = 5, + Caption = "Растворный сервис", + IsContact = true, + Order = 4 + }, + new + { + Id = 6, + Caption = "Сервис по ННБ", + IsContact = true, + Order = 5 + }, + new + { + Id = 7, + Caption = "Служба супервайзинга", + IsContact = false, + Order = 1 + }, + new + { + Id = 9, + Caption = "Сервис по цементированию", + IsContact = true, + Order = 7 + }, + new + { + Id = 11, + Caption = "Дизельный сервис", + IsContact = false, + Order = 9 + }, + new + { + Id = 12, + Caption = "Сервис по обслуживанию верхних силовых приводов", + IsContact = true, + Order = 8 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Contact", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Company") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("company") + .HasComment("компания"); + + b.Property("Email") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("email") + .HasComment("email"); + + b.Property("FullName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("full_name") + .HasComment("ФИО"); + + b.Property("IdCompanyType") + .HasMaxLength(255) + .HasColumnType("integer") + .HasColumnName("id_company_type") + .HasComment("вид деятельности"); + + b.Property("IdWell") + .HasMaxLength(255) + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("ключ скважины"); + + b.Property("Phone") + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .HasColumnName("phone") + .HasComment("номер телефона"); + + b.Property("Position") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("position") + .HasComment("должность"); + + b.HasKey("Id"); + + b.HasIndex("IdCompanyType"); + + b.HasIndex("IdWell"); + + b.ToTable("t_contact"); + + b.HasComment("Контакты"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DailyReport.DailyReport", b => + { + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("ID скважины"); + + b.Property("StartDate") + .HasColumnType("date") + .HasColumnName("start_date") + .HasComment("Дата отчёта"); + + b.Property("Info") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("info") + .HasComment("Список параметров для отчёта"); + + b.HasKey("IdWell", "StartDate") + .HasName("t_id_well_date_start_pk"); + + b.ToTable("t_daily_report"); + + b.HasComment("Ежедневные отчёты"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Deposit", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Caption") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("caption"); + + b.Property("Latitude") + .HasColumnType("double precision") + .HasColumnName("latitude"); + + b.Property("Longitude") + .HasColumnType("double precision") + .HasColumnName("longitude"); + + b.Property("Timezone") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("timezone") + .HasComment("Смещение часового пояса от UTC"); + + b.HasKey("Id"); + + b.ToTable("t_deposit"); + + b.HasComment("Месторождение"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DetectedOperation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("DateEnd") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_end") + .HasComment("Дата начала операции"); + + b.Property("DateStart") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_start") + .HasComment("Дата начала операции"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина после завершения операции, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина на начало операции, м"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category") + .HasComment("Id категории операции"); + + b.Property("IdReasonOfEnd") + .HasColumnType("integer") + .HasColumnName("id_reason_of_end") + .HasComment("Код признака окончания операции"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdUsersAtStart") + .HasColumnType("integer") + .HasColumnName("id_user") + .HasComment("Id пользователя по телеметрии на момент начала операции"); + + b.Property("Value") + .HasColumnType("double precision") + .HasColumnName("value") + .HasComment("Ключевой показатель операции"); + + b.HasKey("Id"); + + b.HasIndex("IdCategory"); + + b.HasIndex("IdTelemetry"); + + b.ToTable("t_detected_operation"); + + b.HasComment("автоматически определенные операции по телеметрии"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Driller", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name") + .HasComment("Имя"); + + b.Property("Patronymic") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("patronymic") + .HasComment("Отчество"); + + b.Property("Surname") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("surname") + .HasComment("Фамилия"); + + b.HasKey("Id"); + + b.ToTable("t_driller"); + + b.HasComment("Бурильщик"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillingProgramPart", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("IdFileCategory") + .HasColumnType("integer") + .HasColumnName("id_file_category"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well"); + + b.HasKey("Id"); + + b.HasIndex("IdFileCategory"); + + b.HasIndex("IdWell", "IdFileCategory") + .IsUnique(); + + b.ToTable("t_drilling_program_part"); + + b.HasComment("части программ бурения"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillTest", b => + { + b.Property("Id") + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry") + .HasComment("Идентификатор телеметрии"); + + b.Property("DepthStart") + .HasColumnType("real") + .HasColumnName("depthStart") + .HasComment("Глубина начала"); + + b.Property("Params") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("t_drill_test_params") + .HasComment("Параметры записи drill test"); + + b.Property("TimeStampStart") + .HasColumnType("timestamp with time zone") + .HasColumnName("timestamp_start") + .HasComment("Время начала"); + + b.HasKey("Id", "IdTelemetry"); + + b.HasIndex("IdTelemetry"); + + b.ToTable("t_drill_test"); + + b.HasComment("Drill_test"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Faq", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Answer") + .HasColumnType("text") + .HasColumnName("answer") + .HasComment("Текст ответа"); + + b.Property("CounterQuestion") + .HasColumnType("integer") + .HasColumnName("counter_question") + .HasComment("Счетчик повторений вопроса"); + + b.Property("DateAnswer") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_answer") + .HasComment("Дата ответа"); + + b.Property("DateCreatedQuestion") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_created_question") + .HasComment("Дата создания вопроса"); + + b.Property("DateLastEditedQuestion") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_last_edited_question") + .HasComment("Дата последнего редактирования вопроса"); + + b.Property("IdAuthorAnswer") + .HasColumnType("integer") + .HasColumnName("id_author_answer") + .HasComment("id автора ответа"); + + b.Property("IdAuthorQuestion") + .HasColumnType("integer") + .HasColumnName("id_author_question") + .HasComment("id автора вопроса"); + + b.Property("IdReplacementQuestion") + .HasColumnType("integer") + .HasColumnName("id_replacement_question") + .HasComment("Ключ заменяющего вопроса"); + + b.Property("IsFrequently") + .HasColumnType("boolean") + .HasColumnName("is_frequently") + .HasComment("Частый вопрос"); + + b.Property("Question") + .IsRequired() + .HasColumnType("text") + .HasColumnName("question") + .HasComment("Текст вопроса"); + + b.Property("State") + .HasColumnType("integer") + .HasColumnName("state") + .HasComment("Статус вопроса"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthorAnswer"); + + b.HasIndex("IdAuthorQuestion"); + + b.ToTable("t_faq"); + + b.HasComment("вопросы пользователей"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileCategory", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name") + .HasComment("Название категории"); + + b.Property("ShortName") + .HasColumnType("text") + .HasColumnName("short_name") + .HasComment("Короткое название категории"); + + b.HasKey("Id"); + + b.ToTable("t_file_category"); + + b.HasComment("Категории файлов"); + + b.HasData( + new + { + Id = 1, + Name = "Растворный сервис", + ShortName = "fluidService" + }, + new + { + Id = 2, + Name = "Цементирование", + ShortName = "cement" + }, + new + { + Id = 3, + Name = "ННБ", + ShortName = "nnb" + }, + new + { + Id = 4, + Name = "ГТИ", + ShortName = "gti" + }, + new + { + Id = 5, + Name = "Документы по скважине", + ShortName = "wellDocuments" + }, + new + { + Id = 6, + Name = "Супервайзер", + ShortName = "supervisor" + }, + new + { + Id = 7, + Name = "Мастер", + ShortName = "master" + }, + new + { + Id = 8, + Name = "Долотный сервис", + ShortName = "toolService" + }, + new + { + Id = 9, + Name = "Буровой подрядчик", + ShortName = "drillService" + }, + new + { + Id = 10, + Name = "Сервис по заканчиванию скважины", + ShortName = "closingService" + }, + new + { + Id = 12, + Name = "Рапорт", + ShortName = "report" + }, + new + { + Id = 1000, + Name = "Программа бурения" + }, + new + { + Id = 1001, + Name = "Задание от геологов" + }, + new + { + Id = 1002, + Name = "Профиль ствола скважины (ННБ)" + }, + new + { + Id = 1003, + Name = "Технологические расчеты (ННБ)" + }, + new + { + Id = 1004, + Name = "Долотная программа" + }, + new + { + Id = 1005, + Name = "Программа по растворам" + }, + new + { + Id = 1006, + Name = "Программа геофизических исследований" + }, + new + { + Id = 1007, + Name = "Планы спусков обсадных колонн" + }, + new + { + Id = 1008, + Name = "Программы цементирования обсадных колонн" + }, + new + { + Id = 10000, + Name = "Проект на бурение транспортного и горизонтального участков скважины" + }, + new + { + Id = 10001, + Name = "Программа на бурение транспортного и горизонтального участков скважины" + }, + new + { + Id = 10002, + Name = "Акт о начале бурения" + }, + new + { + Id = 10003, + Name = "План работ спуска и цементирования направления" + }, + new + { + Id = 10004, + Name = "Программа цементирования направления" + }, + new + { + Id = 10005, + Name = "Мера обсадных труб (направление)" + }, + new + { + Id = 10006, + Name = "Акт на выполненные работы по цементированию направления" + }, + new + { + Id = 10007, + Name = "Отчет по цементированию направления (график)" + }, + new + { + Id = 10008, + Name = "План работ спуска и цементирования кондуктора" + }, + new + { + Id = 10009, + Name = "Программа цементирования (кондуктор)" + }, + new + { + Id = 10010, + Name = "Мера обсадных труб (кондуктор)" + }, + new + { + Id = 10011, + Name = "Карта крепления кондуктора" + }, + new + { + Id = 10012, + Name = "Акт на выполненные работы по цементированию кондуктора" + }, + new + { + Id = 10013, + Name = "Отчет по цементированию кондуктора (график)" + }, + new + { + Id = 10014, + Name = "Акт о замере расстояния от стола ротора до муфты кондуктора" + }, + new + { + Id = 10015, + Name = "Акт опресовки цементного кольца за кондуктором" + }, + new + { + Id = 10016, + Name = "Акт опресовки ППГ с глухими плашками совместно с кондуктором" + }, + new + { + Id = 10017, + Name = "Акт опресовки ПУГ, ППГ с трубными плашками совместно с кондуктором" + }, + new + { + Id = 10018, + Name = "План работ на крепление обсадной колонны (эк. колонна)" + }, + new + { + Id = 10019, + Name = "Программа цементирования (эк. колонна)" + }, + new + { + Id = 10020, + Name = "Мера труб эксплуатационной колонны" + }, + new + { + Id = 10021, + Name = "Карта по креплению скважины (эк. колонна)" + }, + new + { + Id = 10022, + Name = "Акт на установку пружинных центраторов" + }, + new + { + Id = 10023, + Name = "Отчет по цементированию эксплуатационной колонны (график)" + }, + new + { + Id = 10024, + Name = "Акт на выполненные работы по цементированию эксплуатационной колонны" + }, + new + { + Id = 10025, + Name = "Акт об испытании эк. колонны на герметичность (СТОП)" + }, + new + { + Id = 10026, + Name = "Акт опресовки ППГ с глухими плашками совместно с э/колонной" + }, + new + { + Id = 10027, + Name = "Акт опресовки ПУГ, ППГ с трубными плашками совместно с э/колонной" + }, + new + { + Id = 10028, + Name = "Акт на вскрытие продуктивного пласта" + }, + new + { + Id = 10029, + Name = "Акт замера параметров раствора при бурении горизонтального участка" + }, + new + { + Id = 10030, + Name = "Разрешение на спуск «хвостовика» (телефонограмма)" + }, + new + { + Id = 10031, + Name = "План работ на спуск «хвостовика»" + }, + new + { + Id = 10032, + Name = "Акт готовности бурового и энергетического оборудования к спуску «хвостовика»" + }, + new + { + Id = 10033, + Name = "Акт шаблонировки ствола скважины перед спуском «хвостовика»" + }, + new + { + Id = 10034, + Name = "Мера обсадных труб (хвостовик)" + }, + new + { + Id = 10035, + Name = "Акт выполненных работ по спуску хвостовика с закачкой (нефти, солевого раствора" + }, + new + { + Id = 10036, + Name = "Акт о переводе скважины на тех. воду" + }, + new + { + Id = 10037, + Name = "Акт об окончании бурения" + }, + new + { + Id = 10038, + Name = "Акт на передачу скважины в освоение (КРС)" + }, + new + { + Id = 10039, + Name = "Акт на опресовку межколонного пространства с КРС" + }, + new + { + Id = 10040, + Name = "Акт на сдачу скважины в ЦДНГ" + }, + new + { + Id = 10041, + Name = "Паспорт ОУС (заполняется геологами)" + }, + new + { + Id = 10042, + Name = "Паспорт скважины (заполняется геологами)" + }, + new + { + Id = 10043, + Name = "Фактические данные бурения (вставляются в паспорт скважины)" + }, + new + { + Id = 20000, + Name = "Справки по страницам" + }, + new + { + Id = 30000, + Name = "Инструкции" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileInfo", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Id пользователя, загрузившего файл"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category") + .HasComment("id категории файла"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("id скважины"); + + b.Property("IsDeleted") + .HasColumnType("boolean") + .HasColumnName("is_deleted") + .HasComment("Удален ли файл"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name") + .HasComment("Название файла"); + + b.Property("Size") + .HasColumnType("bigint") + .HasColumnName("file_size") + .HasComment("Размер файла"); + + b.Property("UploadDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdCategory"); + + b.HasIndex("IdWell"); + + b.ToTable("t_file_info"); + + b.HasComment("Файлы всех категорий"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileMark", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Comment") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("comment") + .HasComment("Комментарий"); + + b.Property("DateCreated") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_created") + .HasComment("Дата совершенного действия"); + + b.Property("IdFile") + .HasColumnType("integer") + .HasColumnName("id_file") + .HasComment("id файла"); + + b.Property("IdMarkType") + .HasColumnType("integer") + .HasColumnName("id_mark_type") + .HasComment("0 - отклонен, 1 - согласован"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user") + .HasComment("id пользователя"); + + b.Property("IsDeleted") + .HasColumnType("boolean") + .HasColumnName("is_deleted") + .HasComment("Помечен ли файл как удаленный"); + + b.HasKey("Id"); + + b.HasIndex("IdFile"); + + b.HasIndex("IdUser"); + + b.ToTable("t_file_mark"); + + b.HasComment("Действия с файлами."); + }); + + modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemFloat", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdRecord") + .HasColumnType("integer") + .HasColumnName("id_record"); + + b.Property("IdItem") + .HasColumnType("integer") + .HasColumnName("id_item"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("Value") + .HasColumnType("real") + .HasColumnName("value"); + + b.HasKey("IdTelemetry", "IdRecord", "IdItem", "DateTime"); + + b.ToTable("t_wits_float"); + + b.HasComment("таблица данных ГТИ с типом значения float"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemInt", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdRecord") + .HasColumnType("integer") + .HasColumnName("id_record"); + + b.Property("IdItem") + .HasColumnType("integer") + .HasColumnName("id_item"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("Value") + .HasColumnType("integer") + .HasColumnName("value"); + + b.HasKey("IdTelemetry", "IdRecord", "IdItem", "DateTime"); + + b.ToTable("t_wits_int"); + + b.HasComment("таблица данных ГТИ с типом значения int"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemString", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdRecord") + .HasColumnType("integer") + .HasColumnName("id_record"); + + b.Property("IdItem") + .HasColumnType("integer") + .HasColumnName("id_item"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("Value") + .IsRequired() + .HasColumnType("text") + .HasColumnName("value"); + + b.HasKey("IdTelemetry", "IdRecord", "IdItem", "DateTime"); + + b.ToTable("t_wits_string"); + + b.HasComment("таблица данных ГТИ с типом значения string"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.HelpPage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category") + .HasComment("Id категории файла"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name") + .HasComment("Название файла"); + + b.Property("Size") + .HasColumnType("bigint") + .HasColumnName("file_size") + .HasComment("Размер файла"); + + b.Property("UrlPage") + .IsRequired() + .HasColumnType("text") + .HasColumnName("url_page") + .HasComment("Url страницы"); + + b.HasKey("Id"); + + b.HasIndex("IdCategory"); + + b.ToTable("t_help_page"); + + b.HasComment("Справки"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.LimitingParameter", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("DateEnd") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_end"); + + b.Property("DateStart") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_start"); + + b.Property("DepthEnd") + .HasColumnType("real") + .HasColumnName("depth_end"); + + b.Property("DepthStart") + .HasColumnType("real") + .HasColumnName("depth_start"); + + b.Property("IdFeedRegulator") + .HasColumnType("smallint") + .HasColumnName("id_feed_regulator"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.HasKey("Id"); + + b.HasIndex("IdTelemetry"); + + b.ToTable("t_limiting_parameter"); + + b.HasComment("Ограничения по параметрам телеметрии"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Manuals.Manual", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("DateDownload") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_download") + .HasComment("Дата загрузки"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Id автора"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category") + .HasComment("Id категории файла"); + + b.Property("IdDirectory") + .HasColumnType("integer") + .HasColumnName("id_directory") + .HasComment("Id директории"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name") + .HasComment("Название"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdCategory"); + + b.HasIndex("IdDirectory"); + + b.ToTable("t_manual"); + + b.HasComment("Инструкции"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Manuals.ManualDirectory", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("IdParent") + .HasColumnType("integer") + .HasColumnName("id_parent") + .HasComment("Id родительской директории"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name") + .HasComment("Название"); + + b.HasKey("Id"); + + b.HasIndex("IdParent"); + + b.ToTable("t_manual_directory"); + + b.HasComment("Директория для инструкций"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Measure", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Data") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("data") + .HasComment("Данные таблицы последних данных"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category") + .HasComment("id категории"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("id скважины"); + + b.Property("IsDeleted") + .HasColumnType("boolean") + .HasColumnName("is_deleted") + .HasComment("Пометка удаленным"); + + b.Property("Timestamp") + .HasColumnType("timestamp with time zone") + .HasColumnName("timestamp") + .HasComment("время добавления"); + + b.HasKey("Id"); + + b.HasIndex("IdCategory"); + + b.HasIndex("IdWell"); + + b.ToTable("t_measure"); + + b.HasComment("Таблица c данными для вкладки 'Последние данные'"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.MeasureCategory", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name") + .HasComment("Название категории"); + + b.Property("ShortName") + .HasColumnType("text") + .HasColumnName("short_name") + .HasComment("Короткое название категории"); + + b.HasKey("Id"); + + b.ToTable("t_measure_category"); + + b.HasComment("Категория последних данных"); + + b.HasData( + new + { + Id = 1, + Name = "Показатели бурового раствора", + ShortName = "Раствор" + }, + new + { + Id = 2, + Name = "Шламограмма", + ShortName = "Шламограмма" + }, + new + { + Id = 3, + Name = "ННБ", + ShortName = "ННБ" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Notification", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("IdNotificationCategory") + .HasColumnType("integer") + .HasColumnName("id_notification_category") + .HasComment("Id категории уведомления"); + + b.Property("IdTransportType") + .HasColumnType("integer") + .HasColumnName("id_transport_type") + .HasComment("Id типа доставки уведомления"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user") + .HasComment("Id получателя"); + + b.Property("Message") + .IsRequired() + .HasColumnType("text") + .HasColumnName("message") + .HasComment("Сообщение уведомления"); + + b.Property("ReadDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("read_date") + .HasComment("Дата прочтения уведомления"); + + b.Property("RegistrationDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("registration_date") + .HasComment("Дата регистрации уведомления"); + + b.Property("SentDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("sent_date") + .HasComment("Дата отправки уведомления"); + + b.Property("Title") + .IsRequired() + .HasColumnType("text") + .HasColumnName("title") + .HasComment("Заголовок уведомления"); + + b.HasKey("Id"); + + b.HasIndex("IdNotificationCategory"); + + b.HasIndex("IdUser"); + + b.ToTable("t_notification"); + + b.HasComment("Уведомления"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.NotificationCategory", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name"); + + b.HasKey("Id"); + + b.ToTable("t_notification_category"); + + b.HasComment("Категории уведомлений"); + + b.HasData( + new + { + Id = 1, + Name = "Системные уведомления" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.OperationValue", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Конечная глубина"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Старотовая глубина"); + + b.Property("IdOperationCategory") + .HasColumnType("integer") + .HasColumnName("id_operation_category") + .HasComment("Ид категории операции"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Ид скважины"); + + b.Property("StandardValue") + .HasColumnType("double precision") + .HasColumnName("standard_value") + .HasComment("Нормативный показатель"); + + b.Property("TargetValue") + .HasColumnType("double precision") + .HasColumnName("target_value") + .HasComment("Целевой показатель"); + + b.HasKey("Id"); + + b.HasIndex("IdOperationCategory"); + + b.HasIndex("IdWell"); + + b.ToTable("t_operationvalue"); + + b.HasComment("Целевые/нормативные показатели операции"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Permission", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Description") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("description") + .HasComment("Краткое описание"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name") + .HasComment("Название"); + + b.HasKey("Id"); + + b.ToTable("t_permission"); + + b.HasComment("Разрешения на доступ к данным"); + + b.HasData( + new + { + Id = 100, + Description = "Разрешение удалять админ. Кусты", + Name = "AdminCluster.delete" + }, + new + { + Id = 101, + Description = "Разрешение редактировать админ. Кусты", + Name = "AdminCluster.edit" + }, + new + { + Id = 102, + Description = "Разрешение просматривать админ. Кусты", + Name = "AdminCluster.get" + }, + new + { + Id = 103, + Description = "Разрешение удалять админ. Компании", + Name = "AdminCompany.delete" + }, + new + { + Id = 104, + Description = "Разрешение редактировать админ. Компании", + Name = "AdminCompany.edit" + }, + new + { + Id = 105, + Description = "Разрешение просматривать админ. Компании", + Name = "AdminCompany.get" + }, + new + { + Id = 106, + Description = "Разрешение удалять админ. Типы компаний", + Name = "AdminCompanyType.delete" + }, + new + { + Id = 107, + Description = "Разрешение редактировать админ. Типы компаний", + Name = "AdminCompanyType.edit" + }, + new + { + Id = 108, + Description = "Разрешение просматривать админ. Типы компаний", + Name = "AdminCompanyType.get" + }, + new + { + Id = 109, + Description = "Разрешение удалять админ. Месторождения", + Name = "AdminDeposit.delete" + }, + new + { + Id = 110, + Description = "Разрешение редактировать админ. Месторождения", + Name = "AdminDeposit.edit" + }, + new + { + Id = 111, + Description = "Разрешение просматривать админ. Месторождения", + Name = "AdminDeposit.get" + }, + new + { + Id = 112, + Description = "Разрешение удалять админ. Разрешения", + Name = "AdminPermission.delete" + }, + new + { + Id = 113, + Description = "Разрешение редактировать админ. Разрешения", + Name = "AdminPermission.edit" + }, + new + { + Id = 114, + Description = "Разрешение просматривать админ. Разрешения", + Name = "AdminPermission.get" + }, + new + { + Id = 115, + Description = "Разрешение удалять админ. Телеметрию", + Name = "AdminTelemetry.delete" + }, + new + { + Id = 116, + Description = "Разрешение редактировать админ. Телеметрию", + Name = "AdminTelemetry.edit" + }, + new + { + Id = 117, + Description = "Разрешение просматривать админ. Телеметрию", + Name = "AdminTelemetry.get" + }, + new + { + Id = 118, + Description = "Разрешение удалять админ. Пользователей", + Name = "AdminUser.delete" + }, + new + { + Id = 119, + Description = "Разрешение редактировать админ. Пользователей", + Name = "AdminUser.edit" + }, + new + { + Id = 120, + Description = "Разрешение просматривать админ. Пользователей", + Name = "AdminUser.get" + }, + new + { + Id = 121, + Description = "Разрешение удалять админ. Роли пользователей", + Name = "AdminUserRole.delete" + }, + new + { + Id = 122, + Description = "Разрешение редактировать админ. Роли пользователей", + Name = "AdminUserRole.edit" + }, + new + { + Id = 123, + Description = "Разрешение просматривать админ. Роли пользователей", + Name = "AdminUserRole.get" + }, + new + { + Id = 124, + Description = "Разрешение удалять админ. Скважины", + Name = "AdminWell.delete" + }, + new + { + Id = 125, + Description = "Разрешение редактировать админ. Скважины", + Name = "AdminWell.edit" + }, + new + { + Id = 126, + Description = "Разрешение просматривать админ. Скважины", + Name = "AdminWell.get" + }, + new + { + Id = 127, + Description = "Разрешение удалять админ. Подсистемы", + Name = "AdminSubsytem.delete" + }, + new + { + Id = 128, + Description = "Разрешение редактировать админ. Подсистемы", + Name = "AdminSubsytem.edit" + }, + new + { + Id = 129, + Description = "Разрешение просматривать админ. Подсистемы", + Name = "AdminSubsytem.get" + }, + new + { + Id = 200, + Description = "Разрешение редактировать 0", + Name = "Auth.edit" + }, + new + { + Id = 201, + Description = "Разрешение просматривать 0", + Name = "Auth.get" + }, + new + { + Id = 202, + Description = "Разрешение просматривать Кусты", + Name = "Cluster.get" + }, + new + { + Id = 203, + Description = "Разрешение просматривать Месторождения", + Name = "Deposit.get" + }, + new + { + Id = 204, + Description = "Разрешение удалять РТК", + Name = "DrillFlowChart.delete" + }, + new + { + Id = 205, + Description = "Разрешение редактировать РТК", + Name = "DrillFlowChart.edit" + }, + new + { + Id = 206, + Description = "Разрешение просматривать РТК", + Name = "DrillFlowChart.get" + }, + new + { + Id = 207, + Description = "Разрешение удалять Программу бурения", + Name = "DrillingProgram.delete" + }, + new + { + Id = 208, + Description = "Разрешение редактировать Программу бурения", + Name = "DrillingProgram.edit" + }, + new + { + Id = 209, + Description = "Разрешение просматривать Программу бурения", + Name = "DrillingProgram.get" + }, + new + { + Id = 210, + Description = "Разрешение удалять Режимы бурения", + Name = "DrillParams.delete" + }, + new + { + Id = 211, + Description = "Разрешение редактировать Режимы бурения", + Name = "DrillParams.edit" + }, + new + { + Id = 212, + Description = "Разрешение просматривать Режимы бурения", + Name = "DrillParams.get" + }, + new + { + Id = 213, + Description = "Разрешение удалять Файлы", + Name = "File.delete" + }, + new + { + Id = 214, + Description = "Разрешение редактировать Файлы", + Name = "File.edit" + }, + new + { + Id = 215, + Description = "Разрешение просматривать Файлы", + Name = "File.get" + }, + new + { + Id = 216, + Description = "Разрешение удалять Измерения", + Name = "Measure.delete" + }, + new + { + Id = 217, + Description = "Разрешение редактировать Измерения", + Name = "Measure.edit" + }, + new + { + Id = 218, + Description = "Разрешение просматривать Измерения", + Name = "Measure.get" + }, + new + { + Id = 219, + Description = "Разрешение просматривать Сообщения телеметрии", + Name = "Message.get" + }, + new + { + Id = 220, + Description = "Разрешение просматривать Статистику по операциям", + Name = "OperationStat.get" + }, + new + { + Id = 221, + Description = "Разрешение редактировать Рапорта", + Name = "Report.edit" + }, + new + { + Id = 222, + Description = "Разрешение просматривать Рапорта", + Name = "Report.get" + }, + new + { + Id = 223, + Description = "Разрешение просматривать админ. Системная статистика", + Name = "RequestTracker.get" + }, + new + { + Id = 224, + Description = "Разрешение удалять Рекомендации уставок", + Name = "Setpoints.delete" + }, + new + { + Id = 225, + Description = "Разрешение редактировать Рекомендации уставок", + Name = "Setpoints.edit" + }, + new + { + Id = 226, + Description = "Разрешение просматривать Рекомендации уставок", + Name = "Setpoints.get" + }, + new + { + Id = 227, + Description = "Разрешение редактировать Телеметрии", + Name = "Telemetry.edit" + }, + new + { + Id = 228, + Description = "Разрешение просматривать Анализ телеметрии", + Name = "TelemetryAnalytics.get" + }, + new + { + Id = 229, + Description = "Разрешение редактировать Данные телеметрии по САУБ", + Name = "TelemetryDataSaub.edit" + }, + new + { + Id = 230, + Description = "Разрешение просматривать Данные телеметрии по САУБ", + Name = "TelemetryDataSaub.get" + }, + new + { + Id = 231, + Description = "Разрешение редактировать Данные телеметрии по SpinMaster", + Name = "TelemetryDataSpin.edit" + }, + new + { + Id = 232, + Description = "Разрешение просматривать Данные телеметрии по SpinMaster", + Name = "TelemetryDataSpin.get" + }, + new + { + Id = 233, + Description = "Разрешение редактировать Скважины", + Name = "Well.edit" + }, + new + { + Id = 234, + Description = "Разрешение просматривать Скважины", + Name = "Well.get" + }, + new + { + Id = 235, + Description = "Разрешение редактировать Композитные скважины", + Name = "WellComposite.edit" + }, + new + { + Id = 236, + Description = "Разрешение просматривать Композитные скважины", + Name = "WellComposite.get" + }, + new + { + Id = 237, + Description = "Разрешение удалять Операции по скважинам", + Name = "WellOperation.delete" + }, + new + { + Id = 238, + Description = "Разрешение редактировать Операции по скважинам", + Name = "WellOperation.edit" + }, + new + { + Id = 239, + Description = "Разрешение просматривать Операции по скважинам", + Name = "WellOperation.get" + }, + new + { + Id = 240, + Description = "Разрешение редактировать Файлы категории 1 (Растворный сервис)", + Name = "File.edit1" + }, + new + { + Id = 241, + Description = "Разрешение редактировать Файлы категории 2 (Цементирование)", + Name = "File.edit2" + }, + new + { + Id = 242, + Description = "Разрешение редактировать Файлы категории 3 (ННБ)", + Name = "File.edit3" + }, + new + { + Id = 243, + Description = "Разрешение редактировать Файлы категории 4 (ГТИ)", + Name = "File.edit4" + }, + new + { + Id = 244, + Description = "Разрешение редактировать Файлы категории 5 (Документы по скважине)", + Name = "File.edit5" + }, + new + { + Id = 245, + Description = "Разрешение редактировать Файлы категории 6 (Супервайзер)", + Name = "File.edit6" + }, + new + { + Id = 246, + Description = "Разрешение редактировать Файлы категории 7 (Мастер)", + Name = "File.edit7" + }, + new + { + Id = 247, + Description = "Разрешение редактировать Файлы категории 8 (Долотный сервис)", + Name = "File.edit8" + }, + new + { + Id = 248, + Description = "Разрешение редактировать Файлы категории 9 (Буровой подрядчик)", + Name = "File.edit9" + }, + new + { + Id = 249, + Description = "Разрешение редактировать Файлы категории 10 (Сервис по заканчиванию скважины)", + Name = "File.edit10" + }, + new + { + Id = 250, + Description = "Разрешение редактировать Файлы категории 11 (Рапорт)", + Name = "File.edit11" + }, + new + { + Id = 251, + Description = "Разрешение редактировать Файлы категории 12", + Name = "File.edit12" + }, + new + { + Id = 252, + Description = "Разрешение редактировать Файлы категории 12", + Name = "File.edit13" + }, + new + { + Id = 253, + Description = "Разрешение редактировать Файлы категории 13", + Name = "File.edit14" + }, + new + { + Id = 254, + Description = "Разрешение редактировать Файлы категории 14", + Name = "File.edit15" + }, + new + { + Id = 255, + Description = "Разрешение редактировать Файлы категории 15", + Name = "File.edit16" + }, + new + { + Id = 256, + Description = "Разрешение редактировать Файлы категории 16", + Name = "File.edit17" + }, + new + { + Id = 257, + Description = "Разрешение редактировать Файлы категории 17", + Name = "File.edit18" + }, + new + { + Id = 258, + Description = "Разрешение редактировать Файлы категории 18", + Name = "File.edit19" + }, + new + { + Id = 259, + Description = "Разрешение редактировать Файлы категории 19", + Name = "File.edit20" + }, + new + { + Id = 260, + Description = "Разрешение редактировать Файлы категории 20", + Name = "File.edit21" + }, + new + { + Id = 261, + Description = "Разрешение редактировать Файлы категории 21", + Name = "File.edit22" + }, + new + { + Id = 262, + Description = "Разрешение редактировать Файлы категории 22", + Name = "File.edit23" + }, + new + { + Id = 263, + Description = "Разрешение редактировать Файлы категории 23", + Name = "File.edit24" + }, + new + { + Id = 264, + Description = "Разрешение редактировать Файлы категории 24", + Name = "File.edit25" + }, + new + { + Id = 265, + Description = "Разрешение редактировать Файлы категории 25", + Name = "File.edit26" + }, + new + { + Id = 266, + Description = "Разрешение редактировать Файлы категории 26", + Name = "File.edit27" + }, + new + { + Id = 267, + Description = "Разрешение редактировать Файлы категории 27", + Name = "File.edit28" + }, + new + { + Id = 268, + Description = "Разрешение редактировать Файлы категории 28", + Name = "File.edit29" + }, + new + { + Id = 269, + Description = "Разрешение редактировать Файлы категории 29", + Name = "File.edit30" + }, + new + { + Id = 380, + Description = "Разрешение просматривать список бурильщиков", + Name = "Driller.get" + }, + new + { + Id = 381, + Description = "Разрешение редактировать бурильщика", + Name = "Driller.edit" + }, + new + { + Id = 382, + Description = "Разрешение удалять бурильщик", + Name = "Driller.delete" + }, + new + { + Id = 383, + Description = "Разрешение просматривать графики бурильщиков", + Name = "Schedule.get" + }, + new + { + Id = 384, + Description = "Разрешение редактировать график бурильщика", + Name = "Schedule.edit" + }, + new + { + Id = 385, + Description = "Разрешение удалять график бурильщика", + Name = "Schedule.delete" + }, + new + { + Id = 386, + Description = "Разрешение просматривать суточный рапорт", + Name = "DailyReport.get" + }, + new + { + Id = 387, + Description = "Разрешение редактировать суточный рапорт", + Name = "DailyReport.edit" + }, + new + { + Id = 388, + Description = "Разрешение просматривать авто. определенные операции", + Name = "DetectedOperation.get" + }, + new + { + Id = 389, + Description = "Разрешение просматривать целевые значения", + Name = "OperationValue.get" + }, + new + { + Id = 390, + Description = "Разрешение редактировать целевые значения", + Name = "OperationValue.edit" + }, + new + { + Id = 391, + Description = "Разрешение удалять целевые значения", + Name = "OperationValue.delete" + }, + new + { + Id = 400, + Description = "Разрешение просматривать инфо по wits параметрам", + Name = "WitsInfo.get" + }, + new + { + Id = 401, + Description = "Разрешение просматривать WITS record 1", + Name = "WitsRecord1.get" + }, + new + { + Id = 407, + Description = "Разрешение просматривать WITS record 7", + Name = "WitsRecord7.get" + }, + new + { + Id = 408, + Description = "Разрешение просматривать WITS record 8", + Name = "WitsRecord8.get" + }, + new + { + Id = 450, + Description = "Разрешение просматривать WITS record 50", + Name = "WitsRecord50.get" + }, + new + { + Id = 460, + Description = "Разрешение просматривать WITS record 60", + Name = "WitsRecord60.get" + }, + new + { + Id = 461, + Description = "Разрешение просматривать WITS record 61", + Name = "WitsRecord61.get" + }, + new + { + Id = 500, + Description = "Разрешение удалять Категорий документов файлов", + Name = "FileCategory.delete" + }, + new + { + Id = 501, + Description = "Разрешение редактировать Категорий документов файлов", + Name = "FileCategory.edit" + }, + new + { + Id = 502, + Description = "Разрешение просматривать Категорий документов файлов", + Name = "FileCategory.get" + }, + new + { + Id = 503, + Description = "Разрешение удалять Дело скважины", + Name = "WellFinalDocuments.delete" + }, + new + { + Id = 504, + Description = "Разрешение редактировать Дело скважины", + Name = "WellFinalDocuments.edit" + }, + new + { + Id = 505, + Description = "Разрешение просматривать Дело скважины", + Name = "WellFinalDocuments.get" + }, + new + { + Id = 506, + Description = "Разрешение редактировать ответственных за загрузку файла Дело скважины", + Name = "WellFinalDocuments.editPublisher" + }, + new + { + Id = 507, + Description = "Разрешение просматривать наработка талевого каната", + Name = "TelemetryWirelineRunOut.get" + }, + new + { + Id = 510, + Description = "Разрешение просматривать плановая траектория", + Name = "PlannedTrajectory.get" + }, + new + { + Id = 511, + Description = "Разрешение редактировать плановая траектория", + Name = "PlannedTrajectory.edit" + }, + new + { + Id = 512, + Description = "Разрешение удалять плановая траектория", + Name = "PlannedTrajectory.delete" + }, + new + { + Id = 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 = 529, + Description = "Разрешение на получение отчетов drill test", + Name = "DrillTestReport.get" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.PlannedTrajectory", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AzimuthGeo") + .HasColumnType("double precision") + .HasColumnName("azimuth_geo") + .HasComment("Азимут Географ."); + + b.Property("AzimuthMagnetic") + .HasColumnType("double precision") + .HasColumnName("azimuth_magnetic") + .HasComment("Азимут Магнитный"); + + b.Property("Comment") + .HasColumnType("text") + .HasColumnName("comment") + .HasComment("Комментарии"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user") + .HasComment("ID пользователя который внес/изменил запись"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("ID скважины"); + + b.Property("Radius") + .HasColumnType("double precision") + .HasColumnName("radius") + .HasComment("Радиус цели"); + + b.Property("UpdateDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("update_date") + .HasComment("Дата загрузки траектории"); + + b.Property("VerticalDepth") + .HasColumnType("double precision") + .HasColumnName("vertical_depth") + .HasComment("Глубина вертикальная"); + + b.Property("WellboreDepth") + .HasColumnType("double precision") + .HasColumnName("wellbore_depth") + .HasComment("Глубина по стволу"); + + b.Property("ZenithAngle") + .HasColumnType("double precision") + .HasColumnName("zenith_angle") + .HasComment("Угол зенитный"); + + b.HasKey("Id"); + + b.HasIndex("IdUser"); + + b.HasIndex("IdWell"); + + b.ToTable("t_planned_trajectory"); + + b.HasComment("Загрузка плановой траектории"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMaps.ProcessMapWellDrilling", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AxialLoadLimitMax") + .HasColumnType("double precision") + .HasColumnName("axial_load_limit_max") + .HasComment("Нагрузка, допустимый максимум"); + + b.Property("AxialLoadPlan") + .HasColumnType("double precision") + .HasColumnName("axial_load_plan") + .HasComment("Нагрузка, план"); + + b.Property("Comment") + .HasColumnType("text") + .HasColumnName("comment") + .HasComment("Комментарий"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("FlowLimitMax") + .HasColumnType("double precision") + .HasColumnName("flow_limit_max") + .HasComment("Расход, допустимый максимум"); + + b.Property("FlowPlan") + .HasColumnType("double precision") + .HasColumnName("flow_plan") + .HasComment("Расход, план"); + + b.Property("IdMode") + .HasColumnType("integer") + .HasColumnName("id_mode") + .HasComment("Id режима (1- ротор, 2 слайд)"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user") + .HasComment("Id пользователя"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("LastUpdate") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_update") + .HasComment("Дата последнего изменения"); + + b.Property("PressureLimitMax") + .HasColumnType("double precision") + .HasColumnName("pressure_limit_max") + .HasComment("Перепад давления, допустимый максимум"); + + b.Property("PressurePlan") + .HasColumnType("double precision") + .HasColumnName("pressure_plan") + .HasComment("Перепад давления, план"); + + b.Property("RopPlan") + .HasColumnType("double precision") + .HasColumnName("rop_plan") + .HasComment("Плановая механическая скорость, м/ч"); + + b.Property("TopDriveSpeedLimitMax") + .HasColumnType("double precision") + .HasColumnName("top_drive_speed_limit_max") + .HasComment("Обороты на ВСП, допустимый максимум"); + + b.Property("TopDriveSpeedPlan") + .HasColumnType("double precision") + .HasColumnName("top_drive_speed_plan") + .HasComment("Обороты на ВСП, план"); + + b.Property("TopDriveTorqueLimitMax") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque_limit_max") + .HasComment("Момент на ВСП, допустимый максимум"); + + b.Property("TopDriveTorquePlan") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque_plan") + .HasComment("Момент на ВСП, план"); + + b.Property("UsageSaub") + .HasColumnType("double precision") + .HasColumnName("usage_saub") + .HasComment("Плановый процент использования АКБ"); + + b.Property("UsageSpin") + .HasColumnType("double precision") + .HasColumnName("usage_spin") + .HasComment("Плановый процент использования spin master"); + + b.HasKey("Id"); + + b.HasIndex("IdUser"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_well_drilling"); + + b.HasComment("РТК бурение скважины"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMaps.ProcessMapWellReam", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Comment") + .HasColumnType("text") + .HasColumnName("comment") + .HasComment("Комментарий"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user") + .HasComment("Id пользователя"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("LastUpdate") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_update") + .HasComment("Дата последнего изменения"); + + b.Property("Pressure") + .HasColumnType("double precision") + .HasColumnName("pressure") + .HasComment("Давление, атм"); + + b.Property("Repeats") + .HasColumnType("double precision") + .HasColumnName("repeats") + .HasComment("Количество повторений"); + + b.Property("SetpointDrag") + .HasColumnType("double precision") + .HasColumnName("setpoint_drag") + .HasComment("Уставка зятяжки, т"); + + b.Property("SetpointTight") + .HasColumnType("double precision") + .HasColumnName("setpoint_tight") + .HasComment("Уставка посадки, т"); + + b.Property("SpeedDownward") + .HasColumnType("double precision") + .HasColumnName("speed_downward") + .HasComment("Скорость спуска, м/ч"); + + b.Property("SpeedUpward") + .HasColumnType("double precision") + .HasColumnName("speed_upward") + .HasComment("Скорость подъёма, м/ч"); + + b.Property("SpinDownward") + .HasColumnType("double precision") + .HasColumnName("spin_downward") + .HasComment("Вращение при движении вниз, об/мин"); + + b.Property("SpinUpward") + .HasColumnType("double precision") + .HasColumnName("spin_upward") + .HasComment("Вращение при движении вверх, об/мин"); + + b.Property("Torque") + .HasColumnType("double precision") + .HasColumnName("torque") + .HasComment("Момент, кН*м"); + + b.HasKey("Id"); + + b.HasIndex("IdUser"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_well_ream"); + + b.HasComment("РТК проработка скважины"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => + { + b.Property("IdCompany") + .HasColumnType("integer") + .HasColumnName("id_company"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well"); + + b.HasKey("IdCompany", "IdWell"); + + b.HasIndex("IdWell"); + + b.ToTable("t_relation_company_well"); + + b.HasComment("отношение скважин и компаний"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationContactWell", b => + { + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.HasKey("IdWell", "IdUser"); + + b.HasIndex("IdUser"); + + b.ToTable("t_relation_contact_well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserDrillingProgramPart", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("IdDrillingProgramPart") + .HasColumnType("integer") + .HasColumnName("id_drilling_program_part"); + + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_role") + .HasComment("1 - publisher, 2 - approver"); + + b.HasKey("IdUser", "IdDrillingProgramPart") + .HasName("t_relation_user_drilling_program_part_pk"); + + b.HasIndex("IdDrillingProgramPart"); + + b.ToTable("t_relation_user_drilling_program_part"); + + b.HasComment("Отношение пользователей и частей ПБ"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRolePermission", b => + { + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.Property("IdPermission") + .HasColumnType("integer") + .HasColumnName("id_permission"); + + b.HasKey("IdUserRole", "IdPermission"); + + b.HasIndex("IdPermission"); + + b.ToTable("t_relation_user_role_permission"); + + b.HasComment("Отношение ролей пользователей и разрешений доступа"); + + b.HasData( + new + { + IdUserRole = 1100, + IdPermission = 102 + }, + new + { + IdUserRole = 1100, + IdPermission = 111 + }, + new + { + IdUserRole = 1101, + IdPermission = 101 + }, + new + { + IdUserRole = 1101, + IdPermission = 100 + }, + new + { + IdUserRole = 1102, + IdPermission = 105 + }, + new + { + IdUserRole = 1102, + IdPermission = 108 + }, + new + { + IdUserRole = 1103, + IdPermission = 104 + }, + new + { + IdUserRole = 1103, + IdPermission = 103 + }, + new + { + IdUserRole = 1104, + IdPermission = 108 + }, + new + { + IdUserRole = 1105, + IdPermission = 107 + }, + new + { + IdUserRole = 1105, + IdPermission = 106 + }, + new + { + IdUserRole = 1106, + IdPermission = 111 + }, + new + { + IdUserRole = 1107, + IdPermission = 110 + }, + new + { + IdUserRole = 1107, + IdPermission = 109 + }, + new + { + IdUserRole = 1108, + IdPermission = 114 + }, + new + { + IdUserRole = 1109, + IdPermission = 113 + }, + new + { + IdUserRole = 1109, + IdPermission = 112 + }, + new + { + IdUserRole = 1110, + IdPermission = 123 + }, + new + { + IdUserRole = 1110, + IdPermission = 114 + }, + new + { + IdUserRole = 1111, + IdPermission = 122 + }, + new + { + IdUserRole = 1111, + IdPermission = 121 + }, + new + { + IdUserRole = 1112, + IdPermission = 117 + }, + new + { + IdUserRole = 1113, + IdPermission = 105 + }, + new + { + IdUserRole = 1113, + IdPermission = 123 + }, + new + { + IdUserRole = 1113, + IdPermission = 120 + }, + new + { + IdUserRole = 1114, + IdPermission = 119 + }, + new + { + IdUserRole = 1114, + IdPermission = 118 + }, + new + { + IdUserRole = 1114, + IdPermission = 200 + }, + new + { + IdUserRole = 1115, + IdPermission = 223 + }, + new + { + IdUserRole = 1116, + IdPermission = 105 + }, + new + { + IdUserRole = 1116, + IdPermission = 102 + }, + new + { + IdUserRole = 1116, + IdPermission = 117 + }, + new + { + IdUserRole = 1116, + IdPermission = 126 + }, + new + { + IdUserRole = 1117, + IdPermission = 125 + }, + new + { + IdUserRole = 1117, + IdPermission = 124 + }, + new + { + IdUserRole = 1200, + IdPermission = 203 + }, + new + { + IdUserRole = 1200, + IdPermission = 230 + }, + new + { + IdUserRole = 1201, + IdPermission = 202 + }, + new + { + IdUserRole = 1201, + IdPermission = 203 + }, + new + { + IdUserRole = 1201, + IdPermission = 220 + }, + new + { + IdUserRole = 1202, + IdPermission = 203 + }, + new + { + IdUserRole = 1202, + IdPermission = 220 + }, + new + { + IdUserRole = 1202, + IdPermission = 236 + }, + new + { + IdUserRole = 1202, + IdPermission = 212 + }, + new + { + IdUserRole = 1203, + IdPermission = 235 + }, + new + { + IdUserRole = 1204, + IdPermission = 202 + }, + new + { + IdUserRole = 1204, + IdPermission = 203 + }, + new + { + IdUserRole = 1205, + IdPermission = 215 + }, + new + { + IdUserRole = 1206, + IdPermission = 203 + }, + new + { + IdUserRole = 1206, + IdPermission = 206 + }, + new + { + IdUserRole = 1207, + IdPermission = 205 + }, + new + { + IdUserRole = 1208, + IdPermission = 218 + }, + new + { + IdUserRole = 1209, + IdPermission = 217 + }, + new + { + IdUserRole = 1210, + IdPermission = 203 + }, + new + { + IdUserRole = 1210, + IdPermission = 230 + }, + new + { + IdUserRole = 1210, + IdPermission = 219 + }, + new + { + IdUserRole = 1211, + IdPermission = 203 + }, + new + { + IdUserRole = 1211, + IdPermission = 220 + }, + new + { + IdUserRole = 1211, + IdPermission = 239 + }, + new + { + IdUserRole = 1212, + IdPermission = 238 + }, + new + { + IdUserRole = 1212, + IdPermission = 237 + }, + new + { + IdUserRole = 1213, + IdPermission = 203 + }, + new + { + IdUserRole = 1213, + IdPermission = 239 + }, + new + { + IdUserRole = 1213, + IdPermission = 212 + }, + new + { + IdUserRole = 1214, + IdPermission = 211 + }, + new + { + IdUserRole = 1214, + IdPermission = 210 + }, + new + { + IdUserRole = 1215, + IdPermission = 203 + }, + new + { + IdUserRole = 1215, + IdPermission = 222 + }, + new + { + IdUserRole = 1216, + IdPermission = 221 + }, + new + { + IdUserRole = 1217, + IdPermission = 226 + }, + new + { + IdUserRole = 1218, + IdPermission = 225 + }, + new + { + IdUserRole = 1218, + IdPermission = 224 + }, + new + { + IdUserRole = 1219, + IdPermission = 203 + }, + new + { + IdUserRole = 1219, + IdPermission = 206 + }, + new + { + IdUserRole = 1219, + IdPermission = 230 + }, + new + { + IdUserRole = 1219, + IdPermission = 232 + }, + new + { + IdUserRole = 1220, + IdPermission = 203 + }, + new + { + IdUserRole = 1220, + IdPermission = 228 + }, + new + { + IdUserRole = 1221, + IdPermission = 202 + }, + new + { + IdUserRole = 1221, + IdPermission = 203 + }, + new + { + IdUserRole = 1221, + IdPermission = 220 + }, + new + { + IdUserRole = 1221, + IdPermission = 234 + }, + new + { + IdUserRole = 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 = 529 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRoleUserRole", b => + { + b.Property("Id") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.Property("IdInclude") + .HasColumnType("integer") + .HasColumnName("id_include_user_role"); + + b.HasKey("Id", "IdInclude") + .HasName("t_relation_user_role_user_role_pk"); + + b.HasIndex("IdInclude"); + + b.ToTable("t_relation_user_role_user_role"); + + b.HasComment("Отношение ролей к ролям"); + + b.HasData( + new + { + Id = 1101, + IdInclude = 1100 + }, + new + { + Id = 1103, + IdInclude = 1102 + }, + new + { + Id = 1105, + IdInclude = 1104 + }, + new + { + Id = 1107, + IdInclude = 1106 + }, + new + { + Id = 1109, + IdInclude = 1108 + }, + new + { + Id = 1111, + IdInclude = 1110 + }, + new + { + Id = 1114, + IdInclude = 1113 + }, + new + { + Id = 1117, + IdInclude = 1116 + }, + new + { + Id = 1203, + IdInclude = 1202 + }, + new + { + Id = 1207, + IdInclude = 1206 + }, + new + { + Id = 1209, + IdInclude = 1208 + }, + new + { + Id = 1212, + IdInclude = 1211 + }, + new + { + Id = 1214, + IdInclude = 1213 + }, + new + { + Id = 1216, + IdInclude = 1215 + }, + new + { + Id = 1218, + IdInclude = 1217 + }, + new + { + Id = 2000, + IdInclude = 1200 + }, + new + { + Id = 2000, + IdInclude = 1201 + }, + new + { + Id = 2000, + IdInclude = 1202 + }, + new + { + Id = 2000, + IdInclude = 1204 + }, + new + { + Id = 2000, + IdInclude = 1205 + }, + new + { + Id = 2000, + IdInclude = 1206 + }, + new + { + Id = 2000, + IdInclude = 1208 + }, + new + { + Id = 2000, + IdInclude = 1210 + }, + new + { + Id = 2000, + IdInclude = 1211 + }, + new + { + Id = 2000, + IdInclude = 1213 + }, + new + { + Id = 2000, + IdInclude = 1215 + }, + new + { + Id = 2000, + IdInclude = 1217 + }, + new + { + Id = 2000, + IdInclude = 1219 + }, + new + { + Id = 2000, + IdInclude = 1220 + }, + new + { + Id = 2000, + IdInclude = 1221 + }, + new + { + Id = 2000, + IdInclude = 1500 + }, + new + { + Id = 2000, + IdInclude = 1501 + }, + new + { + Id = 2000, + IdInclude = 1502 + }, + new + { + Id = 2001, + IdInclude = 1500 + }, + new + { + Id = 2001, + IdInclude = 1501 + }, + new + { + Id = 2001, + IdInclude = 1502 + }, + new + { + Id = 2002, + IdInclude = 1500 + }, + new + { + Id = 2002, + IdInclude = 1501 + }, + new + { + Id = 2002, + IdInclude = 1502 + }, + new + { + Id = 2003, + IdInclude = 1500 + }, + new + { + Id = 2003, + IdInclude = 1501 + }, + new + { + Id = 2003, + IdInclude = 1502 + }, + new + { + Id = 2004, + IdInclude = 1500 + }, + new + { + Id = 2004, + IdInclude = 1501 + }, + new + { + Id = 2004, + IdInclude = 1502 + }, + new + { + Id = 2005, + IdInclude = 1500 + }, + new + { + Id = 2005, + IdInclude = 1501 + }, + new + { + Id = 2005, + IdInclude = 1502 + }, + new + { + Id = 2006, + IdInclude = 1500 + }, + new + { + Id = 2006, + IdInclude = 1501 + }, + new + { + Id = 2006, + IdInclude = 1502 + }, + new + { + Id = 2007, + IdInclude = 1500 + }, + new + { + Id = 2007, + IdInclude = 1501 + }, + new + { + Id = 2007, + IdInclude = 1502 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserUserRole", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.HasKey("IdUser", "IdUserRole"); + + b.HasIndex("IdUserRole"); + + b.ToTable("t_relation_user_user_role"); + + b.HasComment("Отношение пользователей и ролей"); + + b.HasData( + new + { + IdUser = 1, + IdUserRole = 1 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ReportProperty", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Begin") + .HasColumnType("timestamp with time zone") + .HasColumnName("begin"); + + b.Property("End") + .HasColumnType("timestamp with time zone") + .HasColumnName("end") + .HasComment("timestamp with time zone"); + + b.Property("Format") + .HasColumnType("integer") + .HasColumnName("format") + .HasComment("Формат отчета"); + + b.Property("IdFile") + .HasColumnType("integer") + .HasColumnName("id_file") + .HasComment("id файла-родителя"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("id скважины"); + + b.Property("Step") + .HasColumnType("integer") + .HasColumnName("step") + .HasComment("размер шага в секундах"); + + b.HasKey("Id"); + + b.HasIndex("IdFile"); + + b.HasIndex("IdWell"); + + b.ToTable("t_report_property"); + + b.HasComment("Отчеты с данными по буровым"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Schedule", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("DrillEnd") + .HasColumnType("timestamp with time zone") + .HasColumnName("drill_end") + .HasComment("Конец вахты"); + + b.Property("DrillStart") + .HasColumnType("timestamp with time zone") + .HasColumnName("drill_start") + .HasComment("Начало вахты"); + + b.Property("IdDriller") + .HasColumnType("integer") + .HasColumnName("id_driller") + .HasComment("Идентификатор бурильщика"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Идентификатор скважины"); + + b.Property("ShiftEnd") + .HasColumnType("time without time zone") + .HasColumnName("shift_end") + .HasComment("Конец смены"); + + b.Property("ShiftStart") + .HasColumnType("time without time zone") + .HasColumnName("shift_start") + .HasComment("Начало смены"); + + b.HasKey("Id"); + + b.HasIndex("IdDriller"); + + b.HasIndex("IdWell"); + + b.ToTable("t_schedule"); + + b.HasComment("График работы бурильщика"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.SetpointsRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Comment") + .HasColumnType("text") + .HasColumnName("comment") + .HasComment("комментарий для оператора"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Id пользователя, загрузившего файл"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("0: неизвестно, 1:ожидает отправки, 2: отправлено, 3: принято оператором, 4: отклонено оператором, 5: устарело"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("id скважины"); + + b.Property("ObsolescenceSec") + .HasColumnType("integer") + .HasColumnName("obsolescence") + .HasComment("сек. до устаревания"); + + b.Property("Setpoints") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("setpoint_set") + .HasComment("Набор уставок"); + + b.Property("UploadDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdWell"); + + b.ToTable("t_setpoints_rquest"); + + b.HasComment("Запросы на изменение уставок панели оператора"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Subsystems.Subsystem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Description") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("description"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name"); + + b.HasKey("Id"); + + b.ToTable("t_subsystem"); + + b.HasComment("Описание подсистем"); + + b.HasData( + new + { + Id = 1, + Description = "Совместная работа режимов \"Бурение в роторе\" и \"Бурение в слайде\"", + Name = "АКБ" + }, + new + { + Id = 11, + Description = "Режим работы \"Бурение в роторе\"", + Name = "АПД ротор" + }, + new + { + Id = 12, + Description = "Режим работы \"Бурение в слайде\"", + Name = "АПД слайд" + }, + new + { + Id = 2, + Description = "Алгоритм поиска оптимальных параметров бурения САУБ", + Name = "MSE" + }, + new + { + Id = 65536, + Description = "Осцилляция", + Name = "Осцилляция" + }, + new + { + Id = 65537, + Description = "Демпфер", + Name = "Демпфер" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Subsystems.SubsystemOperationTime", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("DateEnd") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_end") + .HasComment("дата/время выключения подсистемы"); + + b.Property("DateStart") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_start") + .HasComment("дата/время включения подсистемы"); + + b.Property("DepthEnd") + .HasColumnType("real") + .HasColumnName("depth_end") + .HasComment("глубина забоя на момент выключения подсистемы"); + + b.Property("DepthStart") + .HasColumnType("real") + .HasColumnName("depth_start") + .HasComment("глубина забоя на момент включения подсистемы"); + + b.Property("IdSubsystem") + .HasColumnType("integer") + .HasColumnName("id_subsystem"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry") + .HasComment("ИД телеметрии по которой выдается информация"); + + b.HasKey("Id"); + + b.HasIndex("IdSubsystem"); + + b.HasIndex("IdTelemetry"); + + b.ToTable("t_subsystem_operation_time"); + + b.HasComment("наработки подсистем"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Telemetry", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Info") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("info") + .HasComment("Информация с панели о скважине"); + + b.Property("RemoteUid") + .IsRequired() + .HasColumnType("text") + .HasColumnName("remote_uid") + .HasComment("Идентификатор передающего устройства. Может повторяться в списке, так как комплекты оборудования переезжают от скв. к скв."); + + b.Property("TimeZone") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("timezone") + .HasComment("Смещение часового пояса от UTC"); + + b.HasKey("Id"); + + b.HasIndex(new[] { "RemoteUid" }, "t_telemetry_remote_uid_index"); + + b.ToTable("t_telemetry"); + + b.HasComment("таблица привязки телеметрии от комплектов к конкретной скважине."); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaub", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date") + .HasComment("'2021-10-19 18:23:54+05'"); + + b.Property("AxialLoad") + .HasColumnType("real") + .HasColumnName("axial_load") + .HasComment("Осевая нагрузка"); + + b.Property("AxialLoadLimitMax") + .HasColumnType("real") + .HasColumnName("axial_load_limit_max") + .HasComment("Осевая нагрузка. Аварийная макс."); + + b.Property("AxialLoadSp") + .HasColumnType("real") + .HasColumnName("axial_load_sp") + .HasComment("Осевая нагрузка. Задание"); + + b.Property("BitDepth") + .HasColumnType("real") + .HasColumnName("bit_depth") + .HasComment("Положение инструмента"); + + b.Property("BlockPosition") + .HasColumnType("real") + .HasColumnName("block_position") + .HasComment("Высота талевого блока"); + + b.Property("BlockPositionMax") + .HasColumnType("real") + .HasColumnName("block_position_max") + .HasComment("Талевый блок. Макс положение"); + + b.Property("BlockPositionMin") + .HasColumnType("real") + .HasColumnName("block_position_min") + .HasComment("Талевый блок. Мин положение"); + + b.Property("BlockSpeed") + .HasColumnType("real") + .HasColumnName("block_speed") + .HasComment("Скорость талевого блока"); + + b.Property("BlockSpeedSp") + .HasColumnType("real") + .HasColumnName("block_speed_sp") + .HasComment("Скорости талевого блока. Задание"); + + b.Property("BlockSpeedSpDevelop") + .HasColumnType("real") + .HasColumnName("block_speed_sp_develop") + .HasComment("Талевый блок. Задание скорости для проработки"); + + b.Property("BlockSpeedSpRotor") + .HasColumnType("real") + .HasColumnName("block_speed_sp_rotor") + .HasComment("Талевый блок. Задание скорости для роторного бурения"); + + b.Property("BlockSpeedSpSlide") + .HasColumnType("real") + .HasColumnName("block_speed_sp_slide") + .HasComment("Талевый блок. Задание скорости для режима слайда"); + + b.Property("Flow") + .HasColumnType("real") + .HasColumnName("flow") + .HasComment("Расход"); + + b.Property("FlowDeltaLimitMax") + .HasColumnType("real") + .HasColumnName("flow_delta_limit_max") + .HasComment("Расход. Аварийный макс."); + + b.Property("FlowIdle") + .HasColumnType("real") + .HasColumnName("flow_idle") + .HasComment("Расход. Холостой ход"); + + b.Property("HookWeight") + .HasColumnType("real") + .HasColumnName("hook_weight") + .HasComment("Вес на крюке"); + + b.Property("HookWeightIdle") + .HasColumnType("real") + .HasColumnName("hook_weight_idle") + .HasComment("Вес на крюке. Холостой ход"); + + b.Property("HookWeightLimitMax") + .HasColumnType("real") + .HasColumnName("hook_weight_limit_max") + .HasComment("Вес на крюке. Затяжка"); + + b.Property("HookWeightLimitMin") + .HasColumnType("real") + .HasColumnName("hook_weight_limit_min") + .HasComment("Вес на крюке. Посадка"); + + b.Property("IdFeedRegulator") + .HasColumnType("smallint") + .HasColumnName("id_feed_regulator") + .HasComment("Текущий критерий бурения"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user") + .HasComment("Пользователь САУБ"); + + b.Property("Mode") + .HasColumnType("smallint") + .HasColumnName("mode") + .HasComment("Режим САУБ"); + + b.Property("Mse") + .HasColumnType("real") + .HasColumnName("mse") + .HasComment("MSE"); + + b.Property("MseState") + .HasColumnType("smallint") + .HasColumnName("mse_state") + .HasComment("Текущее состояние работы MSE"); + + b.Property("Pressure") + .HasColumnType("real") + .HasColumnName("pressure") + .HasComment("Давление"); + + b.Property("PressureDeltaLimitMax") + .HasColumnType("real") + .HasColumnName("pressure_delta_limit_max") + .HasComment("Давление дифф. Аварийное макс."); + + b.Property("PressureIdle") + .HasColumnType("real") + .HasColumnName("pressure_idle") + .HasComment("Давление. Холостой ход"); + + b.Property("PressureSp") + .HasColumnType("real") + .HasColumnName("pressure_sp") + .HasComment("Давление. Задание"); + + b.Property("PressureSpDevelop") + .HasColumnType("real") + .HasColumnName("pressure_sp_develop") + .HasComment("Давление. Задание для проработки"); + + b.Property("PressureSpRotor") + .HasColumnType("real") + .HasColumnName("pressure_sp_rotor") + .HasComment("Давление. Задание для роторного бурения"); + + b.Property("PressureSpSlide") + .HasColumnType("real") + .HasColumnName("pressure_sp_slide") + .HasComment("Давление. Задание для режима слайда"); + + b.Property("Pump0Flow") + .HasColumnType("real") + .HasColumnName("pump0_flow") + .HasComment("Расход. Буровой насос 1"); + + b.Property("Pump1Flow") + .HasColumnType("real") + .HasColumnName("pump1_flow") + .HasComment("Расход. Буровой насос 2"); + + b.Property("Pump2Flow") + .HasColumnType("real") + .HasColumnName("pump2_flow") + .HasComment("Расход. Буровой насос 3"); + + b.Property("RotorSpeed") + .HasColumnType("real") + .HasColumnName("rotor_speed") + .HasComment("Обороты ротора"); + + b.Property("RotorTorque") + .HasColumnType("real") + .HasColumnName("rotor_torque") + .HasComment("Момент на роторе"); + + b.Property("RotorTorqueIdle") + .HasColumnType("real") + .HasColumnName("rotor_torque_idle") + .HasComment("Момент на роторе. Холостой ход"); + + b.Property("RotorTorqueLimitMax") + .HasColumnType("real") + .HasColumnName("rotor_torque_limit_max") + .HasComment("Момент на роторе. Аварийный макс."); + + b.Property("RotorTorqueSp") + .HasColumnType("real") + .HasColumnName("rotor_torque_sp") + .HasComment("Момент на роторе. Задание"); + + b.Property("WellDepth") + .HasColumnType("real") + .HasColumnName("well_depth") + .HasComment("Глубина забоя"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_data_saub"); + + b.HasComment("набор основных данных по SAUB"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaubStat", b => + { + b.Property("Count") + .HasColumnType("bigint") + .HasColumnName("count_items"); + + b.Property("DateMax") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_max"); + + b.Property("DateMin") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_min"); + + b.Property("DepthMax") + .HasColumnType("real") + .HasColumnName("depth_max"); + + b.Property("DepthMin") + .HasColumnType("real") + .HasColumnName("depth_min"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.ToView("mw_telemetry_datas_saub_stat"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSpin", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date") + .HasComment("'2021-10-19 18:23:54+05'"); + + b.Property("Mode") + .HasColumnType("smallint") + .HasColumnName("mode") + .HasComment("Выбранный режим управления"); + + b.Property("PositionRight") + .HasColumnType("real") + .HasColumnName("position_right") + .HasComment("Крайний правый угол осцилляции"); + + b.Property("PositionZero") + .HasColumnType("real") + .HasColumnName("position_zero") + .HasComment("Нулевая позиция осцилляции"); + + b.Property("RevolsLeftLimit") + .HasColumnType("real") + .HasColumnName("revols_left_limit") + .HasComment("Ограничение числа оборотов влево"); + + b.Property("RevolsLeftTotal") + .HasColumnType("real") + .HasColumnName("revols_left_total") + .HasComment("Суммарное количество оборотов влево"); + + b.Property("RevolsRightLimit") + .HasColumnType("real") + .HasColumnName("revols_right_limit") + .HasComment("Ограничение числа оборотов вправо"); + + b.Property("RevolsRightTotal") + .HasColumnType("real") + .HasColumnName("revols_right_total") + .HasComment("Суммарное количество оборотов вправо"); + + b.Property("SpeedLeftSp") + .HasColumnType("real") + .HasColumnName("speed_left_sp") + .HasComment("Заданная скорость вращения влево"); + + b.Property("SpeedRightSp") + .HasColumnType("real") + .HasColumnName("speed_right_sp") + .HasComment("Заданная скорость вращения вправо"); + + b.Property("State") + .HasColumnType("smallint") + .HasColumnName("state") + .HasComment("Переменная этапа"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_data_spin"); + + b.HasComment("набор основных данных по SpinMaster"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryEvent", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdEvent") + .HasColumnType("integer") + .HasColumnName("id_event"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category"); + + b.Property("MessageTemplate") + .IsRequired() + .HasColumnType("text") + .HasColumnName("message_template"); + + b.HasKey("IdTelemetry", "IdEvent"); + + b.ToTable("t_telemetry_event"); + + b.HasComment("Справочник событий. События формируют сообщения. Разделено по версиям посылок от телеметрии."); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Arg0") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg0") + .HasComment("Аргумент №0 для вставки в шаблон сообщения"); + + b.Property("Arg1") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg1"); + + b.Property("Arg2") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg2"); + + b.Property("Arg3") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg3"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("IdEvent") + .HasColumnType("integer") + .HasColumnName("id_event"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdTelemetryUser") + .HasColumnType("integer") + .HasColumnName("id_telemetry_user") + .HasComment("Пользователь панели отправляющей телеметрию. не пользователь облака."); + + b.Property("WellDepth") + .HasColumnType("double precision") + .HasColumnName("well_depth"); + + b.HasKey("Id"); + + b.HasIndex("IdTelemetry"); + + b.ToTable("t_telemetry_message"); + + b.HasComment("Сообщения на буровых"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryUser", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("Level") + .HasColumnType("integer") + .HasColumnName("level"); + + b.Property("Name") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name"); + + b.Property("Patronymic") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("patronymic"); + + b.Property("Surname") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("surname"); + + b.HasKey("IdTelemetry", "IdUser"); + + b.ToTable("t_telemetry_user"); + + b.HasComment("Пользователи панели САУБ. Для сообщений."); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryWirelineRunOut", b => + { + b.Property("IdTelemetry") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id_telemetry") + .HasComment("Идентификатор телеметрии"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("IdTelemetry")); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_time") + .HasComment("Отметка времени"); + + b.Property("Hauling") + .HasColumnType("real") + .HasColumnName("hauling") + .HasComment("Наработка талевого каната с момента перетяжки каната, т*км"); + + b.Property("HaulingWarnSp") + .HasColumnType("real") + .HasColumnName("hauling_warn_sp") + .HasComment("Наработка талевого каната до сигнализации о необходимости перетяжки, т*км"); + + b.Property("Replace") + .HasColumnType("real") + .HasColumnName("replace") + .HasComment("Наработка талевого каната с момента замены каната, т*км"); + + b.Property("ReplaceWarnSp") + .HasColumnType("real") + .HasColumnName("replace_warn_sp") + .HasComment("Наработка талевого каната до сигнализации о необходимости замены, т*км"); + + b.HasKey("IdTelemetry"); + + b.ToTable("t_telemetry_wireline_run_out"); + + b.HasComment("Наработка талевого каната"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Email") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("email") + .HasComment("должность"); + + b.Property("IdCompany") + .HasColumnType("integer") + .HasColumnName("id_company"); + + b.Property("IdState") + .HasColumnType("smallint") + .HasColumnName("state") + .HasComment("состояние:\n0 - не активен, \n1 - активен, \n2 - заблокирован"); + + b.Property("Login") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("login"); + + b.Property("Name") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name") + .HasComment("имя"); + + b.Property("PasswordHash") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("password_hash") + .HasComment("соленый хэш пароля.\nпервые 5 символов - соль"); + + b.Property("Patronymic") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("patronymic") + .HasComment("отчество"); + + b.Property("Phone") + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .HasColumnName("phone") + .HasComment("номер телефона"); + + b.Property("Position") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("position") + .HasComment("email"); + + b.Property("Surname") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("surname") + .HasComment("фамилия"); + + b.HasKey("Id"); + + b.HasIndex("IdCompany"); + + b.HasIndex("Login") + .IsUnique(); + + b.ToTable("t_user"); + + b.HasComment("Пользователи облака"); + + b.HasData( + new + { + Id = 1, + Email = "", + IdCompany = 1, + IdState = (short)1, + Login = "dev", + Name = "Разработчик", + PasswordHash = "Vlcj|4fa529103dde7ff72cfe76185f344d4aa87931f8e1b2044e8a7739947c3d18923464eaad93843e4f809c5e126d013072" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Caption") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("caption") + .HasComment("Название"); + + b.Property("IdType") + .HasColumnType("integer") + .HasColumnName("id_type") + .HasComment("0-роль из стандартной матрицы, \n1-специальная роль для какого-либо пользователя"); + + b.HasKey("Id"); + + b.ToTable("t_user_role"); + + b.HasComment("Роли пользователей в системе"); + + b.HasData( + new + { + Id = 1, + Caption = "root", + IdType = 1 + }, + new + { + Id = 1100, + Caption = "admin_cluster.view", + IdType = 1 + }, + new + { + Id = 1101, + Caption = "admin_cluster.edit", + IdType = 1 + }, + new + { + Id = 1102, + Caption = "admin_company.view", + IdType = 1 + }, + new + { + Id = 1103, + Caption = "admin_company.edit", + IdType = 1 + }, + new + { + Id = 1104, + Caption = "admin_company_type.view", + IdType = 1 + }, + new + { + Id = 1105, + Caption = "admin_company_type.edit", + IdType = 1 + }, + new + { + Id = 1106, + Caption = "admin_deposit.view", + IdType = 1 + }, + new + { + Id = 1107, + Caption = "admin_deposit.edit", + IdType = 1 + }, + new + { + Id = 1108, + Caption = "admin_permission.view", + IdType = 1 + }, + new + { + Id = 1109, + Caption = "admin_permission.edit", + IdType = 1 + }, + new + { + Id = 1110, + Caption = "admin_role.view", + IdType = 1 + }, + new + { + Id = 1111, + Caption = "admin_role.edit", + IdType = 1 + }, + new + { + Id = 1112, + Caption = "admin_telemetry.view", + IdType = 1 + }, + new + { + Id = 1113, + Caption = "admin_user.view", + IdType = 1 + }, + new + { + Id = 1114, + Caption = "admin_user.edit", + IdType = 1 + }, + new + { + Id = 1115, + Caption = "admin_visit_log.view", + IdType = 1 + }, + new + { + Id = 1116, + Caption = "admin_well.view", + IdType = 1 + }, + new + { + Id = 1117, + Caption = "admin_well.edit", + IdType = 1 + }, + new + { + Id = 1200, + Caption = "archive.view", + IdType = 1 + }, + new + { + Id = 1201, + Caption = "cluster.view", + IdType = 1 + }, + new + { + Id = 1202, + Caption = "composite.view", + IdType = 1 + }, + new + { + Id = 1203, + Caption = "composite.edit", + IdType = 1 + }, + new + { + Id = 1204, + Caption = "deposit.view", + IdType = 1 + }, + new + { + Id = 1205, + Caption = "document.view", + IdType = 1 + }, + new + { + Id = 1206, + Caption = "drillProcessFlow.view", + IdType = 1 + }, + new + { + Id = 1207, + Caption = "drillProcessFlow.edit", + IdType = 1 + }, + new + { + Id = 1208, + Caption = "measure.view", + IdType = 1 + }, + new + { + Id = 1209, + Caption = "measure.edit", + IdType = 1 + }, + new + { + Id = 1210, + Caption = "message.view", + IdType = 1 + }, + new + { + Id = 1211, + Caption = "operations.view", + IdType = 1 + }, + new + { + Id = 1212, + Caption = "operations.edit", + IdType = 1 + }, + new + { + Id = 1213, + Caption = "params.view", + IdType = 1 + }, + new + { + Id = 1214, + Caption = "params.edit", + IdType = 1 + }, + new + { + Id = 1215, + Caption = "report.view", + IdType = 1 + }, + new + { + Id = 1216, + Caption = "report.edit", + IdType = 1 + }, + new + { + Id = 1217, + Caption = "setpoints.view", + IdType = 1 + }, + new + { + Id = 1218, + Caption = "setpoints.edit", + IdType = 1 + }, + new + { + Id = 1219, + Caption = "telemetry.view", + IdType = 1 + }, + new + { + Id = 1220, + Caption = "telemetryAnalysis.view", + IdType = 1 + }, + new + { + Id = 1221, + Caption = "well.view", + IdType = 1 + }, + new + { + Id = 1500, + Caption = "Просмотр всего", + IdType = 1 + }, + new + { + Id = 1501, + Caption = "file.edit", + IdType = 1 + }, + new + { + Id = 1502, + Caption = "drillingProgram.edit", + IdType = 1 + }, + new + { + Id = 2000, + Caption = "Заказчик", + IdType = 0 + }, + new + { + Id = 2001, + Caption = "Супервайзер", + IdType = 0 + }, + new + { + Id = 2002, + Caption = "Буровой подрядчик", + IdType = 0 + }, + new + { + Id = 2003, + Caption = "Растворщик", + IdType = 0 + }, + new + { + Id = 2004, + Caption = "Телеметрист", + IdType = 0 + }, + new + { + Id = 2005, + Caption = "Долотный сервис", + IdType = 0 + }, + new + { + Id = 2006, + Caption = "ГТИ", + IdType = 0 + }, + new + { + Id = 2007, + Caption = "Цементирование", + IdType = 0 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserSetting", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("Key") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("key") + .HasComment("Ключ настроек пользователя"); + + b.Property("Value") + .HasColumnType("jsonb") + .HasColumnName("setting_value") + .HasComment("Значение настроек пользователя"); + + b.HasKey("IdUser", "Key"); + + b.ToTable("t_user_settings"); + + b.HasComment("настройки интерфейса пользователя"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Caption") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("caption"); + + b.Property("IdCluster") + .HasColumnType("integer") + .HasColumnName("id_cluster"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("state") + .HasComment("0 - неизвестно, 1 - в работе, 2 - завершена"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdWellType") + .HasColumnType("integer") + .HasColumnName("id_well_type"); + + b.Property("Latitude") + .HasColumnType("double precision") + .HasColumnName("latitude"); + + b.Property("Longitude") + .HasColumnType("double precision") + .HasColumnName("longitude"); + + b.Property("Timezone") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("timezone") + .HasComment("Смещение часового пояса от UTC"); + + b.HasKey("Id"); + + b.HasIndex("IdCluster"); + + b.HasIndex("IdTelemetry") + .IsUnique(); + + b.HasIndex("IdWellType"); + + b.ToTable("t_well"); + + b.HasComment("скважины"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellComposite", b => + { + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины получателя"); + + b.Property("IdWellSrc") + .HasColumnType("integer") + .HasColumnName("id_well_src") + .HasComment("Id скважины композита"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_well_section_type") + .HasComment("Id тип секции композита"); + + b.HasKey("IdWell", "IdWellSrc", "IdWellSectionType"); + + b.HasIndex("IdWellSectionType"); + + b.HasIndex("IdWellSrc"); + + b.ToTable("t_well_composite"); + + b.HasComment("Композитная скважина"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellFinalDocument", b => + { + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category"); + + b.HasKey("IdWell", "IdUser", "IdCategory") + .HasName("t_well_final_documents_pk"); + + b.HasIndex("IdCategory"); + + b.HasIndex("IdUser"); + + b.ToTable("t_well_final_documents"); + + b.HasComment("Дело скважины"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CategoryInfo") + .HasColumnType("text") + .HasColumnName("category_info") + .HasComment("Доп. информация к выбраной категории"); + + b.Property("Comment") + .HasColumnType("text") + .HasColumnName("comment") + .HasComment("Комментарий"); + + b.Property("DateStart") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_start") + .HasComment("Дата начала операции"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина после завершения операции, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина на начало операции, м"); + + b.Property("DurationHours") + .HasColumnType("double precision") + .HasColumnName("duration_hours") + .HasComment("Продолжительность, часы"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category") + .HasComment("Id категории операции"); + + b.Property("IdPlan") + .HasColumnType("integer") + .HasColumnName("id_plan") + .HasComment("Id плановой операции"); + + b.Property("IdType") + .HasColumnType("integer") + .HasColumnName("id_type") + .HasComment("0 = План или 1 = Факт"); + + b.Property("IdUser") + .HasColumnType("integer"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_well_section_type") + .HasComment("Id тип секции скважины"); + + b.Property("LastUpdateDate") + .HasColumnType("timestamp with time zone"); + + b.HasKey("Id"); + + b.HasIndex("DateStart"); + + b.HasIndex("DepthEnd"); + + b.HasIndex("IdCategory"); + + b.HasIndex("IdPlan"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_well_operation"); + + b.HasComment("Данные по операциям на скважине"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperationCategory", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("IdParent") + .HasColumnType("integer") + .HasColumnName("id_parent") + .HasComment("id родительской категории"); + + b.Property("KeyValueName") + .HasMaxLength(32) + .HasColumnType("character varying(32)") + .HasColumnName("key_value_name") + .HasComment("Название ключевого показателя операции"); + + b.Property("KeyValueUnits") + .HasMaxLength(16) + .HasColumnType("character varying(16)") + .HasColumnName("key_value_units") + .HasComment("Единицы измерения ключевого показателя операции"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name") + .HasComment("Название категории операции"); + + b.HasKey("Id"); + + b.HasIndex("IdParent"); + + b.ToTable("t_well_operation_category"); + + b.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("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Caption") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("caption") + .HasComment("Название"); + + b.Property("Order") + .HasColumnType("real") + .HasColumnName("order") + .HasComment("Порядок"); + + b.HasKey("Id"); + + b.ToTable("t_well_section_type"); + + b.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.WellType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Caption") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("caption") + .HasComment("Название"); + + b.HasKey("Id"); + + b.ToTable("t_well_type"); + + b.HasComment("конструкция скважины"); + + b.HasData( + new + { + Id = 1, + Caption = "Наклонно-направленная" + }, + new + { + Id = 2, + Caption = "Горизонтальная" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.RecordBase", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("Actcod") + .HasColumnType("smallint") + .HasColumnName("ACTCOD"); + + b.Property("Date") + .HasColumnType("integer") + .HasColumnName("DATE"); + + b.Property("Recid") + .HasColumnType("smallint") + .HasColumnName("RECID"); + + b.Property("Seqid") + .HasColumnType("integer") + .HasColumnName("SEQID"); + + b.Property("Stknum") + .HasColumnType("smallint") + .HasColumnName("STKNUM"); + + b.Property("Time") + .HasColumnType("integer") + .HasColumnName("TIME"); + + b.Property("Wellid") + .HasColumnType("text") + .HasColumnName("WELLID"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_wits_base"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record1", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Blkpos") + .HasColumnType("real") + .HasColumnName("BLKPOS"); + + b.Property("Chkp") + .HasColumnType("real") + .HasColumnName("CHKP"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptbitv") + .HasColumnType("real") + .HasColumnName("DEPTBITV"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptretm") + .HasColumnType("real") + .HasColumnName("DEPTRETM"); + + b.Property("Deptvert") + .HasColumnType("real") + .HasColumnName("DEPTVERT"); + + b.Property("Gasa") + .HasColumnType("real") + .HasColumnName("GASA"); + + b.Property("Hkla") + .HasColumnType("real") + .HasColumnName("HKLA"); + + b.Property("Hklx") + .HasColumnType("real") + .HasColumnName("HKLX"); + + b.Property("Lagstks") + .HasColumnType("smallint") + .HasColumnName("LAGSTKS"); + + b.Property("Mcia") + .HasColumnType("real") + .HasColumnName("MCIA"); + + b.Property("Mcoa") + .HasColumnType("real") + .HasColumnName("MCOA"); + + b.Property("Mdia") + .HasColumnType("real") + .HasColumnName("MDIA"); + + b.Property("Mdoa") + .HasColumnType("real") + .HasColumnName("MDOA"); + + b.Property("Mfia") + .HasColumnType("real") + .HasColumnName("MFIA"); + + b.Property("Mfoa") + .HasColumnType("real") + .HasColumnName("MFOA"); + + b.Property("Mfop") + .HasColumnType("smallint") + .HasColumnName("MFOP"); + + b.Property("Mtia") + .HasColumnType("real") + .HasColumnName("MTIA"); + + b.Property("Mtoa") + .HasColumnType("real") + .HasColumnName("MTOA"); + + b.Property("Ropa") + .HasColumnType("real") + .HasColumnName("ROPA"); + + b.Property("Rpma") + .HasColumnType("smallint") + .HasColumnName("RPMA"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Spm1") + .HasColumnType("smallint") + .HasColumnName("SPM1"); + + b.Property("Spm2") + .HasColumnType("smallint") + .HasColumnName("SPM2"); + + b.Property("Spm3") + .HasColumnType("smallint") + .HasColumnName("SPM3"); + + b.Property("Sppa") + .HasColumnType("real") + .HasColumnName("SPPA"); + + b.Property("Stkc") + .HasColumnType("integer") + .HasColumnName("STKC"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.Property("Torqa") + .HasColumnType("real") + .HasColumnName("TORQA"); + + b.Property("Torqx") + .HasColumnType("real") + .HasColumnName("TORQX"); + + b.Property("Tvolact") + .HasColumnType("real") + .HasColumnName("TVOLACT"); + + b.Property("Tvolcact") + .HasColumnType("real") + .HasColumnName("TVOLCACT"); + + b.Property("Woba") + .HasColumnType("real") + .HasColumnName("WOBA"); + + b.Property("Wobx") + .HasColumnType("real") + .HasColumnName("WOBX"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_1"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record50", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("DeptmeasGdpMc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_GDP_mc"); + + b.Property("DeptmeasMcrstat") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_MCRSTAT"); + + b.Property("DeptmeasRa33Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33_mc"); + + b.Property("DeptmeasRa33f2Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33F2_mc"); + + b.Property("DeptmeasRa33f4Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33F4_mc"); + + b.Property("DeptmeasRp33Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33_mc"); + + b.Property("DeptmeasRp33f2Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33F2_mc"); + + b.Property("DeptmeasRp33f4Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33F4_mc"); + + b.Property("DeptmeasSlvlMc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_SLVL_mc"); + + b.Property("GdpMc") + .HasColumnType("real") + .HasColumnName("GDP_mc"); + + b.Property("Mcrstat") + .HasColumnType("real") + .HasColumnName("MCRSTAT"); + + b.Property("Ra33Mc") + .HasColumnType("real") + .HasColumnName("RA33_mc"); + + b.Property("Ra33f2Mc") + .HasColumnType("real") + .HasColumnName("RA33F2_mc"); + + b.Property("Ra33f4Mc") + .HasColumnType("real") + .HasColumnName("RA33F4_mc"); + + b.Property("Rp33Mc") + .HasColumnType("real") + .HasColumnName("RP33_mc"); + + b.Property("Rp33f2Mc") + .HasColumnType("real") + .HasColumnName("RP33F2_mc"); + + b.Property("Rp33f4Mc") + .HasColumnType("real") + .HasColumnName("RP33F4_mc"); + + b.Property("SlvlMc") + .HasColumnType("real") + .HasColumnName("SLVL_mc"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_50"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record60", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Btot") + .HasColumnType("real") + .HasColumnName("Btot"); + + b.Property("Bx") + .HasColumnType("real") + .HasColumnName("Bx"); + + b.Property("By") + .HasColumnType("real") + .HasColumnName("By"); + + b.Property("Bz") + .HasColumnType("real") + .HasColumnName("Bz"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Gtot") + .HasColumnType("real") + .HasColumnName("Gtot"); + + b.Property("Gx") + .HasColumnType("real") + .HasColumnName("Gx"); + + b.Property("Gy") + .HasColumnType("real") + .HasColumnName("Gy"); + + b.Property("Gz") + .HasColumnType("real") + .HasColumnName("Gz"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_60"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record61", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Att06h") + .HasColumnType("real") + .HasColumnName("ATT06H"); + + b.Property("Att06l") + .HasColumnType("real") + .HasColumnName("ATT06L"); + + b.Property("Att10h") + .HasColumnType("real") + .HasColumnName("ATT10H"); + + b.Property("Att10l") + .HasColumnType("real") + .HasColumnName("ATT10L"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Phl1f1") + .HasColumnType("real") + .HasColumnName("PHL1F1"); + + b.Property("Phl1f2") + .HasColumnType("real") + .HasColumnName("PHL1F2"); + + b.Property("Phl2f1") + .HasColumnType("real") + .HasColumnName("PHL2F1"); + + b.Property("Phl2f2") + .HasColumnType("real") + .HasColumnName("PHL2F2"); + + b.Property("Status") + .HasColumnType("real") + .HasColumnName("Status"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_61"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record7", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptsvym") + .HasColumnType("real") + .HasColumnName("DEPTSVYM"); + + b.Property("Deptsvyv") + .HasColumnType("real") + .HasColumnName("DEPTSVYV"); + + b.Property("Passnum") + .HasColumnType("smallint") + .HasColumnName("PASSNUM"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Svyazc") + .HasColumnType("real") + .HasColumnName("SVYAZC"); + + b.Property("Svyazu") + .HasColumnType("real") + .HasColumnName("SVYAZU"); + + b.Property("Svydls") + .HasColumnType("real") + .HasColumnName("SVYDLS"); + + b.Property("Svyew") + .HasColumnType("real") + .HasColumnName("SVYEW"); + + b.Property("Svygtf") + .HasColumnType("real") + .HasColumnName("SVYGTF"); + + b.Property("Svyinc") + .HasColumnType("real") + .HasColumnName("SVYINC"); + + b.Property("Svymtf") + .HasColumnType("real") + .HasColumnName("SVYMTF"); + + b.Property("Svyns") + .HasColumnType("real") + .HasColumnName("SVYNS"); + + b.Property("Svytype") + .HasColumnType("text") + .HasColumnName("SVYTYPE"); + + b.Property("Svywalk") + .HasColumnType("real") + .HasColumnName("SVYWALK"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_7"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record8", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptbitv") + .HasColumnType("real") + .HasColumnName("DEPTBITV"); + + b.Property("Deptcalm") + .HasColumnType("real") + .HasColumnName("DEPTCALM"); + + b.Property("Deptcalv") + .HasColumnType("real") + .HasColumnName("DEPTCALV"); + + b.Property("Deptfdm") + .HasColumnType("real") + .HasColumnName("DEPTFDM"); + + b.Property("Deptfdv") + .HasColumnType("real") + .HasColumnName("DEPTFDV"); + + b.Property("Deptgr1m") + .HasColumnType("real") + .HasColumnName("DEPTGR1M"); + + b.Property("Deptgr1v") + .HasColumnType("real") + .HasColumnName("DEPTGR1V"); + + b.Property("Deptgr2m") + .HasColumnType("real") + .HasColumnName("DEPTGR2M"); + + b.Property("Deptgr2v") + .HasColumnType("real") + .HasColumnName("DEPTGR2V"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptp1m") + .HasColumnType("real") + .HasColumnName("DEPTP1M"); + + b.Property("Deptp1v") + .HasColumnType("real") + .HasColumnName("DEPTP1V"); + + b.Property("Deptp2m") + .HasColumnType("real") + .HasColumnName("DEPTP2M"); + + b.Property("Deptp2v") + .HasColumnType("real") + .HasColumnName("DEPTP2V"); + + b.Property("Deptrs1m") + .HasColumnType("real") + .HasColumnName("DEPTRS1M"); + + b.Property("Deptrs1v") + .HasColumnType("real") + .HasColumnName("DEPTRS1V"); + + b.Property("Deptrs2m") + .HasColumnType("real") + .HasColumnName("DEPTRS2M"); + + b.Property("Deptrs2v") + .HasColumnType("real") + .HasColumnName("DEPTRS2V"); + + b.Property("Deptvert") + .HasColumnType("real") + .HasColumnName("DEPTVERT"); + + b.Property("Mclp") + .HasColumnType("real") + .HasColumnName("MCLP"); + + b.Property("Mfd") + .HasColumnType("real") + .HasColumnName("MFD"); + + b.Property("Mffp") + .HasColumnType("real") + .HasColumnName("MFFP"); + + b.Property("Mfpp") + .HasColumnType("real") + .HasColumnName("MFPP"); + + b.Property("Mfrann") + .HasColumnType("real") + .HasColumnName("MFRANN"); + + b.Property("Mfrpipe") + .HasColumnType("real") + .HasColumnName("MFRPIPE"); + + b.Property("Mftann") + .HasColumnType("real") + .HasColumnName("MFTANN"); + + b.Property("Mftpipe") + .HasColumnType("real") + .HasColumnName("MFTPIPE"); + + b.Property("Mg1") + .HasColumnType("real") + .HasColumnName("MG1"); + + b.Property("Mg1c") + .HasColumnType("real") + .HasColumnName("MG1C"); + + b.Property("Mg2") + .HasColumnType("real") + .HasColumnName("MG2"); + + b.Property("Mg2c") + .HasColumnType("real") + .HasColumnName("MG2C"); + + b.Property("Mpo1") + .HasColumnType("real") + .HasColumnName("MPO1"); + + b.Property("Mpo2") + .HasColumnType("real") + .HasColumnName("MPO2"); + + b.Property("Mr1") + .HasColumnType("real") + .HasColumnName("MR1"); + + b.Property("Mr1c") + .HasColumnType("real") + .HasColumnName("MR1C"); + + b.Property("Mr2") + .HasColumnType("real") + .HasColumnName("MR2"); + + b.Property("Mr2c") + .HasColumnType("real") + .HasColumnName("MR2C"); + + b.Property("Passnum") + .HasColumnType("smallint") + .HasColumnName("PASSNUM"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Spare6") + .HasColumnType("real") + .HasColumnName("SPARE6"); + + b.Property("Spare7") + .HasColumnType("real") + .HasColumnName("SPARE7"); + + b.Property("Spare8") + .HasColumnType("real") + .HasColumnName("SPARE8"); + + b.Property("Spare9") + .HasColumnType("real") + .HasColumnName("SPARE9"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_8"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Cluster", b => + { + b.HasOne("AsbCloudDb.Model.Deposit", "Deposit") + .WithMany("Clusters") + .HasForeignKey("IdDeposit") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_cluster_t_deposit_id_fk"); + + b.Navigation("Deposit"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Company", b => + { + b.HasOne("AsbCloudDb.Model.CompanyType", "CompanyType") + .WithMany("Companies") + .HasForeignKey("IdCompanyType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("CompanyType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Contact", b => + { + b.HasOne("AsbCloudDb.Model.CompanyType", "CompanyType") + .WithMany("Contacts") + .HasForeignKey("IdCompanyType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("Contacts") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("CompanyType"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DailyReport.DailyReport", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DetectedOperation", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.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.DrillTest", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + 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.PlannedTrajectory", 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.ProcessMaps.ProcessMapWellDrilling", 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.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMaps.ProcessMapWellReam", 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.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + + 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.Subsystems.SubsystemOperationTime", b => + { + b.HasOne("AsbCloudDb.Model.Subsystems.Subsystem", "Subsystem") + .WithMany() + .HasForeignKey("IdSubsystem") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Subsystem"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaub", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("DataSaub") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_data_saub_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSpin", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("DataSpin") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_data_spin_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryEvent", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Events") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_event_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryMessage", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Messages") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_messages_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryUser", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Users") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_user_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.HasOne("AsbCloudDb.Model.Company", "Company") + .WithMany("Users") + .HasForeignKey("IdCompany") + .OnDelete(DeleteBehavior.SetNull) + .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.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/20231123085551_Add_New_WellOperationCategories.cs b/AsbCloudDb/Migrations/20231123085551_Add_New_WellOperationCategories.cs new file mode 100644 index 00000000..2d6bebc5 --- /dev/null +++ b/AsbCloudDb/Migrations/20231123085551_Add_New_WellOperationCategories.cs @@ -0,0 +1,94 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace AsbCloudDb.Migrations +{ + public partial class Add_New_WellOperationCategories : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.InsertData( + table: "t_well_operation_category", + columns: new[] { "id", "id_parent", "key_value_name", "key_value_units", "name" }, + values: new object[,] + { + { 4018, 3002, "dT", "мин", "Крепление" }, + { 5102, 4018, "dT", "мин", "Спуск пакера" }, + { 5103, 4011, "dT", "мин", "Запись гамма-каратожа" }, + { 5104, 4013, "dT", "мин", "Шаблонирование спуск БИ" }, + { 5105, 4018, "dT", "мин", "Сборка клин-отклонителя" }, + { 5106, 4018, "dT", "мин", "Ориентирование и посадка клина-отклонителя" }, + { 5107, 4018, "dT", "мин", "Протяжка подъемного патрубка подвески" }, + { 5108, 4018, "dT", "мин", "Подъем клина-отклонителя" }, + { 5109, 4018, "dT", "мин", "Стыковка стингера с хвостовиком основного ствола" }, + { 5110, 4018, "dT", "мин", "Ориентирование и установка стыковочного узла хвостовика" }, + { 5111, 4001, "МСП", "м/ч", "Бурение с отбором керна" }, + { 5112, 4018, "dT", "мин", "Работа пакером в обсадной колонне" } + }); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DeleteData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 4018); + + migrationBuilder.DeleteData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5102); + + migrationBuilder.DeleteData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5103); + + migrationBuilder.DeleteData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5104); + + migrationBuilder.DeleteData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5105); + + migrationBuilder.DeleteData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5106); + + migrationBuilder.DeleteData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5107); + + migrationBuilder.DeleteData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5108); + + migrationBuilder.DeleteData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5109); + + migrationBuilder.DeleteData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5110); + + migrationBuilder.DeleteData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5111); + + migrationBuilder.DeleteData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5112); + } + } +} diff --git a/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs b/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs index d430d37f..898ce596 100644 --- a/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs +++ b/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs @@ -5986,6 +5986,14 @@ namespace AsbCloudDb.Migrations Name = "Спуск обсадной колонны" }, new + { + Id = 4018, + IdParent = 3002, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Крепление" + }, + new { Id = 4007, IdParent = 3002, @@ -6872,6 +6880,94 @@ namespace AsbCloudDb.Migrations 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 = "Работа пакером в обсадной колонне" }); }); diff --git a/AsbCloudDb/Model/DefaultData/WellOperationCategories.xlsx b/AsbCloudDb/Model/DefaultData/WellOperationCategories.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..bdb6af225cba6420cc9f330d8ec7c96e42ee86d0 GIT binary patch literal 17331 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%0DJv z?Sb3=olP8-O`M%y_y05gcFoLSXkmMjG%mHH02q9+c>FYBNC#tU$_!99#E}Mmdyt;x zP96v@#^9)@dMlhuK`tAQgCn$0-v^z(N2hZSQtwL6?~nJi@s(r(K)wBrlOxNE|E%R; z|G60-o*xN?STxr01NO(QsasSs*Rf9#X`l4xrYL@tcG~Y>Gvcz1Z9WFY+s@v9cv6Y* z6ex0H=)rDza1pYpk^Ke``{osMTJ~^)UEjJgwv85f?`V3pGW<=tM3y2lQL>WbQI+~S z1_ohcp0m??m~7GVkaNf^t5f4Yp$$Q!#i1!{x zXzgHX=;xHQ3!_z<<#{-F@r%kSvqzrs$1fKOZ2ICISbddWk-<4#+Z7qr@IHC9*UZWr zvYl4deWwb^W~%G?d~5#XSHFi)W0tmXafVgDc0yUarrmtAbh8N^N#UC&2sk9jwe+J;X z70Ta>j)A@X|J58IW&e0(CCI)m--X;ldO`<0q&eOP_2gnh$VJkE81Z@E;%bOxHPY)Lc3x~-1kWmJae#d)a_jzL`IA0PsCKxCj&rV z68scqaO@)D+H|C;a0nt0zU>n+X2Id*uy9*1X-A+HV~@crdg}i$=#mp^kj{kN<27?h zn~Gb_-SAg=1J7>)uwT60Eoo?fK!xaB>wcSj9%C2_hq3QGej?7S4i3VftpCz)+a>2P zUS%y(Oq-V)x8d~${&bY{{G$M2CvFj=67RkKz+tb*!C%WvpkVaCb4~yG9}oN)-9O*| z!@nU=kp5SIe?1cY=Z&xLCBPK=+X3m{Z~WI|qJO_}47fq+zaJX?9q0G6gMT5t0N0&= zJ4yKa&A%V^`s?OM_+K~w+tIJz5q{s(_7}oFaF5qN%>Pe2+w z_B+7u%kF;x%#-}#(?1vCf4}wjWyim6MWOiJnZFhxe@FS(2e-d4famGBKtTTOG4A)< ze;chG;W>wiIlfQ0k?txx}`@(R+BKn;R`AOL?TfHHOy He7*XAu8NXC literal 0 HcmV?d00001 diff --git a/AsbCloudDb/Model/WellOperationCategory.cs b/AsbCloudDb/Model/WellOperationCategory.cs index 8829011e..28acc79e 100644 --- a/AsbCloudDb/Model/WellOperationCategory.cs +++ b/AsbCloudDb/Model/WellOperationCategory.cs @@ -253,6 +253,7 @@ namespace AsbCloudDb.Model new () {Id = IdBuilding, IdParent = 3000, Name = "Наращивание", KeyValueName = "dT", KeyValueUnits = "мин" }, new () {Id = IdSPO , IdParent = 3001, Name = "СПО", KeyValueName = "dT", KeyValueUnits = "мин" }, new () {Id = IdCasingRunning, IdParent = 3002, Name = "Спуск обсадной колонны", KeyValueName = "dT", KeyValueUnits = "мин" }, + new () {Id = 4018, IdParent = 3002, Name = "Крепление", KeyValueName = "dT", KeyValueUnits = "мин"}, new () {Id = IdCementing, IdParent = 3002, Name = "Цементирование", KeyValueName = "dT", KeyValueUnits = "мин" }, new () {Id = IdAuxiliaryWorkFastening, IdParent = 3002, Name = "Вспомогательные работы при креплении", KeyValueName = "dT", KeyValueUnits = "мин" }, new () {Id = IdAssemblyOrDisassemblyGIS, IdParent = 3003, Name = "Сборка/разборка приборов ГИС", KeyValueName = "dT", KeyValueUnits = "мин" }, @@ -370,6 +371,17 @@ namespace AsbCloudDb.Model new () {Id = 5099, IdParent = 4013, Name = "Подготовка ствола скважины. Перезапись ГК в интервале установки КО.", KeyValueName = "dT", KeyValueUnits = "мин" }, new () {Id = 5100, IdParent = 4013, Name = "Смена рабочего переводника ВСП", KeyValueName = "dT", KeyValueUnits = "мин" }, new () {Id = 5101, IdParent = 4014, Name = "Ремонт", KeyValueName = "dT", KeyValueUnits = "мин" }, + new () {Id = 5102, IdParent = 4018, Name = "Спуск пакера", KeyValueName = "dT", KeyValueUnits = "мин"}, + new () {Id = 5103, IdParent = 4011, Name = "Запись гамма-каратожа", KeyValueName = "dT", KeyValueUnits = "мин"}, + new () {Id = 5104, IdParent = 4013, Name = "Шаблонирование спуск БИ", KeyValueName = "dT", KeyValueUnits = "мин"}, + new () {Id = 5105, IdParent = 4018, Name = "Сборка клин-отклонителя", KeyValueName = "dT", KeyValueUnits = "мин"}, + new () {Id = 5106, IdParent = 4018, Name = "Ориентирование и посадка клина-отклонителя", KeyValueName = "dT", KeyValueUnits = "мин"}, + new () {Id = 5107, IdParent = 4018, Name = "Протяжка подъемного патрубка подвески", KeyValueName = "dT", KeyValueUnits = "мин"}, + new () {Id = 5108, IdParent = 4018, Name = "Подъем клина-отклонителя", KeyValueName = "dT", KeyValueUnits = "мин"}, + new () {Id = 5109, IdParent = 4018, Name = "Стыковка стингера с хвостовиком основного ствола", KeyValueName = "dT", KeyValueUnits = "мин"}, + new () {Id = 5110, IdParent = 4018, Name = "Ориентирование и установка стыковочного узла хвостовика", KeyValueName = "dT", KeyValueUnits = "мин"}, + new () {Id = 5111, IdParent = 4001, Name = "Бурение с отбором керна", KeyValueName = "МСП", KeyValueUnits = "м/ч"}, + new () {Id = 5112, IdParent = 4018, Name = "Работа пакером в обсадной колонне", KeyValueName = "dT", KeyValueUnits = "мин"} }; #endregion diff --git a/AsbCloudInfrastructure/Services/WellOperationImport/Files/Dictionaries/Operations.txt b/AsbCloudInfrastructure/Services/WellOperationImport/Files/Dictionaries/Operations.txt index 7bad4814..68bc28c7 100644 --- a/AsbCloudInfrastructure/Services/WellOperationImport/Files/Dictionaries/Operations.txt +++ b/AsbCloudInfrastructure/Services/WellOperationImport/Files/Dictionaries/Operations.txt @@ -187,4 +187,15 @@ Cборка хвостовика=Сборка хвостовика 114мм (со Выброс СБТ 127 (2100м), оставляется СБТ-127 (700 м) на след скв. ЗБР, чистка емкостей, вывоз БР.=Подъем БИ с выбросом на мостки Монтаж ПВО повторный (смена плашек ПВО). ЗБР, чистка емкостей, вывоз БР=Монтаж ПВО Опрессовка ПВО (200 атм), глухие=Опрессовка ПВО -Сборка ТБТ на 2 этапе (кол-во по согласованию с ЦУСС). Подъем/спуск БИ со сборкой ТБТ 102 мм. Опрессовка БИ (1.5 ч)=Сборка и спуск ТБТ \ No newline at end of file +Сборка ТБТ на 2 этапе (кол-во по согласованию с ЦУСС). Подъем/спуск БИ со сборкой ТБТ 102 мм. Опрессовка БИ (1.5 ч)=Сборка и спуск ТБТ +Спуск пакера=Спуск пакера +Запись гамма-каратожа=Запись гамма-каратожа +Шаблонирование спуск БИ=Шаблонирование спуск БИ +Сборка клин-отклонителя=Сборка клин-отклонителя +Ориентирование и посадка клина-отклонителя=Ориентирование и посадка клина-отклонителя +Протяжка подъемного патрубка подвески=Протяжка подъемного патрубка подвески +Подъем клина-отклонителя=Подъем клина-отклонителя +Стыковка стингера с хвостовиком основного ствола=Стыковка стингера с хвостовиком основного ствола +Ориентирование и установка стыковочного узла хвостовика=Ориентирование и установка стыковочного узла хвостовика +Бурение с отбором керна=Бурение с отбором керна +Работа пакером в обсадной колонне=Работа пакером в обсадной колонне \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/WellOperationImport/Files/WellOperationImportTemplate.xlsx b/AsbCloudInfrastructure/Services/WellOperationImport/Files/WellOperationImportTemplate.xlsx index 686f6f861af07242b0fecb124416c9b240ca097a..48e19c6ceb316a9c840924b54c3d0fcf7ad7f777 100644 GIT binary patch literal 75874 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 z ze|gY9K0b6*@OkU`dCh-@jnF|K%}oD4T2#WQALEY-VOND+{h)u>2^a9YUBK??%tn_{ zp=PHvFl*+(=SN|Zq2Rbw!!gi?QkS2{fKR79TC6|hFYo>5r%R0pK5sogt$@mT#kuaI zbkN5#(;xCG5nlVpxc7x!6?XN5{^ccH!2hZRJc)SBFv9=VCf>cXCG3K*3qr!@qha%2wVfvqkD0uK?B{Xd(=f?B;Dzyl@b1l7^LD0R z9=o|Q>ZIgrgyf0Sci>aNcTM96sRkj{@Rq{U`SHfimaq%LF8sR)pTXgp zntMkpZqF|4G>upglJ?b(4F{i`!p%Ii(KXE|UV(o8^EMGRrh2EF&+)X>If8Yyr;Tcf zf-PIm2$oEDtc+FvP4?#2jNhQFfqe2n@2r@wu*IeMMNtSXY7iJ(c5-{}^D@e9gMLXlL2kqP*&@kAGbo2&tI~z<5Aag?MPxl*J1I!dIm2y?8Y=OXY|9 z6=_ffdS86c`=0j+5Ql`9{I5eH{v8yRaA61+hETqlGzsosz5TM(0_DzDOxttw!I~^A z29y%o>PF38bDi_E={h7=93S!aI9NQ1ask}7(o)*P0i9FVn)DcIfT(9H<%PTYL=;_A<@_p|SOd!)O*U$C#|hhg>| zK?AS0;ats8Q;YVFs2?4J_S_NF&a2t;qqn7Fvv`5j)pnrOT=QD3IWX+LS`!th_bL6C zWi{pK<9q6sWld?xhm&Kym694t9EJuS4$M}!DpSartC6&^i&rS#&MIVd^LPG?%C3nn zGp%SWwCgFGQ_)E8-jJj0*)w0#!dqp#Ml3Q%BmA*cT8&%3p~dhVc4N!>y0$vyKk9aO zb_ZFoS2ySQeN&Xo;yaynvNCtv^;5Q)wfAzFxr+01GP^GxYAC4VD&OS<+gfeBEgn;M zM0xwY=9;H1PTp7h+&W7fE_*B&bDSUZ`A*l{$wAE($)%iq3I*GSdkS5KTz(gH2rfk< zQ8m9ktIa4VWMs(PG$|-mpR3v5mgm`3!m4^yAG#^DVUVT6OK-``D<~`tD|ixI>ltl@ zK4uqGUH?|?wvxahbxuioVV%Q&!&H;ADh4%c+dS-4?%b1A(6myISr)9QxNpAZsSWik zRz>w-7OO;FZQ5P$ZwI1`54GGWuiFTv_A!# z=bul|ma0`Xq2T#s(Y?LOXxGeLm&S@9Rvn zv2k%$8u_qdyej$pG%dw6Wa|gYj6n;%iA}~e_tOXD???x gDlcxlm#c`g#;r2e(*NLLWJ&Oc4cd6U6aMS}09+?fEdT%j