From 396ada16c9f715555bb0b9d8158ad2cd393c21b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9E=D0=BB=D1=8F=20=D0=91=D0=B8=D0=B7=D1=8E=D0=BA=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0?= Date: Wed, 3 Apr 2024 19:41:35 +0500 Subject: [PATCH 1/9] =?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=D1=80=D1=8F=D0=B4=20=D0=BA=D0=B0=D1=82=D0=B5?= =?UTF-8?q?=D0=B3=D0=BE=D1=80=D0=B8=D0=B9,=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BA=D0=B0=D1=82=D0=B5=D0=B3?= =?UTF-8?q?=D0=BE=D1=80=D0=B8=D0=B9=20"=D0=B1=D1=83=D1=80=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D1=80=D0=BE=D1=82=D0=BE=D1=80=D0=BE=D0=BC"=20?= =?UTF-8?q?=D0=B8=20"=D0=B1=D1=83=D1=80=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=81?= =?UTF-8?q?=D0=BB=D0=B0=D0=B9=D0=B4=D0=BE=D0=BC"=20=D0=BD=D0=B0=20=D0=BA?= =?UTF-8?q?=D0=B0=D1=82=D0=B5=D0=B3=D0=BE=D1=80=D0=B8=D1=8E=20"=D0=B1?= =?UTF-8?q?=D1=83=D1=80=D0=B5=D0=BD=D0=B8=D0=B5"=20=D0=B2=20=D0=93=D0=93?= =?UTF-8?q?=D0=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...Add_NewWellOperationCategories.Designer.cs | 9428 +++++++++++++++++ ...03143143_Add_NewWellOperationCategories.cs | 60 + .../AsbCloudDbContextModelSnapshot.cs | 175 +- AsbCloudDb/Model/WellOperationCategory.cs | 17 +- 4 files changed, 9612 insertions(+), 68 deletions(-) create mode 100644 AsbCloudDb/Migrations/20240403143143_Add_NewWellOperationCategories.Designer.cs create mode 100644 AsbCloudDb/Migrations/20240403143143_Add_NewWellOperationCategories.cs diff --git a/AsbCloudDb/Migrations/20240403143143_Add_NewWellOperationCategories.Designer.cs b/AsbCloudDb/Migrations/20240403143143_Add_NewWellOperationCategories.Designer.cs new file mode 100644 index 00000000..3f2746c7 --- /dev/null +++ b/AsbCloudDb/Migrations/20240403143143_Add_NewWellOperationCategories.Designer.cs @@ -0,0 +1,9428 @@ +// +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("20240403143143_Add_NewWellOperationCategories")] + partial class Add_NewWellOperationCategories + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .UseCollation("Russian_Russia.1251") + .HasAnnotation("ProductVersion", "8.0.3") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.HasPostgresExtension(modelBuilder, "adminpack"); + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("AsbCloudDb.Model.Cluster", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Caption") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("caption") + .HasComment("Название"); + + b.Property("IdDeposit") + .HasColumnType("integer") + .HasColumnName("id_deposit"); + + b.Property("Latitude") + .HasColumnType("double precision") + .HasColumnName("latitude"); + + b.Property("Longitude") + .HasColumnType("double precision") + .HasColumnName("longitude"); + + b.Property("Timezone") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("timezone") + .HasComment("Смещение часового пояса от UTC"); + + b.HasKey("Id"); + + b.HasIndex("IdDeposit"); + + b.ToTable("t_cluster", t => + { + t.HasComment("Кусты"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Company", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Caption") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("caption"); + + b.Property("IdCompanyType") + .HasMaxLength(255) + .HasColumnType("integer") + .HasColumnName("id_company_type") + .HasComment("вид деятельности"); + + b.HasKey("Id"); + + b.HasIndex("IdCompanyType"); + + b.ToTable("t_company"); + + b.HasData( + new + { + Id = 1, + Caption = "ООО \"АСБ\"", + IdCompanyType = 3 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.CompanyType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Caption") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("caption"); + + b.Property("IsContact") + .HasColumnType("boolean") + .HasColumnName("is_contact"); + + b.Property("Order") + .HasColumnType("integer") + .HasColumnName("order"); + + b.HasKey("Id"); + + b.ToTable("t_company_type"); + + b.HasData( + new + { + Id = 1, + Caption = "Недропользователь", + IsContact = true, + Order = 3 + }, + new + { + Id = 2, + Caption = "Буровой подрядчик", + IsContact = true, + Order = 2 + }, + new + { + Id = 3, + Caption = "Сервис автоматизации бурения", + IsContact = true, + Order = 0 + }, + new + { + Id = 4, + Caption = "Сервис по ГТИ", + IsContact = true, + Order = 6 + }, + new + { + Id = 5, + Caption = "Растворный сервис", + IsContact = true, + Order = 4 + }, + new + { + Id = 6, + Caption = "Сервис по ННБ", + IsContact = true, + Order = 5 + }, + new + { + Id = 7, + Caption = "Служба супервайзинга", + IsContact = false, + Order = 1 + }, + new + { + Id = 9, + Caption = "Сервис по цементированию", + IsContact = true, + Order = 7 + }, + new + { + Id = 11, + Caption = "Дизельный сервис", + IsContact = false, + Order = 9 + }, + new + { + Id = 12, + Caption = "Сервис по обслуживанию верхних силовых приводов", + IsContact = true, + Order = 8 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Contact", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Company") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("company") + .HasComment("компания"); + + b.Property("Email") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("email") + .HasComment("email"); + + b.Property("FullName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("full_name") + .HasComment("ФИО"); + + b.Property("IdCompanyType") + .HasMaxLength(255) + .HasColumnType("integer") + .HasColumnName("id_company_type") + .HasComment("вид деятельности"); + + b.Property("IdWell") + .HasMaxLength(255) + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("ключ скважины"); + + b.Property("Phone") + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .HasColumnName("phone") + .HasComment("номер телефона"); + + b.Property("Position") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("position") + .HasComment("должность"); + + b.HasKey("Id"); + + b.HasIndex("IdCompanyType"); + + b.HasIndex("IdWell"); + + b.ToTable("t_contact", t => + { + t.HasComment("Контакты"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DailyReports.DailyReport", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Date") + .HasColumnType("date") + .HasColumnName("date") + .HasComment("Дата формирования отчёта"); + + b.Property("DateLastUpdate") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_last_update") + .HasComment("Дата последнего обновления"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("ID скважины"); + + b.Property("SignBlock") + .HasColumnType("jsonb") + .HasColumnName("sign_block") + .HasComment("Подпись"); + + b.Property("SubsystemBlock") + .HasColumnType("jsonb") + .HasColumnName("subsystem_block") + .HasComment("Наработкой подсистем"); + + b.Property("TimeBalanceBlock") + .HasColumnType("jsonb") + .HasColumnName("time_balance_block") + .HasComment("Баланс времени"); + + b.HasKey("Id"); + + b.HasIndex("IdWell", "Date") + .IsUnique(); + + b.ToTable("t_daily_report", t => + { + t.HasComment("Ежедневные отчёты"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DataSaubStat", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AxialLoad") + .HasColumnType("double precision") + .HasColumnName("axial_load") + .HasComment("Фактическая нагрузка"); + + b.Property("AxialLoadLimitMax") + .HasColumnType("double precision") + .HasColumnName("axial_load_limit_max") + .HasComment("Максимально допустимая нагрузка"); + + b.Property("AxialLoadSp") + .HasColumnType("double precision") + .HasColumnName("axial_load_sp") + .HasComment("Ограничение факт. нагрузки"); + + b.Property("BlockSpeedSp") + .HasColumnType("double precision") + .HasColumnName("block_speed_sp") + .HasComment("Ограничение скорости блока"); + + b.Property("DateEnd") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_end") + .HasComment("Дата и время окончания"); + + b.Property("DateStart") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_start") + .HasComment("Дата и время начала"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина забоя по стволу конечная"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина забоя по стволу начальная"); + + b.Property("EnabledSubsystems") + .HasColumnType("integer") + .HasColumnName("enabled_subsystems") + .HasComment("Флаги подсистем"); + + b.Property("Flow") + .HasColumnType("double precision") + .HasColumnName("flow") + .HasComment("Фактический расход"); + + b.Property("HasOscillation") + .HasColumnType("boolean") + .HasColumnName("has_oscillation") + .HasComment("Наличие или отсутствие осцилляции"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category") + .HasComment("Название автоопределённой операции"); + + b.Property("IdFeedRegulator") + .HasColumnType("smallint") + .HasColumnName("id_feed_regulator") + .HasComment("Работа при достижении ограничения"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry") + .HasComment("Ключ телеметрии"); + + b.Property("Pressure") + .HasColumnType("double precision") + .HasColumnName("pressure") + .HasComment("Давление"); + + b.Property("PressureIdle") + .HasColumnType("double precision") + .HasColumnName("pressure_idle") + .HasComment("Давление холостого хода"); + + b.Property("PressureSp") + .HasColumnType("double precision") + .HasColumnName("pressure_sp") + .HasComment("Ограничение фактического давления"); + + b.Property("RotorSpeed") + .HasColumnType("double precision") + .HasColumnName("rotor_speed") + .HasComment("Фактическая скорость оборотов ВСП"); + + b.Property("RotorTorque") + .HasColumnType("double precision") + .HasColumnName("rotor_torque") + .HasComment("Фактический момент"); + + b.Property("RotorTorqueLimitMax") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_limit_max") + .HasComment("Максимально допустимый момент"); + + b.Property("RotorTorqueSp") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_sp") + .HasComment("Ограничение факт. момента"); + + b.Property("Speed") + .HasColumnType("double precision") + .HasColumnName("speed") + .HasComment("Скорость бурения"); + + b.HasKey("Id"); + + b.HasIndex("IdCategory"); + + b.HasIndex("IdTelemetry"); + + b.ToTable("t_data_saub_stat", t => + { + t.HasComment("Кеш-таблица для хранения данных для РТК-отчета"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Deposit", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Caption") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("caption"); + + b.Property("Latitude") + .HasColumnType("double precision") + .HasColumnName("latitude"); + + b.Property("Longitude") + .HasColumnType("double precision") + .HasColumnName("longitude"); + + b.Property("Timezone") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("timezone") + .HasComment("Смещение часового пояса от UTC"); + + b.HasKey("Id"); + + b.ToTable("t_deposit", t => + { + t.HasComment("Месторождение"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DetectedOperation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("DateEnd") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_end") + .HasComment("Дата начала операции"); + + b.Property("DateStart") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_start") + .HasComment("Дата начала операции"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина после завершения операции, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина на начало операции, м"); + + b.Property("EnabledSubsystems") + .HasColumnType("integer") + .HasColumnName("enabled_subsystems") + .HasComment("флаги включенных подсистем"); + + b.Property("ExtraData") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("extra_data") + .HasComment("доп. инфо по операции"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category") + .HasComment("Id категории операции"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdUsersAtStart") + .HasColumnType("integer") + .HasColumnName("id_user") + .HasComment("Id пользователя по телеметрии на момент начала операции"); + + b.Property("Value") + .HasColumnType("double precision") + .HasColumnName("value") + .HasComment("Ключевой показатель операции"); + + b.HasKey("Id"); + + b.HasIndex("IdCategory"); + + b.HasIndex("IdTelemetry"); + + b.ToTable("t_detected_operation", t => + { + t.HasComment("автоматически определенные операции по телеметрии"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillTest", b => + { + b.Property("Id") + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry") + .HasComment("Идентификатор телеметрии"); + + b.Property("DepthStart") + .HasColumnType("real") + .HasColumnName("depthStart") + .HasComment("Глубина начала"); + + b.Property("Params") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("t_drill_test_params") + .HasComment("Параметры записи drill test"); + + b.Property("TimeStampStart") + .HasColumnType("timestamp with time zone") + .HasColumnName("timestamp_start") + .HasComment("Время начала"); + + b.HasKey("Id", "IdTelemetry"); + + b.HasIndex("IdTelemetry"); + + b.ToTable("t_drill_test", t => + { + t.HasComment("Drill_test"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Driller", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name") + .HasComment("Имя"); + + b.Property("Patronymic") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("patronymic") + .HasComment("Отчество"); + + b.Property("Surname") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("surname") + .HasComment("Фамилия"); + + b.HasKey("Id"); + + b.ToTable("t_driller", t => + { + t.HasComment("Бурильщик"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillingProgramPart", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("IdFileCategory") + .HasColumnType("integer") + .HasColumnName("id_file_category"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well"); + + b.HasKey("Id"); + + b.HasIndex("IdFileCategory"); + + b.HasIndex("IdWell", "IdFileCategory") + .IsUnique(); + + b.ToTable("t_drilling_program_part", t => + { + t.HasComment("части программ бурения"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Faq", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Answer") + .HasColumnType("text") + .HasColumnName("answer") + .HasComment("Текст ответа"); + + b.Property("CounterQuestion") + .HasColumnType("integer") + .HasColumnName("counter_question") + .HasComment("Счетчик повторений вопроса"); + + b.Property("DateAnswer") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_answer") + .HasComment("Дата ответа"); + + b.Property("DateCreatedQuestion") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_created_question") + .HasComment("Дата создания вопроса"); + + b.Property("DateLastEditedQuestion") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_last_edited_question") + .HasComment("Дата последнего редактирования вопроса"); + + b.Property("IdAuthorAnswer") + .HasColumnType("integer") + .HasColumnName("id_author_answer") + .HasComment("id автора ответа"); + + b.Property("IdAuthorQuestion") + .HasColumnType("integer") + .HasColumnName("id_author_question") + .HasComment("id автора вопроса"); + + b.Property("IdReplacementQuestion") + .HasColumnType("integer") + .HasColumnName("id_replacement_question") + .HasComment("Ключ заменяющего вопроса"); + + b.Property("IsFrequently") + .HasColumnType("boolean") + .HasColumnName("is_frequently") + .HasComment("Частый вопрос"); + + b.Property("Question") + .IsRequired() + .HasColumnType("text") + .HasColumnName("question") + .HasComment("Текст вопроса"); + + b.Property("State") + .HasColumnType("integer") + .HasColumnName("state") + .HasComment("Статус вопроса"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthorAnswer"); + + b.HasIndex("IdAuthorQuestion"); + + b.ToTable("t_faq", t => + { + t.HasComment("вопросы пользователей"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileCategory", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name") + .HasComment("Название категории"); + + b.Property("ShortName") + .HasColumnType("text") + .HasColumnName("short_name") + .HasComment("Короткое название категории"); + + b.HasKey("Id"); + + b.ToTable("t_file_category", t => + { + t.HasComment("Категории файлов"); + }); + + b.HasData( + new + { + Id = 1, + Name = "Растворный сервис", + ShortName = "fluidService" + }, + new + { + Id = 2, + Name = "Цементирование", + ShortName = "cement" + }, + new + { + Id = 3, + Name = "ННБ", + ShortName = "nnb" + }, + new + { + Id = 4, + Name = "ГТИ", + ShortName = "gti" + }, + new + { + Id = 5, + Name = "Документы по скважине", + ShortName = "wellDocuments" + }, + new + { + Id = 6, + Name = "Супервайзер", + ShortName = "supervisor" + }, + new + { + Id = 7, + Name = "Мастер", + ShortName = "master" + }, + new + { + Id = 8, + Name = "Долотный сервис", + ShortName = "toolService" + }, + new + { + Id = 9, + Name = "Буровой подрядчик", + ShortName = "drillService" + }, + new + { + Id = 10, + Name = "Сервис по заканчиванию скважины", + ShortName = "closingService" + }, + new + { + Id = 12, + Name = "Рапорт", + ShortName = "report" + }, + new + { + Id = 1000, + Name = "Программа бурения" + }, + new + { + Id = 1001, + Name = "Задание от геологов" + }, + new + { + Id = 1002, + Name = "Профиль ствола скважины (ННБ)" + }, + new + { + Id = 1003, + Name = "Технологические расчеты (ННБ)" + }, + new + { + Id = 1004, + Name = "Долотная программа" + }, + new + { + Id = 1005, + Name = "Программа по растворам" + }, + new + { + Id = 1006, + Name = "Программа геофизических исследований" + }, + new + { + Id = 1007, + Name = "Планы спусков обсадных колонн" + }, + new + { + Id = 1008, + Name = "Программы цементирования обсадных колонн" + }, + new + { + Id = 10000, + Name = "Проект на бурение транспортного и горизонтального участков скважины" + }, + new + { + Id = 10001, + Name = "Программа на бурение транспортного и горизонтального участков скважины" + }, + new + { + Id = 10002, + Name = "Акт о начале бурения" + }, + new + { + Id = 10003, + Name = "План работ спуска и цементирования направления" + }, + new + { + Id = 10004, + Name = "Программа цементирования направления" + }, + new + { + Id = 10005, + Name = "Мера обсадных труб (направление)" + }, + new + { + Id = 10006, + Name = "Акт на выполненные работы по цементированию направления" + }, + new + { + Id = 10007, + Name = "Отчет по цементированию направления (график)" + }, + new + { + Id = 10008, + Name = "План работ спуска и цементирования кондуктора" + }, + new + { + Id = 10009, + Name = "Программа цементирования (кондуктор)" + }, + new + { + Id = 10010, + Name = "Мера обсадных труб (кондуктор)" + }, + new + { + Id = 10011, + Name = "Карта крепления кондуктора" + }, + new + { + Id = 10012, + Name = "Акт на выполненные работы по цементированию кондуктора" + }, + new + { + Id = 10013, + Name = "Отчет по цементированию кондуктора (график)" + }, + new + { + Id = 10014, + Name = "Акт о замере расстояния от стола ротора до муфты кондуктора" + }, + new + { + Id = 10015, + Name = "Акт опресовки цементного кольца за кондуктором" + }, + new + { + Id = 10016, + Name = "Акт опресовки ППГ с глухими плашками совместно с кондуктором" + }, + new + { + Id = 10017, + Name = "Акт опресовки ПУГ, ППГ с трубными плашками совместно с кондуктором" + }, + new + { + Id = 10018, + Name = "План работ на крепление обсадной колонны (эк. колонна)" + }, + new + { + Id = 10019, + Name = "Программа цементирования (эк. колонна)" + }, + new + { + Id = 10020, + Name = "Мера труб эксплуатационной колонны" + }, + new + { + Id = 10021, + Name = "Карта по креплению скважины (эк. колонна)" + }, + new + { + Id = 10022, + Name = "Акт на установку пружинных центраторов" + }, + new + { + Id = 10023, + Name = "Отчет по цементированию эксплуатационной колонны (график)" + }, + new + { + Id = 10024, + Name = "Акт на выполненные работы по цементированию эксплуатационной колонны" + }, + new + { + Id = 10025, + Name = "Акт об испытании эк. колонны на герметичность (СТОП)" + }, + new + { + Id = 10026, + Name = "Акт опресовки ППГ с глухими плашками совместно с э/колонной" + }, + new + { + Id = 10027, + Name = "Акт опресовки ПУГ, ППГ с трубными плашками совместно с э/колонной" + }, + new + { + Id = 10028, + Name = "Акт на вскрытие продуктивного пласта" + }, + new + { + Id = 10029, + Name = "Акт замера параметров раствора при бурении горизонтального участка" + }, + new + { + Id = 10030, + Name = "Разрешение на спуск «хвостовика» (телефонограмма)" + }, + new + { + Id = 10031, + Name = "План работ на спуск «хвостовика»" + }, + new + { + Id = 10032, + Name = "Акт готовности бурового и энергетического оборудования к спуску «хвостовика»" + }, + new + { + Id = 10033, + Name = "Акт шаблонировки ствола скважины перед спуском «хвостовика»" + }, + new + { + Id = 10034, + Name = "Мера обсадных труб (хвостовик)" + }, + new + { + Id = 10035, + Name = "Акт выполненных работ по спуску хвостовика с закачкой (нефти, солевого раствора" + }, + new + { + Id = 10036, + Name = "Акт о переводе скважины на тех. воду" + }, + new + { + Id = 10037, + Name = "Акт об окончании бурения" + }, + new + { + Id = 10038, + Name = "Акт на передачу скважины в освоение (КРС)" + }, + new + { + Id = 10039, + Name = "Акт на опресовку межколонного пространства с КРС" + }, + new + { + Id = 10040, + Name = "Акт на сдачу скважины в ЦДНГ" + }, + new + { + Id = 10041, + Name = "Паспорт ОУС (заполняется геологами)" + }, + new + { + Id = 10042, + Name = "Паспорт скважины (заполняется геологами)" + }, + new + { + Id = 10043, + Name = "Фактические данные бурения (вставляются в паспорт скважины)" + }, + new + { + Id = 20000, + Name = "Справки по страницам" + }, + new + { + Id = 30000, + Name = "Инструкции" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileInfo", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Id пользователя, загрузившего файл"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category") + .HasComment("id категории файла"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("id скважины"); + + b.Property("IsDeleted") + .HasColumnType("boolean") + .HasColumnName("is_deleted") + .HasComment("Удален ли файл"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name") + .HasComment("Название файла"); + + b.Property("Size") + .HasColumnType("bigint") + .HasColumnName("file_size") + .HasComment("Размер файла"); + + b.Property("UploadDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdCategory"); + + b.HasIndex("IdWell"); + + b.ToTable("t_file_info", t => + { + t.HasComment("Файлы всех категорий"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileMark", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Comment") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("comment") + .HasComment("Комментарий"); + + b.Property("DateCreated") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_created") + .HasComment("Дата совершенного действия"); + + b.Property("IdFile") + .HasColumnType("integer") + .HasColumnName("id_file") + .HasComment("id файла"); + + b.Property("IdMarkType") + .HasColumnType("integer") + .HasColumnName("id_mark_type") + .HasComment("0 - отклонен, 1 - согласован"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user") + .HasComment("id пользователя"); + + b.Property("IsDeleted") + .HasColumnType("boolean") + .HasColumnName("is_deleted") + .HasComment("Помечен ли файл как удаленный"); + + b.HasKey("Id"); + + b.HasIndex("IdFile"); + + b.HasIndex("IdUser"); + + b.ToTable("t_file_mark", t => + { + t.HasComment("Действия с файлами."); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemFloat", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdRecord") + .HasColumnType("integer") + .HasColumnName("id_record"); + + b.Property("IdItem") + .HasColumnType("integer") + .HasColumnName("id_item"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("Value") + .HasColumnType("real") + .HasColumnName("value"); + + b.HasKey("IdTelemetry", "IdRecord", "IdItem", "DateTime"); + + b.ToTable("t_wits_float", t => + { + t.HasComment("таблица данных ГТИ с типом значения float"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemInt", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdRecord") + .HasColumnType("integer") + .HasColumnName("id_record"); + + b.Property("IdItem") + .HasColumnType("integer") + .HasColumnName("id_item"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("Value") + .HasColumnType("integer") + .HasColumnName("value"); + + b.HasKey("IdTelemetry", "IdRecord", "IdItem", "DateTime"); + + b.ToTable("t_wits_int", t => + { + t.HasComment("таблица данных ГТИ с типом значения int"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemString", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdRecord") + .HasColumnType("integer") + .HasColumnName("id_record"); + + b.Property("IdItem") + .HasColumnType("integer") + .HasColumnName("id_item"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("Value") + .IsRequired() + .HasColumnType("text") + .HasColumnName("value"); + + b.HasKey("IdTelemetry", "IdRecord", "IdItem", "DateTime"); + + b.ToTable("t_wits_string", t => + { + t.HasComment("таблица данных ГТИ с типом значения string"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.HelpPage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category") + .HasComment("Id категории файла"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name") + .HasComment("Название файла"); + + b.Property("Size") + .HasColumnType("bigint") + .HasColumnName("file_size") + .HasComment("Размер файла"); + + b.Property("UrlPage") + .IsRequired() + .HasColumnType("text") + .HasColumnName("url_page") + .HasComment("Url страницы"); + + b.HasKey("Id"); + + b.HasIndex("IdCategory"); + + b.ToTable("t_help_page", t => + { + t.HasComment("Справки"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.LimitingParameter", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("DateEnd") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_end"); + + b.Property("DateStart") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_start"); + + b.Property("DepthEnd") + .HasColumnType("real") + .HasColumnName("depth_end"); + + b.Property("DepthStart") + .HasColumnType("real") + .HasColumnName("depth_start"); + + b.Property("IdFeedRegulator") + .HasColumnType("smallint") + .HasColumnName("id_feed_regulator"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.HasKey("Id"); + + b.HasIndex("IdTelemetry"); + + b.ToTable("t_limiting_parameter", t => + { + t.HasComment("Ограничения по параметрам телеметрии"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Manuals.Manual", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("DateDownload") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_download") + .HasComment("Дата загрузки"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Id автора"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category") + .HasComment("Id категории файла"); + + b.Property("IdDirectory") + .HasColumnType("integer") + .HasColumnName("id_directory") + .HasComment("Id директории"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name") + .HasComment("Название"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdCategory"); + + b.HasIndex("IdDirectory"); + + b.ToTable("t_manual", t => + { + t.HasComment("Инструкции"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Manuals.ManualDirectory", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("IdParent") + .HasColumnType("integer") + .HasColumnName("id_parent") + .HasComment("Id родительской директории"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name") + .HasComment("Название"); + + b.HasKey("Id"); + + b.HasIndex("IdParent"); + + b.ToTable("t_manual_directory", t => + { + t.HasComment("Директория для инструкций"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Measure", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Data") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("data") + .HasComment("Данные таблицы последних данных"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category") + .HasComment("id категории"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("id скважины"); + + b.Property("IsDeleted") + .HasColumnType("boolean") + .HasColumnName("is_deleted") + .HasComment("Пометка удаленным"); + + b.Property("Timestamp") + .HasColumnType("timestamp with time zone") + .HasColumnName("timestamp") + .HasComment("время добавления"); + + b.HasKey("Id"); + + b.HasIndex("IdCategory"); + + b.HasIndex("IdWell"); + + b.ToTable("t_measure", t => + { + t.HasComment("Таблица c данными для вкладки 'Последние данные'"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.MeasureCategory", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name") + .HasComment("Название категории"); + + b.Property("ShortName") + .HasColumnType("text") + .HasColumnName("short_name") + .HasComment("Короткое название категории"); + + b.HasKey("Id"); + + b.ToTable("t_measure_category", t => + { + t.HasComment("Категория последних данных"); + }); + + b.HasData( + new + { + Id = 1, + Name = "Показатели бурового раствора", + ShortName = "Раствор" + }, + new + { + Id = 2, + Name = "Шламограмма", + ShortName = "Шламограмма" + }, + new + { + Id = 3, + Name = "ННБ", + ShortName = "ННБ" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Notification", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("IdNotificationCategory") + .HasColumnType("integer") + .HasColumnName("id_notification_category") + .HasComment("Id категории уведомления"); + + b.Property("IdTransportType") + .HasColumnType("integer") + .HasColumnName("id_transport_type") + .HasComment("Id типа доставки уведомления"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user") + .HasComment("Id получателя"); + + b.Property("Message") + .IsRequired() + .HasColumnType("text") + .HasColumnName("message") + .HasComment("Сообщение уведомления"); + + b.Property("ReadDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("read_date") + .HasComment("Дата прочтения уведомления"); + + b.Property("RegistrationDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("registration_date") + .HasComment("Дата регистрации уведомления"); + + b.Property("SentDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("sent_date") + .HasComment("Дата отправки уведомления"); + + b.Property("Title") + .IsRequired() + .HasColumnType("text") + .HasColumnName("title") + .HasComment("Заголовок уведомления"); + + b.HasKey("Id"); + + b.HasIndex("IdNotificationCategory"); + + b.HasIndex("IdUser"); + + b.ToTable("t_notification", t => + { + t.HasComment("Уведомления"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.NotificationCategory", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name"); + + b.HasKey("Id"); + + b.ToTable("t_notification_category", t => + { + t.HasComment("Категории уведомлений"); + }); + + b.HasData( + new + { + Id = 1, + Name = "Системные уведомления" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.OperationValue", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Конечная глубина"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Старотовая глубина"); + + b.Property("IdOperationCategory") + .HasColumnType("integer") + .HasColumnName("id_operation_category") + .HasComment("Ид категории операции"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Ид скважины"); + + b.Property("StandardValue") + .HasColumnType("double precision") + .HasColumnName("standard_value") + .HasComment("Нормативный показатель"); + + b.Property("TargetValue") + .HasColumnType("double precision") + .HasColumnName("target_value") + .HasComment("Целевой показатель"); + + b.HasKey("Id"); + + b.HasIndex("IdOperationCategory"); + + b.HasIndex("IdWell"); + + b.ToTable("t_operationvalue", t => + { + t.HasComment("Целевые/нормативные показатели операции"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Permission", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Description") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("description") + .HasComment("Краткое описание"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name") + .HasComment("Название"); + + b.HasKey("Id"); + + b.ToTable("t_permission", t => + { + t.HasComment("Разрешения на доступ к данным"); + }); + + b.HasData( + new + { + Id = 100, + Description = "Разрешение удалять админ. Кусты", + Name = "AdminCluster.delete" + }, + new + { + Id = 101, + Description = "Разрешение редактировать админ. Кусты", + Name = "AdminCluster.edit" + }, + new + { + Id = 102, + Description = "Разрешение просматривать админ. Кусты", + Name = "AdminCluster.get" + }, + new + { + Id = 103, + Description = "Разрешение удалять админ. Компании", + Name = "AdminCompany.delete" + }, + new + { + Id = 104, + Description = "Разрешение редактировать админ. Компании", + Name = "AdminCompany.edit" + }, + new + { + Id = 105, + Description = "Разрешение просматривать админ. Компании", + Name = "AdminCompany.get" + }, + new + { + Id = 106, + Description = "Разрешение удалять админ. Типы компаний", + Name = "AdminCompanyType.delete" + }, + new + { + Id = 107, + Description = "Разрешение редактировать админ. Типы компаний", + Name = "AdminCompanyType.edit" + }, + new + { + Id = 108, + Description = "Разрешение просматривать админ. Типы компаний", + Name = "AdminCompanyType.get" + }, + new + { + Id = 109, + Description = "Разрешение удалять админ. Месторождения", + Name = "AdminDeposit.delete" + }, + new + { + Id = 110, + Description = "Разрешение редактировать админ. Месторождения", + Name = "AdminDeposit.edit" + }, + new + { + Id = 111, + Description = "Разрешение просматривать админ. Месторождения", + Name = "AdminDeposit.get" + }, + new + { + Id = 112, + Description = "Разрешение удалять админ. Разрешения", + Name = "AdminPermission.delete" + }, + new + { + Id = 113, + Description = "Разрешение редактировать админ. Разрешения", + Name = "AdminPermission.edit" + }, + new + { + Id = 114, + Description = "Разрешение просматривать админ. Разрешения", + Name = "AdminPermission.get" + }, + new + { + Id = 115, + Description = "Разрешение удалять админ. Телеметрию", + Name = "AdminTelemetry.delete" + }, + new + { + Id = 116, + Description = "Разрешение редактировать админ. Телеметрию", + Name = "AdminTelemetry.edit" + }, + new + { + Id = 117, + Description = "Разрешение просматривать админ. Телеметрию", + Name = "AdminTelemetry.get" + }, + new + { + Id = 118, + Description = "Разрешение удалять админ. Пользователей", + Name = "AdminUser.delete" + }, + new + { + Id = 119, + Description = "Разрешение редактировать админ. Пользователей", + Name = "AdminUser.edit" + }, + new + { + Id = 120, + Description = "Разрешение просматривать админ. Пользователей", + Name = "AdminUser.get" + }, + new + { + Id = 121, + Description = "Разрешение удалять админ. Роли пользователей", + Name = "AdminUserRole.delete" + }, + new + { + Id = 122, + Description = "Разрешение редактировать админ. Роли пользователей", + Name = "AdminUserRole.edit" + }, + new + { + Id = 123, + Description = "Разрешение просматривать админ. Роли пользователей", + Name = "AdminUserRole.get" + }, + new + { + Id = 124, + Description = "Разрешение удалять админ. Скважины", + Name = "AdminWell.delete" + }, + new + { + Id = 125, + Description = "Разрешение редактировать админ. Скважины", + Name = "AdminWell.edit" + }, + new + { + Id = 126, + Description = "Разрешение просматривать админ. Скважины", + Name = "AdminWell.get" + }, + new + { + Id = 127, + Description = "Разрешение удалять админ. Подсистемы", + Name = "AdminSubsytem.delete" + }, + new + { + Id = 128, + Description = "Разрешение редактировать админ. Подсистемы", + Name = "AdminSubsytem.edit" + }, + new + { + Id = 129, + Description = "Разрешение просматривать админ. Подсистемы", + Name = "AdminSubsytem.get" + }, + new + { + Id = 200, + Description = "Разрешение редактировать 0", + Name = "Auth.edit" + }, + new + { + Id = 201, + Description = "Разрешение просматривать 0", + Name = "Auth.get" + }, + new + { + Id = 202, + Description = "Разрешение просматривать Кусты", + Name = "Cluster.get" + }, + new + { + Id = 203, + Description = "Разрешение просматривать Месторождения", + Name = "Deposit.get" + }, + new + { + Id = 204, + Description = "Разрешение удалять РТК", + Name = "DrillFlowChart.delete" + }, + new + { + Id = 205, + Description = "Разрешение редактировать РТК", + Name = "DrillFlowChart.edit" + }, + new + { + Id = 206, + Description = "Разрешение просматривать РТК", + Name = "DrillFlowChart.get" + }, + new + { + Id = 207, + Description = "Разрешение удалять Программу бурения", + Name = "DrillingProgram.delete" + }, + new + { + Id = 208, + Description = "Разрешение редактировать Программу бурения", + Name = "DrillingProgram.edit" + }, + new + { + Id = 209, + Description = "Разрешение просматривать Программу бурения", + Name = "DrillingProgram.get" + }, + new + { + Id = 210, + Description = "Разрешение удалять Режимы бурения", + Name = "DrillParams.delete" + }, + new + { + Id = 211, + Description = "Разрешение редактировать Режимы бурения", + Name = "DrillParams.edit" + }, + new + { + Id = 212, + Description = "Разрешение просматривать Режимы бурения", + Name = "DrillParams.get" + }, + new + { + Id = 213, + Description = "Разрешение удалять Файлы", + Name = "File.delete" + }, + new + { + Id = 214, + Description = "Разрешение редактировать Файлы", + Name = "File.edit" + }, + new + { + Id = 215, + Description = "Разрешение просматривать Файлы", + Name = "File.get" + }, + new + { + Id = 216, + Description = "Разрешение удалять Измерения", + Name = "Measure.delete" + }, + new + { + Id = 217, + Description = "Разрешение редактировать Измерения", + Name = "Measure.edit" + }, + new + { + Id = 218, + Description = "Разрешение просматривать Измерения", + Name = "Measure.get" + }, + new + { + Id = 219, + Description = "Разрешение просматривать Сообщения телеметрии", + Name = "Message.get" + }, + new + { + Id = 220, + Description = "Разрешение просматривать Статистику по операциям", + Name = "OperationStat.get" + }, + new + { + Id = 221, + Description = "Разрешение редактировать Рапорта", + Name = "Report.edit" + }, + new + { + Id = 222, + Description = "Разрешение просматривать Рапорта", + Name = "Report.get" + }, + new + { + Id = 223, + Description = "Разрешение просматривать админ. Системная статистика", + Name = "RequestTracker.get" + }, + new + { + Id = 224, + Description = "Разрешение удалять Рекомендации уставок", + Name = "Setpoints.delete" + }, + new + { + Id = 225, + Description = "Разрешение редактировать Рекомендации уставок", + Name = "Setpoints.edit" + }, + new + { + Id = 226, + Description = "Разрешение просматривать Рекомендации уставок", + Name = "Setpoints.get" + }, + new + { + Id = 227, + Description = "Разрешение редактировать Телеметрии", + Name = "Telemetry.edit" + }, + new + { + Id = 228, + Description = "Разрешение просматривать Анализ телеметрии", + Name = "TelemetryAnalytics.get" + }, + new + { + Id = 229, + Description = "Разрешение редактировать Данные телеметрии по САУБ", + Name = "TelemetryDataSaub.edit" + }, + new + { + Id = 230, + Description = "Разрешение просматривать Данные телеметрии по САУБ", + Name = "TelemetryDataSaub.get" + }, + new + { + Id = 231, + Description = "Разрешение редактировать Данные телеметрии по SpinMaster", + Name = "TelemetryDataSpin.edit" + }, + new + { + Id = 232, + Description = "Разрешение просматривать Данные телеметрии по SpinMaster", + Name = "TelemetryDataSpin.get" + }, + new + { + Id = 233, + Description = "Разрешение редактировать Скважины", + Name = "Well.edit" + }, + new + { + Id = 234, + Description = "Разрешение просматривать Скважины", + Name = "Well.get" + }, + new + { + Id = 235, + Description = "Разрешение редактировать Композитные скважины", + Name = "WellComposite.edit" + }, + new + { + Id = 236, + Description = "Разрешение просматривать Композитные скважины", + Name = "WellComposite.get" + }, + new + { + Id = 237, + Description = "Разрешение удалять Операции по скважинам", + Name = "WellOperation.delete" + }, + new + { + Id = 238, + Description = "Разрешение редактировать Операции по скважинам", + Name = "WellOperation.edit" + }, + new + { + Id = 239, + Description = "Разрешение просматривать Операции по скважинам", + Name = "WellOperation.get" + }, + new + { + Id = 240, + Description = "Разрешение редактировать Файлы категории 1 (Растворный сервис)", + Name = "File.edit1" + }, + new + { + Id = 241, + Description = "Разрешение редактировать Файлы категории 2 (Цементирование)", + Name = "File.edit2" + }, + new + { + Id = 242, + Description = "Разрешение редактировать Файлы категории 3 (ННБ)", + Name = "File.edit3" + }, + new + { + Id = 243, + Description = "Разрешение редактировать Файлы категории 4 (ГТИ)", + Name = "File.edit4" + }, + new + { + Id = 244, + Description = "Разрешение редактировать Файлы категории 5 (Документы по скважине)", + Name = "File.edit5" + }, + new + { + Id = 245, + Description = "Разрешение редактировать Файлы категории 6 (Супервайзер)", + Name = "File.edit6" + }, + new + { + Id = 246, + Description = "Разрешение редактировать Файлы категории 7 (Мастер)", + Name = "File.edit7" + }, + new + { + Id = 247, + Description = "Разрешение редактировать Файлы категории 8 (Долотный сервис)", + Name = "File.edit8" + }, + new + { + Id = 248, + Description = "Разрешение редактировать Файлы категории 9 (Буровой подрядчик)", + Name = "File.edit9" + }, + new + { + Id = 249, + Description = "Разрешение редактировать Файлы категории 10 (Сервис по заканчиванию скважины)", + Name = "File.edit10" + }, + new + { + Id = 250, + Description = "Разрешение редактировать Файлы категории 11 (Рапорт)", + Name = "File.edit11" + }, + new + { + Id = 251, + Description = "Разрешение редактировать Файлы категории 12", + Name = "File.edit12" + }, + new + { + Id = 252, + Description = "Разрешение редактировать Файлы категории 12", + Name = "File.edit13" + }, + new + { + Id = 253, + Description = "Разрешение редактировать Файлы категории 13", + Name = "File.edit14" + }, + new + { + Id = 254, + Description = "Разрешение редактировать Файлы категории 14", + Name = "File.edit15" + }, + new + { + Id = 255, + Description = "Разрешение редактировать Файлы категории 15", + Name = "File.edit16" + }, + new + { + Id = 256, + Description = "Разрешение редактировать Файлы категории 16", + Name = "File.edit17" + }, + new + { + Id = 257, + Description = "Разрешение редактировать Файлы категории 17", + Name = "File.edit18" + }, + new + { + Id = 258, + Description = "Разрешение редактировать Файлы категории 18", + Name = "File.edit19" + }, + new + { + Id = 259, + Description = "Разрешение редактировать Файлы категории 19", + Name = "File.edit20" + }, + new + { + Id = 260, + Description = "Разрешение редактировать Файлы категории 20", + Name = "File.edit21" + }, + new + { + Id = 261, + Description = "Разрешение редактировать Файлы категории 21", + Name = "File.edit22" + }, + new + { + Id = 262, + Description = "Разрешение редактировать Файлы категории 22", + Name = "File.edit23" + }, + new + { + Id = 263, + Description = "Разрешение редактировать Файлы категории 23", + Name = "File.edit24" + }, + new + { + Id = 264, + Description = "Разрешение редактировать Файлы категории 24", + Name = "File.edit25" + }, + new + { + Id = 265, + Description = "Разрешение редактировать Файлы категории 25", + Name = "File.edit26" + }, + new + { + Id = 266, + Description = "Разрешение редактировать Файлы категории 26", + Name = "File.edit27" + }, + new + { + Id = 267, + Description = "Разрешение редактировать Файлы категории 27", + Name = "File.edit28" + }, + new + { + Id = 268, + Description = "Разрешение редактировать Файлы категории 28", + Name = "File.edit29" + }, + new + { + Id = 269, + Description = "Разрешение редактировать Файлы категории 29", + Name = "File.edit30" + }, + new + { + Id = 380, + Description = "Разрешение просматривать список бурильщиков", + Name = "Driller.get" + }, + new + { + Id = 381, + Description = "Разрешение редактировать бурильщика", + Name = "Driller.edit" + }, + new + { + Id = 382, + Description = "Разрешение удалять бурильщик", + Name = "Driller.delete" + }, + new + { + Id = 383, + Description = "Разрешение просматривать графики бурильщиков", + Name = "Schedule.get" + }, + new + { + Id = 384, + Description = "Разрешение редактировать график бурильщика", + Name = "Schedule.edit" + }, + new + { + Id = 385, + Description = "Разрешение удалять график бурильщика", + Name = "Schedule.delete" + }, + new + { + Id = 386, + Description = "Разрешение просматривать суточный рапорт", + Name = "DailyReport.get" + }, + new + { + Id = 387, + Description = "Разрешение редактировать суточный рапорт", + Name = "DailyReport.edit" + }, + new + { + Id = 388, + Description = "Разрешение просматривать авто. определенные операции", + Name = "DetectedOperation.get" + }, + new + { + Id = 389, + Description = "Разрешение просматривать целевые значения", + Name = "OperationValue.get" + }, + new + { + Id = 390, + Description = "Разрешение редактировать целевые значения", + Name = "OperationValue.edit" + }, + new + { + Id = 391, + Description = "Разрешение удалять целевые значения", + Name = "OperationValue.delete" + }, + new + { + Id = 400, + Description = "Разрешение просматривать инфо по wits параметрам", + Name = "WitsInfo.get" + }, + new + { + Id = 401, + Description = "Разрешение просматривать WITS record 1", + Name = "WitsRecord1.get" + }, + new + { + Id = 407, + Description = "Разрешение просматривать WITS record 7", + Name = "WitsRecord7.get" + }, + new + { + Id = 408, + Description = "Разрешение просматривать WITS record 8", + Name = "WitsRecord8.get" + }, + new + { + Id = 450, + Description = "Разрешение просматривать WITS record 50", + Name = "WitsRecord50.get" + }, + new + { + Id = 460, + Description = "Разрешение просматривать WITS record 60", + Name = "WitsRecord60.get" + }, + new + { + Id = 461, + Description = "Разрешение просматривать WITS record 61", + Name = "WitsRecord61.get" + }, + new + { + Id = 500, + Description = "Разрешение удалять Категорий документов файлов", + Name = "FileCategory.delete" + }, + new + { + Id = 501, + Description = "Разрешение редактировать Категорий документов файлов", + Name = "FileCategory.edit" + }, + new + { + Id = 502, + Description = "Разрешение просматривать Категорий документов файлов", + Name = "FileCategory.get" + }, + new + { + Id = 503, + Description = "Разрешение удалять Дело скважины", + Name = "WellFinalDocuments.delete" + }, + new + { + Id = 504, + Description = "Разрешение редактировать Дело скважины", + Name = "WellFinalDocuments.edit" + }, + new + { + Id = 505, + Description = "Разрешение просматривать Дело скважины", + Name = "WellFinalDocuments.get" + }, + new + { + Id = 506, + Description = "Разрешение редактировать ответственных за загрузку файла Дело скважины", + Name = "WellFinalDocuments.editPublisher" + }, + new + { + Id = 507, + Description = "Разрешение просматривать наработка талевого каната", + Name = "TelemetryWirelineRunOut.get" + }, + new + { + Id = 510, + Description = "Разрешение просматривать плановая траектория", + Name = "PlannedTrajectory.get" + }, + new + { + Id = 511, + Description = "Разрешение редактировать плановая траектория", + Name = "PlannedTrajectory.edit" + }, + new + { + Id = 512, + Description = "Разрешение удалять плановая траектория", + Name = "PlannedTrajectory.delete" + }, + new + { + Id = 516, + Description = "Разрешение просматривать статистику вопросов", + Name = "FaqStatistics.get" + }, + new + { + Id = 517, + Description = "Разрешение редактировать вопрос", + Name = "FaqStatistics.edit" + }, + new + { + Id = 518, + Description = "Разрешение удалять вопрос", + Name = "FaqStatistics.delete" + }, + new + { + Id = 519, + Description = "Разрешение просматривать список контактов", + Name = "WellContact.get" + }, + new + { + Id = 520, + Description = "Разрешение редактировать список контактов", + Name = "WellContact.edit" + }, + new + { + Id = 521, + Description = "Разрешить создание справок по страницам", + Name = "HelpPage.edit" + }, + new + { + Id = 522, + Description = "Разрешить удаление всех настроек пользователя", + Name = "UserSettings.delete" + }, + new + { + Id = 523, + Description = "Разрешить редактирование инструкций", + Name = "Manual.edit" + }, + new + { + Id = 524, + Description = "Разрешить получение инструкций", + Name = "Manual.get" + }, + new + { + Id = 525, + Description = "Разрешение на редактирование РТК у завершенной скважины", + Name = "ProcessMap.editCompletedWell" + }, + new + { + Id = 526, + Description = "Разрешение на редактирование операций у завершенной скважины", + Name = "WellOperation.editCompletedWell" + }, + new + { + Id = 527, + Description = "Разрешение на удаление инструкций", + Name = "Manual.delete" + }, + new + { + Id = 528, + Description = "Разрешение на удаление контакта", + Name = "WellContact.delete" + }, + new + { + Id = 530, + Description = "Разрешение на редактирование плановой конструкции скважины", + Name = "WellSectionPlan.edit" + }, + new + { + Id = 531, + Description = "Разрешение на удаление плановой конструкции скважины", + Name = "WellSectionPlan.delete" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMaps.ProcessMapPlanDrilling", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AxialLoadLimitMax") + .HasColumnType("double precision") + .HasColumnName("axial_load_limit_max") + .HasComment("Осевая нагрузка, т, допустимый максимум"); + + b.Property("AxialLoadPlan") + .HasColumnType("double precision") + .HasColumnName("axial_load_plan") + .HasComment("Осевая нагрузка, т, план"); + + b.Property("Comment") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("comment") + .HasComment("Комментарий"); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DeltaPressureLimitMax") + .HasColumnType("double precision") + .HasColumnName("delta_pressure_limit_max") + .HasComment("Перепад давления, атм, допустимый максимум"); + + b.Property("DeltaPressurePlan") + .HasColumnType("double precision") + .HasColumnName("delta_pressure_plan") + .HasComment("Перепад давления, атм, план"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .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("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdMode") + .HasColumnType("integer") + .HasColumnName("id_mode") + .HasComment("Id режима (1- ротор, 2 слайд)"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("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("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_drilling", t => + { + t.HasComment("РТК план бурение"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMaps.ProcessMapPlanReam", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина по стволу до, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина по стволу от, м"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Автор"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdPrevious") + .HasColumnType("integer") + .HasColumnName("id_previous") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_wellsection_type") + .HasComment("Тип секции"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("Pressure") + .HasColumnType("double precision") + .HasColumnName("pressure") + .HasComment("Давление, атм"); + + b.Property("Repeats") + .HasColumnType("double precision") + .HasColumnName("repeats") + .HasComment("Количество повторений"); + + b.Property("SetpointDrag") + .HasColumnType("double precision") + .HasColumnName("setpoint_drag") + .HasComment("Уставка зятяжки, т"); + + b.Property("SetpointTight") + .HasColumnType("double precision") + .HasColumnName("setpoint_tight") + .HasComment("Уставка посадки, т"); + + b.Property("SpeedDownward") + .HasColumnType("double precision") + .HasColumnName("speed_downward") + .HasComment("Скорость спуска, м/ч"); + + b.Property("SpeedUpward") + .HasColumnType("double precision") + .HasColumnName("speed_upward") + .HasComment("Скорость подъёма, м/ч"); + + b.Property("SpinDownward") + .HasColumnType("double precision") + .HasColumnName("spin_downward") + .HasComment("Вращение при движении вниз, об/мин"); + + b.Property("SpinUpward") + .HasColumnType("double precision") + .HasColumnName("spin_upward") + .HasComment("Вращение при движении вверх, об/мин"); + + b.Property("Torque") + .HasColumnType("double precision") + .HasColumnName("torque") + .HasComment("Момент, кН*м"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_ream", t => + { + t.HasComment("РТК проработка скважины"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => + { + b.Property("IdCompany") + .HasColumnType("integer") + .HasColumnName("id_company"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well"); + + b.HasKey("IdCompany", "IdWell"); + + b.HasIndex("IdWell"); + + b.ToTable("t_relation_company_well", t => + { + t.HasComment("отношение скважин и компаний"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationContactWell", b => + { + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.HasKey("IdWell", "IdUser"); + + b.HasIndex("IdUser"); + + b.ToTable("t_relation_contact_well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserDrillingProgramPart", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("IdDrillingProgramPart") + .HasColumnType("integer") + .HasColumnName("id_drilling_program_part"); + + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_role") + .HasComment("1 - publisher, 2 - approver"); + + b.HasKey("IdUser", "IdDrillingProgramPart") + .HasName("t_relation_user_drilling_program_part_pk"); + + b.HasIndex("IdDrillingProgramPart"); + + b.ToTable("t_relation_user_drilling_program_part", t => + { + t.HasComment("Отношение пользователей и частей ПБ"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRolePermission", b => + { + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.Property("IdPermission") + .HasColumnType("integer") + .HasColumnName("id_permission"); + + b.HasKey("IdUserRole", "IdPermission"); + + b.HasIndex("IdPermission"); + + b.ToTable("t_relation_user_role_permission", t => + { + t.HasComment("Отношение ролей пользователей и разрешений доступа"); + }); + + b.HasData( + new + { + IdUserRole = 1100, + IdPermission = 102 + }, + new + { + IdUserRole = 1100, + IdPermission = 111 + }, + new + { + IdUserRole = 1101, + IdPermission = 101 + }, + new + { + IdUserRole = 1101, + IdPermission = 100 + }, + new + { + IdUserRole = 1102, + IdPermission = 105 + }, + new + { + IdUserRole = 1102, + IdPermission = 108 + }, + new + { + IdUserRole = 1103, + IdPermission = 104 + }, + new + { + IdUserRole = 1103, + IdPermission = 103 + }, + new + { + IdUserRole = 1104, + IdPermission = 108 + }, + new + { + IdUserRole = 1105, + IdPermission = 107 + }, + new + { + IdUserRole = 1105, + IdPermission = 106 + }, + new + { + IdUserRole = 1106, + IdPermission = 111 + }, + new + { + IdUserRole = 1107, + IdPermission = 110 + }, + new + { + IdUserRole = 1107, + IdPermission = 109 + }, + new + { + IdUserRole = 1108, + IdPermission = 114 + }, + new + { + IdUserRole = 1109, + IdPermission = 113 + }, + new + { + IdUserRole = 1109, + IdPermission = 112 + }, + new + { + IdUserRole = 1110, + IdPermission = 123 + }, + new + { + IdUserRole = 1110, + IdPermission = 114 + }, + new + { + IdUserRole = 1111, + IdPermission = 122 + }, + new + { + IdUserRole = 1111, + IdPermission = 121 + }, + new + { + IdUserRole = 1112, + IdPermission = 117 + }, + new + { + IdUserRole = 1113, + IdPermission = 105 + }, + new + { + IdUserRole = 1113, + IdPermission = 123 + }, + new + { + IdUserRole = 1113, + IdPermission = 120 + }, + new + { + IdUserRole = 1114, + IdPermission = 119 + }, + new + { + IdUserRole = 1114, + IdPermission = 118 + }, + new + { + IdUserRole = 1114, + IdPermission = 200 + }, + new + { + IdUserRole = 1115, + IdPermission = 223 + }, + new + { + IdUserRole = 1116, + IdPermission = 105 + }, + new + { + IdUserRole = 1116, + IdPermission = 102 + }, + new + { + IdUserRole = 1116, + IdPermission = 117 + }, + new + { + IdUserRole = 1116, + IdPermission = 126 + }, + new + { + IdUserRole = 1117, + IdPermission = 125 + }, + new + { + IdUserRole = 1117, + IdPermission = 124 + }, + new + { + IdUserRole = 1200, + IdPermission = 203 + }, + new + { + IdUserRole = 1200, + IdPermission = 230 + }, + new + { + IdUserRole = 1201, + IdPermission = 202 + }, + new + { + IdUserRole = 1201, + IdPermission = 203 + }, + new + { + IdUserRole = 1201, + IdPermission = 220 + }, + new + { + IdUserRole = 1202, + IdPermission = 203 + }, + new + { + IdUserRole = 1202, + IdPermission = 220 + }, + new + { + IdUserRole = 1202, + IdPermission = 236 + }, + new + { + IdUserRole = 1202, + IdPermission = 212 + }, + new + { + IdUserRole = 1203, + IdPermission = 235 + }, + new + { + IdUserRole = 1204, + IdPermission = 202 + }, + new + { + IdUserRole = 1204, + IdPermission = 203 + }, + new + { + IdUserRole = 1205, + IdPermission = 215 + }, + new + { + IdUserRole = 1206, + IdPermission = 203 + }, + new + { + IdUserRole = 1206, + IdPermission = 206 + }, + new + { + IdUserRole = 1207, + IdPermission = 205 + }, + new + { + IdUserRole = 1208, + IdPermission = 218 + }, + new + { + IdUserRole = 1209, + IdPermission = 217 + }, + new + { + IdUserRole = 1210, + IdPermission = 203 + }, + new + { + IdUserRole = 1210, + IdPermission = 230 + }, + new + { + IdUserRole = 1210, + IdPermission = 219 + }, + new + { + IdUserRole = 1211, + IdPermission = 203 + }, + new + { + IdUserRole = 1211, + IdPermission = 220 + }, + new + { + IdUserRole = 1211, + IdPermission = 239 + }, + new + { + IdUserRole = 1212, + IdPermission = 238 + }, + new + { + IdUserRole = 1212, + IdPermission = 237 + }, + new + { + IdUserRole = 1213, + IdPermission = 203 + }, + new + { + IdUserRole = 1213, + IdPermission = 239 + }, + new + { + IdUserRole = 1213, + IdPermission = 212 + }, + new + { + IdUserRole = 1214, + IdPermission = 211 + }, + new + { + IdUserRole = 1214, + IdPermission = 210 + }, + new + { + IdUserRole = 1215, + IdPermission = 203 + }, + new + { + IdUserRole = 1215, + IdPermission = 222 + }, + new + { + IdUserRole = 1216, + IdPermission = 221 + }, + new + { + IdUserRole = 1217, + IdPermission = 226 + }, + new + { + IdUserRole = 1218, + IdPermission = 225 + }, + new + { + IdUserRole = 1218, + IdPermission = 224 + }, + new + { + IdUserRole = 1219, + IdPermission = 203 + }, + new + { + IdUserRole = 1219, + IdPermission = 206 + }, + new + { + IdUserRole = 1219, + IdPermission = 230 + }, + new + { + IdUserRole = 1219, + IdPermission = 232 + }, + new + { + IdUserRole = 1220, + IdPermission = 203 + }, + new + { + IdUserRole = 1220, + IdPermission = 228 + }, + new + { + IdUserRole = 1221, + IdPermission = 202 + }, + new + { + IdUserRole = 1221, + IdPermission = 203 + }, + new + { + IdUserRole = 1221, + IdPermission = 220 + }, + new + { + IdUserRole = 1221, + IdPermission = 234 + }, + new + { + IdUserRole = 1500, + IdPermission = 507 + }, + new + { + IdUserRole = 1500, + IdPermission = 510 + }, + new + { + IdUserRole = 1501, + IdPermission = 214 + }, + new + { + IdUserRole = 1501, + IdPermission = 213 + }, + new + { + IdUserRole = 1502, + IdPermission = 207 + }, + new + { + IdUserRole = 1502, + IdPermission = 208 + }, + new + { + IdUserRole = 2000, + IdPermission = 205 + }, + new + { + IdUserRole = 2000, + IdPermission = 204 + }, + new + { + IdUserRole = 2000, + IdPermission = 245 + }, + new + { + IdUserRole = 2001, + IdPermission = 244 + }, + new + { + IdUserRole = 2001, + IdPermission = 245 + }, + new + { + IdUserRole = 2002, + IdPermission = 244 + }, + new + { + IdUserRole = 2002, + IdPermission = 246 + }, + new + { + IdUserRole = 2002, + IdPermission = 237 + }, + new + { + IdUserRole = 2002, + IdPermission = 238 + }, + new + { + IdUserRole = 2003, + IdPermission = 240 + }, + new + { + IdUserRole = 2003, + IdPermission = 217 + }, + new + { + IdUserRole = 2003, + IdPermission = 216 + }, + new + { + IdUserRole = 2004, + IdPermission = 242 + }, + new + { + IdUserRole = 2004, + IdPermission = 217 + }, + new + { + IdUserRole = 2004, + IdPermission = 216 + }, + new + { + IdUserRole = 2004, + IdPermission = 205 + }, + new + { + IdUserRole = 2004, + IdPermission = 204 + }, + new + { + IdUserRole = 2005, + IdPermission = 247 + }, + new + { + IdUserRole = 2005, + IdPermission = 205 + }, + new + { + IdUserRole = 2005, + IdPermission = 204 + }, + new + { + IdUserRole = 2006, + IdPermission = 243 + }, + new + { + IdUserRole = 2006, + IdPermission = 205 + }, + new + { + IdUserRole = 2006, + IdPermission = 204 + }, + new + { + IdUserRole = 2007, + IdPermission = 241 + }, + new + { + IdUserRole = 2007, + IdPermission = 205 + }, + new + { + IdUserRole = 2007, + IdPermission = 204 + }, + new + { + IdUserRole = 1, + IdPermission = 100 + }, + new + { + IdUserRole = 1, + IdPermission = 101 + }, + new + { + IdUserRole = 1, + IdPermission = 102 + }, + new + { + IdUserRole = 1, + IdPermission = 103 + }, + new + { + IdUserRole = 1, + IdPermission = 104 + }, + new + { + IdUserRole = 1, + IdPermission = 105 + }, + new + { + IdUserRole = 1, + IdPermission = 106 + }, + new + { + IdUserRole = 1, + IdPermission = 107 + }, + new + { + IdUserRole = 1, + IdPermission = 108 + }, + new + { + IdUserRole = 1, + IdPermission = 109 + }, + new + { + IdUserRole = 1, + IdPermission = 110 + }, + new + { + IdUserRole = 1, + IdPermission = 111 + }, + new + { + IdUserRole = 1, + IdPermission = 112 + }, + new + { + IdUserRole = 1, + IdPermission = 113 + }, + new + { + IdUserRole = 1, + IdPermission = 114 + }, + new + { + IdUserRole = 1, + IdPermission = 115 + }, + new + { + IdUserRole = 1, + IdPermission = 116 + }, + new + { + IdUserRole = 1, + IdPermission = 117 + }, + new + { + IdUserRole = 1, + IdPermission = 118 + }, + new + { + IdUserRole = 1, + IdPermission = 119 + }, + new + { + IdUserRole = 1, + IdPermission = 120 + }, + new + { + IdUserRole = 1, + IdPermission = 121 + }, + new + { + IdUserRole = 1, + IdPermission = 122 + }, + new + { + IdUserRole = 1, + IdPermission = 123 + }, + new + { + IdUserRole = 1, + IdPermission = 124 + }, + new + { + IdUserRole = 1, + IdPermission = 125 + }, + new + { + IdUserRole = 1, + IdPermission = 126 + }, + new + { + IdUserRole = 1, + IdPermission = 127 + }, + new + { + IdUserRole = 1, + IdPermission = 128 + }, + new + { + IdUserRole = 1, + IdPermission = 129 + }, + new + { + IdUserRole = 1, + IdPermission = 200 + }, + new + { + IdUserRole = 1, + IdPermission = 201 + }, + new + { + IdUserRole = 1, + IdPermission = 202 + }, + new + { + IdUserRole = 1, + IdPermission = 203 + }, + new + { + IdUserRole = 1, + IdPermission = 204 + }, + new + { + IdUserRole = 1, + IdPermission = 205 + }, + new + { + IdUserRole = 1, + IdPermission = 206 + }, + new + { + IdUserRole = 1, + IdPermission = 207 + }, + new + { + IdUserRole = 1, + IdPermission = 208 + }, + new + { + IdUserRole = 1, + IdPermission = 209 + }, + new + { + IdUserRole = 1, + IdPermission = 210 + }, + new + { + IdUserRole = 1, + IdPermission = 211 + }, + new + { + IdUserRole = 1, + IdPermission = 212 + }, + new + { + IdUserRole = 1, + IdPermission = 213 + }, + new + { + IdUserRole = 1, + IdPermission = 214 + }, + new + { + IdUserRole = 1, + IdPermission = 215 + }, + new + { + IdUserRole = 1, + IdPermission = 216 + }, + new + { + IdUserRole = 1, + IdPermission = 217 + }, + new + { + IdUserRole = 1, + IdPermission = 218 + }, + new + { + IdUserRole = 1, + IdPermission = 219 + }, + new + { + IdUserRole = 1, + IdPermission = 220 + }, + new + { + IdUserRole = 1, + IdPermission = 221 + }, + new + { + IdUserRole = 1, + IdPermission = 222 + }, + new + { + IdUserRole = 1, + IdPermission = 223 + }, + new + { + IdUserRole = 1, + IdPermission = 224 + }, + new + { + IdUserRole = 1, + IdPermission = 225 + }, + new + { + IdUserRole = 1, + IdPermission = 226 + }, + new + { + IdUserRole = 1, + IdPermission = 227 + }, + new + { + IdUserRole = 1, + IdPermission = 228 + }, + new + { + IdUserRole = 1, + IdPermission = 229 + }, + new + { + IdUserRole = 1, + IdPermission = 230 + }, + new + { + IdUserRole = 1, + IdPermission = 231 + }, + new + { + IdUserRole = 1, + IdPermission = 232 + }, + new + { + IdUserRole = 1, + IdPermission = 233 + }, + new + { + IdUserRole = 1, + IdPermission = 234 + }, + new + { + IdUserRole = 1, + IdPermission = 235 + }, + new + { + IdUserRole = 1, + IdPermission = 236 + }, + new + { + IdUserRole = 1, + IdPermission = 237 + }, + new + { + IdUserRole = 1, + IdPermission = 238 + }, + new + { + IdUserRole = 1, + IdPermission = 239 + }, + new + { + IdUserRole = 1, + IdPermission = 240 + }, + new + { + IdUserRole = 1, + IdPermission = 241 + }, + new + { + IdUserRole = 1, + IdPermission = 242 + }, + new + { + IdUserRole = 1, + IdPermission = 243 + }, + new + { + IdUserRole = 1, + IdPermission = 244 + }, + new + { + IdUserRole = 1, + IdPermission = 245 + }, + new + { + IdUserRole = 1, + IdPermission = 246 + }, + new + { + IdUserRole = 1, + IdPermission = 247 + }, + new + { + IdUserRole = 1, + IdPermission = 248 + }, + new + { + IdUserRole = 1, + IdPermission = 249 + }, + new + { + IdUserRole = 1, + IdPermission = 250 + }, + new + { + IdUserRole = 1, + IdPermission = 251 + }, + new + { + IdUserRole = 1, + IdPermission = 252 + }, + new + { + IdUserRole = 1, + IdPermission = 253 + }, + new + { + IdUserRole = 1, + IdPermission = 254 + }, + new + { + IdUserRole = 1, + IdPermission = 255 + }, + new + { + IdUserRole = 1, + IdPermission = 256 + }, + new + { + IdUserRole = 1, + IdPermission = 257 + }, + new + { + IdUserRole = 1, + IdPermission = 258 + }, + new + { + IdUserRole = 1, + IdPermission = 259 + }, + new + { + IdUserRole = 1, + IdPermission = 260 + }, + new + { + IdUserRole = 1, + IdPermission = 261 + }, + new + { + IdUserRole = 1, + IdPermission = 262 + }, + new + { + IdUserRole = 1, + IdPermission = 263 + }, + new + { + IdUserRole = 1, + IdPermission = 264 + }, + new + { + IdUserRole = 1, + IdPermission = 265 + }, + new + { + IdUserRole = 1, + IdPermission = 266 + }, + new + { + IdUserRole = 1, + IdPermission = 267 + }, + new + { + IdUserRole = 1, + IdPermission = 268 + }, + new + { + IdUserRole = 1, + IdPermission = 269 + }, + new + { + IdUserRole = 1, + IdPermission = 380 + }, + new + { + IdUserRole = 1, + IdPermission = 381 + }, + new + { + IdUserRole = 1, + IdPermission = 382 + }, + new + { + IdUserRole = 1, + IdPermission = 383 + }, + new + { + IdUserRole = 1, + IdPermission = 384 + }, + new + { + IdUserRole = 1, + IdPermission = 385 + }, + new + { + IdUserRole = 1, + IdPermission = 386 + }, + new + { + IdUserRole = 1, + IdPermission = 387 + }, + new + { + IdUserRole = 1, + IdPermission = 388 + }, + new + { + IdUserRole = 1, + IdPermission = 389 + }, + new + { + IdUserRole = 1, + IdPermission = 390 + }, + new + { + IdUserRole = 1, + IdPermission = 391 + }, + new + { + IdUserRole = 1, + IdPermission = 400 + }, + new + { + IdUserRole = 1, + IdPermission = 401 + }, + new + { + IdUserRole = 1, + IdPermission = 407 + }, + new + { + IdUserRole = 1, + IdPermission = 408 + }, + new + { + IdUserRole = 1, + IdPermission = 450 + }, + new + { + IdUserRole = 1, + IdPermission = 460 + }, + new + { + IdUserRole = 1, + IdPermission = 461 + }, + new + { + IdUserRole = 1, + IdPermission = 500 + }, + new + { + IdUserRole = 1, + IdPermission = 501 + }, + new + { + IdUserRole = 1, + IdPermission = 502 + }, + new + { + IdUserRole = 1, + IdPermission = 503 + }, + new + { + IdUserRole = 1, + IdPermission = 504 + }, + new + { + IdUserRole = 1, + IdPermission = 505 + }, + new + { + IdUserRole = 1, + IdPermission = 506 + }, + new + { + IdUserRole = 1, + IdPermission = 507 + }, + new + { + IdUserRole = 1, + IdPermission = 510 + }, + new + { + IdUserRole = 1, + IdPermission = 511 + }, + new + { + IdUserRole = 1, + IdPermission = 512 + }, + new + { + IdUserRole = 1, + IdPermission = 516 + }, + new + { + IdUserRole = 1, + IdPermission = 517 + }, + new + { + IdUserRole = 1, + IdPermission = 518 + }, + new + { + IdUserRole = 1, + IdPermission = 519 + }, + new + { + IdUserRole = 1, + IdPermission = 520 + }, + new + { + IdUserRole = 1, + IdPermission = 521 + }, + new + { + IdUserRole = 1, + IdPermission = 522 + }, + new + { + IdUserRole = 1, + IdPermission = 523 + }, + new + { + IdUserRole = 1, + IdPermission = 524 + }, + new + { + IdUserRole = 1, + IdPermission = 525 + }, + new + { + IdUserRole = 1, + IdPermission = 526 + }, + new + { + IdUserRole = 1, + IdPermission = 527 + }, + new + { + IdUserRole = 1, + IdPermission = 528 + }, + new + { + IdUserRole = 1, + IdPermission = 530 + }, + new + { + IdUserRole = 1, + IdPermission = 531 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRoleUserRole", b => + { + b.Property("Id") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.Property("IdInclude") + .HasColumnType("integer") + .HasColumnName("id_include_user_role"); + + b.HasKey("Id", "IdInclude") + .HasName("t_relation_user_role_user_role_pk"); + + b.HasIndex("IdInclude"); + + b.ToTable("t_relation_user_role_user_role", t => + { + t.HasComment("Отношение ролей к ролям"); + }); + + b.HasData( + new + { + Id = 1101, + IdInclude = 1100 + }, + new + { + Id = 1103, + IdInclude = 1102 + }, + new + { + Id = 1105, + IdInclude = 1104 + }, + new + { + Id = 1107, + IdInclude = 1106 + }, + new + { + Id = 1109, + IdInclude = 1108 + }, + new + { + Id = 1111, + IdInclude = 1110 + }, + new + { + Id = 1114, + IdInclude = 1113 + }, + new + { + Id = 1117, + IdInclude = 1116 + }, + new + { + Id = 1203, + IdInclude = 1202 + }, + new + { + Id = 1207, + IdInclude = 1206 + }, + new + { + Id = 1209, + IdInclude = 1208 + }, + new + { + Id = 1212, + IdInclude = 1211 + }, + new + { + Id = 1214, + IdInclude = 1213 + }, + new + { + Id = 1216, + IdInclude = 1215 + }, + new + { + Id = 1218, + IdInclude = 1217 + }, + new + { + Id = 2000, + IdInclude = 1200 + }, + new + { + Id = 2000, + IdInclude = 1201 + }, + new + { + Id = 2000, + IdInclude = 1202 + }, + new + { + Id = 2000, + IdInclude = 1204 + }, + new + { + Id = 2000, + IdInclude = 1205 + }, + new + { + Id = 2000, + IdInclude = 1206 + }, + new + { + Id = 2000, + IdInclude = 1208 + }, + new + { + Id = 2000, + IdInclude = 1210 + }, + new + { + Id = 2000, + IdInclude = 1211 + }, + new + { + Id = 2000, + IdInclude = 1213 + }, + new + { + Id = 2000, + IdInclude = 1215 + }, + new + { + Id = 2000, + IdInclude = 1217 + }, + new + { + Id = 2000, + IdInclude = 1219 + }, + new + { + Id = 2000, + IdInclude = 1220 + }, + new + { + Id = 2000, + IdInclude = 1221 + }, + new + { + Id = 2000, + IdInclude = 1500 + }, + new + { + Id = 2000, + IdInclude = 1501 + }, + new + { + Id = 2000, + IdInclude = 1502 + }, + new + { + Id = 2001, + IdInclude = 1500 + }, + new + { + Id = 2001, + IdInclude = 1501 + }, + new + { + Id = 2001, + IdInclude = 1502 + }, + new + { + Id = 2002, + IdInclude = 1500 + }, + new + { + Id = 2002, + IdInclude = 1501 + }, + new + { + Id = 2002, + IdInclude = 1502 + }, + new + { + Id = 2003, + IdInclude = 1500 + }, + new + { + Id = 2003, + IdInclude = 1501 + }, + new + { + Id = 2003, + IdInclude = 1502 + }, + new + { + Id = 2004, + IdInclude = 1500 + }, + new + { + Id = 2004, + IdInclude = 1501 + }, + new + { + Id = 2004, + IdInclude = 1502 + }, + new + { + Id = 2005, + IdInclude = 1500 + }, + new + { + Id = 2005, + IdInclude = 1501 + }, + new + { + Id = 2005, + IdInclude = 1502 + }, + new + { + Id = 2006, + IdInclude = 1500 + }, + new + { + Id = 2006, + IdInclude = 1501 + }, + new + { + Id = 2006, + IdInclude = 1502 + }, + new + { + Id = 2007, + IdInclude = 1500 + }, + new + { + Id = 2007, + IdInclude = 1501 + }, + new + { + Id = 2007, + IdInclude = 1502 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserUserRole", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("IdUserRole") + .HasColumnType("integer") + .HasColumnName("id_user_role"); + + b.HasKey("IdUser", "IdUserRole"); + + b.HasIndex("IdUserRole"); + + b.ToTable("t_relation_user_user_role", t => + { + t.HasComment("Отношение пользователей и ролей"); + }); + + b.HasData( + new + { + IdUser = 1, + IdUserRole = 1 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ReportProperty", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Begin") + .HasColumnType("timestamp with time zone") + .HasColumnName("begin"); + + b.Property("End") + .HasColumnType("timestamp with time zone") + .HasColumnName("end") + .HasComment("timestamp with time zone"); + + b.Property("Format") + .HasColumnType("integer") + .HasColumnName("format") + .HasComment("Формат отчета"); + + b.Property("IdFile") + .HasColumnType("integer") + .HasColumnName("id_file") + .HasComment("id файла-родителя"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("id скважины"); + + b.Property("Step") + .HasColumnType("integer") + .HasColumnName("step") + .HasComment("размер шага в секундах"); + + b.HasKey("Id"); + + b.HasIndex("IdFile"); + + b.HasIndex("IdWell"); + + b.ToTable("t_report_property", t => + { + t.HasComment("Отчеты с данными по буровым"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Schedule", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("DrillEnd") + .HasColumnType("timestamp with time zone") + .HasColumnName("drill_end") + .HasComment("Конец вахты"); + + b.Property("DrillStart") + .HasColumnType("timestamp with time zone") + .HasColumnName("drill_start") + .HasComment("Начало вахты"); + + b.Property("IdDriller") + .HasColumnType("integer") + .HasColumnName("id_driller") + .HasComment("Идентификатор бурильщика"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Идентификатор скважины"); + + b.Property("ShiftEnd") + .HasColumnType("time without time zone") + .HasColumnName("shift_end") + .HasComment("Конец смены"); + + b.Property("ShiftStart") + .HasColumnType("time without time zone") + .HasColumnName("shift_start") + .HasComment("Начало смены"); + + b.HasKey("Id"); + + b.HasIndex("IdDriller"); + + b.HasIndex("IdWell"); + + b.ToTable("t_schedule", t => + { + t.HasComment("График работы бурильщика"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.SetpointsRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Comment") + .HasColumnType("text") + .HasColumnName("comment") + .HasComment("комментарий для оператора"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Id пользователя, загрузившего файл"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("id_state") + .HasComment("0: неизвестно, 1:ожидает отправки, 2: отправлено, 3: принято оператором, 4: отклонено оператором, 5: устарело"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("id скважины"); + + b.Property("ObsolescenceSec") + .HasColumnType("integer") + .HasColumnName("obsolescence") + .HasComment("сек. до устаревания"); + + b.Property("Setpoints") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("setpoint_set") + .HasComment("Набор уставок"); + + b.Property("UploadDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdWell"); + + b.ToTable("t_setpoints_rquest", t => + { + t.HasComment("Запросы на изменение уставок панели оператора"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Subsystem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Description") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("description"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name"); + + b.HasKey("Id"); + + b.ToTable("t_subsystem", t => + { + t.HasComment("Описание подсистем"); + }); + + b.HasData( + new + { + Id = 1, + Description = "Совместная работа режимов \"Бурение в роторе\" и \"Бурение в слайде\"", + Name = "АПД" + }, + new + { + Id = 11, + Description = "Режим работы \"Бурение в роторе\"", + Name = "АПД ротор" + }, + new + { + Id = 12, + Description = "Режим работы \"Бурение в слайде\"", + Name = "АПД слайд" + }, + new + { + Id = 65536, + Description = "Осцилляция", + Name = "Осцилляция" + }, + new + { + Id = 65537, + Description = "Демпфер", + Name = "Демпфер" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Telemetry", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Info") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("info") + .HasComment("Информация с панели о скважине"); + + b.Property("RemoteUid") + .IsRequired() + .HasColumnType("text") + .HasColumnName("remote_uid") + .HasComment("Идентификатор передающего устройства. Может повторяться в списке, так как комплекты оборудования переезжают от скв. к скв."); + + b.Property("TimeZone") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("timezone") + .HasComment("Смещение часового пояса от UTC"); + + b.HasKey("Id"); + + b.HasIndex(new[] { "RemoteUid" }, "t_telemetry_remote_uid_index"); + + b.ToTable("t_telemetry", t => + { + t.HasComment("таблица привязки телеметрии от комплектов к конкретной скважине."); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaub", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date") + .HasComment("'2021-10-19 18:23:54+05'"); + + b.Property("AxialLoad") + .HasColumnType("real") + .HasColumnName("axial_load") + .HasComment("Осевая нагрузка"); + + b.Property("AxialLoadLimitMax") + .HasColumnType("real") + .HasColumnName("axial_load_limit_max") + .HasComment("Осевая нагрузка. Аварийная макс."); + + b.Property("AxialLoadSp") + .HasColumnType("real") + .HasColumnName("axial_load_sp") + .HasComment("Осевая нагрузка. Задание"); + + b.Property("BitDepth") + .HasColumnType("real") + .HasColumnName("bit_depth") + .HasComment("Положение инструмента"); + + b.Property("BlockPosition") + .HasColumnType("real") + .HasColumnName("block_position") + .HasComment("Высота талевого блока"); + + b.Property("BlockPositionMax") + .HasColumnType("real") + .HasColumnName("block_position_max") + .HasComment("Талевый блок. Макс положение"); + + b.Property("BlockPositionMin") + .HasColumnType("real") + .HasColumnName("block_position_min") + .HasComment("Талевый блок. Мин положение"); + + b.Property("BlockSpeed") + .HasColumnType("real") + .HasColumnName("block_speed") + .HasComment("Скорость талевого блока"); + + b.Property("BlockSpeedSp") + .HasColumnType("real") + .HasColumnName("block_speed_sp") + .HasComment("Скорости талевого блока. Задание"); + + b.Property("BlockSpeedSpDevelop") + .HasColumnType("real") + .HasColumnName("block_speed_sp_develop") + .HasComment("Талевый блок. Задание скорости для проработки"); + + b.Property("BlockSpeedSpRotor") + .HasColumnType("real") + .HasColumnName("block_speed_sp_rotor") + .HasComment("Талевый блок. Задание скорости для роторного бурения"); + + b.Property("BlockSpeedSpSlide") + .HasColumnType("real") + .HasColumnName("block_speed_sp_slide") + .HasComment("Талевый блок. Задание скорости для режима слайда"); + + b.Property("Flow") + .HasColumnType("real") + .HasColumnName("flow") + .HasComment("Расход"); + + b.Property("FlowDeltaLimitMax") + .HasColumnType("real") + .HasColumnName("flow_delta_limit_max") + .HasComment("Расход. Аварийный макс."); + + b.Property("FlowIdle") + .HasColumnType("real") + .HasColumnName("flow_idle") + .HasComment("Расход. Холостой ход"); + + b.Property("HookWeight") + .HasColumnType("real") + .HasColumnName("hook_weight") + .HasComment("Вес на крюке"); + + b.Property("HookWeightIdle") + .HasColumnType("real") + .HasColumnName("hook_weight_idle") + .HasComment("Вес на крюке. Холостой ход"); + + b.Property("HookWeightLimitMax") + .HasColumnType("real") + .HasColumnName("hook_weight_limit_max") + .HasComment("Вес на крюке. Затяжка"); + + b.Property("HookWeightLimitMin") + .HasColumnType("real") + .HasColumnName("hook_weight_limit_min") + .HasComment("Вес на крюке. Посадка"); + + b.Property("IdFeedRegulator") + .HasColumnType("smallint") + .HasColumnName("id_feed_regulator") + .HasComment("Текущий критерий бурения"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user") + .HasComment("Пользователь САУБ"); + + b.Property("Mode") + .HasColumnType("smallint") + .HasColumnName("mode") + .HasComment("Режим САУБ"); + + b.Property("Mse") + .HasColumnType("real") + .HasColumnName("mse") + .HasComment("MSE"); + + b.Property("MseState") + .HasColumnType("smallint") + .HasColumnName("mse_state") + .HasComment("Текущее состояние работы MSE"); + + b.Property("Pressure") + .HasColumnType("real") + .HasColumnName("pressure") + .HasComment("Давление"); + + b.Property("PressureDeltaLimitMax") + .HasColumnType("real") + .HasColumnName("pressure_delta_limit_max") + .HasComment("Давление дифф. Аварийное макс."); + + b.Property("PressureIdle") + .HasColumnType("real") + .HasColumnName("pressure_idle") + .HasComment("Давление. Холостой ход"); + + b.Property("PressureSp") + .HasColumnType("real") + .HasColumnName("pressure_sp") + .HasComment("Давление. Задание"); + + b.Property("PressureSpDevelop") + .HasColumnType("real") + .HasColumnName("pressure_sp_develop") + .HasComment("Давление. Задание для проработки"); + + b.Property("PressureSpRotor") + .HasColumnType("real") + .HasColumnName("pressure_sp_rotor") + .HasComment("Давление. Задание для роторного бурения"); + + b.Property("PressureSpSlide") + .HasColumnType("real") + .HasColumnName("pressure_sp_slide") + .HasComment("Давление. Задание для режима слайда"); + + b.Property("Pump0Flow") + .HasColumnType("real") + .HasColumnName("pump0_flow") + .HasComment("Расход. Буровой насос 1"); + + b.Property("Pump1Flow") + .HasColumnType("real") + .HasColumnName("pump1_flow") + .HasComment("Расход. Буровой насос 2"); + + b.Property("Pump2Flow") + .HasColumnType("real") + .HasColumnName("pump2_flow") + .HasComment("Расход. Буровой насос 3"); + + b.Property("RotorSpeed") + .HasColumnType("real") + .HasColumnName("rotor_speed") + .HasComment("Обороты ротора"); + + b.Property("RotorTorque") + .HasColumnType("real") + .HasColumnName("rotor_torque") + .HasComment("Момент на роторе"); + + b.Property("RotorTorqueIdle") + .HasColumnType("real") + .HasColumnName("rotor_torque_idle") + .HasComment("Момент на роторе. Холостой ход"); + + b.Property("RotorTorqueLimitMax") + .HasColumnType("real") + .HasColumnName("rotor_torque_limit_max") + .HasComment("Момент на роторе. Аварийный макс."); + + b.Property("RotorTorqueSp") + .HasColumnType("real") + .HasColumnName("rotor_torque_sp") + .HasComment("Момент на роторе. Задание"); + + b.Property("WellDepth") + .HasColumnType("real") + .HasColumnName("well_depth") + .HasComment("Глубина забоя"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_data_saub", t => + { + t.HasComment("набор основных данных по SAUB"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaubStat", b => + { + b.Property("Count") + .HasColumnType("bigint") + .HasColumnName("count_items"); + + b.Property("DateMax") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_max"); + + b.Property("DateMin") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_min"); + + b.Property("DepthMax") + .HasColumnType("real") + .HasColumnName("depth_max"); + + b.Property("DepthMin") + .HasColumnType("real") + .HasColumnName("depth_min"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.ToTable((string)null); + + b.ToView("mw_telemetry_datas_saub_stat", (string)null); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSpin", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date") + .HasComment("'2021-10-19 18:23:54+05'"); + + b.Property("Mode") + .HasColumnType("smallint") + .HasColumnName("mode") + .HasComment("Выбранный режим управления"); + + b.Property("PositionRight") + .HasColumnType("real") + .HasColumnName("position_right") + .HasComment("Крайний правый угол осцилляции"); + + b.Property("PositionZero") + .HasColumnType("real") + .HasColumnName("position_zero") + .HasComment("Нулевая позиция осцилляции"); + + b.Property("RevolsLeftLimit") + .HasColumnType("real") + .HasColumnName("revols_left_limit") + .HasComment("Ограничение числа оборотов влево"); + + b.Property("RevolsLeftTotal") + .HasColumnType("real") + .HasColumnName("revols_left_total") + .HasComment("Суммарное количество оборотов влево"); + + b.Property("RevolsRightLimit") + .HasColumnType("real") + .HasColumnName("revols_right_limit") + .HasComment("Ограничение числа оборотов вправо"); + + b.Property("RevolsRightTotal") + .HasColumnType("real") + .HasColumnName("revols_right_total") + .HasComment("Суммарное количество оборотов вправо"); + + b.Property("SpeedLeftSp") + .HasColumnType("real") + .HasColumnName("speed_left_sp") + .HasComment("Заданная скорость вращения влево"); + + b.Property("SpeedRightSp") + .HasColumnType("real") + .HasColumnName("speed_right_sp") + .HasComment("Заданная скорость вращения вправо"); + + b.Property("State") + .HasColumnType("smallint") + .HasColumnName("state") + .HasComment("Переменная этапа"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_data_spin", t => + { + t.HasComment("набор основных данных по SpinMaster"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryEvent", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdEvent") + .HasColumnType("integer") + .HasColumnName("id_event"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category"); + + b.Property("MessageTemplate") + .IsRequired() + .HasColumnType("text") + .HasColumnName("message_template"); + + b.HasKey("IdTelemetry", "IdEvent"); + + b.ToTable("t_telemetry_event", t => + { + t.HasComment("Справочник событий. События формируют сообщения. Разделено по версиям посылок от телеметрии."); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Arg0") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg0") + .HasComment("Аргумент №0 для вставки в шаблон сообщения"); + + b.Property("Arg1") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg1"); + + b.Property("Arg2") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg2"); + + b.Property("Arg3") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("arg3"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("IdEvent") + .HasColumnType("integer") + .HasColumnName("id_event"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdTelemetryUser") + .HasColumnType("integer") + .HasColumnName("id_telemetry_user") + .HasComment("Пользователь панели отправляющей телеметрию. не пользователь облака."); + + b.Property("WellDepth") + .HasColumnType("double precision") + .HasColumnName("well_depth"); + + b.HasKey("Id"); + + b.HasIndex("IdTelemetry"); + + b.ToTable("t_telemetry_message", t => + { + t.HasComment("Сообщения на буровых"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryUser", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("Level") + .HasColumnType("integer") + .HasColumnName("level"); + + b.Property("Name") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name"); + + b.Property("Patronymic") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("patronymic"); + + b.Property("Surname") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("surname"); + + b.HasKey("IdTelemetry", "IdUser"); + + b.ToTable("t_telemetry_user", t => + { + t.HasComment("Пользователи панели САУБ. Для сообщений."); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryWirelineRunOut", b => + { + b.Property("IdTelemetry") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id_telemetry") + .HasComment("Идентификатор телеметрии"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("IdTelemetry")); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_time") + .HasComment("Отметка времени"); + + b.Property("Hauling") + .HasColumnType("real") + .HasColumnName("hauling") + .HasComment("Наработка талевого каната с момента перетяжки каната, т*км"); + + b.Property("HaulingWarnSp") + .HasColumnType("real") + .HasColumnName("hauling_warn_sp") + .HasComment("Наработка талевого каната до сигнализации о необходимости перетяжки, т*км"); + + b.Property("Replace") + .HasColumnType("real") + .HasColumnName("replace") + .HasComment("Наработка талевого каната с момента замены каната, т*км"); + + b.Property("ReplaceWarnSp") + .HasColumnType("real") + .HasColumnName("replace_warn_sp") + .HasComment("Наработка талевого каната до сигнализации о необходимости замены, т*км"); + + b.HasKey("IdTelemetry"); + + b.ToTable("t_telemetry_wireline_run_out", t => + { + t.HasComment("Наработка талевого каната"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Trajectory.TrajectoryFact", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AzimuthGeo") + .HasColumnType("double precision") + .HasColumnName("azimuth_geo") + .HasComment("Азимут Географ."); + + b.Property("AzimuthMagnetic") + .HasColumnType("double precision") + .HasColumnName("azimuth_magnetic") + .HasComment("Азимут Магнитный"); + + b.Property("Comment") + .HasColumnType("text") + .HasColumnName("comment") + .HasComment("Комментарии"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user") + .HasComment("ID пользователя который внес/изменил запись"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("ID скважины"); + + b.Property("UpdateDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("update_date") + .HasComment("Дата загрузки траектории"); + + b.Property("VerticalDepth") + .HasColumnType("double precision") + .HasColumnName("vertical_depth") + .HasComment("Глубина вертикальная"); + + b.Property("WellboreDepth") + .HasColumnType("double precision") + .HasColumnName("wellbore_depth") + .HasComment("Глубина по стволу"); + + b.Property("ZenithAngle") + .HasColumnType("double precision") + .HasColumnName("zenith_angle") + .HasComment("Угол зенитный"); + + b.HasKey("Id"); + + b.HasIndex("IdUser"); + + b.HasIndex("IdWell"); + + b.ToTable("t_trajectory_fact", t => + { + t.HasComment("Загрузка фактической траектории"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Trajectory.TrajectoryPlan", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AzimuthGeo") + .HasColumnType("double precision") + .HasColumnName("azimuth_geo") + .HasComment("Азимут Географ."); + + b.Property("AzimuthMagnetic") + .HasColumnType("double precision") + .HasColumnName("azimuth_magnetic") + .HasComment("Азимут Магнитный"); + + b.Property("Comment") + .HasColumnType("text") + .HasColumnName("comment") + .HasComment("Комментарии"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user") + .HasComment("ID пользователя который внес/изменил запись"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("ID скважины"); + + b.Property("Radius") + .HasColumnType("double precision") + .HasColumnName("radius") + .HasComment("Радиус цели"); + + b.Property("UpdateDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("update_date") + .HasComment("Дата загрузки траектории"); + + b.Property("VerticalDepth") + .HasColumnType("double precision") + .HasColumnName("vertical_depth") + .HasComment("Глубина вертикальная"); + + b.Property("WellboreDepth") + .HasColumnType("double precision") + .HasColumnName("wellbore_depth") + .HasComment("Глубина по стволу"); + + b.Property("ZenithAngle") + .HasColumnType("double precision") + .HasColumnName("zenith_angle") + .HasComment("Угол зенитный"); + + b.HasKey("Id"); + + b.HasIndex("IdUser"); + + b.HasIndex("IdWell"); + + b.ToTable("t_trajectory_plan", t => + { + t.HasComment("Загрузка плановой траектории"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Email") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("email") + .HasComment("должность"); + + b.Property("IdCompany") + .HasColumnType("integer") + .HasColumnName("id_company"); + + b.Property("IdState") + .HasColumnType("smallint") + .HasColumnName("state") + .HasComment("состояние:\n0 - не активен, \n1 - активен, \n2 - заблокирован"); + + b.Property("Login") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("login"); + + b.Property("Name") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name") + .HasComment("имя"); + + b.Property("PasswordHash") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("password_hash") + .HasComment("соленый хэш пароля.\nпервые 5 символов - соль"); + + b.Property("Patronymic") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("patronymic") + .HasComment("отчество"); + + b.Property("Phone") + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .HasColumnName("phone") + .HasComment("номер телефона"); + + b.Property("Position") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("position") + .HasComment("email"); + + b.Property("Surname") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("surname") + .HasComment("фамилия"); + + b.HasKey("Id"); + + b.HasIndex("IdCompany"); + + b.HasIndex("Login") + .IsUnique(); + + b.ToTable("t_user", t => + { + t.HasComment("Пользователи облака"); + }); + + b.HasData( + new + { + Id = 1, + Email = "", + IdCompany = 1, + IdState = (short)1, + Login = "dev", + Name = "Разработчик", + PasswordHash = "Vlcj|4fa529103dde7ff72cfe76185f344d4aa87931f8e1b2044e8a7739947c3d18923464eaad93843e4f809c5e126d013072" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Caption") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("caption") + .HasComment("Название"); + + b.Property("IdType") + .HasColumnType("integer") + .HasColumnName("id_type") + .HasComment("0-роль из стандартной матрицы, \n1-специальная роль для какого-либо пользователя"); + + b.HasKey("Id"); + + b.ToTable("t_user_role", t => + { + t.HasComment("Роли пользователей в системе"); + }); + + b.HasData( + new + { + Id = 1, + Caption = "root", + IdType = 1 + }, + new + { + Id = 1100, + Caption = "admin_cluster.view", + IdType = 1 + }, + new + { + Id = 1101, + Caption = "admin_cluster.edit", + IdType = 1 + }, + new + { + Id = 1102, + Caption = "admin_company.view", + IdType = 1 + }, + new + { + Id = 1103, + Caption = "admin_company.edit", + IdType = 1 + }, + new + { + Id = 1104, + Caption = "admin_company_type.view", + IdType = 1 + }, + new + { + Id = 1105, + Caption = "admin_company_type.edit", + IdType = 1 + }, + new + { + Id = 1106, + Caption = "admin_deposit.view", + IdType = 1 + }, + new + { + Id = 1107, + Caption = "admin_deposit.edit", + IdType = 1 + }, + new + { + Id = 1108, + Caption = "admin_permission.view", + IdType = 1 + }, + new + { + Id = 1109, + Caption = "admin_permission.edit", + IdType = 1 + }, + new + { + Id = 1110, + Caption = "admin_role.view", + IdType = 1 + }, + new + { + Id = 1111, + Caption = "admin_role.edit", + IdType = 1 + }, + new + { + Id = 1112, + Caption = "admin_telemetry.view", + IdType = 1 + }, + new + { + Id = 1113, + Caption = "admin_user.view", + IdType = 1 + }, + new + { + Id = 1114, + Caption = "admin_user.edit", + IdType = 1 + }, + new + { + Id = 1115, + Caption = "admin_visit_log.view", + IdType = 1 + }, + new + { + Id = 1116, + Caption = "admin_well.view", + IdType = 1 + }, + new + { + Id = 1117, + Caption = "admin_well.edit", + IdType = 1 + }, + new + { + Id = 1200, + Caption = "archive.view", + IdType = 1 + }, + new + { + Id = 1201, + Caption = "cluster.view", + IdType = 1 + }, + new + { + Id = 1202, + Caption = "composite.view", + IdType = 1 + }, + new + { + Id = 1203, + Caption = "composite.edit", + IdType = 1 + }, + new + { + Id = 1204, + Caption = "deposit.view", + IdType = 1 + }, + new + { + Id = 1205, + Caption = "document.view", + IdType = 1 + }, + new + { + Id = 1206, + Caption = "drillProcessFlow.view", + IdType = 1 + }, + new + { + Id = 1207, + Caption = "drillProcessFlow.edit", + IdType = 1 + }, + new + { + Id = 1208, + Caption = "measure.view", + IdType = 1 + }, + new + { + Id = 1209, + Caption = "measure.edit", + IdType = 1 + }, + new + { + Id = 1210, + Caption = "message.view", + IdType = 1 + }, + new + { + Id = 1211, + Caption = "operations.view", + IdType = 1 + }, + new + { + Id = 1212, + Caption = "operations.edit", + IdType = 1 + }, + new + { + Id = 1213, + Caption = "params.view", + IdType = 1 + }, + new + { + Id = 1214, + Caption = "params.edit", + IdType = 1 + }, + new + { + Id = 1215, + Caption = "report.view", + IdType = 1 + }, + new + { + Id = 1216, + Caption = "report.edit", + IdType = 1 + }, + new + { + Id = 1217, + Caption = "setpoints.view", + IdType = 1 + }, + new + { + Id = 1218, + Caption = "setpoints.edit", + IdType = 1 + }, + new + { + Id = 1219, + Caption = "telemetry.view", + IdType = 1 + }, + new + { + Id = 1220, + Caption = "telemetryAnalysis.view", + IdType = 1 + }, + new + { + Id = 1221, + Caption = "well.view", + IdType = 1 + }, + new + { + Id = 1500, + Caption = "Просмотр всего", + IdType = 1 + }, + new + { + Id = 1501, + Caption = "file.edit", + IdType = 1 + }, + new + { + Id = 1502, + Caption = "drillingProgram.edit", + IdType = 1 + }, + new + { + Id = 2000, + Caption = "Заказчик", + IdType = 0 + }, + new + { + Id = 2001, + Caption = "Супервайзер", + IdType = 0 + }, + new + { + Id = 2002, + Caption = "Буровой подрядчик", + IdType = 0 + }, + new + { + Id = 2003, + Caption = "Растворщик", + IdType = 0 + }, + new + { + Id = 2004, + Caption = "Телеметрист", + IdType = 0 + }, + new + { + Id = 2005, + Caption = "Долотный сервис", + IdType = 0 + }, + new + { + Id = 2006, + Caption = "ГТИ", + IdType = 0 + }, + new + { + Id = 2007, + Caption = "Цементирование", + IdType = 0 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserSetting", b => + { + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("Key") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("key") + .HasComment("Ключ настроек пользователя"); + + b.Property("Value") + .HasColumnType("jsonb") + .HasColumnName("setting_value") + .HasComment("Значение настроек пользователя"); + + b.HasKey("IdUser", "Key"); + + b.ToTable("t_user_settings", t => + { + t.HasComment("настройки интерфейса пользователя"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.RecordBase", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("Actcod") + .HasColumnType("smallint") + .HasColumnName("ACTCOD"); + + b.Property("Date") + .HasColumnType("integer") + .HasColumnName("DATE"); + + b.Property("Recid") + .HasColumnType("smallint") + .HasColumnName("RECID"); + + b.Property("Seqid") + .HasColumnType("integer") + .HasColumnName("SEQID"); + + b.Property("Stknum") + .HasColumnType("smallint") + .HasColumnName("STKNUM"); + + b.Property("Time") + .HasColumnType("integer") + .HasColumnName("TIME"); + + b.Property("Wellid") + .HasColumnType("text") + .HasColumnName("WELLID"); + + b.HasKey("IdTelemetry", "DateTime"); + + b.ToTable("t_telemetry_wits_base"); + + b.UseTptMappingStrategy(); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Caption") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("caption"); + + b.Property("IdCluster") + .HasColumnType("integer") + .HasColumnName("id_cluster"); + + b.Property("IdState") + .HasColumnType("integer") + .HasColumnName("state") + .HasComment("0 - неизвестно, 1 - в работе, 2 - завершена"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdWellType") + .HasColumnType("integer") + .HasColumnName("id_well_type"); + + b.Property("Latitude") + .HasColumnType("double precision") + .HasColumnName("latitude"); + + b.Property("Longitude") + .HasColumnType("double precision") + .HasColumnName("longitude"); + + b.Property("Timezone") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("timezone") + .HasComment("Смещение часового пояса от UTC"); + + b.HasKey("Id"); + + b.HasIndex("IdCluster"); + + b.HasIndex("IdTelemetry") + .IsUnique(); + + b.HasIndex("IdWellType"); + + b.ToTable("t_well", t => + { + t.HasComment("скважины"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellComposite", b => + { + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины получателя"); + + b.Property("IdWellSrc") + .HasColumnType("integer") + .HasColumnName("id_well_src") + .HasComment("Id скважины композита"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_well_section_type") + .HasComment("Id тип секции композита"); + + b.HasKey("IdWell", "IdWellSrc", "IdWellSectionType"); + + b.HasIndex("IdWellSectionType"); + + b.HasIndex("IdWellSrc"); + + b.ToTable("t_well_composite", t => + { + t.HasComment("Композитная скважина"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellFinalDocument", b => + { + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category"); + + b.HasKey("IdWell", "IdUser", "IdCategory") + .HasName("t_well_final_documents_pk"); + + b.HasIndex("IdCategory"); + + b.HasIndex("IdUser"); + + b.ToTable("t_well_final_documents", t => + { + t.HasComment("Дело скважины"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CategoryInfo") + .HasColumnType("text") + .HasColumnName("category_info") + .HasComment("Доп. информация к выбраной категории"); + + b.Property("Comment") + .HasColumnType("text") + .HasColumnName("comment") + .HasComment("Комментарий"); + + b.Property("DateStart") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_start") + .HasComment("Дата начала операции"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина после завершения операции, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина на начало операции, м"); + + b.Property("DurationHours") + .HasColumnType("double precision") + .HasColumnName("duration_hours") + .HasComment("Продолжительность, часы"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category") + .HasComment("Id категории операции"); + + b.Property("IdPlan") + .HasColumnType("integer") + .HasColumnName("id_plan") + .HasComment("Id плановой операции"); + + b.Property("IdType") + .HasColumnType("integer") + .HasColumnName("id_type") + .HasComment("0 = План или 1 = Факт"); + + b.Property("IdUser") + .HasColumnType("integer"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("IdWellSectionType") + .HasColumnType("integer") + .HasColumnName("id_well_section_type") + .HasComment("Id тип секции скважины"); + + b.Property("LastUpdateDate") + .HasColumnType("timestamp with time zone"); + + b.HasKey("Id"); + + b.HasIndex("DateStart"); + + b.HasIndex("DepthEnd"); + + b.HasIndex("IdCategory"); + + b.HasIndex("IdPlan"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_well_operation", t => + { + t.HasComment("Данные по операциям на скважине"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperationCategory", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("IdParent") + .HasColumnType("integer") + .HasColumnName("id_parent") + .HasComment("id родительской категории"); + + b.Property("KeyValueName") + .HasMaxLength(32) + .HasColumnType("character varying(32)") + .HasColumnName("key_value_name") + .HasComment("Название ключевого показателя операции"); + + b.Property("KeyValueUnits") + .HasMaxLength(16) + .HasColumnType("character varying(16)") + .HasColumnName("key_value_units") + .HasComment("Единицы измерения ключевого показателя операции"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name") + .HasComment("Название категории операции"); + + b.HasKey("Id"); + + b.HasIndex("IdParent"); + + b.ToTable("t_well_operation_category", t => + { + t.HasComment("Справочник операций на скважине"); + }); + + b.HasData( + new + { + Id = 3000, + 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 = 3006, + 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 = 4019, + IdParent = 3006, + 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 = "Работа пакером в обсадной колонне" + }, + new + { + Id = 5113, + IdParent = 4001, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", + Name = "Бурение" + }, + new + { + Id = 5114, + IdParent = 4013, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ТО оборудования" + }, + new + { + Id = 5115, + IdParent = 4019, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск НКТ" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSectionType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Caption") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("caption") + .HasComment("Название"); + + b.Property("Order") + .HasColumnType("real") + .HasColumnName("order") + .HasComment("Порядок"); + + b.HasKey("Id"); + + b.ToTable("t_well_section_type", t => + { + t.HasComment("конструкция секции скважины"); + }); + + b.HasData( + new + { + Id = 1, + Caption = "Пилотный ствол", + Order = 4f + }, + new + { + Id = 2, + Caption = "Направление", + Order = 0f + }, + new + { + Id = 3, + Caption = "Кондуктор", + Order = 1f + }, + new + { + Id = 4, + Caption = "Эксплуатационная колонна", + Order = 3f + }, + new + { + Id = 5, + Caption = "Транспортный ствол", + Order = 5f + }, + new + { + Id = 6, + Caption = "Хвостовик", + Order = 6f + }, + new + { + Id = 7, + Caption = "Пилотный ствол 2", + Order = 4.1f + }, + new + { + Id = 8, + Caption = "Направление 2", + Order = 0.1f + }, + new + { + Id = 9, + Caption = "Кондуктор 2", + Order = 1.1f + }, + new + { + Id = 10, + Caption = "Эксплуатационная колонна 2", + Order = 3.1f + }, + new + { + Id = 11, + Caption = "Транспортный ствол 2", + Order = 5.1f + }, + new + { + Id = 12, + Caption = "Хвостовик 2", + Order = 6.1f + }, + new + { + Id = 13, + Caption = "Пилотный ствол 3", + Order = 4.2f + }, + new + { + Id = 14, + Caption = "Направление 3", + Order = 0.2f + }, + new + { + Id = 15, + Caption = "Кондуктор 3", + Order = 1.2f + }, + new + { + Id = 16, + Caption = "Эксплуатационная колонна 3", + Order = 3.2f + }, + new + { + Id = 17, + Caption = "Транспортный ствол 3", + Order = 5.2f + }, + new + { + Id = 18, + Caption = "Хвостовик 3", + Order = 6.2f + }, + new + { + Id = 19, + Caption = "Пилотный ствол 4", + Order = 4.3f + }, + new + { + Id = 20, + Caption = "Направление 4", + Order = 0.3f + }, + new + { + Id = 21, + Caption = "Кондуктор 4", + Order = 1.3f + }, + new + { + Id = 22, + Caption = "Эксплуатационная колонна 4", + Order = 3.3f + }, + new + { + Id = 23, + Caption = "Транспортный ствол 4", + Order = 5.3f + }, + new + { + Id = 24, + Caption = "Хвостовик 4", + Order = 6.3f + }, + new + { + Id = 25, + Caption = "Пилотный ствол 5", + Order = 4.4f + }, + new + { + Id = 26, + Caption = "Направление 5", + Order = 0.4f + }, + new + { + Id = 27, + Caption = "Кондуктор 5", + Order = 1.4f + }, + new + { + Id = 28, + Caption = "Эксплуатационная колонна 5", + Order = 3.4f + }, + new + { + Id = 29, + Caption = "Транспортный ствол 5", + Order = 5.4f + }, + new + { + Id = 30, + Caption = "Хвостовик 5", + Order = 6.4f + }, + new + { + Id = 31, + Caption = "Техническая колонна", + Order = 2f + }, + new + { + Id = 32, + Caption = "Техническая колонна 2", + Order = 2.1f + }, + new + { + Id = 33, + Caption = "Техническая колонна 3", + Order = 2.2f + }, + new + { + Id = 34, + Caption = "Хвостовик 6", + Order = 6.5f + }, + new + { + Id = 35, + Caption = "Хвостовик 7", + Order = 6.6f + }, + new + { + Id = 36, + Caption = "Хвостовик 8", + Order = 6.7f + }, + new + { + Id = 37, + Caption = "Хвостовик 9", + Order = 6.8f + }, + new + { + Id = 38, + Caption = "Хвостовик 10", + Order = 6.9f + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSections.WellSectionPlan", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Конечная глубина бурения, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Начальная глубина бурения, м"); + + b.Property("IdSectionType") + .HasColumnType("integer") + .HasColumnName("id_section_type") + .HasComment("Тип секции"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user") + .HasComment("Id пользователя"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Id скважины"); + + b.Property("InnerDiameter") + .HasColumnType("double precision") + .HasColumnName("inner_diameter") + .HasComment("Внутренний диаметр"); + + b.Property("LastUpdateDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_last_update") + .HasComment("Дата последнего обновления"); + + b.Property("OuterDiameter") + .HasColumnType("double precision") + .HasColumnName("outer_diameter") + .HasComment("Внешний диаметр"); + + b.HasKey("Id"); + + b.HasIndex("IdSectionType"); + + b.HasIndex("IdWell", "IdSectionType") + .IsUnique(); + + b.ToTable("t_well_section_plan"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Caption") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("caption") + .HasComment("Название"); + + b.HasKey("Id"); + + b.ToTable("t_well_type", t => + { + t.HasComment("конструкция скважины"); + }); + + b.HasData( + new + { + Id = 1, + Caption = "Наклонно-направленная" + }, + new + { + Id = 2, + Caption = "Горизонтальная" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record1", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Blkpos") + .HasColumnType("real") + .HasColumnName("BLKPOS"); + + b.Property("Chkp") + .HasColumnType("real") + .HasColumnName("CHKP"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptbitv") + .HasColumnType("real") + .HasColumnName("DEPTBITV"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptretm") + .HasColumnType("real") + .HasColumnName("DEPTRETM"); + + b.Property("Deptvert") + .HasColumnType("real") + .HasColumnName("DEPTVERT"); + + b.Property("Gasa") + .HasColumnType("real") + .HasColumnName("GASA"); + + b.Property("Hkla") + .HasColumnType("real") + .HasColumnName("HKLA"); + + b.Property("Hklx") + .HasColumnType("real") + .HasColumnName("HKLX"); + + b.Property("Lagstks") + .HasColumnType("smallint") + .HasColumnName("LAGSTKS"); + + b.Property("Mcia") + .HasColumnType("real") + .HasColumnName("MCIA"); + + b.Property("Mcoa") + .HasColumnType("real") + .HasColumnName("MCOA"); + + b.Property("Mdia") + .HasColumnType("real") + .HasColumnName("MDIA"); + + b.Property("Mdoa") + .HasColumnType("real") + .HasColumnName("MDOA"); + + b.Property("Mfia") + .HasColumnType("real") + .HasColumnName("MFIA"); + + b.Property("Mfoa") + .HasColumnType("real") + .HasColumnName("MFOA"); + + b.Property("Mfop") + .HasColumnType("smallint") + .HasColumnName("MFOP"); + + b.Property("Mtia") + .HasColumnType("real") + .HasColumnName("MTIA"); + + b.Property("Mtoa") + .HasColumnType("real") + .HasColumnName("MTOA"); + + b.Property("Ropa") + .HasColumnType("real") + .HasColumnName("ROPA"); + + b.Property("Rpma") + .HasColumnType("smallint") + .HasColumnName("RPMA"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Spm1") + .HasColumnType("smallint") + .HasColumnName("SPM1"); + + b.Property("Spm2") + .HasColumnType("smallint") + .HasColumnName("SPM2"); + + b.Property("Spm3") + .HasColumnType("smallint") + .HasColumnName("SPM3"); + + b.Property("Sppa") + .HasColumnType("real") + .HasColumnName("SPPA"); + + b.Property("Stkc") + .HasColumnType("integer") + .HasColumnName("STKC"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.Property("Torqa") + .HasColumnType("real") + .HasColumnName("TORQA"); + + b.Property("Torqx") + .HasColumnType("real") + .HasColumnName("TORQX"); + + b.Property("Tvolact") + .HasColumnType("real") + .HasColumnName("TVOLACT"); + + b.Property("Tvolcact") + .HasColumnType("real") + .HasColumnName("TVOLCACT"); + + b.Property("Woba") + .HasColumnType("real") + .HasColumnName("WOBA"); + + b.Property("Wobx") + .HasColumnType("real") + .HasColumnName("WOBX"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_1"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record50", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("DeptmeasGdpMc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_GDP_mc"); + + b.Property("DeptmeasMcrstat") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_MCRSTAT"); + + b.Property("DeptmeasRa33Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33_mc"); + + b.Property("DeptmeasRa33f2Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33F2_mc"); + + b.Property("DeptmeasRa33f4Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RA33F4_mc"); + + b.Property("DeptmeasRp33Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33_mc"); + + b.Property("DeptmeasRp33f2Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33F2_mc"); + + b.Property("DeptmeasRp33f4Mc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_RP33F4_mc"); + + b.Property("DeptmeasSlvlMc") + .HasColumnType("real") + .HasColumnName("DEPTMEAS_SLVL_mc"); + + b.Property("GdpMc") + .HasColumnType("real") + .HasColumnName("GDP_mc"); + + b.Property("Mcrstat") + .HasColumnType("real") + .HasColumnName("MCRSTAT"); + + b.Property("Ra33Mc") + .HasColumnType("real") + .HasColumnName("RA33_mc"); + + b.Property("Ra33f2Mc") + .HasColumnType("real") + .HasColumnName("RA33F2_mc"); + + b.Property("Ra33f4Mc") + .HasColumnType("real") + .HasColumnName("RA33F4_mc"); + + b.Property("Rp33Mc") + .HasColumnType("real") + .HasColumnName("RP33_mc"); + + b.Property("Rp33f2Mc") + .HasColumnType("real") + .HasColumnName("RP33F2_mc"); + + b.Property("Rp33f4Mc") + .HasColumnType("real") + .HasColumnName("RP33F4_mc"); + + b.Property("SlvlMc") + .HasColumnType("real") + .HasColumnName("SLVL_mc"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_50"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record60", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Btot") + .HasColumnType("real") + .HasColumnName("Btot"); + + b.Property("Bx") + .HasColumnType("real") + .HasColumnName("Bx"); + + b.Property("By") + .HasColumnType("real") + .HasColumnName("By"); + + b.Property("Bz") + .HasColumnType("real") + .HasColumnName("Bz"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Gtot") + .HasColumnType("real") + .HasColumnName("Gtot"); + + b.Property("Gx") + .HasColumnType("real") + .HasColumnName("Gx"); + + b.Property("Gy") + .HasColumnType("real") + .HasColumnName("Gy"); + + b.Property("Gz") + .HasColumnType("real") + .HasColumnName("Gz"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_60"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record61", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Att06h") + .HasColumnType("real") + .HasColumnName("ATT06H"); + + b.Property("Att06l") + .HasColumnType("real") + .HasColumnName("ATT06L"); + + b.Property("Att10h") + .HasColumnType("real") + .HasColumnName("ATT10H"); + + b.Property("Att10l") + .HasColumnType("real") + .HasColumnName("ATT10L"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Phl1f1") + .HasColumnType("real") + .HasColumnName("PHL1F1"); + + b.Property("Phl1f2") + .HasColumnType("real") + .HasColumnName("PHL1F2"); + + b.Property("Phl2f1") + .HasColumnType("real") + .HasColumnName("PHL2F1"); + + b.Property("Phl2f2") + .HasColumnType("real") + .HasColumnName("PHL2F2"); + + b.Property("Status") + .HasColumnType("real") + .HasColumnName("Status"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_61"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record7", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptsvym") + .HasColumnType("real") + .HasColumnName("DEPTSVYM"); + + b.Property("Deptsvyv") + .HasColumnType("real") + .HasColumnName("DEPTSVYV"); + + b.Property("Passnum") + .HasColumnType("smallint") + .HasColumnName("PASSNUM"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Svyazc") + .HasColumnType("real") + .HasColumnName("SVYAZC"); + + b.Property("Svyazu") + .HasColumnType("real") + .HasColumnName("SVYAZU"); + + b.Property("Svydls") + .HasColumnType("real") + .HasColumnName("SVYDLS"); + + b.Property("Svyew") + .HasColumnType("real") + .HasColumnName("SVYEW"); + + b.Property("Svygtf") + .HasColumnType("real") + .HasColumnName("SVYGTF"); + + b.Property("Svyinc") + .HasColumnType("real") + .HasColumnName("SVYINC"); + + b.Property("Svymtf") + .HasColumnType("real") + .HasColumnName("SVYMTF"); + + b.Property("Svyns") + .HasColumnType("real") + .HasColumnName("SVYNS"); + + b.Property("Svytype") + .HasColumnType("text") + .HasColumnName("SVYTYPE"); + + b.Property("Svywalk") + .HasColumnType("real") + .HasColumnName("SVYWALK"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_7"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record8", b => + { + b.HasBaseType("AsbCloudDb.Model.WITS.RecordBase"); + + b.Property("Deptbitm") + .HasColumnType("real") + .HasColumnName("DEPTBITM"); + + b.Property("Deptbitv") + .HasColumnType("real") + .HasColumnName("DEPTBITV"); + + b.Property("Deptcalm") + .HasColumnType("real") + .HasColumnName("DEPTCALM"); + + b.Property("Deptcalv") + .HasColumnType("real") + .HasColumnName("DEPTCALV"); + + b.Property("Deptfdm") + .HasColumnType("real") + .HasColumnName("DEPTFDM"); + + b.Property("Deptfdv") + .HasColumnType("real") + .HasColumnName("DEPTFDV"); + + b.Property("Deptgr1m") + .HasColumnType("real") + .HasColumnName("DEPTGR1M"); + + b.Property("Deptgr1v") + .HasColumnType("real") + .HasColumnName("DEPTGR1V"); + + b.Property("Deptgr2m") + .HasColumnType("real") + .HasColumnName("DEPTGR2M"); + + b.Property("Deptgr2v") + .HasColumnType("real") + .HasColumnName("DEPTGR2V"); + + b.Property("Deptmeas") + .HasColumnType("real") + .HasColumnName("DEPTMEAS"); + + b.Property("Deptp1m") + .HasColumnType("real") + .HasColumnName("DEPTP1M"); + + b.Property("Deptp1v") + .HasColumnType("real") + .HasColumnName("DEPTP1V"); + + b.Property("Deptp2m") + .HasColumnType("real") + .HasColumnName("DEPTP2M"); + + b.Property("Deptp2v") + .HasColumnType("real") + .HasColumnName("DEPTP2V"); + + b.Property("Deptrs1m") + .HasColumnType("real") + .HasColumnName("DEPTRS1M"); + + b.Property("Deptrs1v") + .HasColumnType("real") + .HasColumnName("DEPTRS1V"); + + b.Property("Deptrs2m") + .HasColumnType("real") + .HasColumnName("DEPTRS2M"); + + b.Property("Deptrs2v") + .HasColumnType("real") + .HasColumnName("DEPTRS2V"); + + b.Property("Deptvert") + .HasColumnType("real") + .HasColumnName("DEPTVERT"); + + b.Property("Mclp") + .HasColumnType("real") + .HasColumnName("MCLP"); + + b.Property("Mfd") + .HasColumnType("real") + .HasColumnName("MFD"); + + b.Property("Mffp") + .HasColumnType("real") + .HasColumnName("MFFP"); + + b.Property("Mfpp") + .HasColumnType("real") + .HasColumnName("MFPP"); + + b.Property("Mfrann") + .HasColumnType("real") + .HasColumnName("MFRANN"); + + b.Property("Mfrpipe") + .HasColumnType("real") + .HasColumnName("MFRPIPE"); + + b.Property("Mftann") + .HasColumnType("real") + .HasColumnName("MFTANN"); + + b.Property("Mftpipe") + .HasColumnType("real") + .HasColumnName("MFTPIPE"); + + b.Property("Mg1") + .HasColumnType("real") + .HasColumnName("MG1"); + + b.Property("Mg1c") + .HasColumnType("real") + .HasColumnName("MG1C"); + + b.Property("Mg2") + .HasColumnType("real") + .HasColumnName("MG2"); + + b.Property("Mg2c") + .HasColumnType("real") + .HasColumnName("MG2C"); + + b.Property("Mpo1") + .HasColumnType("real") + .HasColumnName("MPO1"); + + b.Property("Mpo2") + .HasColumnType("real") + .HasColumnName("MPO2"); + + b.Property("Mr1") + .HasColumnType("real") + .HasColumnName("MR1"); + + b.Property("Mr1c") + .HasColumnType("real") + .HasColumnName("MR1C"); + + b.Property("Mr2") + .HasColumnType("real") + .HasColumnName("MR2"); + + b.Property("Mr2c") + .HasColumnType("real") + .HasColumnName("MR2C"); + + b.Property("Passnum") + .HasColumnType("smallint") + .HasColumnName("PASSNUM"); + + b.Property("Spare1") + .HasColumnType("real") + .HasColumnName("SPARE1"); + + b.Property("Spare2") + .HasColumnType("real") + .HasColumnName("SPARE2"); + + b.Property("Spare3") + .HasColumnType("real") + .HasColumnName("SPARE3"); + + b.Property("Spare4") + .HasColumnType("real") + .HasColumnName("SPARE4"); + + b.Property("Spare5") + .HasColumnType("real") + .HasColumnName("SPARE5"); + + b.Property("Spare6") + .HasColumnType("real") + .HasColumnName("SPARE6"); + + b.Property("Spare7") + .HasColumnType("real") + .HasColumnName("SPARE7"); + + b.Property("Spare8") + .HasColumnType("real") + .HasColumnName("SPARE8"); + + b.Property("Spare9") + .HasColumnType("real") + .HasColumnName("SPARE9"); + + b.Property("TelemetryId") + .HasColumnType("integer"); + + b.HasIndex("TelemetryId"); + + b.ToTable("t_telemetry_wits_8"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Cluster", b => + { + b.HasOne("AsbCloudDb.Model.Deposit", "Deposit") + .WithMany("Clusters") + .HasForeignKey("IdDeposit") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_cluster_t_deposit_id_fk"); + + b.Navigation("Deposit"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Company", b => + { + b.HasOne("AsbCloudDb.Model.CompanyType", "CompanyType") + .WithMany("Companies") + .HasForeignKey("IdCompanyType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("CompanyType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Contact", b => + { + b.HasOne("AsbCloudDb.Model.CompanyType", "CompanyType") + .WithMany("Contacts") + .HasForeignKey("IdCompanyType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("Contacts") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("CompanyType"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DailyReports.DailyReport", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DataSaubStat", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DetectedOperation", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillTest", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillingProgramPart", b => + { + b.HasOne("AsbCloudDb.Model.FileCategory", "FileCategory") + .WithMany() + .HasForeignKey("IdFileCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("DrillingProgramParts") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("FileCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Faq", b => + { + b.HasOne("AsbCloudDb.Model.User", "AuthorAnswer") + .WithMany() + .HasForeignKey("IdAuthorAnswer"); + + b.HasOne("AsbCloudDb.Model.User", "AuthorQuestion") + .WithMany() + .HasForeignKey("IdAuthorQuestion") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("AuthorAnswer"); + + b.Navigation("AuthorQuestion"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileInfo", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany("Files") + .HasForeignKey("IdAuthor"); + + b.HasOne("AsbCloudDb.Model.FileCategory", "FileCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("FileCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileMark", b => + { + b.HasOne("AsbCloudDb.Model.FileInfo", "FileInfo") + .WithMany("FileMarks") + .HasForeignKey("IdFile") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_file_mark_t_file_info_fk"); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany("FileMarks") + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_user_t_file_mark_fk"); + + b.Navigation("FileInfo"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemFloat", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemInt", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemString", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.HelpPage", b => + { + b.HasOne("AsbCloudDb.Model.FileCategory", "FileCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("FileCategory"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.LimitingParameter", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Manuals.Manual", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.FileCategory", "Category") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Manuals.ManualDirectory", "Directory") + .WithMany("Manuals") + .HasForeignKey("IdDirectory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Category"); + + b.Navigation("Directory"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Manuals.ManualDirectory", b => + { + b.HasOne("AsbCloudDb.Model.Manuals.ManualDirectory", "Parent") + .WithMany("Children") + .HasForeignKey("IdParent") + .OnDelete(DeleteBehavior.Cascade); + + b.Navigation("Parent"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Measure", b => + { + b.HasOne("AsbCloudDb.Model.MeasureCategory", "Category") + .WithMany("Measures") + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Category"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Notification", b => + { + b.HasOne("AsbCloudDb.Model.NotificationCategory", "NotificationCategory") + .WithMany("Notifications") + .HasForeignKey("IdNotificationCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("NotificationCategory"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.OperationValue", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdOperationCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMaps.ProcessMapPlanDrilling", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("AsbCloudDb.Model.ProcessMaps.ProcessMapPlanDrilling", "Previous") + .WithMany() + .HasForeignKey("IdPrevious"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMaps.ProcessMapPlanReam", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "Editor") + .WithMany() + .HasForeignKey("IdEditor"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany() + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => + { + b.HasOne("AsbCloudDb.Model.Company", "Company") + .WithMany("RelationCompaniesWells") + .HasForeignKey("IdCompany") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_relation_company_well_t_company_id_fk"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("RelationCompaniesWells") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_relation_company_well_t_well_id_fk"); + + b.Navigation("Company"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationContactWell", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany("RelationContactsWells") + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserDrillingProgramPart", b => + { + b.HasOne("AsbCloudDb.Model.DrillingProgramPart", "DrillingProgramPart") + .WithMany("RelatedUsers") + .HasForeignKey("IdDrillingProgramPart") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("DrillingProgramPart"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRolePermission", b => + { + b.HasOne("AsbCloudDb.Model.Permission", "Permission") + .WithMany("RelationUserRolePermissions") + .HasForeignKey("IdPermission") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "UserRole") + .WithMany("RelationUserRolePermissions") + .HasForeignKey("IdUserRole") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Permission"); + + b.Navigation("UserRole"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserRoleUserRole", b => + { + b.HasOne("AsbCloudDb.Model.UserRole", "Role") + .WithMany("RelationUserRoleUserRoles") + .HasForeignKey("Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "IncludeRole") + .WithMany() + .HasForeignKey("IdInclude") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("IncludeRole"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.RelationUserUserRole", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany("RelationUsersUserRoles") + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.UserRole", "UserRole") + .WithMany("RelationUsersUserRoles") + .HasForeignKey("IdUserRole") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + + b.Navigation("UserRole"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ReportProperty", b => + { + b.HasOne("AsbCloudDb.Model.FileInfo", "File") + .WithMany() + .HasForeignKey("IdFile") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("File"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Schedule", b => + { + b.HasOne("AsbCloudDb.Model.Driller", "Driller") + .WithMany("Schedule") + .HasForeignKey("IdDriller") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_schedule_t_driller_id_driller"); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Driller"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.SetpointsRequest", b => + { + b.HasOne("AsbCloudDb.Model.User", "Author") + .WithMany() + .HasForeignKey("IdAuthor") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSaub", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("DataSaub") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_data_saub_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryDataSpin", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("DataSpin") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_data_spin_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryEvent", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Events") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_event_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryMessage", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Messages") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_messages_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.TelemetryUser", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany("Users") + .HasForeignKey("IdTelemetry") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_telemetry_user_t_telemetry_id_fk"); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Trajectory.TrajectoryFact", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Trajectory.TrajectoryPlan", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.HasOne("AsbCloudDb.Model.Company", "Company") + .WithMany("Users") + .HasForeignKey("IdCompany") + .OnDelete(DeleteBehavior.SetNull) + .IsRequired() + .HasConstraintName("t_user_t_company_id_fk"); + + b.Navigation("Company"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserSetting", b => + { + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", b => + { + b.HasOne("AsbCloudDb.Model.Cluster", "Cluster") + .WithMany("Wells") + .HasForeignKey("IdCluster") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_t_cluster_id_fk"); + + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithOne("Well") + .HasForeignKey("AsbCloudDb.Model.Well", "IdTelemetry") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("t_well_t_telemetry_id_fk"); + + b.HasOne("AsbCloudDb.Model.WellType", "WellType") + .WithMany("Wells") + .HasForeignKey("IdWellType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Cluster"); + + b.Navigation("Telemetry"); + + b.Navigation("WellType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellComposite", b => + { + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("WellComposites") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_t_well_id_fk"); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany("WellComposites") + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_t_well_section_type_id_fk"); + + b.HasOne("AsbCloudDb.Model.Well", "WellSrc") + .WithMany("WellCompositeSrcs") + .HasForeignKey("IdWellSrc") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("t_well_сomposite_src_t_well_id_fk"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + + b.Navigation("WellSrc"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellFinalDocument", b => + { + b.HasOne("AsbCloudDb.Model.FileCategory", "Category") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.User", "User") + .WithMany() + .HasForeignKey("IdUser") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Category"); + + b.Navigation("User"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperation", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "OperationCategory") + .WithMany() + .HasForeignKey("IdCategory") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellOperation", "OperationPlan") + .WithMany() + .HasForeignKey("IdPlan") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany("WellOperations") + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.WellSectionType", "WellSectionType") + .WithMany("WellOperations") + .HasForeignKey("IdWellSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OperationCategory"); + + b.Navigation("OperationPlan"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellOperationCategory", b => + { + b.HasOne("AsbCloudDb.Model.WellOperationCategory", "Parent") + .WithMany() + .HasForeignKey("IdParent"); + + b.Navigation("Parent"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSections.WellSectionPlan", b => + { + b.HasOne("AsbCloudDb.Model.WellSectionType", "SectionType") + .WithMany() + .HasForeignKey("IdSectionType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("AsbCloudDb.Model.Well", "Well") + .WithMany() + .HasForeignKey("IdWell") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("SectionType"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record1", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record1", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record50", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record50", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record60", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record60", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record61", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record61", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record7", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record7", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WITS.Record8", b => + { + b.HasOne("AsbCloudDb.Model.Telemetry", "Telemetry") + .WithMany() + .HasForeignKey("TelemetryId"); + + b.HasOne("AsbCloudDb.Model.WITS.RecordBase", null) + .WithOne() + .HasForeignKey("AsbCloudDb.Model.WITS.Record8", "IdTelemetry", "DateTime") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Telemetry"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Cluster", b => + { + b.Navigation("Wells"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Company", b => + { + b.Navigation("RelationCompaniesWells"); + + b.Navigation("Users"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.CompanyType", b => + { + b.Navigation("Companies"); + + b.Navigation("Contacts"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Deposit", b => + { + b.Navigation("Clusters"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Driller", b => + { + b.Navigation("Schedule"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillingProgramPart", b => + { + b.Navigation("RelatedUsers"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileInfo", b => + { + b.Navigation("FileMarks"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Manuals.ManualDirectory", b => + { + b.Navigation("Children"); + + b.Navigation("Manuals"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.MeasureCategory", b => + { + b.Navigation("Measures"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.NotificationCategory", b => + { + b.Navigation("Notifications"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Permission", b => + { + b.Navigation("RelationUserRolePermissions"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Telemetry", b => + { + b.Navigation("DataSaub"); + + b.Navigation("DataSpin"); + + b.Navigation("Events"); + + b.Navigation("Messages"); + + b.Navigation("Users"); + + b.Navigation("Well"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.User", b => + { + b.Navigation("FileMarks"); + + b.Navigation("Files"); + + b.Navigation("RelationContactsWells"); + + b.Navigation("RelationUsersUserRoles"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.UserRole", b => + { + b.Navigation("RelationUserRolePermissions"); + + b.Navigation("RelationUserRoleUserRoles"); + + b.Navigation("RelationUsersUserRoles"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Well", b => + { + b.Navigation("Contacts"); + + b.Navigation("DrillingProgramParts"); + + b.Navigation("RelationCompaniesWells"); + + b.Navigation("WellCompositeSrcs"); + + b.Navigation("WellComposites"); + + b.Navigation("WellOperations"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSectionType", b => + { + b.Navigation("WellComposites"); + + b.Navigation("WellOperations"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellType", b => + { + b.Navigation("Wells"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/AsbCloudDb/Migrations/20240403143143_Add_NewWellOperationCategories.cs b/AsbCloudDb/Migrations/20240403143143_Add_NewWellOperationCategories.cs new file mode 100644 index 00000000..a0d0e2a9 --- /dev/null +++ b/AsbCloudDb/Migrations/20240403143143_Add_NewWellOperationCategories.cs @@ -0,0 +1,60 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +#pragma warning disable CA1814 // Prefer jagged arrays over multidimensional + +namespace AsbCloudDb.Migrations +{ + /// + public partial class Add_NewWellOperationCategories : 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[,] + { + { 3006, null, "dT", "мин", "Заключительные работы" }, + { 5113, 4001, "МСП", "м/ч", "Бурение" }, + { 5114, 4013, "dT", "мин", "ТО оборудования" }, + { 4019, 3006, "dT", "мин", "Заключительные операции" }, + { 5115, 4019, "dT", "мин", "Спуск НКТ" } + }); + + migrationBuilder.Sql + ("UPDATE public.t_well_operation SET id_category=5113 WHERE id_category=5002 OR id_category=5003;"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DeleteData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5113); + + migrationBuilder.DeleteData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5114); + + migrationBuilder.DeleteData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5115); + + migrationBuilder.DeleteData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 4019); + + migrationBuilder.DeleteData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 3006); + } + } +} diff --git a/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs b/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs index 949de090..4e932c83 100644 --- a/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs +++ b/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs @@ -19,7 +19,7 @@ namespace AsbCloudDb.Migrations #pragma warning disable 612, 618 modelBuilder .UseCollation("Russian_Russia.1251") - .HasAnnotation("ProductVersion", "6.0.22") + .HasAnnotation("ProductVersion", "8.0.3") .HasAnnotation("Relational:MaxIdentifierLength", 63); NpgsqlModelBuilderExtensions.HasPostgresExtension(modelBuilder, "adminpack"); @@ -284,7 +284,7 @@ namespace AsbCloudDb.Migrations .HasColumnName("date") .HasComment("Дата формирования отчёта"); - b.Property("DateLastUpdate") + b.Property("DateLastUpdate") .HasColumnType("timestamp with time zone") .HasColumnName("date_last_update") .HasComment("Дата последнего обновления"); @@ -482,7 +482,7 @@ namespace AsbCloudDb.Migrations b.HasKey("Id"); - b.ToTable("t_deposit", null, t => + b.ToTable("t_deposit", t => { t.HasComment("Месторождение"); }); @@ -553,7 +553,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdTelemetry"); - b.ToTable("t_detected_operation", null, t => + b.ToTable("t_detected_operation", t => { t.HasComment("автоматически определенные операции по телеметрии"); }); @@ -591,7 +591,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdTelemetry"); - b.ToTable("t_drill_test", null, t => + b.ToTable("t_drill_test", t => { t.HasComment("Drill_test"); }); @@ -629,7 +629,7 @@ namespace AsbCloudDb.Migrations b.HasKey("Id"); - b.ToTable("t_driller", null, t => + b.ToTable("t_driller", t => { t.HasComment("Бурильщик"); }); @@ -659,7 +659,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdWell", "IdFileCategory") .IsUnique(); - b.ToTable("t_drilling_program_part", null, t => + b.ToTable("t_drilling_program_part", t => { t.HasComment("части программ бурения"); }); @@ -737,7 +737,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdAuthorQuestion"); - b.ToTable("t_faq", null, t => + b.ToTable("t_faq", t => { t.HasComment("вопросы пользователей"); }); @@ -765,7 +765,7 @@ namespace AsbCloudDb.Migrations b.HasKey("Id"); - b.ToTable("t_file_category", null, t => + b.ToTable("t_file_category", t => { t.HasComment("Категории файлов"); }); @@ -1166,7 +1166,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdWell"); - b.ToTable("t_file_info", null, t => + b.ToTable("t_file_info", t => { t.HasComment("Файлы всех категорий"); }); @@ -1218,7 +1218,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdUser"); - b.ToTable("t_file_mark", null, t => + b.ToTable("t_file_mark", t => { t.HasComment("Действия с файлами."); }); @@ -1248,7 +1248,7 @@ namespace AsbCloudDb.Migrations b.HasKey("IdTelemetry", "IdRecord", "IdItem", "DateTime"); - b.ToTable("t_wits_float", null, t => + b.ToTable("t_wits_float", t => { t.HasComment("таблица данных ГТИ с типом значения float"); }); @@ -1278,7 +1278,7 @@ namespace AsbCloudDb.Migrations b.HasKey("IdTelemetry", "IdRecord", "IdItem", "DateTime"); - b.ToTable("t_wits_int", null, t => + b.ToTable("t_wits_int", t => { t.HasComment("таблица данных ГТИ с типом значения int"); }); @@ -1309,7 +1309,7 @@ namespace AsbCloudDb.Migrations b.HasKey("IdTelemetry", "IdRecord", "IdItem", "DateTime"); - b.ToTable("t_wits_string", null, t => + b.ToTable("t_wits_string", t => { t.HasComment("таблица данных ГТИ с типом значения string"); }); @@ -1350,7 +1350,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdCategory"); - b.ToTable("t_help_page", null, t => + b.ToTable("t_help_page", t => { t.HasComment("Справки"); }); @@ -1393,7 +1393,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdTelemetry"); - b.ToTable("t_limiting_parameter", null, t => + b.ToTable("t_limiting_parameter", t => { t.HasComment("Ограничения по параметрам телеметрии"); }); @@ -1408,7 +1408,7 @@ namespace AsbCloudDb.Migrations NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - b.Property("DateDownload") + b.Property("DateDownload") .HasColumnType("timestamp with time zone") .HasColumnName("date_download") .HasComment("Дата загрузки"); @@ -1442,7 +1442,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdDirectory"); - b.ToTable("t_manual", null, t => + b.ToTable("t_manual", t => { t.HasComment("Инструкции"); }); @@ -1472,7 +1472,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdParent"); - b.ToTable("t_manual_directory", null, t => + b.ToTable("t_manual_directory", t => { t.HasComment("Директория для инструкций"); }); @@ -1519,7 +1519,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdWell"); - b.ToTable("t_measure", null, t => + b.ToTable("t_measure", t => { t.HasComment("Таблица c данными для вкладки 'Последние данные'"); }); @@ -1547,7 +1547,7 @@ namespace AsbCloudDb.Migrations b.HasKey("Id"); - b.ToTable("t_measure_category", null, t => + b.ToTable("t_measure_category", t => { t.HasComment("Категория последних данных"); }); @@ -1603,17 +1603,17 @@ namespace AsbCloudDb.Migrations .HasColumnName("message") .HasComment("Сообщение уведомления"); - b.Property("ReadDate") + b.Property("ReadDate") .HasColumnType("timestamp with time zone") .HasColumnName("read_date") .HasComment("Дата прочтения уведомления"); - b.Property("RegistrationDate") + b.Property("RegistrationDate") .HasColumnType("timestamp with time zone") .HasColumnName("registration_date") .HasComment("Дата регистрации уведомления"); - b.Property("SentDate") + b.Property("SentDate") .HasColumnType("timestamp with time zone") .HasColumnName("sent_date") .HasComment("Дата отправки уведомления"); @@ -1630,7 +1630,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdUser"); - b.ToTable("t_notification", null, t => + b.ToTable("t_notification", t => { t.HasComment("Уведомления"); }); @@ -1652,7 +1652,7 @@ namespace AsbCloudDb.Migrations b.HasKey("Id"); - b.ToTable("t_notification_category", null, t => + b.ToTable("t_notification_category", t => { t.HasComment("Категории уведомлений"); }); @@ -1711,7 +1711,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdWell"); - b.ToTable("t_operationvalue", null, t => + b.ToTable("t_operationvalue", t => { t.HasComment("Целевые/нормативные показатели операции"); }); @@ -1741,7 +1741,7 @@ namespace AsbCloudDb.Migrations b.HasKey("Id"); - b.ToTable("t_permission", null, t => + b.ToTable("t_permission", t => { t.HasComment("Разрешения на доступ к данным"); }); @@ -2768,7 +2768,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdWellSectionType"); - b.ToTable("t_process_map_plan_drilling", null, t => + b.ToTable("t_process_map_plan_drilling", t => { t.HasComment("РТК план бурение"); }); @@ -2889,7 +2889,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdWellSectionType"); - b.ToTable("t_process_map_plan_ream", null, t => + b.ToTable("t_process_map_plan_ream", t => { t.HasComment("РТК проработка скважины"); }); @@ -2909,7 +2909,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdWell"); - b.ToTable("t_relation_company_well", null, t => + b.ToTable("t_relation_company_well", t => { t.HasComment("отношение скважин и компаний"); }); @@ -2929,7 +2929,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdUser"); - b.ToTable("t_relation_contact_well", (string)null); + b.ToTable("t_relation_contact_well"); }); modelBuilder.Entity("AsbCloudDb.Model.RelationUserDrillingProgramPart", b => @@ -2952,7 +2952,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdDrillingProgramPart"); - b.ToTable("t_relation_user_drilling_program_part", null, t => + b.ToTable("t_relation_user_drilling_program_part", t => { t.HasComment("Отношение пользователей и частей ПБ"); }); @@ -2972,7 +2972,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdPermission"); - b.ToTable("t_relation_user_role_permission", null, t => + b.ToTable("t_relation_user_role_permission", t => { t.HasComment("Отношение ролей пользователей и разрешений доступа"); }); @@ -4290,7 +4290,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdInclude"); - b.ToTable("t_relation_user_role_user_role", null, t => + b.ToTable("t_relation_user_role_user_role", t => { t.HasComment("Отношение ролей к ролям"); }); @@ -4582,7 +4582,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdUserRole"); - b.ToTable("t_relation_user_user_role", null, t => + b.ToTable("t_relation_user_user_role", t => { t.HasComment("Отношение пользователей и ролей"); }); @@ -4639,7 +4639,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdWell"); - b.ToTable("t_report_property", null, t => + b.ToTable("t_report_property", t => { t.HasComment("Отчеты с данными по буровым"); }); @@ -4691,7 +4691,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdWell"); - b.ToTable("t_schedule", null, t => + b.ToTable("t_schedule", t => { t.HasComment("График работы бурильщика"); }); @@ -4747,7 +4747,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdWell"); - b.ToTable("t_setpoints_rquest", null, t => + b.ToTable("t_setpoints_rquest", t => { t.HasComment("Запросы на изменение уставок панели оператора"); }); @@ -4775,7 +4775,7 @@ namespace AsbCloudDb.Migrations b.HasKey("Id"); - b.ToTable("t_subsystem", null, t => + b.ToTable("t_subsystem", t => { t.HasComment("Описание подсистем"); }); @@ -4844,7 +4844,7 @@ namespace AsbCloudDb.Migrations b.HasIndex(new[] { "RemoteUid" }, "t_telemetry_remote_uid_index"); - b.ToTable("t_telemetry", null, t => + b.ToTable("t_telemetry", t => { t.HasComment("таблица привязки телеметрии от комплектов к конкретной скважине."); }); @@ -5063,7 +5063,7 @@ namespace AsbCloudDb.Migrations b.HasKey("IdTelemetry", "DateTime"); - b.ToTable("t_telemetry_data_saub", null, t => + b.ToTable("t_telemetry_data_saub", t => { t.HasComment("набор основных данных по SAUB"); }); @@ -5163,7 +5163,7 @@ namespace AsbCloudDb.Migrations b.HasKey("IdTelemetry", "DateTime"); - b.ToTable("t_telemetry_data_spin", null, t => + b.ToTable("t_telemetry_data_spin", t => { t.HasComment("набор основных данных по SpinMaster"); }); @@ -5190,7 +5190,7 @@ namespace AsbCloudDb.Migrations b.HasKey("IdTelemetry", "IdEvent"); - b.ToTable("t_telemetry_event", null, t => + b.ToTable("t_telemetry_event", t => { t.HasComment("Справочник событий. События формируют сообщения. Разделено по версиям посылок от телеметрии."); }); @@ -5251,7 +5251,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdTelemetry"); - b.ToTable("t_telemetry_message", null, t => + b.ToTable("t_telemetry_message", t => { t.HasComment("Сообщения на буровых"); }); @@ -5289,7 +5289,7 @@ namespace AsbCloudDb.Migrations b.HasKey("IdTelemetry", "IdUser"); - b.ToTable("t_telemetry_user", null, t => + b.ToTable("t_telemetry_user", t => { t.HasComment("Пользователи панели САУБ. Для сообщений."); }); @@ -5332,7 +5332,7 @@ namespace AsbCloudDb.Migrations b.HasKey("IdTelemetry"); - b.ToTable("t_telemetry_wireline_run_out", null, t => + b.ToTable("t_telemetry_wireline_run_out", t => { t.HasComment("Наработка талевого каната"); }); @@ -5398,7 +5398,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdWell"); - b.ToTable("t_trajectory_fact", null, t => + b.ToTable("t_trajectory_fact", t => { t.HasComment("Загрузка фактической траектории"); }); @@ -5469,7 +5469,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdWell"); - b.ToTable("t_trajectory_plan", null, t => + b.ToTable("t_trajectory_plan", t => { t.HasComment("Загрузка плановой траектории"); }); @@ -5550,7 +5550,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("Login") .IsUnique(); - b.ToTable("t_user", null, t => + b.ToTable("t_user", t => { t.HasComment("Пользователи облака"); }); @@ -5591,7 +5591,7 @@ namespace AsbCloudDb.Migrations b.HasKey("Id"); - b.ToTable("t_user_role", null, t => + b.ToTable("t_user_role", t => { t.HasComment("Роли пользователей в системе"); }); @@ -5930,7 +5930,7 @@ namespace AsbCloudDb.Migrations b.HasKey("IdUser", "Key"); - b.ToTable("t_user_settings", null, t => + b.ToTable("t_user_settings", t => { t.HasComment("настройки интерфейса пользователя"); }); @@ -5976,7 +5976,9 @@ namespace AsbCloudDb.Migrations b.HasKey("IdTelemetry", "DateTime"); - b.ToTable("t_telemetry_wits_base", (string)null); + b.ToTable("t_telemetry_wits_base"); + + b.UseTptMappingStrategy(); }); modelBuilder.Entity("AsbCloudDb.Model.Well", b => @@ -6034,7 +6036,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdWellType"); - b.ToTable("t_well", null, t => + b.ToTable("t_well", t => { t.HasComment("скважины"); }); @@ -6063,7 +6065,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdWellSrc"); - b.ToTable("t_well_composite", null, t => + b.ToTable("t_well_composite", t => { t.HasComment("Композитная скважина"); }); @@ -6090,7 +6092,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdUser"); - b.ToTable("t_well_final_documents", null, t => + b.ToTable("t_well_final_documents", t => { t.HasComment("Дело скважины"); }); @@ -6180,7 +6182,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdWellSectionType"); - b.ToTable("t_well_operation", null, t => + b.ToTable("t_well_operation", t => { t.HasComment("Данные по операциям на скважине"); }); @@ -6222,7 +6224,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdParent"); - b.ToTable("t_well_operation_category", null, t => + b.ToTable("t_well_operation_category", t => { t.HasComment("Справочник операций на скважине"); }); @@ -6271,6 +6273,13 @@ namespace AsbCloudDb.Migrations Name = "Непроизводительное время (НПВ)" }, new + { + Id = 3006, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Заключительные работы" + }, + new { Id = 4000, IdParent = 3000, @@ -6423,6 +6432,14 @@ namespace AsbCloudDb.Migrations Name = "Незаложенные в ГГД операции" }, new + { + Id = 4019, + IdParent = 3006, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Заключительные операции" + }, + new { Id = 5000, IdParent = 4000, @@ -7309,6 +7326,30 @@ namespace AsbCloudDb.Migrations KeyValueName = "dT", KeyValueUnits = "мин", Name = "Работа пакером в обсадной колонне" + }, + new + { + Id = 5113, + IdParent = 4001, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", + Name = "Бурение" + }, + new + { + Id = 5114, + IdParent = 4013, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ТО оборудования" + }, + new + { + Id = 5115, + IdParent = 4019, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск НКТ" }); }); @@ -7335,7 +7376,7 @@ namespace AsbCloudDb.Migrations b.HasKey("Id"); - b.ToTable("t_well_section_type", null, t => + b.ToTable("t_well_section_type", t => { t.HasComment("конструкция секции скважины"); }); @@ -7627,7 +7668,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdWell", "IdSectionType") .IsUnique(); - b.ToTable("t_well_section_plan", (string)null); + b.ToTable("t_well_section_plan"); }); modelBuilder.Entity("AsbCloudDb.Model.WellType", b => @@ -7648,7 +7689,7 @@ namespace AsbCloudDb.Migrations b.HasKey("Id"); - b.ToTable("t_well_type", null, t => + b.ToTable("t_well_type", t => { t.HasComment("конструкция скважины"); }); @@ -7827,7 +7868,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("TelemetryId"); - b.ToTable("t_telemetry_wits_1", (string)null); + b.ToTable("t_telemetry_wits_1"); }); modelBuilder.Entity("AsbCloudDb.Model.WITS.Record50", b => @@ -7915,7 +7956,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("TelemetryId"); - b.ToTable("t_telemetry_wits_50", (string)null); + b.ToTable("t_telemetry_wits_50"); }); modelBuilder.Entity("AsbCloudDb.Model.WITS.Record60", b => @@ -7967,7 +8008,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("TelemetryId"); - b.ToTable("t_telemetry_wits_60", (string)null); + b.ToTable("t_telemetry_wits_60"); }); modelBuilder.Entity("AsbCloudDb.Model.WITS.Record61", b => @@ -8023,7 +8064,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("TelemetryId"); - b.ToTable("t_telemetry_wits_61", (string)null); + b.ToTable("t_telemetry_wits_61"); }); modelBuilder.Entity("AsbCloudDb.Model.WITS.Record7", b => @@ -8111,7 +8152,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("TelemetryId"); - b.ToTable("t_telemetry_wits_7", (string)null); + b.ToTable("t_telemetry_wits_7"); }); modelBuilder.Entity("AsbCloudDb.Model.WITS.Record8", b => @@ -8315,7 +8356,7 @@ namespace AsbCloudDb.Migrations b.HasIndex("TelemetryId"); - b.ToTable("t_telemetry_wits_8", (string)null); + b.ToTable("t_telemetry_wits_8"); }); modelBuilder.Entity("AsbCloudDb.Model.Cluster", b => diff --git a/AsbCloudDb/Model/WellOperationCategory.cs b/AsbCloudDb/Model/WellOperationCategory.cs index 5014ac14..279246bb 100644 --- a/AsbCloudDb/Model/WellOperationCategory.cs +++ b/AsbCloudDb/Model/WellOperationCategory.cs @@ -39,6 +39,11 @@ namespace AsbCloudDb.Model /// public const int IdNonProductiveTime = 3005; + /// + /// Заключительные работы + /// + public const int IdFinalWorks = 3006; + /// /// КНБК /// @@ -129,6 +134,11 @@ namespace AsbCloudDb.Model /// public const int IdOperationsNotIncludedGGD = 4017; + /// + /// Заключительные операции + /// + public const int IdFinalOperations = 4019; + /// /// Разборка КНБК /// @@ -240,6 +250,7 @@ namespace AsbCloudDb.Model new() { Id = IdGFR, Name = "ГФР", KeyValueName = "dT", KeyValueUnits = "мин" }, new() { Id = IdAuxiliaryOperations, Name = "Вспомогательные операции", KeyValueName = "dT", KeyValueUnits = "мин" }, new() { Id = IdNonProductiveTime, Name = "Непроизводительное время (НПВ)", KeyValueName = "dT", KeyValueUnits = "мин" }, + new() { Id = IdFinalWorks, Name = "Заключительные работы", KeyValueName = "dT", KeyValueUnits = "мин" }, }; /// @@ -265,6 +276,7 @@ namespace AsbCloudDb.Model new () {Id = IdEmergencyWork, IdParent = 3005, Name = "Аварийные работы", KeyValueName = "dT", KeyValueUnits = "мин" }, new () {Id = IdComplication, IdParent = 3005, Name = "Осложнение", KeyValueName = "dT", KeyValueUnits = "мин" }, new () {Id = IdOperationsNotIncludedGGD, IdParent = 3005, Name = "Незаложенные в ГГД операции", KeyValueName = "dT", KeyValueUnits = "мин" }, + new () {Id = IdFinalOperations, IdParent = IdFinalWorks, Name = "Заключительные операции", KeyValueName = "dT", KeyValueUnits = "мин" }, }; /// @@ -381,7 +393,10 @@ namespace AsbCloudDb.Model 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 = "мин"} + new () {Id = 5112, IdParent = 4018, Name = "Работа пакером в обсадной колонне", KeyValueName = "dT", KeyValueUnits = "мин"}, + new () {Id = 5113, IdParent = 4001, Name = "Бурение", KeyValueName = "МСП", KeyValueUnits = "м/ч"}, + new () {Id = 5114, IdParent = 4013, Name = "ТО оборудования", KeyValueName = "dT", KeyValueUnits = "мин"}, + new () {Id = 5115, IdParent = IdFinalOperations, Name = "Спуск НКТ", KeyValueName = "dT", KeyValueUnits = "мин"}, }; #endregion From 3f7724500b970164243c8854672b51b76a740b3a Mon Sep 17 00:00:00 2001 From: Olga Nemt Date: Thu, 4 Apr 2024 11:58:29 +0500 Subject: [PATCH 2/9] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BA=D0=B0=D1=82=D0=B5=D0=B3=D0=BE=D1=80?= =?UTF-8?q?=D0=B8=D0=B9=20"=D0=A4=D1=80=D0=B5=D0=B7=D0=B5=D1=80=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=BE=D0=BA=D0=BD=D0=B0"=20?= =?UTF-8?q?=D0=B8=20"=D1=80=D0=B0=D1=81=D1=88=D0=B8=D1=80=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D1=81=D1=82=D0=B2=D0=BE=D0=BB=D0=B0'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...dd_NewWellOperationCategories.Designer.cs} | 20 +++++++++++++++++-- ...4064028_Add_NewWellOperationCategories.cs} | 12 +++++++++++ .../AsbCloudDbContextModelSnapshot.cs | 18 ++++++++++++++++- AsbCloudDb/Model/WellOperationCategory.cs | 2 ++ 4 files changed, 49 insertions(+), 3 deletions(-) rename AsbCloudDb/Migrations/{20240403143143_Add_NewWellOperationCategories.Designer.cs => 20240404064028_Add_NewWellOperationCategories.Designer.cs} (99%) rename AsbCloudDb/Migrations/{20240403143143_Add_NewWellOperationCategories.cs => 20240404064028_Add_NewWellOperationCategories.cs} (81%) diff --git a/AsbCloudDb/Migrations/20240403143143_Add_NewWellOperationCategories.Designer.cs b/AsbCloudDb/Migrations/20240404064028_Add_NewWellOperationCategories.Designer.cs similarity index 99% rename from AsbCloudDb/Migrations/20240403143143_Add_NewWellOperationCategories.Designer.cs rename to AsbCloudDb/Migrations/20240404064028_Add_NewWellOperationCategories.Designer.cs index 3f2746c7..905664c7 100644 --- a/AsbCloudDb/Migrations/20240403143143_Add_NewWellOperationCategories.Designer.cs +++ b/AsbCloudDb/Migrations/20240404064028_Add_NewWellOperationCategories.Designer.cs @@ -13,7 +13,7 @@ using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; namespace AsbCloudDb.Migrations { [DbContext(typeof(AsbCloudDbContext))] - [Migration("20240403143143_Add_NewWellOperationCategories")] + [Migration("20240404064028_Add_NewWellOperationCategories")] partial class Add_NewWellOperationCategories { /// @@ -22,7 +22,7 @@ namespace AsbCloudDb.Migrations #pragma warning disable 612, 618 modelBuilder .UseCollation("Russian_Russia.1251") - .HasAnnotation("ProductVersion", "8.0.3") + .HasAnnotation("ProductVersion", "8.0.2") .HasAnnotation("Relational:MaxIdentifierLength", 63); NpgsqlModelBuilderExtensions.HasPostgresExtension(modelBuilder, "adminpack"); @@ -7353,6 +7353,22 @@ namespace AsbCloudDb.Migrations KeyValueName = "dT", KeyValueUnits = "мин", Name = "Спуск НКТ" + }, + new + { + Id = 5116, + IdParent = 4013, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Фрезерование \"Окна\"" + }, + new + { + Id = 5117, + IdParent = 4013, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Расширение ствола" }); }); diff --git a/AsbCloudDb/Migrations/20240403143143_Add_NewWellOperationCategories.cs b/AsbCloudDb/Migrations/20240404064028_Add_NewWellOperationCategories.cs similarity index 81% rename from AsbCloudDb/Migrations/20240403143143_Add_NewWellOperationCategories.cs rename to AsbCloudDb/Migrations/20240404064028_Add_NewWellOperationCategories.cs index a0d0e2a9..396700c4 100644 --- a/AsbCloudDb/Migrations/20240403143143_Add_NewWellOperationCategories.cs +++ b/AsbCloudDb/Migrations/20240404064028_Add_NewWellOperationCategories.cs @@ -20,6 +20,8 @@ namespace AsbCloudDb.Migrations { 3006, null, "dT", "мин", "Заключительные работы" }, { 5113, 4001, "МСП", "м/ч", "Бурение" }, { 5114, 4013, "dT", "мин", "ТО оборудования" }, + { 5116, 4013, "dT", "мин", "Фрезерование \"Окна\"" }, + { 5117, 4013, "dT", "мин", "Расширение ствола" }, { 4019, 3006, "dT", "мин", "Заключительные операции" }, { 5115, 4019, "dT", "мин", "Спуск НКТ" } }); @@ -46,6 +48,16 @@ namespace AsbCloudDb.Migrations keyColumn: "id", keyValue: 5115); + migrationBuilder.DeleteData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5116); + + migrationBuilder.DeleteData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5117); + migrationBuilder.DeleteData( table: "t_well_operation_category", keyColumn: "id", diff --git a/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs b/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs index 4e932c83..495d5897 100644 --- a/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs +++ b/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs @@ -19,7 +19,7 @@ namespace AsbCloudDb.Migrations #pragma warning disable 612, 618 modelBuilder .UseCollation("Russian_Russia.1251") - .HasAnnotation("ProductVersion", "8.0.3") + .HasAnnotation("ProductVersion", "8.0.2") .HasAnnotation("Relational:MaxIdentifierLength", 63); NpgsqlModelBuilderExtensions.HasPostgresExtension(modelBuilder, "adminpack"); @@ -7350,6 +7350,22 @@ namespace AsbCloudDb.Migrations KeyValueName = "dT", KeyValueUnits = "мин", Name = "Спуск НКТ" + }, + new + { + Id = 5116, + IdParent = 4013, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Фрезерование \"Окна\"" + }, + new + { + Id = 5117, + IdParent = 4013, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Расширение ствола" }); }); diff --git a/AsbCloudDb/Model/WellOperationCategory.cs b/AsbCloudDb/Model/WellOperationCategory.cs index 279246bb..a6e6fa57 100644 --- a/AsbCloudDb/Model/WellOperationCategory.cs +++ b/AsbCloudDb/Model/WellOperationCategory.cs @@ -397,6 +397,8 @@ namespace AsbCloudDb.Model new () {Id = 5113, IdParent = 4001, Name = "Бурение", KeyValueName = "МСП", KeyValueUnits = "м/ч"}, new () {Id = 5114, IdParent = 4013, Name = "ТО оборудования", KeyValueName = "dT", KeyValueUnits = "мин"}, new () {Id = 5115, IdParent = IdFinalOperations, Name = "Спуск НКТ", KeyValueName = "dT", KeyValueUnits = "мин"}, + new () {Id = 5116, IdParent = IdAuxiliaryWork, Name = "Фрезерование \"Окна\"", KeyValueName = "dT", KeyValueUnits = "мин"}, + new () {Id = 5117, IdParent = IdAuxiliaryWork, Name = "Расширение ствола", KeyValueName = "dT", KeyValueUnits = "мин"}, }; #endregion From 96b96a0a22e3c8008e2614fa1a9723a951c59972 Mon Sep 17 00:00:00 2001 From: Olga Nemt Date: Tue, 9 Apr 2024 15:12:40 +0500 Subject: [PATCH 3/9] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BD=D0=BE=D0=B2=D1=8B=D1=85=20=D0=BA?= =?UTF-8?q?=D0=B0=D1=82=D0=B5=D0=B3=D0=BE=D1=80=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...04064028_Add_NewWellOperationCategories.cs | 72 -- ...dd_NewWellOperationCategories.Designer.cs} | 150 ++- ...08112202_Add_NewWellOperationCategories.cs | 1035 +++++++++++++++++ .../AsbCloudDbContextModelSnapshot.cs | 148 ++- AsbCloudDb/Model/WellOperationCategory.cs | 4 +- .../ExcelServices/ExcelTemplateService.cs | 39 + .../Templates/WellOperationFactTemplate.xlsx | Bin 45673 -> 37120 bytes .../Services/WellService.cs | 2 +- .../Controllers/WellOperationController.cs | 20 +- AsbCloudWebApi/appsettings.json | 6 +- 10 files changed, 1393 insertions(+), 83 deletions(-) delete mode 100644 AsbCloudDb/Migrations/20240404064028_Add_NewWellOperationCategories.cs rename AsbCloudDb/Migrations/{20240404064028_Add_NewWellOperationCategories.Designer.cs => 20240408112202_Add_NewWellOperationCategories.Designer.cs} (98%) create mode 100644 AsbCloudDb/Migrations/20240408112202_Add_NewWellOperationCategories.cs create mode 100644 AsbCloudInfrastructure/Services/ExcelServices/ExcelTemplateService.cs diff --git a/AsbCloudDb/Migrations/20240404064028_Add_NewWellOperationCategories.cs b/AsbCloudDb/Migrations/20240404064028_Add_NewWellOperationCategories.cs deleted file mode 100644 index 396700c4..00000000 --- a/AsbCloudDb/Migrations/20240404064028_Add_NewWellOperationCategories.cs +++ /dev/null @@ -1,72 +0,0 @@ -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -#pragma warning disable CA1814 // Prefer jagged arrays over multidimensional - -namespace AsbCloudDb.Migrations -{ - /// - public partial class Add_NewWellOperationCategories : 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[,] - { - { 3006, null, "dT", "мин", "Заключительные работы" }, - { 5113, 4001, "МСП", "м/ч", "Бурение" }, - { 5114, 4013, "dT", "мин", "ТО оборудования" }, - { 5116, 4013, "dT", "мин", "Фрезерование \"Окна\"" }, - { 5117, 4013, "dT", "мин", "Расширение ствола" }, - { 4019, 3006, "dT", "мин", "Заключительные операции" }, - { 5115, 4019, "dT", "мин", "Спуск НКТ" } - }); - - migrationBuilder.Sql - ("UPDATE public.t_well_operation SET id_category=5113 WHERE id_category=5002 OR id_category=5003;"); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DeleteData( - table: "t_well_operation_category", - keyColumn: "id", - keyValue: 5113); - - migrationBuilder.DeleteData( - table: "t_well_operation_category", - keyColumn: "id", - keyValue: 5114); - - migrationBuilder.DeleteData( - table: "t_well_operation_category", - keyColumn: "id", - keyValue: 5115); - - migrationBuilder.DeleteData( - table: "t_well_operation_category", - keyColumn: "id", - keyValue: 5116); - - migrationBuilder.DeleteData( - table: "t_well_operation_category", - keyColumn: "id", - keyValue: 5117); - - migrationBuilder.DeleteData( - table: "t_well_operation_category", - keyColumn: "id", - keyValue: 4019); - - migrationBuilder.DeleteData( - table: "t_well_operation_category", - keyColumn: "id", - keyValue: 3006); - } - } -} diff --git a/AsbCloudDb/Migrations/20240404064028_Add_NewWellOperationCategories.Designer.cs b/AsbCloudDb/Migrations/20240408112202_Add_NewWellOperationCategories.Designer.cs similarity index 98% rename from AsbCloudDb/Migrations/20240404064028_Add_NewWellOperationCategories.Designer.cs rename to AsbCloudDb/Migrations/20240408112202_Add_NewWellOperationCategories.Designer.cs index 905664c7..caa012fc 100644 --- a/AsbCloudDb/Migrations/20240404064028_Add_NewWellOperationCategories.Designer.cs +++ b/AsbCloudDb/Migrations/20240408112202_Add_NewWellOperationCategories.Designer.cs @@ -13,7 +13,7 @@ using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; namespace AsbCloudDb.Migrations { [DbContext(typeof(AsbCloudDbContext))] - [Migration("20240404064028_Add_NewWellOperationCategories")] + [Migration("20240408112202_Add_NewWellOperationCategories")] partial class Add_NewWellOperationCategories { /// @@ -6205,6 +6205,9 @@ namespace AsbCloudDb.Migrations .HasColumnName("id_parent") .HasComment("id родительской категории"); + b.Property("IsHidden") + .HasColumnType("boolean"); + b.Property("KeyValueName") .HasMaxLength(32) .HasColumnType("character varying(32)") @@ -6236,6 +6239,7 @@ namespace AsbCloudDb.Migrations new { Id = 3000, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "м/ч", Name = "БУРЕНИЕ" @@ -6243,6 +6247,7 @@ namespace AsbCloudDb.Migrations new { Id = 3001, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "СПО" @@ -6250,6 +6255,7 @@ namespace AsbCloudDb.Migrations new { Id = 3002, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "КРЕПЛЕНИЕ" @@ -6257,6 +6263,7 @@ namespace AsbCloudDb.Migrations new { Id = 3003, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "ГФР" @@ -6264,6 +6271,7 @@ namespace AsbCloudDb.Migrations new { Id = 3004, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Вспомогательные операции" @@ -6271,6 +6279,7 @@ namespace AsbCloudDb.Migrations new { Id = 3005, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Непроизводительное время (НПВ)" @@ -6278,6 +6287,7 @@ namespace AsbCloudDb.Migrations new { Id = 3006, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Заключительные работы" @@ -6286,6 +6296,7 @@ namespace AsbCloudDb.Migrations { Id = 4000, IdParent = 3000, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "КНБК" @@ -6294,6 +6305,7 @@ namespace AsbCloudDb.Migrations { Id = 4001, IdParent = 3000, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "м/ч", Name = "Механическое. бурение" @@ -6302,6 +6314,7 @@ namespace AsbCloudDb.Migrations { Id = 4002, IdParent = 3000, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Статический замер" @@ -6310,6 +6323,7 @@ namespace AsbCloudDb.Migrations { Id = 4003, IdParent = 3000, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Нормализация диаметра скважины" @@ -6318,6 +6332,7 @@ namespace AsbCloudDb.Migrations { Id = 4004, IdParent = 3000, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Наращивание" @@ -6326,6 +6341,7 @@ namespace AsbCloudDb.Migrations { Id = 4005, IdParent = 3001, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "СПО" @@ -6334,6 +6350,7 @@ namespace AsbCloudDb.Migrations { Id = 4006, IdParent = 3002, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Спуск обсадной колонны" @@ -6342,6 +6359,7 @@ namespace AsbCloudDb.Migrations { Id = 4018, IdParent = 3002, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Крепление" @@ -6350,6 +6368,7 @@ namespace AsbCloudDb.Migrations { Id = 4007, IdParent = 3002, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Цементирование" @@ -6358,6 +6377,7 @@ namespace AsbCloudDb.Migrations { Id = 4008, IdParent = 3002, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Вспомогательные работы при креплении" @@ -6366,6 +6386,7 @@ namespace AsbCloudDb.Migrations { Id = 4009, IdParent = 3003, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Сборка/разборка приборов ГИС" @@ -6374,6 +6395,7 @@ namespace AsbCloudDb.Migrations { Id = 4010, IdParent = 3003, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "СПО" @@ -6382,6 +6404,7 @@ namespace AsbCloudDb.Migrations { Id = 4011, IdParent = 3003, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "ГИС" @@ -6390,6 +6413,7 @@ namespace AsbCloudDb.Migrations { Id = 4012, IdParent = 3004, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Промывка, ОБР" @@ -6398,6 +6422,7 @@ namespace AsbCloudDb.Migrations { Id = 4013, IdParent = 3004, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Вспомогательные работы" @@ -6406,6 +6431,7 @@ namespace AsbCloudDb.Migrations { Id = 4014, IdParent = 3005, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Ремонт оборудования" @@ -6414,6 +6440,7 @@ namespace AsbCloudDb.Migrations { Id = 4015, IdParent = 3005, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Аварийные работы" @@ -6422,6 +6449,7 @@ namespace AsbCloudDb.Migrations { Id = 4016, IdParent = 3005, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Осложнение" @@ -6430,6 +6458,7 @@ namespace AsbCloudDb.Migrations { Id = 4017, IdParent = 3005, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Незаложенные в ГГД операции" @@ -6438,6 +6467,7 @@ namespace AsbCloudDb.Migrations { Id = 4019, IdParent = 3006, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Заключительные операции" @@ -6446,6 +6476,7 @@ namespace AsbCloudDb.Migrations { Id = 5000, IdParent = 4000, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Разборка КНБК" @@ -6454,6 +6485,7 @@ namespace AsbCloudDb.Migrations { Id = 5001, IdParent = 4000, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Сборка КНБК" @@ -6462,6 +6494,7 @@ namespace AsbCloudDb.Migrations { Id = 5002, IdParent = 4001, + IsHidden = false, KeyValueName = "МСП", KeyValueUnits = "м/ч", Name = "Бурение слайдом" @@ -6470,6 +6503,7 @@ namespace AsbCloudDb.Migrations { Id = 5003, IdParent = 4001, + IsHidden = false, KeyValueName = "МСП", KeyValueUnits = "м/ч", Name = "Бурение ротором" @@ -6478,6 +6512,7 @@ namespace AsbCloudDb.Migrations { Id = 5004, IdParent = 4002, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Замер ЗТС (запись MWD)" @@ -6486,6 +6521,7 @@ namespace AsbCloudDb.Migrations { Id = 5005, IdParent = 4003, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Промывка перед наращиванием" @@ -6494,6 +6530,7 @@ namespace AsbCloudDb.Migrations { Id = 5006, IdParent = 4003, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Проработка во время бурения" @@ -6502,6 +6539,7 @@ namespace AsbCloudDb.Migrations { Id = 5007, IdParent = 4003, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Проработка" @@ -6510,6 +6548,7 @@ namespace AsbCloudDb.Migrations { Id = 5008, IdParent = 4003, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Шаблонировка во время бурения" @@ -6518,6 +6557,7 @@ namespace AsbCloudDb.Migrations { Id = 5009, IdParent = 4003, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Шаблонировка перед наращиванием" @@ -6526,6 +6566,7 @@ namespace AsbCloudDb.Migrations { Id = 5010, IdParent = 4004, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Наращивание" @@ -6534,6 +6575,7 @@ namespace AsbCloudDb.Migrations { Id = 5011, IdParent = 4004, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Удержание в клиньях" @@ -6542,6 +6584,7 @@ namespace AsbCloudDb.Migrations { Id = 5012, IdParent = 4005, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Подъем инструмента" @@ -6550,6 +6593,7 @@ namespace AsbCloudDb.Migrations { Id = 5013, IdParent = 4005, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Подъем КНБК" @@ -6558,6 +6602,7 @@ namespace AsbCloudDb.Migrations { Id = 5014, IdParent = 4005, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Спуск инструмента" @@ -6566,6 +6611,7 @@ namespace AsbCloudDb.Migrations { Id = 5015, IdParent = 4005, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Спуск КНБК" @@ -6574,6 +6620,7 @@ namespace AsbCloudDb.Migrations { Id = 5016, IdParent = 4006, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Промывка при спуске ОК" @@ -6582,6 +6629,7 @@ namespace AsbCloudDb.Migrations { Id = 5017, IdParent = 4006, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Спуск ОК" @@ -6590,6 +6638,7 @@ namespace AsbCloudDb.Migrations { Id = 5018, IdParent = 4007, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "ОЗЦ" @@ -6598,6 +6647,7 @@ namespace AsbCloudDb.Migrations { Id = 5019, IdParent = 4007, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Цементирование" @@ -6606,6 +6656,7 @@ namespace AsbCloudDb.Migrations { Id = 5020, IdParent = 4008, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Опрессовка БИ" @@ -6614,6 +6665,7 @@ namespace AsbCloudDb.Migrations { Id = 5021, IdParent = 4008, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Опрессовка ОК" @@ -6622,6 +6674,7 @@ namespace AsbCloudDb.Migrations { Id = 5022, IdParent = 4008, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "ПЗР при спуске ОК" @@ -6630,6 +6683,7 @@ namespace AsbCloudDb.Migrations { Id = 5023, IdParent = 4008, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "ПЗР при цементировании" @@ -6638,6 +6692,7 @@ namespace AsbCloudDb.Migrations { Id = 5024, IdParent = 4009, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Разборка комплекса приборов ГИС" @@ -6646,6 +6701,7 @@ namespace AsbCloudDb.Migrations { Id = 5025, IdParent = 4009, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Сборка комплекса приборов ГИС" @@ -6654,6 +6710,7 @@ namespace AsbCloudDb.Migrations { Id = 5026, IdParent = 4010, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Подъем приборов ГИС (на трубах)" @@ -6662,6 +6719,7 @@ namespace AsbCloudDb.Migrations { Id = 5027, IdParent = 4010, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Спуск приборов ГИС (на трубах)" @@ -6670,6 +6728,7 @@ namespace AsbCloudDb.Migrations { Id = 5028, IdParent = 4011, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Комплекс ГИС на жестком кабеле" @@ -6678,6 +6737,7 @@ namespace AsbCloudDb.Migrations { Id = 5029, IdParent = 4011, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Комплекс ГИС на кабеле" @@ -6686,6 +6746,7 @@ namespace AsbCloudDb.Migrations { Id = 5030, IdParent = 4011, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Комплекс ГИС на трубах" @@ -6694,6 +6755,7 @@ namespace AsbCloudDb.Migrations { Id = 5031, IdParent = 4012, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Закачка/прокачка пачки" @@ -6702,6 +6764,7 @@ namespace AsbCloudDb.Migrations { Id = 5032, IdParent = 4012, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Обработка БР" @@ -6710,6 +6773,7 @@ namespace AsbCloudDb.Migrations { Id = 5033, IdParent = 4012, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Ориентирование ТС при бурении" @@ -6718,6 +6782,7 @@ namespace AsbCloudDb.Migrations { Id = 5034, IdParent = 4012, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Перезапись гаммы-каротажа" @@ -6726,6 +6791,7 @@ namespace AsbCloudDb.Migrations { Id = 5035, IdParent = 4012, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Приготовление БР" @@ -6734,6 +6800,7 @@ namespace AsbCloudDb.Migrations { Id = 5036, IdParent = 4012, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Промывка" @@ -6742,6 +6809,7 @@ namespace AsbCloudDb.Migrations { Id = 5037, IdParent = 4012, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Разбуривание тех.оснастки" @@ -6750,6 +6818,7 @@ namespace AsbCloudDb.Migrations { Id = 5038, IdParent = 4012, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Спуск инструмента с проработкой" @@ -6758,6 +6827,7 @@ namespace AsbCloudDb.Migrations { Id = 5039, IdParent = 4013, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "ВМР" @@ -6766,6 +6836,7 @@ namespace AsbCloudDb.Migrations { Id = 5040, IdParent = 4013, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Демонтаж ПВО" @@ -6774,6 +6845,7 @@ namespace AsbCloudDb.Migrations { Id = 5041, IdParent = 4013, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Долив затруба при подъёме" @@ -6782,6 +6854,7 @@ namespace AsbCloudDb.Migrations { Id = 5042, IdParent = 4013, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Монтаж ПВО" @@ -6790,6 +6863,7 @@ namespace AsbCloudDb.Migrations { Id = 5043, IdParent = 4013, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Наработка жёлоба" @@ -6798,6 +6872,7 @@ namespace AsbCloudDb.Migrations { Id = 5044, IdParent = 4013, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Обвязка устья с циркуляционной системой" @@ -6806,6 +6881,7 @@ namespace AsbCloudDb.Migrations { Id = 5045, IdParent = 4013, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Оборудование устья" @@ -6814,6 +6890,7 @@ namespace AsbCloudDb.Migrations { Id = 5046, IdParent = 4013, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Опрессовка ПВО" @@ -6822,6 +6899,7 @@ namespace AsbCloudDb.Migrations { Id = 5047, IdParent = 4013, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Перемонтаж ПВО " @@ -6830,6 +6908,7 @@ namespace AsbCloudDb.Migrations { Id = 5048, IdParent = 4013, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Перетяжка талевого каната" @@ -6838,6 +6917,7 @@ namespace AsbCloudDb.Migrations { Id = 5049, IdParent = 4013, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "ПЗР при сборке КНБК" @@ -6846,6 +6926,7 @@ namespace AsbCloudDb.Migrations { Id = 5050, IdParent = 4013, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Полная замена талевого каната" @@ -6854,6 +6935,7 @@ namespace AsbCloudDb.Migrations { Id = 5051, IdParent = 4013, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "ПР перед забуркой направления" @@ -6862,6 +6944,7 @@ namespace AsbCloudDb.Migrations { Id = 5052, IdParent = 4013, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Продувка манифольда" @@ -6870,6 +6953,7 @@ namespace AsbCloudDb.Migrations { Id = 5053, IdParent = 4013, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Срезка" @@ -6878,6 +6962,7 @@ namespace AsbCloudDb.Migrations { Id = 5054, IdParent = 4013, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Тайм-дриллинг" @@ -6886,6 +6971,7 @@ namespace AsbCloudDb.Migrations { Id = 5055, IdParent = 4013, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Тех.отстой" @@ -6894,6 +6980,7 @@ namespace AsbCloudDb.Migrations { Id = 5056, IdParent = 4013, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Учебная тревога \"Выброс\"" @@ -6902,6 +6989,7 @@ namespace AsbCloudDb.Migrations { Id = 5057, IdParent = 4013, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Чистка ЦСГО/емкостного блока" @@ -6910,6 +6998,7 @@ namespace AsbCloudDb.Migrations { Id = 5058, IdParent = 4014, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Ремонт бурового оборудования" @@ -6918,6 +7007,7 @@ namespace AsbCloudDb.Migrations { Id = 5059, IdParent = 4015, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Ловильные работы" @@ -6926,6 +7016,7 @@ namespace AsbCloudDb.Migrations { Id = 5060, IdParent = 4015, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Ожидание" @@ -6934,6 +7025,7 @@ namespace AsbCloudDb.Migrations { Id = 5061, IdParent = 4015, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Определение места прихвата и ЛМ" @@ -6942,6 +7034,7 @@ namespace AsbCloudDb.Migrations { Id = 5062, IdParent = 4015, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Работа яссом" @@ -6950,6 +7043,7 @@ namespace AsbCloudDb.Migrations { Id = 5063, IdParent = 4015, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Расхаживание" @@ -6958,6 +7052,7 @@ namespace AsbCloudDb.Migrations { Id = 5064, IdParent = 4015, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "СПО - колокол" @@ -6966,6 +7061,7 @@ namespace AsbCloudDb.Migrations { Id = 5065, IdParent = 4015, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "СПО - метчик" @@ -6974,6 +7070,7 @@ namespace AsbCloudDb.Migrations { Id = 5066, IdParent = 4015, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "СПО - овершот" @@ -6982,6 +7079,7 @@ namespace AsbCloudDb.Migrations { Id = 5067, IdParent = 4015, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "СПО - труболовка" @@ -6990,6 +7088,7 @@ namespace AsbCloudDb.Migrations { Id = 5068, IdParent = 4015, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Торпедирование (встряхивание)" @@ -6998,6 +7097,7 @@ namespace AsbCloudDb.Migrations { Id = 5069, IdParent = 4015, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Торпедирование (отстрел)" @@ -7006,6 +7106,7 @@ namespace AsbCloudDb.Migrations { Id = 5070, IdParent = 4015, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Установка ванн" @@ -7014,6 +7115,7 @@ namespace AsbCloudDb.Migrations { Id = 5071, IdParent = 4015, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Фрезеровка" @@ -7022,6 +7124,7 @@ namespace AsbCloudDb.Migrations { Id = 5072, IdParent = 4016, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Контролируемое ГНВП" @@ -7030,6 +7133,7 @@ namespace AsbCloudDb.Migrations { Id = 5073, IdParent = 4016, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Поглощение" @@ -7038,6 +7142,7 @@ namespace AsbCloudDb.Migrations { Id = 5074, IdParent = 4016, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Сальникообразование" @@ -7046,6 +7151,7 @@ namespace AsbCloudDb.Migrations { Id = 5075, IdParent = 4016, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Утяжеление БР" @@ -7054,6 +7160,7 @@ namespace AsbCloudDb.Migrations { Id = 5076, IdParent = 4017, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "НПВ / прочее" @@ -7062,6 +7169,7 @@ namespace AsbCloudDb.Migrations { Id = 5077, IdParent = 4017, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Обработка раствора (несоответствие параметров)" @@ -7070,6 +7178,7 @@ namespace AsbCloudDb.Migrations { Id = 5078, IdParent = 4017, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "подъем ОК" @@ -7078,6 +7187,7 @@ namespace AsbCloudDb.Migrations { Id = 5079, IdParent = 4017, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Ревизия КНБК/инструмента/ЗТС" @@ -7086,6 +7196,7 @@ namespace AsbCloudDb.Migrations { Id = 5082, IdParent = 4000, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Сборка устройства ориентирования КО" @@ -7094,6 +7205,7 @@ namespace AsbCloudDb.Migrations { Id = 5083, IdParent = 4003, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Проработка принудительная" @@ -7102,6 +7214,7 @@ namespace AsbCloudDb.Migrations { Id = 5084, IdParent = 4005, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Шаблонировка подъем БИ, продувка" @@ -7110,6 +7223,7 @@ namespace AsbCloudDb.Migrations { Id = 5085, IdParent = 4005, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Спуск бурильного инструмента со сборкой с мостков" @@ -7118,6 +7232,7 @@ namespace AsbCloudDb.Migrations { Id = 5086, IdParent = 4005, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Подъем БИ с выбросом на мостки" @@ -7126,6 +7241,7 @@ namespace AsbCloudDb.Migrations { Id = 5087, IdParent = 4005, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Спуск БИ со сборкой с мостков" @@ -7134,6 +7250,7 @@ namespace AsbCloudDb.Migrations { Id = 5088, IdParent = 4005, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Сборка и спуск ТБТ" @@ -7142,6 +7259,7 @@ namespace AsbCloudDb.Migrations { Id = 5089, IdParent = 4005, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Спуск КО на транспотрной колонне" @@ -7150,6 +7268,7 @@ namespace AsbCloudDb.Migrations { Id = 5090, IdParent = 4008, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Отворот допускной трубы" @@ -7158,6 +7277,7 @@ namespace AsbCloudDb.Migrations { Id = 5091, IdParent = 4008, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Активация подвески, опрессовка" @@ -7166,6 +7286,7 @@ namespace AsbCloudDb.Migrations { Id = 5092, IdParent = 4008, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Монтаж, опрессовка ФА" @@ -7174,6 +7295,7 @@ namespace AsbCloudDb.Migrations { Id = 5093, IdParent = 4008, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Сборка хвостовика 114мм (согласно схеме)" @@ -7182,6 +7304,7 @@ namespace AsbCloudDb.Migrations { Id = 5094, IdParent = 4008, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "ПЗР к спуску УЭЦН" @@ -7190,6 +7313,7 @@ namespace AsbCloudDb.Migrations { Id = 5095, IdParent = 4008, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Активация подвески (потайной колонны, хвостовика)" @@ -7198,6 +7322,7 @@ namespace AsbCloudDb.Migrations { Id = 5096, IdParent = 4008, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Шаблонирование перед спуском" @@ -7206,6 +7331,7 @@ namespace AsbCloudDb.Migrations { Id = 5097, IdParent = 4012, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Промывка - перевод скважины на новый раствор" @@ -7214,6 +7340,7 @@ namespace AsbCloudDb.Migrations { Id = 5098, IdParent = 4013, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Сборка БИ с мостков на подсвечник" @@ -7222,6 +7349,7 @@ namespace AsbCloudDb.Migrations { Id = 5099, IdParent = 4013, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Подготовка ствола скважины. Перезапись ГК в интервале установки КО." @@ -7230,6 +7358,7 @@ namespace AsbCloudDb.Migrations { Id = 5100, IdParent = 4013, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Смена рабочего переводника ВСП" @@ -7238,6 +7367,7 @@ namespace AsbCloudDb.Migrations { Id = 5101, IdParent = 4014, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Ремонт" @@ -7246,6 +7376,7 @@ namespace AsbCloudDb.Migrations { Id = 5102, IdParent = 4018, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Спуск пакера" @@ -7254,6 +7385,7 @@ namespace AsbCloudDb.Migrations { Id = 5103, IdParent = 4011, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Запись гамма-каратожа" @@ -7262,6 +7394,7 @@ namespace AsbCloudDb.Migrations { Id = 5104, IdParent = 4013, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Шаблонирование спуск БИ" @@ -7270,6 +7403,7 @@ namespace AsbCloudDb.Migrations { Id = 5105, IdParent = 4018, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Сборка клин-отклонителя" @@ -7278,6 +7412,7 @@ namespace AsbCloudDb.Migrations { Id = 5106, IdParent = 4018, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Ориентирование и посадка клина-отклонителя" @@ -7286,6 +7421,7 @@ namespace AsbCloudDb.Migrations { Id = 5107, IdParent = 4018, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Протяжка подъемного патрубка подвески" @@ -7294,6 +7430,7 @@ namespace AsbCloudDb.Migrations { Id = 5108, IdParent = 4018, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Подъем клина-отклонителя" @@ -7302,6 +7439,7 @@ namespace AsbCloudDb.Migrations { Id = 5109, IdParent = 4018, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Стыковка стингера с хвостовиком основного ствола" @@ -7310,6 +7448,7 @@ namespace AsbCloudDb.Migrations { Id = 5110, IdParent = 4018, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Ориентирование и установка стыковочного узла хвостовика" @@ -7318,6 +7457,7 @@ namespace AsbCloudDb.Migrations { Id = 5111, IdParent = 4001, + IsHidden = false, KeyValueName = "МСП", KeyValueUnits = "м/ч", Name = "Бурение с отбором керна" @@ -7326,6 +7466,7 @@ namespace AsbCloudDb.Migrations { Id = 5112, IdParent = 4018, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Работа пакером в обсадной колонне" @@ -7334,6 +7475,7 @@ namespace AsbCloudDb.Migrations { Id = 5113, IdParent = 4001, + IsHidden = false, KeyValueName = "МСП", KeyValueUnits = "м/ч", Name = "Бурение" @@ -7342,6 +7484,7 @@ namespace AsbCloudDb.Migrations { Id = 5114, IdParent = 4013, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "ТО оборудования" @@ -7350,6 +7493,7 @@ namespace AsbCloudDb.Migrations { Id = 5115, IdParent = 4019, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Спуск НКТ" @@ -7358,14 +7502,16 @@ namespace AsbCloudDb.Migrations { Id = 5116, IdParent = 4013, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", - Name = "Фрезерование \"Окна\"" + Name = "Вырезка окна" }, new { Id = 5117, IdParent = 4013, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Расширение ствола" diff --git a/AsbCloudDb/Migrations/20240408112202_Add_NewWellOperationCategories.cs b/AsbCloudDb/Migrations/20240408112202_Add_NewWellOperationCategories.cs new file mode 100644 index 00000000..dfa7431e --- /dev/null +++ b/AsbCloudDb/Migrations/20240408112202_Add_NewWellOperationCategories.cs @@ -0,0 +1,1035 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +#pragma warning disable CA1814 // Prefer jagged arrays over multidimensional + +namespace AsbCloudDb.Migrations +{ + /// + public partial class Add_NewWellOperationCategories : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "IsHidden", + table: "t_well_operation_category", + type: "boolean", + nullable: false, + defaultValue: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 3000, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 3001, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 3002, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 3003, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 3004, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 3005, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 4000, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 4001, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 4002, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 4003, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 4004, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 4005, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 4006, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 4007, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 4008, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 4009, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 4010, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 4011, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 4012, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 4013, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 4014, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 4015, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 4016, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 4017, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 4018, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5000, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5001, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5002, + column: "IsHidden", + value: true); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5003, + column: "IsHidden", + value: true); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5004, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5005, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5006, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5007, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5008, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5009, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5010, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5011, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5012, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5013, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5014, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5015, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5016, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5017, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5018, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5019, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5020, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5021, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5022, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5023, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5024, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5025, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5026, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5027, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5028, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5029, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5030, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5031, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5032, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5033, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5034, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5035, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5036, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5037, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5038, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5039, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5040, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5041, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5042, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5043, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5044, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5045, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5046, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5047, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5048, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5049, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5050, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5051, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5052, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5053, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5054, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5055, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5056, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5057, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5058, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5059, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5060, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5061, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5062, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5063, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5064, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5065, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5066, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5067, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5068, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5069, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5070, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5071, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5072, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5073, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5074, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5075, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5076, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5077, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5078, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5079, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5082, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5083, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5084, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5085, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5086, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5087, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5088, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5089, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5090, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5091, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5092, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5093, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5094, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5095, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5096, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5097, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5098, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5099, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5100, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5101, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5102, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5103, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5104, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5105, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5106, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5107, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5108, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5109, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5110, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5111, + column: "IsHidden", + value: false); + + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5112, + column: "IsHidden", + value: false); + + migrationBuilder.InsertData( + table: "t_well_operation_category", + columns: new[] { "id", "id_parent", "IsHidden", "key_value_name", "key_value_units", "name" }, + values: new object[,] + { + { 3006, null, false, "dT", "мин", "Заключительные работы" }, + { 5113, 4001, false, "МСП", "м/ч", "Бурение" }, + { 5114, 4013, false, "dT", "мин", "ТО оборудования" }, + { 5116, 4013, false, "dT", "мин", "Вырезка окна" }, + { 5117, 4013, false, "dT", "мин", "Расширение ствола" }, + { 4019, 3006, false, "dT", "мин", "Заключительные операции" }, + { 5115, 4019, false, "dT", "мин", "Спуск НКТ" } + }); + + migrationBuilder.Sql + ("UPDATE public.t_well_operation SET id_category=5113 WHERE id_category=5002 OR id_category=5003;"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DeleteData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5113); + + migrationBuilder.DeleteData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5114); + + migrationBuilder.DeleteData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5115); + + migrationBuilder.DeleteData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5116); + + migrationBuilder.DeleteData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5117); + + migrationBuilder.DeleteData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 4019); + + migrationBuilder.DeleteData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 3006); + + migrationBuilder.DropColumn( + name: "IsHidden", + table: "t_well_operation_category"); + } + } +} diff --git a/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs b/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs index 495d5897..a42f3052 100644 --- a/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs +++ b/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs @@ -6202,6 +6202,9 @@ namespace AsbCloudDb.Migrations .HasColumnName("id_parent") .HasComment("id родительской категории"); + b.Property("IsHidden") + .HasColumnType("boolean"); + b.Property("KeyValueName") .HasMaxLength(32) .HasColumnType("character varying(32)") @@ -6233,6 +6236,7 @@ namespace AsbCloudDb.Migrations new { Id = 3000, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "м/ч", Name = "БУРЕНИЕ" @@ -6240,6 +6244,7 @@ namespace AsbCloudDb.Migrations new { Id = 3001, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "СПО" @@ -6247,6 +6252,7 @@ namespace AsbCloudDb.Migrations new { Id = 3002, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "КРЕПЛЕНИЕ" @@ -6254,6 +6260,7 @@ namespace AsbCloudDb.Migrations new { Id = 3003, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "ГФР" @@ -6261,6 +6268,7 @@ namespace AsbCloudDb.Migrations new { Id = 3004, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Вспомогательные операции" @@ -6268,6 +6276,7 @@ namespace AsbCloudDb.Migrations new { Id = 3005, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Непроизводительное время (НПВ)" @@ -6275,6 +6284,7 @@ namespace AsbCloudDb.Migrations new { Id = 3006, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Заключительные работы" @@ -6283,6 +6293,7 @@ namespace AsbCloudDb.Migrations { Id = 4000, IdParent = 3000, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "КНБК" @@ -6291,6 +6302,7 @@ namespace AsbCloudDb.Migrations { Id = 4001, IdParent = 3000, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "м/ч", Name = "Механическое. бурение" @@ -6299,6 +6311,7 @@ namespace AsbCloudDb.Migrations { Id = 4002, IdParent = 3000, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Статический замер" @@ -6307,6 +6320,7 @@ namespace AsbCloudDb.Migrations { Id = 4003, IdParent = 3000, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Нормализация диаметра скважины" @@ -6315,6 +6329,7 @@ namespace AsbCloudDb.Migrations { Id = 4004, IdParent = 3000, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Наращивание" @@ -6323,6 +6338,7 @@ namespace AsbCloudDb.Migrations { Id = 4005, IdParent = 3001, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "СПО" @@ -6331,6 +6347,7 @@ namespace AsbCloudDb.Migrations { Id = 4006, IdParent = 3002, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Спуск обсадной колонны" @@ -6339,6 +6356,7 @@ namespace AsbCloudDb.Migrations { Id = 4018, IdParent = 3002, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Крепление" @@ -6347,6 +6365,7 @@ namespace AsbCloudDb.Migrations { Id = 4007, IdParent = 3002, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Цементирование" @@ -6355,6 +6374,7 @@ namespace AsbCloudDb.Migrations { Id = 4008, IdParent = 3002, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Вспомогательные работы при креплении" @@ -6363,6 +6383,7 @@ namespace AsbCloudDb.Migrations { Id = 4009, IdParent = 3003, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Сборка/разборка приборов ГИС" @@ -6371,6 +6392,7 @@ namespace AsbCloudDb.Migrations { Id = 4010, IdParent = 3003, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "СПО" @@ -6379,6 +6401,7 @@ namespace AsbCloudDb.Migrations { Id = 4011, IdParent = 3003, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "ГИС" @@ -6387,6 +6410,7 @@ namespace AsbCloudDb.Migrations { Id = 4012, IdParent = 3004, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Промывка, ОБР" @@ -6395,6 +6419,7 @@ namespace AsbCloudDb.Migrations { Id = 4013, IdParent = 3004, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Вспомогательные работы" @@ -6403,6 +6428,7 @@ namespace AsbCloudDb.Migrations { Id = 4014, IdParent = 3005, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Ремонт оборудования" @@ -6411,6 +6437,7 @@ namespace AsbCloudDb.Migrations { Id = 4015, IdParent = 3005, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Аварийные работы" @@ -6419,6 +6446,7 @@ namespace AsbCloudDb.Migrations { Id = 4016, IdParent = 3005, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Осложнение" @@ -6427,6 +6455,7 @@ namespace AsbCloudDb.Migrations { Id = 4017, IdParent = 3005, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Незаложенные в ГГД операции" @@ -6435,6 +6464,7 @@ namespace AsbCloudDb.Migrations { Id = 4019, IdParent = 3006, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Заключительные операции" @@ -6443,6 +6473,7 @@ namespace AsbCloudDb.Migrations { Id = 5000, IdParent = 4000, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Разборка КНБК" @@ -6451,6 +6482,7 @@ namespace AsbCloudDb.Migrations { Id = 5001, IdParent = 4000, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Сборка КНБК" @@ -6459,6 +6491,7 @@ namespace AsbCloudDb.Migrations { Id = 5002, IdParent = 4001, + IsHidden = false, KeyValueName = "МСП", KeyValueUnits = "м/ч", Name = "Бурение слайдом" @@ -6467,6 +6500,7 @@ namespace AsbCloudDb.Migrations { Id = 5003, IdParent = 4001, + IsHidden = false, KeyValueName = "МСП", KeyValueUnits = "м/ч", Name = "Бурение ротором" @@ -6475,6 +6509,7 @@ namespace AsbCloudDb.Migrations { Id = 5004, IdParent = 4002, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Замер ЗТС (запись MWD)" @@ -6483,6 +6518,7 @@ namespace AsbCloudDb.Migrations { Id = 5005, IdParent = 4003, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Промывка перед наращиванием" @@ -6491,6 +6527,7 @@ namespace AsbCloudDb.Migrations { Id = 5006, IdParent = 4003, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Проработка во время бурения" @@ -6499,6 +6536,7 @@ namespace AsbCloudDb.Migrations { Id = 5007, IdParent = 4003, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Проработка" @@ -6507,6 +6545,7 @@ namespace AsbCloudDb.Migrations { Id = 5008, IdParent = 4003, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Шаблонировка во время бурения" @@ -6515,6 +6554,7 @@ namespace AsbCloudDb.Migrations { Id = 5009, IdParent = 4003, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Шаблонировка перед наращиванием" @@ -6523,6 +6563,7 @@ namespace AsbCloudDb.Migrations { Id = 5010, IdParent = 4004, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Наращивание" @@ -6531,6 +6572,7 @@ namespace AsbCloudDb.Migrations { Id = 5011, IdParent = 4004, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Удержание в клиньях" @@ -6539,6 +6581,7 @@ namespace AsbCloudDb.Migrations { Id = 5012, IdParent = 4005, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Подъем инструмента" @@ -6547,6 +6590,7 @@ namespace AsbCloudDb.Migrations { Id = 5013, IdParent = 4005, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Подъем КНБК" @@ -6555,6 +6599,7 @@ namespace AsbCloudDb.Migrations { Id = 5014, IdParent = 4005, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Спуск инструмента" @@ -6563,6 +6608,7 @@ namespace AsbCloudDb.Migrations { Id = 5015, IdParent = 4005, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Спуск КНБК" @@ -6571,6 +6617,7 @@ namespace AsbCloudDb.Migrations { Id = 5016, IdParent = 4006, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Промывка при спуске ОК" @@ -6579,6 +6626,7 @@ namespace AsbCloudDb.Migrations { Id = 5017, IdParent = 4006, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Спуск ОК" @@ -6587,6 +6635,7 @@ namespace AsbCloudDb.Migrations { Id = 5018, IdParent = 4007, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "ОЗЦ" @@ -6595,6 +6644,7 @@ namespace AsbCloudDb.Migrations { Id = 5019, IdParent = 4007, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Цементирование" @@ -6603,6 +6653,7 @@ namespace AsbCloudDb.Migrations { Id = 5020, IdParent = 4008, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Опрессовка БИ" @@ -6611,6 +6662,7 @@ namespace AsbCloudDb.Migrations { Id = 5021, IdParent = 4008, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Опрессовка ОК" @@ -6619,6 +6671,7 @@ namespace AsbCloudDb.Migrations { Id = 5022, IdParent = 4008, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "ПЗР при спуске ОК" @@ -6627,6 +6680,7 @@ namespace AsbCloudDb.Migrations { Id = 5023, IdParent = 4008, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "ПЗР при цементировании" @@ -6635,6 +6689,7 @@ namespace AsbCloudDb.Migrations { Id = 5024, IdParent = 4009, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Разборка комплекса приборов ГИС" @@ -6643,6 +6698,7 @@ namespace AsbCloudDb.Migrations { Id = 5025, IdParent = 4009, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Сборка комплекса приборов ГИС" @@ -6651,6 +6707,7 @@ namespace AsbCloudDb.Migrations { Id = 5026, IdParent = 4010, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Подъем приборов ГИС (на трубах)" @@ -6659,6 +6716,7 @@ namespace AsbCloudDb.Migrations { Id = 5027, IdParent = 4010, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Спуск приборов ГИС (на трубах)" @@ -6667,6 +6725,7 @@ namespace AsbCloudDb.Migrations { Id = 5028, IdParent = 4011, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Комплекс ГИС на жестком кабеле" @@ -6675,6 +6734,7 @@ namespace AsbCloudDb.Migrations { Id = 5029, IdParent = 4011, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Комплекс ГИС на кабеле" @@ -6683,6 +6743,7 @@ namespace AsbCloudDb.Migrations { Id = 5030, IdParent = 4011, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Комплекс ГИС на трубах" @@ -6691,6 +6752,7 @@ namespace AsbCloudDb.Migrations { Id = 5031, IdParent = 4012, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Закачка/прокачка пачки" @@ -6699,6 +6761,7 @@ namespace AsbCloudDb.Migrations { Id = 5032, IdParent = 4012, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Обработка БР" @@ -6707,6 +6770,7 @@ namespace AsbCloudDb.Migrations { Id = 5033, IdParent = 4012, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Ориентирование ТС при бурении" @@ -6715,6 +6779,7 @@ namespace AsbCloudDb.Migrations { Id = 5034, IdParent = 4012, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Перезапись гаммы-каротажа" @@ -6723,6 +6788,7 @@ namespace AsbCloudDb.Migrations { Id = 5035, IdParent = 4012, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Приготовление БР" @@ -6731,6 +6797,7 @@ namespace AsbCloudDb.Migrations { Id = 5036, IdParent = 4012, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Промывка" @@ -6739,6 +6806,7 @@ namespace AsbCloudDb.Migrations { Id = 5037, IdParent = 4012, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Разбуривание тех.оснастки" @@ -6747,6 +6815,7 @@ namespace AsbCloudDb.Migrations { Id = 5038, IdParent = 4012, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Спуск инструмента с проработкой" @@ -6755,6 +6824,7 @@ namespace AsbCloudDb.Migrations { Id = 5039, IdParent = 4013, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "ВМР" @@ -6763,6 +6833,7 @@ namespace AsbCloudDb.Migrations { Id = 5040, IdParent = 4013, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Демонтаж ПВО" @@ -6771,6 +6842,7 @@ namespace AsbCloudDb.Migrations { Id = 5041, IdParent = 4013, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Долив затруба при подъёме" @@ -6779,6 +6851,7 @@ namespace AsbCloudDb.Migrations { Id = 5042, IdParent = 4013, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Монтаж ПВО" @@ -6787,6 +6860,7 @@ namespace AsbCloudDb.Migrations { Id = 5043, IdParent = 4013, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Наработка жёлоба" @@ -6795,6 +6869,7 @@ namespace AsbCloudDb.Migrations { Id = 5044, IdParent = 4013, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Обвязка устья с циркуляционной системой" @@ -6803,6 +6878,7 @@ namespace AsbCloudDb.Migrations { Id = 5045, IdParent = 4013, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Оборудование устья" @@ -6811,6 +6887,7 @@ namespace AsbCloudDb.Migrations { Id = 5046, IdParent = 4013, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Опрессовка ПВО" @@ -6819,6 +6896,7 @@ namespace AsbCloudDb.Migrations { Id = 5047, IdParent = 4013, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Перемонтаж ПВО " @@ -6827,6 +6905,7 @@ namespace AsbCloudDb.Migrations { Id = 5048, IdParent = 4013, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Перетяжка талевого каната" @@ -6835,6 +6914,7 @@ namespace AsbCloudDb.Migrations { Id = 5049, IdParent = 4013, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "ПЗР при сборке КНБК" @@ -6843,6 +6923,7 @@ namespace AsbCloudDb.Migrations { Id = 5050, IdParent = 4013, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Полная замена талевого каната" @@ -6851,6 +6932,7 @@ namespace AsbCloudDb.Migrations { Id = 5051, IdParent = 4013, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "ПР перед забуркой направления" @@ -6859,6 +6941,7 @@ namespace AsbCloudDb.Migrations { Id = 5052, IdParent = 4013, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Продувка манифольда" @@ -6867,6 +6950,7 @@ namespace AsbCloudDb.Migrations { Id = 5053, IdParent = 4013, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Срезка" @@ -6875,6 +6959,7 @@ namespace AsbCloudDb.Migrations { Id = 5054, IdParent = 4013, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Тайм-дриллинг" @@ -6883,6 +6968,7 @@ namespace AsbCloudDb.Migrations { Id = 5055, IdParent = 4013, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Тех.отстой" @@ -6891,6 +6977,7 @@ namespace AsbCloudDb.Migrations { Id = 5056, IdParent = 4013, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Учебная тревога \"Выброс\"" @@ -6899,6 +6986,7 @@ namespace AsbCloudDb.Migrations { Id = 5057, IdParent = 4013, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Чистка ЦСГО/емкостного блока" @@ -6907,6 +6995,7 @@ namespace AsbCloudDb.Migrations { Id = 5058, IdParent = 4014, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Ремонт бурового оборудования" @@ -6915,6 +7004,7 @@ namespace AsbCloudDb.Migrations { Id = 5059, IdParent = 4015, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Ловильные работы" @@ -6923,6 +7013,7 @@ namespace AsbCloudDb.Migrations { Id = 5060, IdParent = 4015, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Ожидание" @@ -6931,6 +7022,7 @@ namespace AsbCloudDb.Migrations { Id = 5061, IdParent = 4015, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Определение места прихвата и ЛМ" @@ -6939,6 +7031,7 @@ namespace AsbCloudDb.Migrations { Id = 5062, IdParent = 4015, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Работа яссом" @@ -6947,6 +7040,7 @@ namespace AsbCloudDb.Migrations { Id = 5063, IdParent = 4015, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Расхаживание" @@ -6955,6 +7049,7 @@ namespace AsbCloudDb.Migrations { Id = 5064, IdParent = 4015, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "СПО - колокол" @@ -6963,6 +7058,7 @@ namespace AsbCloudDb.Migrations { Id = 5065, IdParent = 4015, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "СПО - метчик" @@ -6971,6 +7067,7 @@ namespace AsbCloudDb.Migrations { Id = 5066, IdParent = 4015, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "СПО - овершот" @@ -6979,6 +7076,7 @@ namespace AsbCloudDb.Migrations { Id = 5067, IdParent = 4015, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "СПО - труболовка" @@ -6987,6 +7085,7 @@ namespace AsbCloudDb.Migrations { Id = 5068, IdParent = 4015, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Торпедирование (встряхивание)" @@ -6995,6 +7094,7 @@ namespace AsbCloudDb.Migrations { Id = 5069, IdParent = 4015, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Торпедирование (отстрел)" @@ -7003,6 +7103,7 @@ namespace AsbCloudDb.Migrations { Id = 5070, IdParent = 4015, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Установка ванн" @@ -7011,6 +7112,7 @@ namespace AsbCloudDb.Migrations { Id = 5071, IdParent = 4015, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Фрезеровка" @@ -7019,6 +7121,7 @@ namespace AsbCloudDb.Migrations { Id = 5072, IdParent = 4016, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Контролируемое ГНВП" @@ -7027,6 +7130,7 @@ namespace AsbCloudDb.Migrations { Id = 5073, IdParent = 4016, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Поглощение" @@ -7035,6 +7139,7 @@ namespace AsbCloudDb.Migrations { Id = 5074, IdParent = 4016, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Сальникообразование" @@ -7043,6 +7148,7 @@ namespace AsbCloudDb.Migrations { Id = 5075, IdParent = 4016, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Утяжеление БР" @@ -7051,6 +7157,7 @@ namespace AsbCloudDb.Migrations { Id = 5076, IdParent = 4017, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "НПВ / прочее" @@ -7059,6 +7166,7 @@ namespace AsbCloudDb.Migrations { Id = 5077, IdParent = 4017, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Обработка раствора (несоответствие параметров)" @@ -7067,6 +7175,7 @@ namespace AsbCloudDb.Migrations { Id = 5078, IdParent = 4017, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "подъем ОК" @@ -7075,6 +7184,7 @@ namespace AsbCloudDb.Migrations { Id = 5079, IdParent = 4017, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Ревизия КНБК/инструмента/ЗТС" @@ -7083,6 +7193,7 @@ namespace AsbCloudDb.Migrations { Id = 5082, IdParent = 4000, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Сборка устройства ориентирования КО" @@ -7091,6 +7202,7 @@ namespace AsbCloudDb.Migrations { Id = 5083, IdParent = 4003, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Проработка принудительная" @@ -7099,6 +7211,7 @@ namespace AsbCloudDb.Migrations { Id = 5084, IdParent = 4005, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Шаблонировка подъем БИ, продувка" @@ -7107,6 +7220,7 @@ namespace AsbCloudDb.Migrations { Id = 5085, IdParent = 4005, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Спуск бурильного инструмента со сборкой с мостков" @@ -7115,6 +7229,7 @@ namespace AsbCloudDb.Migrations { Id = 5086, IdParent = 4005, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Подъем БИ с выбросом на мостки" @@ -7123,6 +7238,7 @@ namespace AsbCloudDb.Migrations { Id = 5087, IdParent = 4005, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Спуск БИ со сборкой с мостков" @@ -7131,6 +7247,7 @@ namespace AsbCloudDb.Migrations { Id = 5088, IdParent = 4005, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Сборка и спуск ТБТ" @@ -7139,6 +7256,7 @@ namespace AsbCloudDb.Migrations { Id = 5089, IdParent = 4005, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Спуск КО на транспотрной колонне" @@ -7147,6 +7265,7 @@ namespace AsbCloudDb.Migrations { Id = 5090, IdParent = 4008, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Отворот допускной трубы" @@ -7155,6 +7274,7 @@ namespace AsbCloudDb.Migrations { Id = 5091, IdParent = 4008, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Активация подвески, опрессовка" @@ -7163,6 +7283,7 @@ namespace AsbCloudDb.Migrations { Id = 5092, IdParent = 4008, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Монтаж, опрессовка ФА" @@ -7171,6 +7292,7 @@ namespace AsbCloudDb.Migrations { Id = 5093, IdParent = 4008, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Сборка хвостовика 114мм (согласно схеме)" @@ -7179,6 +7301,7 @@ namespace AsbCloudDb.Migrations { Id = 5094, IdParent = 4008, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "ПЗР к спуску УЭЦН" @@ -7187,6 +7310,7 @@ namespace AsbCloudDb.Migrations { Id = 5095, IdParent = 4008, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Активация подвески (потайной колонны, хвостовика)" @@ -7195,6 +7319,7 @@ namespace AsbCloudDb.Migrations { Id = 5096, IdParent = 4008, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Шаблонирование перед спуском" @@ -7203,6 +7328,7 @@ namespace AsbCloudDb.Migrations { Id = 5097, IdParent = 4012, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Промывка - перевод скважины на новый раствор" @@ -7211,6 +7337,7 @@ namespace AsbCloudDb.Migrations { Id = 5098, IdParent = 4013, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Сборка БИ с мостков на подсвечник" @@ -7219,6 +7346,7 @@ namespace AsbCloudDb.Migrations { Id = 5099, IdParent = 4013, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Подготовка ствола скважины. Перезапись ГК в интервале установки КО." @@ -7227,6 +7355,7 @@ namespace AsbCloudDb.Migrations { Id = 5100, IdParent = 4013, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Смена рабочего переводника ВСП" @@ -7235,6 +7364,7 @@ namespace AsbCloudDb.Migrations { Id = 5101, IdParent = 4014, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Ремонт" @@ -7243,6 +7373,7 @@ namespace AsbCloudDb.Migrations { Id = 5102, IdParent = 4018, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Спуск пакера" @@ -7251,6 +7382,7 @@ namespace AsbCloudDb.Migrations { Id = 5103, IdParent = 4011, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Запись гамма-каратожа" @@ -7259,6 +7391,7 @@ namespace AsbCloudDb.Migrations { Id = 5104, IdParent = 4013, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Шаблонирование спуск БИ" @@ -7267,6 +7400,7 @@ namespace AsbCloudDb.Migrations { Id = 5105, IdParent = 4018, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Сборка клин-отклонителя" @@ -7275,6 +7409,7 @@ namespace AsbCloudDb.Migrations { Id = 5106, IdParent = 4018, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Ориентирование и посадка клина-отклонителя" @@ -7283,6 +7418,7 @@ namespace AsbCloudDb.Migrations { Id = 5107, IdParent = 4018, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Протяжка подъемного патрубка подвески" @@ -7291,6 +7427,7 @@ namespace AsbCloudDb.Migrations { Id = 5108, IdParent = 4018, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Подъем клина-отклонителя" @@ -7299,6 +7436,7 @@ namespace AsbCloudDb.Migrations { Id = 5109, IdParent = 4018, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Стыковка стингера с хвостовиком основного ствола" @@ -7307,6 +7445,7 @@ namespace AsbCloudDb.Migrations { Id = 5110, IdParent = 4018, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Ориентирование и установка стыковочного узла хвостовика" @@ -7315,6 +7454,7 @@ namespace AsbCloudDb.Migrations { Id = 5111, IdParent = 4001, + IsHidden = false, KeyValueName = "МСП", KeyValueUnits = "м/ч", Name = "Бурение с отбором керна" @@ -7323,6 +7463,7 @@ namespace AsbCloudDb.Migrations { Id = 5112, IdParent = 4018, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Работа пакером в обсадной колонне" @@ -7331,6 +7472,7 @@ namespace AsbCloudDb.Migrations { Id = 5113, IdParent = 4001, + IsHidden = false, KeyValueName = "МСП", KeyValueUnits = "м/ч", Name = "Бурение" @@ -7339,6 +7481,7 @@ namespace AsbCloudDb.Migrations { Id = 5114, IdParent = 4013, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "ТО оборудования" @@ -7347,6 +7490,7 @@ namespace AsbCloudDb.Migrations { Id = 5115, IdParent = 4019, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Спуск НКТ" @@ -7355,14 +7499,16 @@ namespace AsbCloudDb.Migrations { Id = 5116, IdParent = 4013, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", - Name = "Фрезерование \"Окна\"" + Name = "Вырезка окна" }, new { Id = 5117, IdParent = 4013, + IsHidden = false, KeyValueName = "dT", KeyValueUnits = "мин", Name = "Расширение ствола" diff --git a/AsbCloudDb/Model/WellOperationCategory.cs b/AsbCloudDb/Model/WellOperationCategory.cs index a6e6fa57..4b73de9b 100644 --- a/AsbCloudDb/Model/WellOperationCategory.cs +++ b/AsbCloudDb/Model/WellOperationCategory.cs @@ -397,7 +397,7 @@ namespace AsbCloudDb.Model new () {Id = 5113, IdParent = 4001, Name = "Бурение", KeyValueName = "МСП", KeyValueUnits = "м/ч"}, new () {Id = 5114, IdParent = 4013, Name = "ТО оборудования", KeyValueName = "dT", KeyValueUnits = "мин"}, new () {Id = 5115, IdParent = IdFinalOperations, Name = "Спуск НКТ", KeyValueName = "dT", KeyValueUnits = "мин"}, - new () {Id = 5116, IdParent = IdAuxiliaryWork, Name = "Фрезерование \"Окна\"", KeyValueName = "dT", KeyValueUnits = "мин"}, + new () {Id = 5116, IdParent = IdAuxiliaryWork, Name = "Вырезка окна", KeyValueName = "dT", KeyValueUnits = "мин"}, new () {Id = 5117, IdParent = IdAuxiliaryWork, Name = "Расширение ствола", KeyValueName = "dT", KeyValueUnits = "мин"}, }; #endregion @@ -418,6 +418,8 @@ namespace AsbCloudDb.Model [Column("key_value_units"), Comment("Единицы измерения ключевого показателя операции"), StringLength(16)] public string? KeyValueUnits { get; set; } + public bool IsHidden { get; set; } = false; + [JsonIgnore] [ForeignKey(nameof(IdParent))] public virtual WellOperationCategory? Parent { get; set; } = null!; diff --git a/AsbCloudInfrastructure/Services/ExcelServices/ExcelTemplateService.cs b/AsbCloudInfrastructure/Services/ExcelServices/ExcelTemplateService.cs new file mode 100644 index 00000000..75aa1f20 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ExcelServices/ExcelTemplateService.cs @@ -0,0 +1,39 @@ +using AsbCloudApp.Data.WellOperation; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Requests.ExportOptions; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Repository; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace AsbCloudInfrastructure.Services.ExcelServices +{ + public class ExcelTemplateService : ExcelExportService + where TTemplate : class, ITemplateParameters, new() + { + private readonly IWellOperationCategoryRepository wellOperationCategoryRepository; + + public ExcelTemplateService(IWellOperationCategoryRepository wellOperationCategoryRepository, + IWellService wellService) + { + this.wellOperationCategoryRepository = wellOperationCategoryRepository; + } + + protected override async Task BuildFileNameAsync(WellOperationExportRequest options, CancellationToken token) + { + return "WellOperationFactTemplate"; + } + + protected override async Task> GetDtosAsync(WellOperationExportRequest options, CancellationToken token) + { + var dtos = wellOperationCategoryRepository.Get(false); + return dtos; + } + } +} diff --git a/AsbCloudInfrastructure/Services/WellOperations/Templates/WellOperationFactTemplate.xlsx b/AsbCloudInfrastructure/Services/WellOperations/Templates/WellOperationFactTemplate.xlsx index 065dc2070b20c533bc426b21237f4e4cf062c581..97e0f79a5f1dc05ca7461d5e50aa8c858cfff777 100644 GIT binary patch literal 37120 zcmeFa2UJzfmhTIQM2V6lXHXCjHaUqPK|nx}BsqiR3=)J*lqkqX$vFr}&Pk%cmYgL? zmYg#i-dghY?Y{4g{`#GJPT%hDw7SLucFi@besfmU`j4u$##WZUfl7pgfq{Y4ZycV-a)9T;=;o)bT(<(ZU%$O~%sc%MBQ3j5LAH(#Lj8r&hN2=QqYb)u zBz2qcR(NS^guS=VrD4{Lf(`o&7qh%>$P3L7lm=!aubejcrM){RUr)Ms2Z4ahGh4}f z4v|Vv4!+GvbZ5SHih6?eb6-(@0C~k|!x%~QVUUB)3s>$-1nLQKOaigoXH2|m;IrHBaqryXl2s&#qg&qU zBpIrTphLWeuYUM&yS8T8!Orjit*4&QpUceYwIYL;tio0bF%^&AlTfYX3;6PFWqEXr zfOts!77&D96eJ|&e>Y5cfQ6eCr>m{QD??k`R~&BER^h6XHbW2by;j)1eJTp!w2&lk z&wD$RD?2p|J1WtdT<}=+82di0jrHhJ{SK9^C(?Z0C)5kSbD3}7?Pa9`+=?4`>RvB@ zOS}__3%lvMoC=AdXY?LpzzvqlR?rSu?3pO%p^e~E&3rG9Ojm=fh}#haxd5<|rdu!xMzmwev zQ^A;Dbzf7meT28dv#b?TX$vLm42*g zxjpgpLA9V+d^@FJK3yx$Av+HH@+g9Hr06^{c(>uq{i^0nWm?U3WD`wm2d`YWr#LJ2 zQ3q=Q&W1^y z-N{J&M2G7h$?9-4`F-t#v$}XT4tvCyl|2cYd3GK(`}{W|?5=YbL@Eu=nFNc#!E35n z@$c&*o10tC*)l_SD^(yNM>#ZhotDFNVk$Add{|dxEKx}_`Wc*(4&@4OX!r{Kzs9>N z_E@7EUr>Pk7wL<`Z79%py-@$G|KeQtUq>f*D-%bs_inzFw^`sLn>i-(E49vuV|wYk z*&Ozgbov%r(kwO`I$j+V1H=(?nLfiZ3eVFRPGj-w*Zk>2Br?Ln;QG`M2y*tPuc=YeTysP#5cxHJq z&Bc(9(Wv)OmdKK>OM1;O>fp%`w=J?!lukMk^ZVPhls6vP?rOuI-SSO&kR>pvpyOIj z<{u(N&CI_GVg5Lumf#;YtSk5IWR*0fWBEWeAR&P^C2)^NffnuEC(MA&?BeZL_63DM zcY{hbwA*)Iz~mrQAG4(zXWuuST+Tmg8g^zbB*vk@yYXIilgBFdc}MF;=pLrjdt)wl zyvG=9ZekR9LwU(GHP7)SIrxxO1X}4B&}eZph*?&i&7k}UJCb?&;82$u>3DE&g!_y< zh_b`X_8ICP#k4n36u;LlhiH1y9Ww&Y8+W$f_tZD7XH?aGr2R_4-NE3_jfXNU@_D^S zx|`Cr(tSQYaCc~ck|rnQE6v@=*w5&v-(#gtLqyG5Sns9qWOrjO7+_)e3Va--$f|DC z%{s7%?avY7kAZJSB^woUE7WC2rR2`uX%Q==UrQF0+m+;!!3-A5WZ*?oK^uuaU^q)G z2w5;dz3~WV!LCu?%| z)=R%_F8Y23_oTR(uad>cl8`))%^*EneoeJ`J~ zvjbJ0^O{JK{x=RXIj+}{g&ZIL<-eETs^-c;=EfZ}V#V!(^ap)+$&VBLEQnSc7=jq` z2FC_GL%F@sQI0}ozPRsV90;T8il9JkYUYz=Yp9;#WR{=Jlj+^dFO0sk)tGM#*S|e- zW+zGn8zLDPPba;(^zC&YInUPWJ32?9PTUW@LY)yujAl@+Z6;%$`82%B z@8mJ*MBa#o)6gipP1Q!d>HnM54TSGax#5qH4j9kG;jv+=M!KUCZ;V_qnsQm6T3Rnm89*3RecVH(p+cos7c(~2(7 z>d7N7>w34!wP8Zp5p(+PG40Tt7yJCJ%*}yA-}kLcIBocMFT6ybTg=%t0DXhE1 zl=6YihMkVRE&ReRc|4NcRY0lDK#*y)gncx>bljLhqt{;NPS8@ifDDz4UqtI=8-js? zX#_opp2{8-#p^SnKBtc)%iUV)lhqG6^C#VP)GQLm6Dm)qoGAro zJ2W3`YPqR-DNuMc^s235H+;7qN?#?<8x*k#yYPsKJ#4IS?UJd8Q{8RAbS_$vnh)LT zP7|Gj9#u|!8m!ReFN>Wy8q|M3AmTx|QrC^Jz8~_%-y^PqXK9OK^0OFox3zY|bZkmO zr996we$8awZR;;XOD&aGwebaI^>X>P&W6nHR4dMwpJR8eJ(BolV~;%crJML}p2PQ- z3}UfktJu$zR zIXNJ_UuWz~-jJ(}aCIMg!Zp2WspoA*q^A(-^3ZW8lVg&DV@SmIM$%I?>uFns^TCv- zV&)AEy6rW0nCApoimuFUX<(H%&bYmcTwOHI@(ZhM%DpE^DmH~SArq|MkvSGdgBsqh zGV*1)TI4LV@r&I5xs^05J}zj%NxfWPeRgn+Sk#_y4ga|1&HhcmGli+AgY`B~mNBa; z8KrdhH~5%^@Y-^zxMNQMp6R2b#|WaIHU)awt`;^n#nDgU3Zy#0`z%;6Y@W{*h$gBz z5sq~i+;eI5y4rzBT`hk31a`SWl+Dqjn()~>AD7M4##5a48g!BB&9c*7g2k-k zbZ4`IoK`=5-1a%+2w12+f4EtcYQ&43>Ba8^o${J*SFG1oJ@bAxfxPCiy}Zyr*QJe@ z=`N%YUPo^DFk@D7YrrGc} zJp8@dSzY@GkQP7lLy8}MStr0HnOYYF8rh$7po=_k8a{df`^ zH}GVFy<1v2_(ODL4SjwZkkXYXxs5L|mtf0n;E8U~Gvekh+2V=nFJ02L)U*h=ync@X zYsQGW(bCPqAEkq_sBdmUitO-EV`2%d6nm_txgXBavhZe)n?F*ga{e=UV@-pkc^%#-vX`tL@2sM=Z_yH^`L1mU6ZI9-DaNIH;@DTQ;t#eR=kol^Na;qZ!Z$@j&Nq=Rl0OVl+v$LS5WVhfUBw?K)1+YQ?wDdf zq75Z3e$Zn0c;Z7sJGF5M3ZJw_0V{=L**KJ4?MnwnD6xT2N2)s(MHX|ud^V5t);ZT9#Mp^uM={y$_dpqAd1Szmf*5Y1zTn=i6 zNPPb8^s-MztPyvj1R@%03?nU-_S}A(V<7QTxUOEoDA61#bv{GLhIa%KX z2V+Q~ZUke{($k|5APdu@7(b7cLD3BIHdHA#$d_9fktx z#s>^qW`9XLdi@nCBtbe#6e46{Rul}ZIsDA1jm#*!yL6O(MA1n^gwc-#hB*XXRAr5W zawUr&m6koCFGxKaed3}f>rd>bA7E@2Ae9`0X=zqu92C&zVvglU5}iasn0B+GNTYP< z5q&v6>U~Dx`;3pUE!7=6pN8V61<;xkln&8LnM-Wu;Z9f(7_MMqX!&oHV-RRXQPct- z(3jg`{`%lu?9GZK5#yl8!3FHve#CUbY>)hjhfR;7l8EVAu;TO|clN&Jden%f{CbsG zn4Jg(JMK+@VNk#$eF^IY^^Ia>40df4lDAYOSi&!*zdR~weMDEhgQ3CdqQQzvGCX&) z9Tz*`OACX3+PFa)zJ~G&Gtn<6k=IU0NQOhggOi8}TCgJZAGh_s#W1+(tifn#_SnC; zg+YU$q>TQNhD6fyka0}{x`G`{HL0n(iuB97?>*8Z{;&^FDyIKs?1oS~9-Vq~` z_?RYoSptmOaw9#%}j>u;P%+2B~H zZ5(?sDL2m~-O;0`SaBA0ZWl{pA4}!H+#46_HujS(;e0o$c7S`#$)mnp`~3?wNYRr7 zGsjZ71wILLui&Gj4;A(r4qil6122vwNEH+HvI8s*8Hc8Iw0I}5bU(Ptu{MS0PkwVs zoScg2WiQvn$hT=b=A_W6?lTYQDSMwLqg*xEAfy<&Kax0`Ph&#g{QF}?X0&3LoM?1 zv)`6={Onm6nOu3ihhTn%JHf{yN1U=)p`GRKomXW|I9#i!s3~%1hSX$~`phX}!Gm3M zmHX9-T={_WuHHm0i(I8{LJ4Ple!-_m9jdo_OkL`(Uyl(EX)&4bu9^$>8JM2-_bc&p zgPa7;WOdENtIN5SARp1ogOi2UqDXPki<~+`Hq5b0x5f`NljaHQ?=J$EsV`4Yj=wgE zUhM6xw>HsS?e4(aU`>^q$Kf2yIRhM|UTb4=hwMDIRci@t5uF!N<1VLqpjP}W9P6}< ziG)O{{%2Z|;s2u*uh-}PRWbfrsSA&UW3_PMKR)(;{GmZ^{gG6>3&W$TXX3PsLy&P1 z+4=SD9_f-FElb}T90P}(@PuP1I*jWVl!ve|gjQqi<6GSYKD+i;(E~DU4tFw4B|1aaoKvb zV9rQgU$5nK`V~7ny_z)Ak4VL6`Qhs8W6W1t#b4gizZ9tC1i@QI9>nDWSmelm22S+H z8il!mgNgBTCkG1~vtLUU6VZ0C^GJd?_NV;!GagXAuoQ1!&ie8enB02$ND zFd=vKc3iZ)1iink6ywzM?{QBmoAqz$Hnwc=uho3h-QZpP_Wk0J6bIfbXx4ktyRB^+ zM13J9n5Jut-M;H-Bk+z|mPwV5Ki-Es`88kS$zhxf!j1yx7vR9T)m?%J3Rk_-`{vw(q{9d*)aq5PRq5CT-4# z`}Lj7(g(FJPD4q~D^qt|b@`{%YqvPqT-C--NOfqQz@!7CSr@nkDQXKMor%5q3{(_- z#~pPX&73BryV14zQuQtF#I5n*`@-&bys!GCWS~y0(LZbwFo}Ab%Ig!{>ujSoJ?Es= z3#a>O#Slf_ioU6iuW>lb7~)>yg~}iuFF*-!f-(P zVHS)dVuKnk_Kt2*59#quV%J(_ehPT`(e8_MKSd_JF+;+|aaU|W z!g=b_IkYfps2~4p(rWB9e{dI>!cJR>;QL?|OXW(t_9U6`!1#rG=Nu8-s5C_~o%QIb{(McV1l{J|1 zyE@rA5z{UEAL52%E~D&i`{;}O^c1(Q7;a9T>DszvXasNKNpa!NzMsY!coFO-xI%I1 ztR6L1_dquIgjZuU^&YY}GtSsKUUgK957r$|Y^RiG{dN&pmJ~ID8f87KCo7+4kfS^9 z{iMvbBYC#0)P$g2oDIc!XJ~vsQ=KMC$Eo*Z9WptCf1EhzV_F@qKrv! z?XqH}%PUU^QIw=ZB(2}iYWnHgP%7u~gd#gH%gBH&f>tHfmF?LDW&uI+yOIts_|hju zUplTwvceR>xUmpLEc&7#K8!rm+x2?Raf-w@0w|pGA*d>`1(+Y;yDq^Z-*iX9e&;AfrLmlGr18*FDr+7+&~%5`~T3!fS$1GGXn$X_Hr#pE5b zdb^@JQ{6>#;4pTBFBX{w=QF92JKuNPmQf1TT?OS%)hmO!ASPNnYTtWOP4@7rA}jx{ z_sMR!%q}{NIxo7FPjYT-eyNLk@N_pE_jz{yc-n_t&Pj$NW8ESxOq{#^h_tNsXRzZ{ z${#H;V~!$N@hr;Oyu?lAunNfY&h?ifs5YzS4ZVXp2SW1Ha&Lv@<(~)0HS_QaF%sYw zhauTraBl>l7({T;TdHasASu5bH_pg1z@&%mo zKfq``_}O}184z!kuDS}s75`id##;hjg3=>>IM4+Tps z=tq~O^qc(*kl`PxIlU!gCpX#w`(wn&tcSr22$D-e2`F_g}^CJ(o8@WaA4og4aeHD>Lr%*b6>+{cP zvS$j;!!NAMZwvFee&*t6E$uNT4oLhU`$c{$wDwg;ogL9odQR)b!>l3xl0sFlHurJj z_aTIokLjK!1s2;(Vq)=f&i+W8&h%3zHrTn9;E5ONKc=xm4~az}H}NlyK`ynZdmAf} zD>PS6^u`6B8Sadp2}W&JvVL{(!=I1JGTM!Nzm4|2Wn8N?j`AD7lcz3~`@!2=KhxvR z;)zPPM4q99Y%4$7yPwBUZo^Zph&#>LGjJ?1@b<9)Kc>Yv5|yFLp?U~>rawOQtW-P& z`+M8C&ivDz$5BoaTzZG-q~ot?b|QX~b3A#cYUc3KKk_24z`3hbUe7e?P|_vKjwk8L zx4rNbX)dtvHoY6^+}I0(Qh6Ddr&ZjWMl)jOUIIU1&CY3B%5K4NaK3~rs2K5+sn$9M z4SS-n^n7nR->SGlCBY;5+a5*AH!H~;MdzHP8>5IknMb?Fd=@G z8jH(&Ie)puJupYE?n&V`$1);H#-zPhQ|Xx)#ZDs6aCHMzV_R{<$qIlBwc!3UHTK7n zrLltnuvTQ|$oa=F55OhMq^KTTKQ4U#ZLymZbwr|Mk|#CzDGzD%B}vU6RVh|sH8v)m5QNRcqPCJWR+u}O@g4OE4GM0dKVt)y48?)oajrHJZ!d^z#1QZ*s< zD?XMBfz1cQHJ2743uu@SBL%%q!pbqPGZ$9jJ6%V| z=MODMxA!x3-?@b~KYZ~%m8*I@+<eVcOhpOG zh3|c=9@Qv$m%SEWKO|nXrtN1~N7eTk4dN$5uoA>;>|1=!4^~^JkG&9EpU0d^ik{e_ ze-G9&4MwHgdsrHet!ezzq~TztlLz+XDO~GOAg+EtebbYVPc#bWRK~E%iSAp&GSTDy!TU2yj}=9wn~e7`dtT-fIBGjwo=f8bw~Pg2*+nF`jZ@AiAvU8E@?d zjzFvOqnm@|3MhU`TG+MRq?`xeK9&+5rT$2FVq`g-36>kLwC?X{7(P_mnOvKzp&219 zeSHs&RVgx@QQ=0#7g4jQTT9Z*yp45woGR1-1iNxSZ!+63J=y+(V=!Xc0zLCrb!MRW7 zN19q5y_f_>7lw8-hHx}56CB|IM1x4g*{A0-71r^QO8PDzES_jv1>84y^L3{$=v&jT zRE?5$h+6?2dFoG7h5v6;WngFbYskK9wrQpP^))$rtSc&4>`M_ZXKg7e$MJxTod;xQFI5*&P4u&#ci3nh%!n$HzYkz7AZ#e> zPrrd${=;>{+KIZuoYpu*Uoy1v!I@x(gpC0{ol>ddTbBh|!zW*HT(l@Km7aRz=`&>e ztCAfN6rk|#lF|y@Ua33L%XQcj(9>{1PjO3h<~q@p`f*FIwfFIWt0|HgTQ{Tjv!kD0 zwwb}J%opvR5j!5-&Ca^Zkd&FCuoqh_1>*6RI)5+oX zzm2Dnv!j!(H5k(NXt;QT=18VTtg{8(HO!(9cqkUW^zi1);+CjjwqQ zxOJ*RIq(H0OU;a`&8nN`s!_0`RH}T- zEj02QH?UV=*@BG=Kgn5m#c}(dg=3mPtE%^uFY(5AQcP1=BVd{c<18Wl*}L?U)0fo37V$I$&8F_=#wm=ETP-?fDXOd{HZrxDGGSPj4AOcr zs!J=c_$W$1dQ8iaxHpcAFQ+=B|O5B&b zZ$OxyNotFb1OzqeRsRIqaKyDs8$s>!b6n^0xVaa$QrbMv5KG5RX`0eDC$W~pDJC_$2pBq*-EgGY zZN8-wSibr7G^T`3D1EZr>q<&DeRpQDjnx`4ZS~{eNtFjO)hi{`j@{NE+nk?yeKz;~ zCt=9KFN70b=Cn=h;q)l&>ONX?bvVET6F8%XaC`$KP!0Y6hmrvAs{eNL^OusSpH?Z; z`RcrReC&xuGFue9m0VUADL+`)mVBfTYwN()$e-6uq40z_v=}DTIi)FZv*Zvm#>SFS0bwGwU0wDZ7tJEpHi7GQ=GdBEpDzG^`<$eRUk<5nU+yd6dz=PZQ zw)Yj_Ra9?NukqAXXFGvL@9MO*P^>9MufDzMbd^n9&z9`-F``QE>f~s8a<<`W1OU6b z71W#o?1FC^0`Y&%X3nI?x@e_eD40`Zr#{+a?#1%i#nPn#PW6%Vy-9X01@ePL3v4IdvyUo z!STNC&bh8}HtqN{o!Z&-HAl`~4sDCqcQyI!*By)N?IG5EE`s=H8&1y<3AWU_%RW~N z=i6fS-QpMP$3S%IQi^tZ5@s7N7hJc+8-wtQj*q^sTqx1Z?AbP6%q_h0KAwxWz1rF3 zy*%r2o%O08;cPlNGdlJ`?4V3GUd;Q{dz~Z1JrQShc<6_77~Z>0S5-<)7ba)BvR9Xf zO^t|!9LG~Ip-zZ}$*QZ12WM{6>NMiHN>#hN!B;zH3*sRuv+Z$u^_NkXt368F%S9^} zCObn#i23QO{nh8EC+#WX6_Ih5OFllAPM1eR+X;9yCo5$qcDPq#RkQV1h#*%!Z|7~X z1?sEQOfgTc)8&N{pOaFArT0n8)yYnXh)hb~`KFQ?;@I}`V7U&j>BrE^Gn1n^Chywz zBI=oDASZL$vtDOSG)gCRV?J)jp?JIN;*GDbj?VjRH*=I$k7vF2dlG0C;ocrS+j>{< zpsLe3aUc&vK7dgXjd)h%3S!74`>Ol+E5jMQaq;3JdVeL3QoJd%;cUd~4BoVOb`dQ< zwdB(;|9vG6vKwvWbyBz==OcG@5&cWP&f5CjT1@H+smyx zXu4RR?kjR_Uq8+9$?`cI68|8Mxat}MT5&Wc-iX*I756^#LJZ|!9`x<>aUSgIp_$De z`m9}2TveVN3|5!n@n7t=i(MuhPv^|e(|GUJ;jN~4pRbMSAyyYA&!Z-4XJg!!j5GirT zKDskka9Z50s~?vGUC*bktQ)S*_b#{L=S`g3S0?zR$3FH~KNs(BUF98KrU14>Kn1@V z<<^1_p98MRnZNv+KYHWj#37PpNAR?r!1JlMJ(}#i;~xCETZFg$EvqF?&OhSdOczZ?84SgKS4cS`P1(R;ug`@0t<5(nm=P^*{)ehDn+z|B%(fQghtM0Z?e)3n zLz=q;s_#s6s}yz&2veZDEPSz})QA9F3*$z}0Iv7#54OJgA`2GNqBAoBuHQk~q5;H@O3b@u3tY!mT--l1sv9rLI+Da2O zV6uh|nol|8D;?C}4o4jD5EH=?po}T{gElM%9$lC?QkvM~bJi*D4On07OJDkCoZOb# zm5G?|qs%uEd>wb~pa`E^p_rXm_n>ud2xZoBU|O@?C*uzyrWK-nGq_YJ>EjU`v006SZKYb?i9s!D8S< zC`T5T1vXsmzWlllEYQS412}~+hQSA`*(aXl!?F%JtaE|fxm{xJB-#G=Q?B-+O;+Q%Z==T)?i^|Olxxm{A0_SwXOzs*m>b>n~* zzVo-&BnPr!F;ZGSbKN+gg|aQx?BPIXE4S3t+P-ca&_YH7ZCD488m$WU23JiXSe6lR zVv4rokY6b^W^2%b&D60|!3Rr#6QP_yT$Uq%t$Sa7TL%_lvZ?``LKqX_gEatl5iIMN zL;h>26FYE{BJ4F;1+mrPgRkR$IR#Gim@B1DAa=e9aF>s5rGd}&E$yH?p2P^w%Q&|6 zEeF%|=KXDM0BW#p!0Da8qoxo*y*g5QFmv5Dpn4offRlRnvwY9uAhhYg;az0=vv-*wU5`i~{ap1e5{2x`v$}?A1VT1jb@V>68Xg zMkr^+0q+4qxAnKWwz+J!yPe1b}mDq*SBx}I>6<7hCmtMx`v$-be;d7>Kf45T`TH) z$S_YoCK`jg$p&|+4eur!YTk!W)?GInK$4wz(9{Jpp$6Z}bJY|x_~W1tVc~$YfCYJ4 zFeM<*n139Eaw7JcV&I&lG*apbOm|8ee;l&&A@IErAbp;|JotRO)U)M}LyAyI8wMO! zOV2CVQ-Im}HthOfigueX^_&NKP0A;e)8RVyl;S^*cWt);GayE%s`ueJGbX40e;gr< z$<^#BV2{eN)D$}e+Q@!=$TRM?nVhx(sS$heXDB^NvMUUOr(sTFj7dszq>*x@eR8CD zPl{6B&j{ZaZ2P8M&~sG3UFg{Q)oTwLN`LpMp<&PQD?fLo+RBC};6d;Pfp^Pa^P1-OhxK-S*NRT0oTYXtMU#Wwa)n-> z+SQP<4Aw~kZG+!#CiIG+ev10?0Id15%D^Ajq8BvH-yYT5C0H*y3Hz68zx~U#7nz6Z zp2I+!UI7iLj9^X9_@xs1M$qnf;6^{+yuPv2x}=*Z zyI(e@w>t;;Jpi0s2&KD4P%BA^_$D=YR!?CMXS7uwNFTB-dJjmcAj z{>UhA)I){>ng9grri{J#lIbRzkN*inCyl`+#(_+p_*;a^mJ-gD6I|TylHe%vi;w?h z#tF^R6)RFM$(veCS_33ZR9V)Ce#p;oqx{~yM^%0PaGE6Q%Nu_*MgiJ6fgzD3*CR=RN9l1H@BO8Dm>}kuIEIg)@%R~J zEw{;0hzJ`fneIa371JbC&6SDCjRVNq@r(QMOQU`+v0A4Mgkj^XJ%ZNvr*gKj2I2<> z(gsR#%7oksH#ISjxd82|)3DM>de0D&k(nnw;|PKc8(1-(ZAATW`mFoOt+ka+8Ki9~Z{7V^aq z0O8>P{-bvQLU{T>7!l6B$54fV)aL*~)Z4(+w;%#>xM`tz6dU=$TeN0+06`PtuL&Yl zm_y1QLv03VwIQse0K!H(-3~o~u=hA)f|DFI4DDuyL<@*OhLc7HB0M1Pi5f^XhREK* z(UJxbddx9;L4?!+bCPg0xeSRRb9`O^p;%h7S{lqkxHOM7#GC?WUK&~pBJh)=2!IIo zkofQniA8f|L2}~=0HJ>Xe-K0{%oqrx!m*TrP7S2Gf?0?Rq>Tg-sKZSU&7(xgog&fZ z7ytw>h`$$zfG~&b%Rny&Xx~6sX#s>=nRNJ!00Osc#)Jg9e-s*1rUX_9fIx?nMh7BD zlK0RKrUpY~>2cy^0R&&GQao&WJ-V z2Yo^aAjpxUJOL46A@PNo66_Yr^5l!r0D}G?zF{hLuLXH(jfk6Ai`q{2+tE}#2{@Zg!L|fz@A0N#RMQYJjs}NPL3Lj z_Bc!88HjKXC+!}H@PfRjcrdj9BFl#J{Rx1eV}YRyB77M%CxM}bWJwrV;A?_oL0(co z9?Swvnx_I{ejmqB9{L?bcu9_;4Ir-aGl0+z@oxta!Yv?<3Q+1H+D-^7H-Mm!O{dHZ zjs=B`2@`Vvk7y>@67e7c4^A2nh+szE^KdA&A0i9EAy)(tvMeyNK?LO?b67lDUbaNO z1^z2=EGSC4DS}x@kmi|ynDgPJD?%-A0|?gSC^jI%G$ejATcX}V*_M1U0YG>&gzpyv zAmHQ-gbCo>dkPI3N?ic6kQkVn2qFlEoAy{lIg%eFqDim-2&)kPRS;ps0#f!A`gw?U z1Hvi{AXw$l*|C6Q;c3Q%D>-U1T0oA(JcuBIlO_TpxRdwv52YSJWJPhblmLWH3ydug z;m43UNeWt5j>NtNz85$alq9Q_z$~Ol^B^GR;yCk4&@&LhhaBY%h=9x+kCQ8bYN_l? zZk!4r;1A;i?=mj2-p?Hflfbc5hEfivqPGKCNDHJ*0}&pDn-W__1&}+Xp&76O2spg{ zI7|Qnl_g|f87ekRi_gm{1t5gw(nYa?V?iZjB81#O9W5(Y;@(>T;W19yV-O*fyhndH zm5f(b8Yf-_K;X5+;Clif*bSS*GSF6YC4?>UBf+ttB6*?$W+79WhmO}=7Ki>B^eqv9 z@QxfM8bn~?jlZ8Kp`fja6UbQ77VAd0SHl9fvH&_f_%8C zj%8FF`9T(%?_B`l0k8i95W&O}!t)&3J4_4VWmN? zi0~9A?J06|%tEd- z&tqP56&yoVC^<2JkU@@;2_nex#w&i3cyFnkMQ)r2AaIS~bH@S*)}IE#p5v^kLPbVW zmB1`~3Z(r6BB+L&W?4q%kvn}tOS=akyx{eJ0U{JyLL6T}bw_A5cv;l|gm0hd`tN~b z;YG$oA-R7(+R`V9S`a}UCruqhC?fB9Gm@&$E31J+t_C2qTViy82vH;EumZHZ`4VtT z{4#JXs7bo1fmtY&=CR;4*TP9xgMI=LD#%ePK?G~wc{JC48=&tPu$p$(Y`bFMkm593)$cI{eFN6aRP53Z0-(GBPyj(5 z{S}|^wKdSF2XF6E7Tl#|AAoBLX_QS|TLX;>RZ*DJSDXV7djAg)md$4hpb5@)fb3EO zHDY2XenKp$#X@ge%oI2kCuaoRo-@sY9)j|5yr8Ao<9`+X3d!GB`*i?CW$;*9dY+)K zgCevsE(H@5!--QzdHe}_T(I}5+F0Nxw^?%Do#NBZ57{vsWTS6Cwy zcQhSZ@e@!!Oq2yopz?Vkq>(?-tmRZpLRIh>P(JK)`u9QQ^LemY3lML=tnY*34HNwp zCMe!waYrp(uB~4U0OCzvKm$0^eWWd*!2#+cPAYa=m*PZR*if?rD5nCTOQ4)O7;OGan-A1$ zqVuo+Fr}I*03Tx$ct^*__Q#`U;6C1;sG5IFe1J8ve^;3Ob4B`pP^bEh`p-C3{Lbp{ ztp26%b-z3Ce`*IVnBLI07Sc$-9nA)GQ>9%oa7b~wuIg_B8*M|)-<^v2z>T&5Xa)F` zR1NTy6uWy8bNZsc-ubizB;c=T{Z(W8PtZMnBm8$5q`$N9I}887 z`S$mu`d@p`{XLxjiF?5NiPkQ~z?zdh`a1Z2qPl;L@y#9tx#`)a=q;Gb+>{)*OLHMai*-QzdHe}_T(I}5+F z0Nxw^?%Do#NBY0tkA3XL6ZezFD@ zL%O>JG=L+UH1DT=RyXK{Ee|XnWMx^2csx4(41Zh4G_}E1yAHAVbB2kVg*iCAq`cRVr6t}XW%5C5oTY^1w{5H@QP$N zF3FmH8hEmJ{{WYyqnW!Q^{2kd#I;|*c{q1Ra|;-4A}V$uroa5=LbFsl1T@Id;Rk-{ z(8ng%egWr@ZZdRiFayd?#km{Te$#Ma(svg04Jg@%u;1eTZH+Ean<@LemhAlExFEmQ zES5DzTK={s?`yTq_QAQC1lc9gd|(}LU{K1b?-Q`TS1v+OX2y#<`mbgGfG89UnOo4; zn!NxPBDIo(C(6jtU#;40D`xH`zxX5k|D_T7OQ!XAqyKLWpx=@H9qE6zo5Jrt{XeWv zkFJe$^i~xj{AH+;cuK_N@?&ALNVT)pxP{f!=}DjQSz8-D z55k0|h6h)Ar^jby4Q7Zri8#?Zhm*a0HrH8i$DI?c*FMJ`h_6a!FV7=$Qm6_G#rGjw3|M1PoC{5VutT(50Y ze)B-zJ3rZHy3oYs%;6~g&S4I8*P>t1Am^pKYrMp9$;-Why138``&9&|^AK4C-uA8Y z4E3C#SJ^|m2Xf~w<2pvii3+v*it!drRIaVwGvz^wJn?#cCw8xelC2`~`cm@UKdj6m zQa|>baVC^uZ|uF!=#qF1OYv@9w<^V!4b*ujAJ^73)>o!1YB}19`iyI>;I;HwSGc}jca2k}+KqQszqFY*#&we~i=id&$K&X@`~h`5>s~x!(OthoYC4 zOBDI9n*0f@ygM-}ml?*-vci5mwM7``oJioctZ^D)B}}Ja(QpUEn9ZH7q2HQo(66+A z#Z49VT_$Ehv0ry+_D+~?Z!gE;l2h@%X4MLBSIqwOsBYEE3l|Z~^VUMsVZNb#oZapO z)9<*tKS^t;#xoPTpqB?rslvO(6Ppn(hYJ;ut7G$_1?%Hg_?E8IWPN1O%+JCk#M%t0 z7){kQ^|Y5sW0I8@S(d z7C6y`H+4x9>qWd|`WupI<_DbYlasdW-D=0esGajSljB!YUv3ySR&gqJ47q%#DW6`# zJ?GT5j&Nz5q9|YKYw0a-dVPtz@R*0vCj9ugZaXFEV#&^+dNQVYQ+{kY&P8Zsf3e+- z`@?Kj`%B-2!&#jI4->QEx=BUv;Tb9gvy~j7P@2t+MgA3AFFu=aR~JM3H{p?I=P^o^ zBuzdCXZlm#drrl(-_)r2g4iOzo+AcqBQ6~d#$0E6XnI{|sSt?jvfQF05}MkkvffBO zao~$X5K8D`XP477q~avgcx`p!REXlzPI0}&)y18v&)SI(kN50Eyeiy$ig#(iZ^|L5 zw?1ApMMCnDKt)oPM@At+B0|Ezz(DFZ4%P^Whs19IUvkt7d<_yd@biEFcm0)gzrKd< z|9v6S7l+$W;36+nBqY55?JAc4r>?t4K^O?40K6d4DhCk3A6Nt{!QL*NjTf*ItQMMeV$bjLfnQ>CgJzM!p-GY zpA2B;C_2{41p1tX73|-O)Xzr2CT>9#TFq;pPROUUB`aWaA-aZYN&DPoDTNKo(%gVn zV7jsK)EcrHBDbKYr>>ySXl5;cltJ!6>`nDOpVd5L@o^k&GZo={UJHo#J{+gf=2C&n yC(2kSIw3LK^ij<(FbSfdObcb{!Qc6pAgNO)7BOzU) z@Xfg{)O$aB@9+4&AMdZ{y?=OcAM2WHu6fRJj&q!2P9?chr-{(cpkbn+p#yQfYb=UN)TlRpNX}t7>BHVajP>IL0~J9)W0}w?@7mQywj35>N$TxTrnmEEJDm?o z3UUq5PXramETrp(JnKr}Eo*HY-m2cDBcL-Z&58Gxe}dNZ$iba2+Fa;C{SYy?GQqwv zGbcx~dh~VNNR2u6LH|8&qW)Z$xQ%y*UNx(PHFl{_!M@YIOTHI!@{jdiz(=nTBj z)?s)5W(3x(tD&_dn_5BM;mv-l&GI&}N*66|8-I~!{hBA0bkjvH8etPsKh$TMQSL^& zP)0jeE?drZwxQp_<-ro;#n^~}0z2Cz7mB(^(#3N|Fa;G@)UaWc?UGA(F9A%;Df5IWTpkVOp1ZT{z2YfNXX%)YArNnHK%cz{< z-`FQQ#%voEr8=bIIolCLN@97$8x2&d*USBS{~iNB%vvgFS-So?&6Av^+->e4mf7S_ z+amsXQz>5T^heJw+TK!c@(?c9G2z#Yu)cVAOBOeWUMFIf^2G$1QWsBCw=|~U(^DxT zdsX{YynG68Ogfw_+R|xRgEJ($gSGa8N5mI5ucfFbr_f=5Y6)Ae}*i#8}`^)_3B~@vXPYK<>#7Mc!U#;T8&D1pKXiM4Ud@HQqtn=TeZ}+ywF12qdcf~Hwg+S@Te0C1ro==YzZyQwJpvmS}c@Wd! z8Lp;H!DA@$S}v-&MeHe=KC5Q|ZiS@Q+0kB*N4TWt*P7UVKWJz0qjTp#BT9tU=!1_x!~3 zMht58JM>>k`bDR%e+v&UVtN?1_v7=tNOw8a3R^nnxaV7)-0((E-_x(pcD;|yoSAVr z+ULc}OZ8VyzK}LUz&6sBC_;Lrq&(Wx6`%T95i@f_Zs^q#NvzP%&kJrO8)pQi;V5w9 zni)Rh(mu)0T(3uD<{fG+dEKi~=*-O?qpD}Zx`PDaOE<7F7q7Z%Z?qTm8mwRBm+6w! z73L_(!+Y3{ZXb1p3CkcveomJB`UTA$u5q2q(;FvBX1x2-C`lPuYW=BU^!t%T?cHUo?2v@7c;iD~(ERJ)T_K;0 zBF0Mid}^`%H7^bQG@a;MO*h4u85TYzlepE--!vCuDW8i;j>iyQacZ?93tc zcApe;z3k*bNYW+GJSEJ91y0FJ?O!jwPw}?6>#MuOvh>m2?kf4d0RL=ZVQu-EQK8VZ z|2Iil%N%y+CCN(H<`~wHg#2x@EqmuT&wJ#eLRa?CLsu8JdNra#yRrM$?vVA&K zSv_7k#=@lIEtzhG-g%BBY(eW?c07l7sOP5Z_wBMe&#Qc?lCch(zb*5!>ao+EY&s)*EpB?SDSH8?2&t4`0fc$r|bLNu9Uq?qnqoYJa zJCB0wQya%8hEE~M4Qh3nPxIo{kSqvdRtSc&$vq}5BYDhtlK2zxIXZNw1<6RJIA1qx zzwXahcD^*!+?+^mq56T-MsE8e+;D{9R~(u)x-b1pqrEO%;}>d2zqk}i7*)b~dd^hX z>MxSD)eEJJ*t|a4`1-D*LcNGOz=N)*^~U`W6?f5}>ppI6>R9DT`1L$^ArYrsn?F?< zUo_;WHBlO$c^Z0xzB_>D!J4LgkoCP_YL*aYg}^eC3MsN)c@hFA69@lb9wsW1P4(!^ z&1ZdB3QXEoS{0Ems$UJTad^m_REkn(#2hZ#Z%Et=e<68qj4%$7v}xB7!-YdykrIxO!bDW=L?1#bg^F zPg5s{d2HAliz$0l@;i?%TjGgl-Q_uD>_Ondl|9HWZBmrum6I{aseDogHJv>-O?fZ zYp?I@;^qn%Bx1L}Y$g6#O>1#G;DKRj!WqvxMv5IqM|`mu?RoQfE$s6LSbn5zGaib@ zdmS4BKa*wx#S|{?(2~h-vPoYxd?OGWuSAthAZ~*7=!CeW62`em4XuG2>k(V2tJc^Q z^?e#A=E!FI?7g|Hby?CsT)Qk2>Z~?5{Ju<;MD1>K(2q0cPZpT6**ct4%r^H{Xgu{v zw(0b&LR}jArehJAm8jL^&;6$%+yq?XiECMRu*xQ6uYP=59;-oPcWCdCAE1Mi-~Rjt zXRIEhMA=^owCEDq)A*%cNoK1kOGpWOYkyEoui?~@( zt50{DQvJx(HzoO~fHN^T{5B4WUv;ArH{tZhTi@m!6N*ada4%tTTu|BNvuqGijWxV~ zX;*Sht!+x)p^{gKQcgcP{z;A;ar-RhJFZE4|F`&-i4{NEHy590%+072C8WMP+o9!H zoZRxfW`1Rx{{f+G-^2gtqEAj~ay11aH^Txpn zt@wM)$Iy{&i?MUi5 zs&R2X%!n4NY2SmPN97}OYdZ;(lN1w%gLW?- zyp*P3BiKbwcd6J6%?$2ks` zI^CYr*6p7fMM+Q21aCT6wq4s68nr9WHB2ObWw;sG!ctkz9xuU~mR)$+$CN7mn~-*H zbx`!3L_s19mZY3ijr{EE1b1R{%z}u@$CSu>!bZ9_)i$Yp+Rx>Ds@tF4d?4Q@Y&@#} zUhUJ&VV$EIQID$fRbs=<_m<3g(@txQulR;oIJ>s%w%jrb%>+)8vkMqLwW(xPs8&>t zZ9gYHI*dW9QGol>Iq?blIVw`qnUE#@Sl_$dsr|R4!@kiniC@ysq$2&9hqp+y94s1P zDTP`4Ipy`KU#}|r1Xp*uE#6hkWsNR=YBX`|UMQQjX-*y0p5Pvx+j~4c`tid3vON<1 zPm$UQ_hLTmzDZ%}zVo(vBJliHvnSKLs_|3H40dl;VlPp2JlQWZDZOsqYi6rEYO?=w zsK!<>Rj|dL>{CKVp>~Fz*3{-@4|}J;47%izig%j!L|w{{SiY`5BWV6i*gUs6w?DeY7zy2zbEkl^=k>%ym0QVw=&(Yiw$m#BX3_~We1DQjmY>pUTxbC zAn(n~F*Vz`k5R&*Sh~tKtczJELsyyV{w158t;81_Jej}l-h6f zybgYs_uhxP@?Y=gUz5MT{$ufJB#uavWXw!Qn-Ya)gIHDk?52UEAgSBY*#71Nex}?< z0N`wG#NbxYy%;y`m!kcb4X5?un~x9c`A%cXAv0vf{5yv9aK8+^O=S<#P;? zyx?-h{MKxaZ)&*^v)nEHjtwcTa5kT74SIb(w6*0jM(bK4+Q#ceIWqqIK`f8l%ca$4 zBd^45CwHVwH8^d%L>jZcey`Y{RuPrfAjT_L^KOz5uacXU5gZy%HL*IG`Me44Mi$-XVC(He6 ze~TQG_>5=oswcn7B^qlKGX>qBzS{7n-UF*KyS#f7SK5*@3Hyq#db5d8gBY2_+75Gp zOop_ITlo18J$Ozf0SclPqgL#hn`WHREqr~~^D`WO+~j&gjHg9$`uTjo2Ya8<)QLHJ zj;R?tqXl!f9alA30*GjL<=9_aUKC5oTk6Ko}rzj^W3La|G2?g(W-Vb4dy z2;bH3Cm5DEMDmvRPoSI8Djx1+|P8ZcNYp{QAL`^7c-S>rR&Wdy1ms zEdQ6U{C}FG`C$t)Y2deuQ;2I{KR8b*wSe{T1V*3U4cX}2+bwl{3xwE5Pfo?y-KeKD zIL&GQ{CT?l12SdJyV7(X>SELO`9+fU@*lQd%Ir642KY%h$yW+8(5bFQKO5T?=$5u#xd885CNaig^DZ+V87!%)M{g_3y#x5M!*wk7 zFbaujI9g|a{HWFrS*~PLl`GaBsa@x}?jjQ9HaNJ*AW}{Jy4mO*m*w;mSp)V{*`?cl z@+(~?^pnjK;jQunFSBchLO4Sn*ez;hk%U?&Z_Q{@_ppmn3X2*Nb$NatBt0V;?4o zsNT2P%A>H~OX=W8HyzCC86+F~C|=q?rfY61pa1rDl1WZw{_>LLtyk;MIBi=*LbAmw zD#T=Yqm4fcz3M0|6B9|$8{GY({=znIR*1a;+totewa3g*v&FxAnya&Sw|Q{43O-yC zVrW<{TNM`g>^rd^H~bmza$JV7Sdkbf=V)&u-h|gjRrw+lW(FOj46~agH(dzt_Hed+ zJUjM!@E-Y!2p@a;vijD!=E3pTSrw;^jmp|+ZhL5t)-(9c(wkODX0MYAXZ_;SS{d=z zTR7X0>QpB1C2_)_)W<%?ZeV3;BXsw537!2#?qY?VG)(jQvXY@m1DvP{hEbKc&(Rb8 zcYJ~b0)s{v1XWM-RhyaQG&E2&H&BFCGke4p%HN_0Gh_51mtt6<45Oq6e-sQeNKN%N zDfJqZ&?vMlFkH}`IUTr2LHL%|VR-4ajC*Mi!*#o?m#4mW$NNc8vh=;~^ZzVGxGg~L znr%P+UO?j`mNTyx&IQd6W3*}oN6r^@a}u7Fe<*J^biG77r1&AL?@qzTgNqRd{efh< zh8%BSDfi)Ua~Bld`qUy_O2}nu6H$63B9)U6tel#g_idL`WyK5rFu&$iNQOfz82$0< z!NqS8tOkP%v5(Hw3F4k5?Q&p<6|-z;ebmg|hYeQn{jk!{NGK;JxG&H+g%s-}$x8#) zyuEbe6iO`fD>CIVTz$crk9_;ejZ-e4UNt&vzRLMZR$gL;c^E4|xxzSw=5&}km&&fZ zf!71^wnt-pefS<&^t5&p64ICq;qo~946@=^lMQCR$4O(=d4={>T7cIO%1W*6J*X;Q zDQ)q`muD(xv|(6W=d&Lg>f#7Xtnu^3`@$0`B&+_UjSnBbEmdwpLIS?6MX{?U z^r?xx62f4bKqqm+ZE7&hB9_9S=hqjZmBSZevoPw?A_A#zqMmqQD-6=s#tk99HFKm)i1fSp4K>7ZG36^8jz(^^{W5c&q$-yaUr?k zq3z-U4bcmH9W2;+mn=M^mNuU_@>#E@41BXW?04I4F6ueAzCRXak(6*q`}6%__mB0h zDFtG!)Pqfpw#wXq?WK27O}HGx#sig2V+JRM1N%)0C3G_GGqSGQ>`eV?sl6|dIq*~D zr3L+?2)4|9vJUU1P%3`hb3KOZ(r&*9ZB8fMt$U-SN^wDky;iL5R!PCeCSCqi3iDej z{f3iERapf&S^i731M8DSiAjUCw>M{nLel%=Di#V00>%@qT}u4Tr#rIVD@4vxd;34h z)89EYfz@^{O?fcAC!ytaBzezS-CGWoQLk{U5;T;?Iw^E+oN&dKY)FXb6X;}liuWTh zzs5gz+qBSM-O4J$<#{>!+q$irSIY8UCt+*!cF@SONTcojlEcC1FTTS?`dL#8=ZHy( zUddworwRqbW?SL==nlR7ID7U{E0^$|c@6{TS4RYfxwQ(j6O%F_65sA$Iy_ign(ldZ z~jGfOe4Iq@7$}%V6AbN7{)-Q(} zDavCtBP%mGWljA4XMCIS3r1Btm*tjLYo6lgucP^VI=SzgpIkv{DRQr4Uh7gUekI;3 ztJ4!NtO#gu-n21^O7~JNoHwaaV{+KX3u!H*A@cY9eKuk5BjRFIcE9 z&`rtnY?%~YDVg@}9q!pN#wgA#W-RtJ#{Ig_{PRe&9mmdJ+(RMeHsNEEzKZj@xKq{a zH63OFG|iJY$Jkph3D&xCzWO*P9-c&<+iE-0qhro~^%HZONSLz4NcQymm&2NiQE2TN zRx7fjkDcXQ37-9Mz36BfkTYQRG4_i6%R4u|rHa|-_Op;&t4gV@dib>ALM_=n50zit zXKM!5>jL24Rgc$X(q{ybKi_%0AtJkynKDVw^qTIomKcf7n`I8EN-u2v3O%o3olI5c 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 z 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 diff --git a/AsbCloudWebApi/Controllers/WellOperationController.cs b/AsbCloudWebApi/Controllers/WellOperationController.cs index 96d5f5f9..c8648dba 100644 --- a/AsbCloudWebApi/Controllers/WellOperationController.cs +++ b/AsbCloudWebApi/Controllers/WellOperationController.cs @@ -16,6 +16,9 @@ using AsbCloudApp.Requests.ExportOptions; using AsbCloudApp.Requests.ParserOptions; using AsbCloudDb.Model; using AsbCloudInfrastructure.Services.WellOperations.Factories; +using ClosedXML.Excel; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudApp.Services.Export; namespace AsbCloudWebApi.Controllers; @@ -40,13 +43,15 @@ public class WellOperationController : ControllerBase private readonly WellOperationParserFactory wellOperationParserFactory; private readonly WellOperationExportServiceFactory wellOperationExportServiceFactory; + //private readonly IExportService templateService; - public WellOperationController(IWellOperationRepository wellOperationRepository, + public WellOperationController(IWellOperationRepository wellOperationRepository, IWellOperationCategoryRepository wellOperationCategoryRepository, IWellService wellService, IUserRepository userRepository, WellOperationParserFactory wellOperationParserFactory, WellOperationExportServiceFactory wellOperationExportServiceFactory) + //IExportService templateService { this.wellOperationRepository = wellOperationRepository; this.wellOperationCategoryRepository = wellOperationCategoryRepository; @@ -54,7 +59,9 @@ public class WellOperationController : ControllerBase this.userRepository = userRepository; this.wellOperationParserFactory = wellOperationParserFactory; this.wellOperationExportServiceFactory = wellOperationExportServiceFactory; - } + //this.templateService = templateService; + + } /// /// Добавляет новые операции на скважине @@ -317,12 +324,19 @@ public class WellOperationController : ControllerBase [HttpGet("template")] [AllowAnonymous] [ProducesResponseType(typeof(PhysicalFileResult), StatusCodes.Status200OK, "application/octet-stream")] - public IActionResult GetTemplate(int idType) + public async Task GetTemplate(int idType) { var parser = wellOperationParserFactory.CreateParser(idType); var stream = parser.GetTemplateFile(); + //using var workbook = new XLWorkbook(stream); + //AddDtosToWorkbook(workbook, dtos); + return File(stream, "application/octet-stream", templateNames[idType]); + + //var exportOptions = new WellRelatedExportRequest(5); + //var (fileName, file) = await templateService.ExportAsync(exportOptions, CancellationToken.None); + //return File(file, "application/octet-stream", fileName); } private async Task CanUserAccessToWellAsync(int idWell, CancellationToken token) diff --git a/AsbCloudWebApi/appsettings.json b/AsbCloudWebApi/appsettings.json index 72d50f57..5294ebe7 100644 --- a/AsbCloudWebApi/appsettings.json +++ b/AsbCloudWebApi/appsettings.json @@ -7,10 +7,10 @@ } }, "ConnectionStrings": { - "DefaultConnection": "Host=localhost;Database=postgres;Username=postgres;Password=q;Persist Security Info=True", - "DebugConnection": "Host=localhost;Database=postgres;Username=postgres;Password=q;Persist Security Info=True;Include Error Detail=True", + "DefaultConnection": "Host=localhost;Database=postgres2;Username=postgres;Password=q;Persist Security Info=True", + "DebugConnection": "Host=localhost;Database=postgres2;Username=postgres;Password=q;Persist Security Info=True;Include Error Detail=True", "TestConnection": "Host=localhost;Database=test;Username=postgres;Password=q;Persist Security Info=True;Include Error Detail=True", - "LocalConnection": "Host=localhost;Database=postgres;Username=postgres;Password=q;Persist Security Info=True" + "LocalConnection": "Host=localhost;Database=postgres2;Username=postgres;Password=q;Persist Security Info=True" }, "AllowedHosts": "*", "ContentPath": "../data", From 878dfb3daaa83557db753d31966d03769cf34b04 Mon Sep 17 00:00:00 2001 From: Olga Nemt Date: Wed, 10 Apr 2024 12:19:32 +0500 Subject: [PATCH 4/9] =?UTF-8?q?=D0=A3=D0=B1=D1=80=D0=B0=D0=BD=20=D0=BB?= =?UTF-8?q?=D0=B8=D1=88=D0=BD=D0=B8=D0=B9=20=D0=BA=D0=BE=D0=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ExcelServices/ExcelTemplateService.cs | 39 ------------------- .../Services/WellService.cs | 2 +- .../Controllers/WellOperationController.cs | 14 +------ AsbCloudWebApi/appsettings.json | 6 +-- 4 files changed, 6 insertions(+), 55 deletions(-) delete mode 100644 AsbCloudInfrastructure/Services/ExcelServices/ExcelTemplateService.cs diff --git a/AsbCloudInfrastructure/Services/ExcelServices/ExcelTemplateService.cs b/AsbCloudInfrastructure/Services/ExcelServices/ExcelTemplateService.cs deleted file mode 100644 index 75aa1f20..00000000 --- a/AsbCloudInfrastructure/Services/ExcelServices/ExcelTemplateService.cs +++ /dev/null @@ -1,39 +0,0 @@ -using AsbCloudApp.Data.WellOperation; -using AsbCloudApp.Repositories; -using AsbCloudApp.Requests; -using AsbCloudApp.Requests.ExportOptions; -using AsbCloudApp.Services; -using AsbCloudInfrastructure.Repository; -using AsbCloudInfrastructure.Services.ExcelServices.Templates; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading; -using System.Threading.Tasks; - -namespace AsbCloudInfrastructure.Services.ExcelServices -{ - public class ExcelTemplateService : ExcelExportService - where TTemplate : class, ITemplateParameters, new() - { - private readonly IWellOperationCategoryRepository wellOperationCategoryRepository; - - public ExcelTemplateService(IWellOperationCategoryRepository wellOperationCategoryRepository, - IWellService wellService) - { - this.wellOperationCategoryRepository = wellOperationCategoryRepository; - } - - protected override async Task BuildFileNameAsync(WellOperationExportRequest options, CancellationToken token) - { - return "WellOperationFactTemplate"; - } - - protected override async Task> GetDtosAsync(WellOperationExportRequest options, CancellationToken token) - { - var dtos = wellOperationCategoryRepository.Get(false); - return dtos; - } - } -} diff --git a/AsbCloudInfrastructure/Services/WellService.cs b/AsbCloudInfrastructure/Services/WellService.cs index 795d944b..6ed241a0 100644 --- a/AsbCloudInfrastructure/Services/WellService.cs +++ b/AsbCloudInfrastructure/Services/WellService.cs @@ -71,7 +71,7 @@ namespace AsbCloudInfrastructure.Services return DateTimeOffset.MinValue; var datesRange = telemetryService.GetDatesRange(well.IdTelemetry.Value); - return datesRange.To; + return datesRange.To.DateTime; } /// diff --git a/AsbCloudWebApi/Controllers/WellOperationController.cs b/AsbCloudWebApi/Controllers/WellOperationController.cs index c8648dba..00c72656 100644 --- a/AsbCloudWebApi/Controllers/WellOperationController.cs +++ b/AsbCloudWebApi/Controllers/WellOperationController.cs @@ -51,7 +51,6 @@ public class WellOperationController : ControllerBase IUserRepository userRepository, WellOperationParserFactory wellOperationParserFactory, WellOperationExportServiceFactory wellOperationExportServiceFactory) - //IExportService templateService { this.wellOperationRepository = wellOperationRepository; this.wellOperationCategoryRepository = wellOperationCategoryRepository; @@ -59,8 +58,6 @@ public class WellOperationController : ControllerBase this.userRepository = userRepository; this.wellOperationParserFactory = wellOperationParserFactory; this.wellOperationExportServiceFactory = wellOperationExportServiceFactory; - //this.templateService = templateService; - } /// @@ -324,19 +321,12 @@ public class WellOperationController : ControllerBase [HttpGet("template")] [AllowAnonymous] [ProducesResponseType(typeof(PhysicalFileResult), StatusCodes.Status200OK, "application/octet-stream")] - public async Task GetTemplate(int idType) - { + public IActionResult GetTemplate(int idType) + { var parser = wellOperationParserFactory.CreateParser(idType); var stream = parser.GetTemplateFile(); - //using var workbook = new XLWorkbook(stream); - //AddDtosToWorkbook(workbook, dtos); - return File(stream, "application/octet-stream", templateNames[idType]); - - //var exportOptions = new WellRelatedExportRequest(5); - //var (fileName, file) = await templateService.ExportAsync(exportOptions, CancellationToken.None); - //return File(file, "application/octet-stream", fileName); } private async Task CanUserAccessToWellAsync(int idWell, CancellationToken token) diff --git a/AsbCloudWebApi/appsettings.json b/AsbCloudWebApi/appsettings.json index 5294ebe7..72d50f57 100644 --- a/AsbCloudWebApi/appsettings.json +++ b/AsbCloudWebApi/appsettings.json @@ -7,10 +7,10 @@ } }, "ConnectionStrings": { - "DefaultConnection": "Host=localhost;Database=postgres2;Username=postgres;Password=q;Persist Security Info=True", - "DebugConnection": "Host=localhost;Database=postgres2;Username=postgres;Password=q;Persist Security Info=True;Include Error Detail=True", + "DefaultConnection": "Host=localhost;Database=postgres;Username=postgres;Password=q;Persist Security Info=True", + "DebugConnection": "Host=localhost;Database=postgres;Username=postgres;Password=q;Persist Security Info=True;Include Error Detail=True", "TestConnection": "Host=localhost;Database=test;Username=postgres;Password=q;Persist Security Info=True;Include Error Detail=True", - "LocalConnection": "Host=localhost;Database=postgres2;Username=postgres;Password=q;Persist Security Info=True" + "LocalConnection": "Host=localhost;Database=postgres;Username=postgres;Password=q;Persist Security Info=True" }, "AllowedHosts": "*", "ContentPath": "../data", From dfa7f628ecdb2d2647d04d10a759a881156aaef4 Mon Sep 17 00:00:00 2001 From: Olga Nemt Date: Wed, 10 Apr 2024 12:21:11 +0500 Subject: [PATCH 5/9] =?UTF-8?q?=D0=A3=D0=B1=D1=80=D0=B0=D0=BD=D0=BE=20?= =?UTF-8?q?=D0=BB=D0=B8=D1=88=D0=BD=D0=B5=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/WellOperationController.cs | 548 +++++++++--------- 1 file changed, 272 insertions(+), 276 deletions(-) diff --git a/AsbCloudWebApi/Controllers/WellOperationController.cs b/AsbCloudWebApi/Controllers/WellOperationController.cs index 00c72656..90072dd3 100644 --- a/AsbCloudWebApi/Controllers/WellOperationController.cs +++ b/AsbCloudWebApi/Controllers/WellOperationController.cs @@ -16,9 +16,6 @@ using AsbCloudApp.Requests.ExportOptions; using AsbCloudApp.Requests.ParserOptions; using AsbCloudDb.Model; using AsbCloudInfrastructure.Services.WellOperations.Factories; -using ClosedXML.Excel; -using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; -using AsbCloudApp.Services.Export; namespace AsbCloudWebApi.Controllers; @@ -30,324 +27,323 @@ namespace AsbCloudWebApi.Controllers; [Authorize] public class WellOperationController : ControllerBase { - private readonly IDictionary templateNames = new Dictionary - { - { WellOperation.IdOperationTypeFact, "ЕЦП_шаблон_файла_фактические_операции.xlsx" }, - { WellOperation.IdOperationTypePlan, "ЕЦП_шаблон_файла_плановые_операции.xlsx" } - }; + private readonly IDictionary templateNames = new Dictionary + { + { WellOperation.IdOperationTypeFact, "ЕЦП_шаблон_файла_фактические_операции.xlsx" }, + { WellOperation.IdOperationTypePlan, "ЕЦП_шаблон_файла_плановые_операции.xlsx" } + }; - private readonly IUserRepository userRepository; - private readonly IWellOperationRepository wellOperationRepository; - private readonly IWellOperationCategoryRepository wellOperationCategoryRepository; - private readonly IWellService wellService; + private readonly IUserRepository userRepository; + private readonly IWellOperationRepository wellOperationRepository; + private readonly IWellOperationCategoryRepository wellOperationCategoryRepository; + private readonly IWellService wellService; - private readonly WellOperationParserFactory wellOperationParserFactory; - private readonly WellOperationExportServiceFactory wellOperationExportServiceFactory; - //private readonly IExportService templateService; + private readonly WellOperationParserFactory wellOperationParserFactory; + private readonly WellOperationExportServiceFactory wellOperationExportServiceFactory; public WellOperationController(IWellOperationRepository wellOperationRepository, - IWellOperationCategoryRepository wellOperationCategoryRepository, - IWellService wellService, - IUserRepository userRepository, - WellOperationParserFactory wellOperationParserFactory, - WellOperationExportServiceFactory wellOperationExportServiceFactory) - { - this.wellOperationRepository = wellOperationRepository; - this.wellOperationCategoryRepository = wellOperationCategoryRepository; - this.wellService = wellService; - this.userRepository = userRepository; - this.wellOperationParserFactory = wellOperationParserFactory; - this.wellOperationExportServiceFactory = wellOperationExportServiceFactory; + IWellOperationCategoryRepository wellOperationCategoryRepository, + IWellService wellService, + IUserRepository userRepository, + WellOperationParserFactory wellOperationParserFactory, + WellOperationExportServiceFactory wellOperationExportServiceFactory) + { + this.wellOperationRepository = wellOperationRepository; + this.wellOperationCategoryRepository = wellOperationCategoryRepository; + this.wellService = wellService; + this.userRepository = userRepository; + this.wellOperationParserFactory = wellOperationParserFactory; + this.wellOperationExportServiceFactory = wellOperationExportServiceFactory; } - /// - /// Добавляет новые операции на скважине - /// - /// Id скважины - /// Добавляемые операции - /// Удалить операции перед сохранением - /// - /// Количество добавленных в БД записей - [HttpPost("{deleteBeforeInsert:bool}")] - [Permission] - [ProducesResponseType(typeof(int), StatusCodes.Status200OK)] - [ProducesResponseType(typeof(ValidationProblemDetails), StatusCodes.Status400BadRequest)] - public async Task InsertRangeAsync( - [Range(1, int.MaxValue, ErrorMessage = "Id скважины не может быть меньше 1")] - int idWell, - bool deleteBeforeInsert, - [FromBody] IEnumerable dtos, - CancellationToken cancellationToken) - { - if (!await CanUserAccessToWellAsync(idWell, cancellationToken)) - return Forbid(); + /// + /// Добавляет новые операции на скважине + /// + /// Id скважины + /// Добавляемые операции + /// Удалить операции перед сохранением + /// + /// Количество добавленных в БД записей + [HttpPost("{deleteBeforeInsert:bool}")] + [Permission] + [ProducesResponseType(typeof(int), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(ValidationProblemDetails), StatusCodes.Status400BadRequest)] + public async Task InsertRangeAsync( + [Range(1, int.MaxValue, ErrorMessage = "Id скважины не может быть меньше 1")] + int idWell, + bool deleteBeforeInsert, + [FromBody] IEnumerable dtos, + CancellationToken cancellationToken) + { + if (!await CanUserAccessToWellAsync(idWell, cancellationToken)) + return Forbid(); - if (!await CanUserEditWellOperationsAsync(idWell, cancellationToken)) - return Forbid(); + if (!await CanUserEditWellOperationsAsync(idWell, cancellationToken)) + return Forbid(); - foreach (var dto in dtos) - { - dto.IdWell = idWell; - dto.LastUpdateDate = null; - dto.IdUser = User.GetUserId(); - } + foreach (var dto in dtos) + { + dto.IdWell = idWell; + dto.LastUpdateDate = null; + dto.IdUser = User.GetUserId(); + } - var result = await wellOperationRepository.InsertRangeAsync(dtos, deleteBeforeInsert, cancellationToken); + var result = await wellOperationRepository.InsertRangeAsync(dtos, deleteBeforeInsert, cancellationToken); - return Ok(result); - } + return Ok(result); + } - /// - /// Обновляет выбранную операцию на скважине - /// - /// id скважины - /// - /// Токен отмены задачи - /// Количество обновленных в БД строк - [HttpPut] - [Permission] - [ProducesResponseType(typeof(int), StatusCodes.Status200OK)] - public async Task UpdateRangeAsync(int idWell, - [FromBody] IEnumerable dtos, - CancellationToken token) - { - if (!await CanUserAccessToWellAsync(idWell, token)) - return Forbid(); + /// + /// Обновляет выбранную операцию на скважине + /// + /// id скважины + /// + /// Токен отмены задачи + /// Количество обновленных в БД строк + [HttpPut] + [Permission] + [ProducesResponseType(typeof(int), StatusCodes.Status200OK)] + public async Task UpdateRangeAsync(int idWell, + [FromBody] IEnumerable dtos, + CancellationToken token) + { + if (!await CanUserAccessToWellAsync(idWell, token)) + return Forbid(); - if (!await CanUserEditWellOperationsAsync(idWell, token)) - return Forbid(); + if (!await CanUserEditWellOperationsAsync(idWell, token)) + return Forbid(); - foreach (var dto in dtos) - { - dto.IdWell = idWell; - dto.IdUser = User.GetUserId(); - dto.LastUpdateDate = DateTimeOffset.UtcNow; - } + foreach (var dto in dtos) + { + dto.IdWell = idWell; + dto.IdUser = User.GetUserId(); + dto.LastUpdateDate = DateTimeOffset.UtcNow; + } - var result = await wellOperationRepository.UpdateRangeAsync(dtos, token); + var result = await wellOperationRepository.UpdateRangeAsync(dtos, token); - return Ok(result); - } + return Ok(result); + } - /// - /// Возвращает словарь типов секций - /// - /// - [HttpGet("sectionTypes")] - [Permission] - [ProducesResponseType(typeof(IEnumerable), StatusCodes.Status200OK)] - public IActionResult GetSectionTypes() - { - var result = wellOperationRepository.GetSectionTypes(); - return Ok(result); - } + /// + /// Возвращает словарь типов секций + /// + /// + [HttpGet("sectionTypes")] + [Permission] + [ProducesResponseType(typeof(IEnumerable), StatusCodes.Status200OK)] + public IActionResult GetSectionTypes() + { + var result = wellOperationRepository.GetSectionTypes(); + return Ok(result); + } - /// - /// Статистика операций по скважине, группированная по категориям - /// - /// id скважины - /// - /// - /// - [HttpGet("groupStat")] - [Permission] - [ProducesResponseType(typeof(IEnumerable), (int)System.Net.HttpStatusCode.OK)] - public async Task GetGroupOperationsAsync( - [FromRoute] int idWell, - [FromQuery] WellOperationRequestBase request, - CancellationToken token) - { - if (!await CanUserAccessToWellAsync(idWell, token).ConfigureAwait(false)) - return Forbid(); + /// + /// Статистика операций по скважине, группированная по категориям + /// + /// id скважины + /// + /// + /// + [HttpGet("groupStat")] + [Permission] + [ProducesResponseType(typeof(IEnumerable), (int)System.Net.HttpStatusCode.OK)] + public async Task GetGroupOperationsAsync( + [FromRoute] int idWell, + [FromQuery] WellOperationRequestBase request, + CancellationToken token) + { + if (!await CanUserAccessToWellAsync(idWell, token).ConfigureAwait(false)) + return Forbid(); - var requestToservice = new WellOperationRequest(request, new[] { idWell }); - - var result = await wellOperationRepository.GetGroupOperationsStatAsync(requestToservice, token); - return Ok(result); - } + var requestToservice = new WellOperationRequest(request, new[] { idWell }); - /// - /// Возвращает список имен типов операций на скважине - /// - /// флаг, нужно ли включать родителей в список - /// - [HttpGet("categories")] - [Permission] - [ProducesResponseType(typeof(IEnumerable), StatusCodes.Status200OK)] - public IActionResult GetCategories(bool includeParents = true) - { - var result = wellOperationCategoryRepository.Get(includeParents); - return Ok(result); - } + var result = await wellOperationRepository.GetGroupOperationsStatAsync(requestToservice, token); + return Ok(result); + } - /// - /// Постраничный список операций на скважине. - /// - /// id скважины - /// - /// - /// Список операций на скважине - [HttpGet] - [Permission] - [ProducesResponseType(typeof(PaginationContainer), StatusCodes.Status200OK)] - public async Task GetPageOperationsAsync( - [FromRoute] int idWell, - [FromQuery] WellOperationRequestBase request, - CancellationToken token) - { - if (!await CanUserAccessToWellAsync(idWell, token)) - return Forbid(); + /// + /// Возвращает список имен типов операций на скважине + /// + /// флаг, нужно ли включать родителей в список + /// + [HttpGet("categories")] + [Permission] + [ProducesResponseType(typeof(IEnumerable), StatusCodes.Status200OK)] + public IActionResult GetCategories(bool includeParents = true) + { + var result = wellOperationCategoryRepository.Get(includeParents); + return Ok(result); + } - var requestToService = new WellOperationRequest(request, new[] { idWell }); - - var result = await wellOperationRepository.GetPageAsync(requestToService, token); - return Ok(result); - } + /// + /// Постраничный список операций на скважине. + /// + /// id скважины + /// + /// + /// Список операций на скважине + [HttpGet] + [Permission] + [ProducesResponseType(typeof(PaginationContainer), StatusCodes.Status200OK)] + public async Task GetPageOperationsAsync( + [FromRoute] int idWell, + [FromQuery] WellOperationRequestBase request, + CancellationToken token) + { + if (!await CanUserAccessToWellAsync(idWell, token)) + return Forbid(); - /// - /// Создает excel файл с "сетевым графиком" - /// - /// id скважины - /// - /// - /// Запрашиваемый файл - [HttpGet("scheduleReport")] - [Permission] - [ProducesResponseType(typeof(PhysicalFileResult), StatusCodes.Status200OK)] - public async Task ScheduleReportAsync([FromRoute] int idWell, - [FromServices] IScheduleReportService scheduleReportService, - CancellationToken token) - { - var idCompany = User.GetCompanyId(); + var requestToService = new WellOperationRequest(request, new[] { idWell }); - if (idCompany is null) - return Forbid(); + var result = await wellOperationRepository.GetPageAsync(requestToService, token); + return Ok(result); + } - if (!await wellService.IsCompanyInvolvedInWellAsync(idCompany.Value, idWell, token)) - return Forbid(); + /// + /// Создает excel файл с "сетевым графиком" + /// + /// id скважины + /// + /// + /// Запрашиваемый файл + [HttpGet("scheduleReport")] + [Permission] + [ProducesResponseType(typeof(PhysicalFileResult), StatusCodes.Status200OK)] + public async Task ScheduleReportAsync([FromRoute] int idWell, + [FromServices] IScheduleReportService scheduleReportService, + CancellationToken token) + { + var idCompany = User.GetCompanyId(); - var stream = await scheduleReportService.MakeReportAsync(idWell, token); - var fileName = await wellService.GetWellCaptionByIdAsync(idWell, token) + "_ScheduleReport.xlsx"; - return File(stream, "application/octet-stream", fileName); - } + if (idCompany is null) + return Forbid(); - /// - /// Удаляет выбранную операцию на скважине - /// - /// id скважины - /// id выбранной операции - /// Токен отмены задачи - /// Количество удаленных из БД строк - [HttpDelete("{idOperation}")] - [Permission] - [ProducesResponseType(typeof(int), StatusCodes.Status200OK)] - public async Task DeleteAsync(int idWell, int idOperation, CancellationToken token) - { - if (!await CanUserAccessToWellAsync(idWell, token)) - return Forbid(); + if (!await wellService.IsCompanyInvolvedInWellAsync(idCompany.Value, idWell, token)) + return Forbid(); - if (!await CanUserEditWellOperationsAsync(idWell, token)) - return Forbid(); + var stream = await scheduleReportService.MakeReportAsync(idWell, token); + var fileName = await wellService.GetWellCaptionByIdAsync(idWell, token) + "_ScheduleReport.xlsx"; + return File(stream, "application/octet-stream", fileName); + } - var result = await wellOperationRepository.DeleteRangeAsync(new[] { idOperation }, token); + /// + /// Удаляет выбранную операцию на скважине + /// + /// id скважины + /// id выбранной операции + /// Токен отмены задачи + /// Количество удаленных из БД строк + [HttpDelete("{idOperation}")] + [Permission] + [ProducesResponseType(typeof(int), StatusCodes.Status200OK)] + public async Task DeleteAsync(int idWell, int idOperation, CancellationToken token) + { + if (!await CanUserAccessToWellAsync(idWell, token)) + return Forbid(); - return Ok(result); - } + if (!await CanUserEditWellOperationsAsync(idWell, token)) + return Forbid(); - /// - /// Формирование excel файла с операциями на скважине - /// - /// - /// - /// - /// - [HttpGet("export")] - [ProducesResponseType(typeof(PhysicalFileResult), StatusCodes.Status200OK, "application/octet-stream")] - public async Task ExportAsync(int idWell, - int idType, - CancellationToken token) - { - var options = new WellOperationExportRequest(idWell, idType); - var exportService = wellOperationExportServiceFactory.CreateExportService(idType); + var result = await wellOperationRepository.DeleteRangeAsync(new[] { idOperation }, token); - var (fileName, file) = await exportService.ExportAsync(options, token); + return Ok(result); + } - return File(file, "application/octet-stream", fileName); - } + /// + /// Формирование excel файла с операциями на скважине + /// + /// + /// + /// + /// + [HttpGet("export")] + [ProducesResponseType(typeof(PhysicalFileResult), StatusCodes.Status200OK, "application/octet-stream")] + public async Task ExportAsync(int idWell, + int idType, + CancellationToken token) + { + var options = new WellOperationExportRequest(idWell, idType); + var exportService = wellOperationExportServiceFactory.CreateExportService(idType); - /// - /// Парсинг ГГД из excel (xlsx) файла - /// - /// - /// - /// - /// - /// - [HttpPost("parse/{idType}")] - [Permission] - [ProducesResponseType(typeof(ParserResultDto), StatusCodes.Status200OK)] - public async Task ParseAsync(int idWell, - int idType, - [Required] IFormFile file, - CancellationToken token) - { - if (!await CanUserAccessToWellAsync(idWell, token)) - return Forbid(); + var (fileName, file) = await exportService.ExportAsync(options, token); - if (!await CanUserEditWellOperationsAsync(idWell, token)) - return Forbid(); + return File(file, "application/octet-stream", fileName); + } - var stream = file.GetExcelFile(); + /// + /// Парсинг ГГД из excel (xlsx) файла + /// + /// + /// + /// + /// + /// + [HttpPost("parse/{idType}")] + [Permission] + [ProducesResponseType(typeof(ParserResultDto), StatusCodes.Status200OK)] + public async Task ParseAsync(int idWell, + int idType, + [Required] IFormFile file, + CancellationToken token) + { + if (!await CanUserAccessToWellAsync(idWell, token)) + return Forbid(); - try - { - var timezone = wellService.GetTimezone(idWell); - var options = new WellOperationParserRequest(idWell, idType, timezone); - var parser = wellOperationParserFactory.CreateParser(idType); - var result = parser.Parse(stream, options); + if (!await CanUserEditWellOperationsAsync(idWell, token)) + return Forbid(); - return Ok(result); - } - catch (FileFormatException ex) - { - return this.ValidationBadRequest(nameof(file), ex.Message); - } - } + var stream = file.GetExcelFile(); - /// - /// Получение шаблона для заполнения ГГД - /// - /// - [HttpGet("template")] - [AllowAnonymous] - [ProducesResponseType(typeof(PhysicalFileResult), StatusCodes.Status200OK, "application/octet-stream")] + try + { + var timezone = wellService.GetTimezone(idWell); + var options = new WellOperationParserRequest(idWell, idType, timezone); + var parser = wellOperationParserFactory.CreateParser(idType); + var result = parser.Parse(stream, options); + + return Ok(result); + } + catch (FileFormatException ex) + { + return this.ValidationBadRequest(nameof(file), ex.Message); + } + } + + /// + /// Получение шаблона для заполнения ГГД + /// + /// + [HttpGet("template")] + [AllowAnonymous] + [ProducesResponseType(typeof(PhysicalFileResult), StatusCodes.Status200OK, "application/octet-stream")] public IActionResult GetTemplate(int idType) { - var parser = wellOperationParserFactory.CreateParser(idType); - var stream = parser.GetTemplateFile(); + var parser = wellOperationParserFactory.CreateParser(idType); + var stream = parser.GetTemplateFile(); - return File(stream, "application/octet-stream", templateNames[idType]); - } + return File(stream, "application/octet-stream", templateNames[idType]); + } - private async Task CanUserAccessToWellAsync(int idWell, CancellationToken token) - { - var idCompany = User.GetCompanyId(); - return idCompany is not null && await wellService.IsCompanyInvolvedInWellAsync((int)idCompany, - idWell, token).ConfigureAwait(false); - } + private async Task CanUserAccessToWellAsync(int idWell, CancellationToken token) + { + var idCompany = User.GetCompanyId(); + return idCompany is not null && await wellService.IsCompanyInvolvedInWellAsync((int)idCompany, + idWell, token).ConfigureAwait(false); + } - private async Task CanUserEditWellOperationsAsync(int idWell, CancellationToken token) - { - var idUser = User.GetUserId(); + private async Task CanUserEditWellOperationsAsync(int idWell, CancellationToken token) + { + var idUser = User.GetUserId(); - if (!idUser.HasValue) - return false; + if (!idUser.HasValue) + return false; - var well = await wellService.GetOrDefaultAsync(idWell, token); + var well = await wellService.GetOrDefaultAsync(idWell, token); - if (well is null) - return false; + if (well is null) + return false; - return well.IdState != 2 || userRepository.HasPermission(idUser.Value, "WellOperation.editCompletedWell"); - } + return well.IdState != 2 || userRepository.HasPermission(idUser.Value, "WellOperation.editCompletedWell"); + } } \ No newline at end of file From dc8f9214a71ff6b94ce6db0c03f7208c853a0163 Mon Sep 17 00:00:00 2001 From: Olga Nemt Date: Wed, 10 Apr 2024 12:23:01 +0500 Subject: [PATCH 6/9] =?UTF-8?q?=D0=A3=D0=B1=D1=80=D0=B0=D0=BD=D0=BE=20?= =?UTF-8?q?=D0=BB=D0=B8=D1=88=D0=BD=D0=B5=D0=B5-3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AsbCloudWebApi/Controllers/WellOperationController.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/AsbCloudWebApi/Controllers/WellOperationController.cs b/AsbCloudWebApi/Controllers/WellOperationController.cs index 90072dd3..01ba2021 100644 --- a/AsbCloudWebApi/Controllers/WellOperationController.cs +++ b/AsbCloudWebApi/Controllers/WellOperationController.cs @@ -40,7 +40,6 @@ public class WellOperationController : ControllerBase private readonly WellOperationParserFactory wellOperationParserFactory; private readonly WellOperationExportServiceFactory wellOperationExportServiceFactory; - public WellOperationController(IWellOperationRepository wellOperationRepository, IWellOperationCategoryRepository wellOperationCategoryRepository, IWellService wellService, From a91d95bc2e402058adac75bba8c0ee9b16bbe036 Mon Sep 17 00:00:00 2001 From: Olga Nemt Date: Wed, 10 Apr 2024 12:24:20 +0500 Subject: [PATCH 7/9] =?UTF-8?q?=D0=A3=D0=B1=D1=80=D0=B0=D0=BD=D0=BE=20?= =?UTF-8?q?=D0=BB=D0=B8=D1=88=D0=BD=D0=B5=D0=B5-4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AsbCloudWebApi/Controllers/WellOperationController.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/AsbCloudWebApi/Controllers/WellOperationController.cs b/AsbCloudWebApi/Controllers/WellOperationController.cs index 01ba2021..90072dd3 100644 --- a/AsbCloudWebApi/Controllers/WellOperationController.cs +++ b/AsbCloudWebApi/Controllers/WellOperationController.cs @@ -40,6 +40,7 @@ public class WellOperationController : ControllerBase private readonly WellOperationParserFactory wellOperationParserFactory; private readonly WellOperationExportServiceFactory wellOperationExportServiceFactory; + public WellOperationController(IWellOperationRepository wellOperationRepository, IWellOperationCategoryRepository wellOperationCategoryRepository, IWellService wellService, From b5369c4363974420d4c5703aea3ae8164572a2e5 Mon Sep 17 00:00:00 2001 From: Olga Nemt Date: Wed, 10 Apr 2024 15:05:15 +0500 Subject: [PATCH 8/9] =?UTF-8?q?=D0=A4=D0=B8=D0=BB=D1=8C=D1=82=D1=80=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D1=8F=20=D0=BF=D0=BE=20=D0=BA=D0=B0=D1=82=D0=B5?= =?UTF-8?q?=D0=B3=D0=BE=D1=80=D0=B8=D1=8F=D0=BC=20=D0=BE=D0=BF=D1=80=D0=B5?= =?UTF-8?q?=D0=B0=D1=86=D0=B8=D0=B8:=20=D0=B2=20=D0=93=D0=93=D0=94=20?= =?UTF-8?q?=D0=B2=D1=8B=D0=B2=D0=BE=D0=B4=D1=8F=D1=82=D1=81=D1=8F=20=D1=82?= =?UTF-8?q?=D0=BE=D0=BB=D1=8C=D0=BA=D0=BE=20=D1=82=D0=B5,=20=D1=83=20?= =?UTF-8?q?=D0=BA=D0=BE=D1=82=D0=BE=D1=80=D0=BE=D0=B3=D0=BE=20isHidden=20?= =?UTF-8?q?=3D=20false?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IWellOperationCategoryRepository.cs | 2 +- .../WellOperationCategoryRepository.cs | 4 +++- .../Templates/WellOperationPlanTemplate.xlsx | Bin 68320 -> 40098 bytes .../Controllers/WellOperationController.cs | 2 +- 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/AsbCloudApp/Repositories/IWellOperationCategoryRepository.cs b/AsbCloudApp/Repositories/IWellOperationCategoryRepository.cs index ecf915cd..044dbd44 100644 --- a/AsbCloudApp/Repositories/IWellOperationCategoryRepository.cs +++ b/AsbCloudApp/Repositories/IWellOperationCategoryRepository.cs @@ -12,6 +12,6 @@ namespace AsbCloudApp.Repositories /// список названий операций /// /// - IEnumerable Get(bool includeParents); + IEnumerable Get(bool includeParents, bool includeHidden = true); } } \ No newline at end of file diff --git a/AsbCloudInfrastructure/Repository/WellOperationCategoryRepository.cs b/AsbCloudInfrastructure/Repository/WellOperationCategoryRepository.cs index 927a424e..49d146bd 100644 --- a/AsbCloudInfrastructure/Repository/WellOperationCategoryRepository.cs +++ b/AsbCloudInfrastructure/Repository/WellOperationCategoryRepository.cs @@ -19,11 +19,13 @@ public class WellOperationCategoryRepository : IWellOperationCategoryRepository this.memoryCache = memoryCache; } - public IEnumerable Get(bool includeParents) + public IEnumerable Get(bool includeParents, bool includeHidden = true) { var categories = memoryCache .GetOrCreateBasic(db.Set()); + categories = categories.Where(o => includeHidden ? true : o.IsHidden == false); + if (!includeParents) { var parentIds = categories diff --git a/AsbCloudInfrastructure/Services/WellOperations/Templates/WellOperationPlanTemplate.xlsx b/AsbCloudInfrastructure/Services/WellOperations/Templates/WellOperationPlanTemplate.xlsx index c5d53089457739c709596e91c6dafae799099e27..8d7abef627dfb3bc09de848f65fa76a6d387773e 100644 GIT binary patch literal 40098 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 literal 68320 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, StatusCodes.Status200OK)] public IActionResult GetCategories(bool includeParents = true) { - var result = wellOperationCategoryRepository.Get(includeParents); + var result = wellOperationCategoryRepository.Get(includeParents, false); return Ok(result); } From 5f30d95d60f99db7882e47c1604407ff6de1d22c Mon Sep 17 00:00:00 2001 From: Olga Nemt Date: Mon, 15 Apr 2024 10:42:01 +0500 Subject: [PATCH 9/9] =?UTF-8?q?=D0=9F=D1=80=D0=B0=D0=B2=D0=BA=D0=B8=20?= =?UTF-8?q?=D0=BF=D0=BE=20=D1=80=D0=B5=D0=B7=D1=83=D0=BB=D1=8C=D1=82=D0=B0?= =?UTF-8?q?=D1=82=D0=B0=D0=BC=20=D1=80=D0=B5=D0=B2=D1=8C=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AsbCloudDb/Model/WellOperationCategory.cs | 4 ++-- .../Repository/WellOperationCategoryRepository.cs | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/AsbCloudDb/Model/WellOperationCategory.cs b/AsbCloudDb/Model/WellOperationCategory.cs index 4b73de9b..376e8863 100644 --- a/AsbCloudDb/Model/WellOperationCategory.cs +++ b/AsbCloudDb/Model/WellOperationCategory.cs @@ -285,8 +285,8 @@ namespace AsbCloudDb.Model public static WellOperationCategory[] WorkCategories { get; } = new WellOperationCategory[]{ new () {Id = IdBhaDisassembly, IdParent = 4000, Name = "Разборка КНБК", KeyValueName = "dT", KeyValueUnits = "мин" }, new () {Id = IdBhaAssembly, IdParent = 4000, Name = "Сборка КНБК", KeyValueName = "dT", KeyValueUnits = "мин" }, - new () {Id = IdSlide, IdParent = 4001, Name = "Бурение слайдом", KeyValueName = "МСП", KeyValueUnits = "м/ч" }, - new () {Id = IdRotor, IdParent = 4001, Name = "Бурение ротором", KeyValueName = "МСП", KeyValueUnits = "м/ч" }, + new () {Id = IdSlide, IsHidden = true, IdParent = 4001, Name = "Бурение слайдом", KeyValueName = "МСП", KeyValueUnits = "м/ч" }, + new () {Id = IdRotor, IsHidden = true, IdParent = 4001, Name = "Бурение ротором", KeyValueName = "МСП", KeyValueUnits = "м/ч" }, new () {Id = IdStaticSurveying, IdParent = 4002, Name = "Замер ЗТС (запись MWD)", KeyValueName = "dT", KeyValueUnits = "мин" }, new () {Id = IdFlashingBeforeConnection, IdParent = 4003, Name = "Промывка перед наращиванием", KeyValueName = "dT", KeyValueUnits = "мин" }, new () {Id = 5006, IdParent = 4003, Name = "Проработка во время бурения", KeyValueName = "dT", KeyValueUnits = "мин" }, diff --git a/AsbCloudInfrastructure/Repository/WellOperationCategoryRepository.cs b/AsbCloudInfrastructure/Repository/WellOperationCategoryRepository.cs index 49d146bd..d171dc46 100644 --- a/AsbCloudInfrastructure/Repository/WellOperationCategoryRepository.cs +++ b/AsbCloudInfrastructure/Repository/WellOperationCategoryRepository.cs @@ -24,7 +24,8 @@ public class WellOperationCategoryRepository : IWellOperationCategoryRepository var categories = memoryCache .GetOrCreateBasic(db.Set()); - categories = categories.Where(o => includeHidden ? true : o.IsHidden == false); + if (!includeHidden) + categories = categories.Where(o => o.IsHidden == false); if (!includeParents) {